Einzelnen Beitrag anzeigen

jziersch

Registriert seit: 9. Okt 2003
Ort: München
251 Beiträge
 
Delphi 10.4 Sydney
 
#1

RSA Signatur unter PHP - Verify in Delphi

  Alt 8. Sep 2020, 08:24
Hallo,

eigentlich sollte dies ganz einfach sein ....

in PHP benutze ich openssl um ein public/privat key paar zu erstellen

Code:
$config = array(
         "digest_alg" => "SHA256",
         "private_key_bits" => 2048,
         "private_key_type" => OPENSSL_KEYTYPE_RSA,
     );
   
$res = openssl_pkey_new($config);
openssl_pkey_export($res, $privKey);
Und erstelle nun eine Signatur aus meinen Daten:
openssl_sign($data, $signatur, $privKey, "sha256" );

In Delphi möchte ich nun die Signatur mit dem öffentlichen Schlüssel prüfen. In PHP geht das ganz einfach:

Code:
$pubKey = openssl_pkey_get_details($res);
$pubKey = $pubKey["key"];
$ok = openssl_verify($data, $signatur, $pubKey, "sha256" );
Ich habe leider keine Delphi Anbindung an openssl gefunden die verify (oder alternativ public_decrypt) unterstützt. (private_decrypt wird u.a.hier unterstützt)

Also habe ich TMSCrypt lizensiert. Dort wird als Eingabe Parameter aber modulus/PublicExponent erwartet. Und hier komme ich nicht weiter, nicht mit RSAEncSign1.FromOpenSSLPublicKey und auch nicht durch Eintragen der Werte die ich mit PHP so ermittelt habe. Verify gibt immer -316 zurück.

Code:
$all=openssl_pkey_get_details( $res );
$rsa = $all["rsa"];
echo 'Modulus='.base64_encode ($rsa["n"]).'<br>';
echo 'Exponent='.base64_encode ($rsa["e"]).'<br>';
Hat jemand die Lösung?

Julian
WPCubed GmbH
Komponenten für Delphi:
WPTools, wPDF, WPViewPDF
  Mit Zitat antworten Zitat