33.28.2 GnuTLS 加密函数

Function: gnutls-digests

该函数返回 GnuTLS 摘要算法的关联列表。

每个表项以一个代表算法的符号为键,后跟包含该算法内部细节的属性列表。 该属性列表会包含 :type gnutls-digest-algorithm, 同时会有 :digest-algorithm-length 64 以指明最终摘要的字节长度。

GnuTLS 的 MAC 算法与摘要算法在名称上相近,但在内部是不同机制,不应混用。

Function: gnutls-hash-digest digest-method input

digest-method 可以是来自 gnutls-digests 的完整属性列表、 仅作为键的符号,或是对应符号名称的字符串。

input 可以指定为缓冲区、字符串或其他形式(see GnuTLS 加密输入格式)。

该函数在出错时返回 nil,若 digest-methodinput 无效则触发 Lisp 错误。 执行成功时,返回一个由二进制字符串(输出结果)和所用 IV 组成的列表。

Function: gnutls-macs

该函数返回 GnuTLS MAC 算法的关联列表。

每个表项以一个代表算法的符号为键,后跟包含该算法内部细节的属性列表。 该属性列表会包含 :type gnutls-mac-algorithm, 同时会有 :mac-algorithm-length:mac-algorithm-keysize:mac-algorithm-noncesize 等键,分别指明最终哈希值、密钥和随机数的字节长度。

随机数目前暂未使用,且仅部分 MAC 算法支持该参数。

GnuTLS 的 MAC 算法与摘要算法在名称上相近,但在内部是不同机制,不应混用。

Function: gnutls-hash-mac hash-method key input

hash-method 可以是来自 gnutls-macs 的完整属性列表、 仅作为键的符号,或是对应符号名称的字符串。

key 可以指定为缓冲区、字符串或其他形式(see GnuTLS 加密输入格式)。 若密钥为字符串,使用后会被清除。

input 可以指定为缓冲区、字符串或其他形式(see GnuTLS 加密输入格式)。

该函数在出错时返回 nil,若 hash-methodkeyinput 无效则触发 Lisp 错误。

执行成功时,返回一个由二进制字符串(输出结果)和所用 IV 组成的列表。

Function: gnutls-ciphers

该函数返回 GnuTLS 密码算法的关联列表。

每个表项以一个代表密码的符号为键,后跟包含该算法内部细节的属性列表。 该属性列表会包含 :type gnutls-symmetric-cipher, 同时会有 :cipher-aead-capable 设为 nilt 以标明是否支持 AEAD; 以及 :cipher-tagsize:cipher-blocksize:cipher-keysize:cipher-ivsize,分别指明标签、数据块、密钥和 IV 的字节长度。

Function: gnutls-symmetric-encrypt cipher key iv input &optional aead_auth

cipher 可以是来自 gnutls-ciphers 的完整属性列表、 仅作为键的符号,或是对应符号名称的字符串。

key 可以指定为缓冲区、字符串或其他形式(see GnuTLS 加密输入格式)。 若密钥为字符串,使用后会被清除。

ivinput 以及可选参数 aead_auth 可以指定为缓冲区、字符串或其他形式(see GnuTLS 加密输入格式)。

aead_auth 仅在 AEAD 密码下生效,即属性列表中 :cipher-aead-capable t 的密码, 其他情况下会被忽略。

该函数在出错时返回 nil,若 cipherkeyivinput 无效, 或在 AEAD 密码下指定的 aead_auth 无效,则触发 Lisp 错误。

执行成功时,返回一个由二进制字符串(输出结果)和所用 IV 组成的列表。

Function: gnutls-symmetric-decrypt cipher key iv input &optional aead_auth

cipher 可以是来自 gnutls-ciphers 的完整属性列表、 仅作为键的符号,或是对应符号名称的字符串。

key 可以指定为缓冲区、字符串或其他形式(see GnuTLS 加密输入格式)。 若密钥为字符串,使用后会被清除。

ivinput 以及可选参数 aead_auth 可以指定为缓冲区、字符串或其他形式(see GnuTLS 加密输入格式)。

aead_auth 仅在 AEAD 密码下生效,即属性列表中 :cipher-aead-capable t 的密码, 其他情况下会被忽略。

该函数在解密出错时返回 nil,若 cipherkeyivinput 无效, 或在 AEAD 密码下指定的 aead_auth 无效,则触发 Lisp 错误。

执行成功时,返回一个由二进制字符串(输出结果)和所用 IV 组成的列表。