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().
因此,如果您的密钥是字符串:否。
我正在处理一些遗留代码,遇到了抛出 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().
因此,如果您的密钥是字符串:否。