33.28.2 Криптографические функции GnuTLS

Функция: gnutls-digests

Эта функция возвращает alist алгоритмов хеширования GnuTLS.

Каждая запись содержит ключ, представляющий алгоритм, за которым следует plist с внутренней информацией об алгоритме. В plist будет присутствовать :type gnutls-digest-algorithm, а также ключ :digest-algorithm-length 64 для указания размера, в байтах, результирующего хеша.

Существует параллелизм имен между алгоритмами MAC и хеширования GnuTLS, но они внутренне являются отдельными сущностями и не должны смешиваться.

Функция: gnutls-hash-digest digest-method input

Аргумент digest-method может быть полным plist из gnutls-digests, или только символьным ключом, или строкой с именем этого символа.

Аргумент input может быть указан как буфер или строка, или другими способами (см. Формат входных данных криптографии GnuTLS).

Эта функция возвращает nil в случае ошибки и вызывает ошибку Lisp, если digest-method или input недействительны. В случае успеха она возвращает список бинарной строки (результат) и использованный IV.

Функция: gnutls-macs

Эта функция возвращает alist алгоритмов MAC GnuTLS.

Каждая запись содержит ключ, представляющий алгоритм, за которым следует plist с внутренней информацией об алгоритме. В plist будет присутствовать :type gnutls-mac-algorithm, а также ключи :mac-algorithm-length, :mac-algorithm-keysize :mac-algorithm-noncesize для указания размера, в байтах, результирующего хеша, ключа и nonce соответственно.

Nonce в настоящее время не используется, и только некоторые MAC его поддерживают.

Существует параллелизм имен между алгоритмами MAC и хеширования GnuTLS, но они внутренне являются отдельными сущностями и не должны смешиваться.

Функция: gnutls-hash-mac hash-method key input

Аргумент hash-method может быть полным plist из gnutls-macs, или только символьным ключом, или строкой с именем этого символа.

Аргумент key может быть указан как буфер или строка, или другими способами (см. Формат входных данных криптографии GnuTLS). Аргумент key будет очищен после использования, если это строка.

Аргумент input может быть указан как буфер или строка, или другими способами (см. Формат входных данных криптографии GnuTLS).

Эта функция возвращает nil в случае ошибки и вызывает ошибку Lisp, если hash-method, key или input недействительны.

В случае успеха она возвращает список бинарной строки (результат) и использованный IV.

Функция: gnutls-ciphers

Эта функция возвращает alist шифров GnuTLS.

Каждая запись содержит ключ, представляющий шифр, за которым следует plist с внутренней информацией об алгоритме. В plist будет присутствовать :type gnutls-symmetric-cipher, а также ключи :cipher-aead-capable, установленный в nil или t для указания возможности AEAD; и :cipher-tagsize, :cipher-blocksize, :cipher-keysize, :cipher-ivsize для указания размера, в байтах, тега, размера блока результирующих данных, ключа и IV соответственно.

Функция: gnutls-symmetric-encrypt cipher key iv input &optional aead_auth

Аргумент cipher может быть полным plist из gnutls-ciphers, или только символьным ключом, или строкой с именем этого символа.

Аргумент key может быть указан как буфер или строка, или другими способами (см. Формат входных данных криптографии GnuTLS). Аргумент key будет очищен после использования, если это строка.

Аргументы iv, input и необязательный aead_auth могут быть указаны как буфер или строка, или другими способами (см. Формат входных данных криптографии GnuTLS).

aead_auth проверяется только с шифрами AEAD, то есть шифрами, чей plist содержит :cipher-aead-capable t. В противном случае он игнорируется.

Эта функция возвращает nil в случае ошибки и вызывает ошибку Lisp, если cipher или key, iv или input недействительны, или если aead_auth был указан с шифром AEAD и оказался недействительным.

В случае успеха она возвращает список бинарной строки (результат) и использованный IV.

Функция: gnutls-symmetric-decrypt cipher key iv input &optional aead_auth

Аргумент cipher может быть полным plist из gnutls-ciphers, или только символьным ключом, или строкой с именем этого символа.

Аргумент key может быть указан как буфер или строка, или другими способами (см. Формат входных данных криптографии GnuTLS). Аргумент key будет очищен после использования, если это строка.

Аргументы iv, input и необязательный aead_auth могут быть указаны как буфер или строка, или другими способами (см. Формат входных данных криптографии GnuTLS).

aead_auth проверяется только с шифрами AEAD, то есть шифрами, чей plist содержит :cipher-aead-capable t. В противном случае он игнорируется.

Эта функция возвращает nil в случае ошибки дешифрования и вызывает ошибку Lisp, если cipher или key, iv или input недействительны, или если aead_auth был указан с шифром AEAD и оказался недействительным.

В случае успеха она возвращает список бинарной строки (результат) и использованный IV.