Как найти определение EVP_MD, EVP_MD_CT и т.д. c в OpenSSL? - PullRequest
0 голосов
/ 01 августа 2020

Я использую OpenSSL. Я хочу рассчитать ma c сообщения, используя алгоритм HMA C. Определения HMA C следующие:

unsigned char *HMAC(const EVP_MD *evp_md, const void *key,
                     int key_len, const unsigned char *d, int n,
                     unsigned char *md, unsigned int *md_len);

Теперь я обнаружил, что первым параметром HMA C является EVP_MD . Я заметил, что многие функции возвращают этот параметр. Где я могу найти содержимое EVP_MD в его справочнике или исходном коде.

 const EVP_MD *EVP_md_null(void);
 const EVP_MD *EVP_md2(void);
 const EVP_MD *EVP_md5(void);
 const EVP_MD *EVP_sha(void);
 const EVP_MD *EVP_sha1(void);
 const EVP_MD *EVP_dss(void);
 const EVP_MD *EVP_dss1(void);
 const EVP_MD *EVP_mdc2(void);
 const EVP_MD *EVP_ripemd160(void);

 const EVP_MD *EVP_sha224(void);
 const EVP_MD *EVP_sha256(void);
 const EVP_MD *EVP_sha384(void);
 const EVP_MD *EVP_sha512(void);

Какая связь между EVP_MD и EVP_MD_CTX?

1 Ответ

1 голос
/ 01 августа 2020

Структура EVP_MD содержит описание алгоритма хеширования. Перечисленные вами функции возвращают указатель на одну из этих структур для указанного c ha sh. Вы должны передать один из них в качестве первого параметра в HASH.

Например, если вы хотите получить sh с помощью SHA256, вы должны вызвать EVP_sha256 и передать его возвращаемое значение HASH.

...