Я работаю над устаревшим кодом и обнаружил шифрование ключа openssl, которое выдает 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);
}