Hiện đang cố đọc .pem
khóa công khai để xác minh thông qua openssl
.openssl_verify(): thông số khóa được cung cấp không thể bị ép buộc vào khóa công khai cho tệp .pem
/**
* 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);
}
Với những gì đã nói, sau khi thực hiện kịch bản của tôi, tôi nhận được lỗi này:
openssl_verify(): supplied key param cannot be coerced into a public key in some/path at line X
Ban đầu, tôi đã viết chức năng này để chấp nhận .cer
xác nhận. Dưới đây là giải thích về sự khác biệt giữa tất cả các số different key formats này. Theo hiểu biết của tôi, .pem
tương tự như .cer
, tuy nhiên, tôi không thể cho cuộc sống của tôi tìm ra cách cho phép tập lệnh của tôi đọc tệp .pem
của tôi.
Câu hỏi của tôi là - tôi cần phải làm gì để chức năng đọc khóa chung này?
EDIT: Khi một số Googling, tôi đã thử sử dụng file_get_contents()
cho một đường dẫn cụ thể nhưng tôi sẽ nhận được cùng một lỗi.
Điều gì có thể gây ra lỗi này?
Bạn có nghĩa là bạn đã đảm bảo mỗi dòng là 64 ký tự? – Lamy
Mỗi dòng của khối Base64, tôi đoán, không phải dòng đầu trang/chân trang. –
@ theGreenCabbage, câu trả lời sẽ có nhiều giá trị hơn với mã trong đó. – Eugene