Я работаю с некоторым кодом C ++, который вычисляет HMA C 256 га sh, код не освобождает контекст. Оригинальный программист предположил, что HMAC_CTX_reset
сделал это, но я сильно подозреваю, что HMAC_CTX_free
также следует использовать для очистки контекста.
HMAC_CTX* hmac = HMAC_CTX_new();
HMAC_CTX_reset(hmac);
HMAC_Init_ex(hmac, (unsigned char*)key.data(), keyLen, EVP_sha256(), NULL);
HMAC_Update(hmac, (unsigned char*)value.data(), valueLen);
HMAC_Final(hmac, hash, &len);
HMAC_CTX_reset(hmac);
return std::vector<uint8_t>((uint8_t*)hash,(uint8_t*)hash+SHA256_DIGEST_LENGTH);
Я предлагаю, чтобы HMAC_CTX_free(hmac);
следовало HMAC_CTX_reset
.
HMAC_CTX* hmac = HMAC_CTX_new();
HMAC_CTX_reset(hmac);
HMAC_Init_ex(hmac, (unsigned char*)key.data(), keyLen, EVP_sha256(), NULL);
HMAC_Update(hmac, (unsigned char*)value.data(), valueLen);
HMAC_Final(hmac, hash, &len);
HMAC_CTX_reset(hmac);
HMAC_CTX_free(hmac);
return std::vector<uint8_t>((uint8_t*)hash,(uint8_t*)hash+SHA256_DIGEST_LENGTH);
Могу ли я получить второе мнение?