J'utilise pkcs7 pour signer un document et tout fonctionne bien, le problème est que la commande pour vérifier le signe ne fonctionne pas, retourne toujours faux. J'essaie d'utiliser la commande de terminal dans le fichier et fonctionne bien.PHP openssl_pkcs7_verify ne fonctionne pas
commande Sign:
openssl_pkcs7_sign(
$tempdoc,
$tempsign,
$this->signature_data['signcert'],
array($this->signature_data['privkey'],
$this->signature_data['password']),
array(),
PKCS7_BINARY | PKCS7_DETACHED);
commande VERIFY:
openssl_pkcs7_verify($tempsign, PKCS7_NOVERIFY)
commande Terminal:
openssl pkcs7 -inform DER -in signature.pkcs7 -print_certs -text
EDIT 1
Je fais des tests dans mon code et découvrir si je crée mon signe avec seulement PKCS7_DETACHED ou PKCS7_BINARY fonctionne très bien la vérifier, mais les deux ensemble, je reçois l'erreur. Pourquoi cela se passe-t-il?
Avez-vous oublié le dollar devant 'tempsign'? –
Est-ce que 'openssl_pkcs7_sign' réussit réellement? Voir aussi la page de manuel ['PKCS7_sign'] (https://www.openssl.org/docs/man1.0.2/crypto/PKCS7_sign.html). Si cela échoue, vous devriez appeler 'ERR_get_error' immédiatement pour récupérer l'erreur. Voir aussi la page de manuel ['ERR_get_error'] (https://www.openssl.org/docs/man1.0.2/crypto/ERR_get_error.html). – jww
Ils ne échouent pas parce que le lecteur PDF a réussi à lire la assignation. Et un juste oublier de mettre dans la question le $, mais dans mon code est juste. –