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