是否需要openssl_free_key?

时间:2019-07-10 06:53:15

标签: php openssl certificate

我正在处理一些旧代码,遇到了opensl密钥加密,该密钥引发E_WARNING并显示错误消息“ openssl_free_key()期望参数1为资源,给定字符串”。

经过仔细检查,我发现私钥确实是字符串而不是资源。

由于密钥是字符串,并且密钥不是由“ 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);
}

1 个答案:

答案 0 :(得分:1)

文档说:

  

此函数释放由openssl_pkey_new()创建的私钥。

PHP Docs

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