什么是 HMAC_CTX?CTX代表什么?

jtp*_*yda 1 openssl

我正在阅读OpenSSL 文档。在 HMAC_CTX 的那个页面上第一次提到的是:

HMAC_CTX_init()在第一次使用之前初始化一个 HMAC_CTX。它必须被调用。

但它似乎并没有说明什么是 HMAC_CTX。那么,它是什么,CTX 代表什么?

jww*_*jww 5

CTX代表什么?

正如卢克所说,它是一个上下文。


什么是 HMAC_CTX?

上下文是操作 HMAC 的“暂存区”。上下文将保存状态数据和中间计算。

以下是结构的成员<openssl src>/crypto/hmac/hmac.h:

typedef struct hmac_ctx_st
    {
    const EVP_MD *md;
    EVP_MD_CTX md_ctx;
    EVP_MD_CTX i_ctx;
    EVP_MD_CTX o_ctx;
    unsigned int key_length;
    unsigned char key[HMAC_MAX_MD_CBLOCK];
    } HMAC_CTX;
Run Code Online (Sandbox Code Playgroud)

OpenSSL 也有其他上下文,例如 aPKEY和BIGNUM上下文。