openssl_free_key 是必需的吗?

Is openssl_free_key required?

我正在处理一些遗留代码,遇到了抛出 E_WARNING 和错误消息 "openssl_free_key() expects parameter 1 to be resource, string given" 的 openssl 密钥加密。

仔细一看,发现私钥确实是一个字符串,而不是资源。

由于密钥是一个字符串并且密钥不是由 "openssl_get_privatekey" 生成的,因此在请求结束时是否需要 "openssl_free_key"?

搜索和查看 PHP 文档,未提供有关此问题的明确信息。

$value = 'something';

if (openssl_pkcs12_read($file, $cart, $pass) === true) {
    $private_key = $cart['pkey'];
} else {
    throw new Exception('Failed to open certificate.');
}

if (isset($private_key)) {
    openssl_sign($value, $signature, $private_key, OPENSSL_ALGO_SHA1);
    openssl_free_key($private_key);
}

文档说:

This function frees a private key created by openssl_pkey_new().

PHP Docs

因此,如果您的密钥是字符串:否。