2014-10-16 11 views
6

Obecnie próbuje odczytać klucz publiczny .pem, aby zweryfikować go za pomocą openssl.openssl_verify(): Podany parametr klucza nie może być wymuszony na klucz publiczny dla pliku .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); 
} 

Z powiedział, że po wykonaniu mojego skryptu, otrzymuję ten błąd:

openssl_verify(): supplied key param cannot be coerced into a public key in some/path at line X

Początkowo napisałem tę funkcję, aby zaakceptować .cer certyfikaty. Oto wyjaśnienie różnicy między tymi wszystkimi different key formats. Dla mojego zrozumienia .pem są podobne do .cer, jednak nie mogłem do końca życia wymyślić, jak zezwolić na mój skrypt do odczytu mojego pliku .pem.

Moje pytanie brzmi - co muszę zrobić, aby moja funkcja mogła odczytać ten klucz publiczny?

EDYCJA: Po niektórych Googling, próbowałem przy użyciu file_get_contents() do konkretnej ścieżki, ale otrzymam ten sam błąd.

Co może być przyczyną tego błędu?

Odpowiedz

4

Po otwarciu tego pliku .pem wszystko było w jednym wierszu. Wygląda na to, że każda linia wymaga długości 64 znaków, więc upewniłem się, że każda linia ma 64 wiersze i została pomyślnie przeanalizowana. Nie miało to nic wspólnego z .cer.

+0

Masz na myśli, że upewniłeś się, że każda linia ma 64 znaki? – Lamy

+0

Każda linia bloku Base64, przypuszczam, nie linie nagłówka/stopki. –

+0

@ theGreenCabbage, odpowiedź będzie miała więcej wartości z kodem w nim. – Eugene

2

Ponadto -----BEGIN PUBLIC KEY----- i -----END PUBLIC KEY----- linie powinny zawierać dokładnie pięć kreski na każdym boku. Nie więcej nie mniej.

Na końcu ostatniej linii może być lub nie być znak nowej linii.

Koniec linii systemu Windows (CR/LF) jest dozwolony, nawet w PHP * nix-hostowanym.

Powiązane problemy