openssl verify (): предоставленный ключ param не может быть принудительно введен в открытый ключ для a.файл pem
в настоящее время пытается читать .pem
открытый ключ для проверки через openssl
.
/**
* Check whether the signed message sent back by the server is
* correct or not.
*/
function check($str, $MAC)
{
$fp = fopen(
dirname(__FILE__) . '/rsa_public_key.pem',
'r'
);
$cert = fread($fp, 8192);
fclose($fp);
$pubkeyid = openssl_get_publickey($cert);
return openssl_verify($str, $MAC, $pubkeyid);
}
С учетом сказанного, при выполнении моего сценария, я получаю эту ошибку:
openssl_verify(): supplied key param cannot be coerced into a public key in some/path at line X
изначально, я написал эту функцию, чтобы принять .cer
сертификаты. Вот объяснение разницы между всеми этими разные форматы ключей. В моем понимании!--1--> подобное .cer
, однако, я не мог для жизни меня выясните, как разрешить моему скрипту читать my .
мой вопрос - что мне нужно сделать, чтобы моя функция, чтобы прочитать этот открытый ключ?
EDIT: при некотором Гугле я попытался использовать file_get_contents()
к определенному пути, но я бы получил ту же ошибку.
что может быть причиной этой ошибки?
2 ответов
при открытии этого .pem
файл, все было в одной строке. Похоже, каждая строка требует длины 64 символа, поэтому я убедился, что каждая строка-64 строки, и она успешно проанализирована. Не имеет никакого отношения к .cer
.
кроме того,-----BEGIN PUBLIC KEY-----
и -----END PUBLIC KEY-----
строки должны содержать ровно пять черточками с каждой стороны. Ни больше, ни меньше.
в конце последней строки может быть или не быть новой строки.
допускаются окончания строк Windows (CR/LF), даже на *Nix-размещенном PHP.