Il semble que les fonctions openssl_sign
et openssl_verify
de PHP effectuent le hachage des données avant la signature, en raison des restrictions de taille, alors j'ai essayé de l'émuler sur la ligne de commande.Comment vérifier une signature via PHP créée sur la ligne de commande OpenSSL?
signature via OpenSSL:
echo "foo" | openssl dgst -sha1 -binary | openssl rsautl -inkey priv.pem -sign > sig.bin
vérifier ensuite par PHP
$key = openssl_pkey_get_public('pub.pem');
$ver = openssl_verify("foo\n", file_get_contents('sig.bin'), $key, OPENSSL_ALGO_SHA1);
// $ver always 0
J'ai essayé de nombreuses combinaisons, des formes binaires et hexagonaux du hachage, avec et sans retour à la ligne de fuite, et même hachage avant de passer en fonction php
le [pkeyutl] (http : //www.openssl.org/docs/apps/pkeyutl.html#) commande peut faire le hachage et la signature en une seule étape. –
Merci, bien que mon installation de openssl (Mac) n'ait pas cet utilitaire – Tim