需要从 EVP_sha256() 中释放 EVP_MD*?
Need to free EVP_MD* from EVP_sha256()?
我正在使用 OpenSSL,但不是很熟悉。试图用它来解码某人从数据包中的另一种编程语言发送给我的东西。不管怎样,信息是用 OpenSSL 编码的,所以我需要用它来解码。我已经或多或少地工作了,但我担心资源使用。
我正在使用 PKCS5_PBKDF2_HMAC()
按照加密方式制作 digest_key。该函数的参数之一需要调用 EVP_sha256()
。在使用这样的函数时,通常我习惯于调用另一个函数来释放内存或句柄。我找不到适合释放返回的 handle/pointer 的函数。如果有任何不同,我会从 C++ 调用。
我应该总是在调用 PKCS5_PBKDF2_HMAC()
之前调用 EVP_sha256()
,还是应该在 C++ 中使用静态变量以便它只被调用一次?我是否必须担心 运行 重复调用它会导致内存不足,还是它总是返回指向只分配一次的东西的指针?
... 10 分钟过去了...
好的,我刚看了源码。它返回一个指向已经静态分配的东西的指针,所以看来我不需要担心清理它?
无需从 EVP_sha256()
或任何其他类似函数中释放 return,其中 return 是指向 EVP_MD
、EVP_CIPHER
等。在即将推出的 OpenSSL 3.0 中,有函数 return 非常量指针(EVP_MD_fetch()
、EVP_CIPHER_fetch()
等)。如果您使用的是 OpenSSL 3.0,并开始使用这些功能,那么您将不得不释放它们。
我正在使用 OpenSSL,但不是很熟悉。试图用它来解码某人从数据包中的另一种编程语言发送给我的东西。不管怎样,信息是用 OpenSSL 编码的,所以我需要用它来解码。我已经或多或少地工作了,但我担心资源使用。
我正在使用 PKCS5_PBKDF2_HMAC()
按照加密方式制作 digest_key。该函数的参数之一需要调用 EVP_sha256()
。在使用这样的函数时,通常我习惯于调用另一个函数来释放内存或句柄。我找不到适合释放返回的 handle/pointer 的函数。如果有任何不同,我会从 C++ 调用。
我应该总是在调用 PKCS5_PBKDF2_HMAC()
之前调用 EVP_sha256()
,还是应该在 C++ 中使用静态变量以便它只被调用一次?我是否必须担心 运行 重复调用它会导致内存不足,还是它总是返回指向只分配一次的东西的指针?
... 10 分钟过去了...
好的,我刚看了源码。它返回一个指向已经静态分配的东西的指针,所以看来我不需要担心清理它?
无需从 EVP_sha256()
或任何其他类似函数中释放 return,其中 return 是指向 EVP_MD
、EVP_CIPHER
等。在即将推出的 OpenSSL 3.0 中,有函数 return 非常量指针(EVP_MD_fetch()
、EVP_CIPHER_fetch()
等)。如果您使用的是 OpenSSL 3.0,并开始使用这些功能,那么您将不得不释放它们。