Je souhaite valider manuellement un document PDF signé RSA, mais je ne reçois pas de signature différente de celle codée dans un fichier PDF. Voici les étapes que j'ai suivies, toute aide / conseil vraiment apprécié.
- J'ai fait un simple texte PDF (~ 1Ko)
- J'ai généré le fichier pfx openssl avec la clé RSA 2048bit appropriée
- J'ai fait un téléchargement de la clé mentionnée dans l'utilisateur Windows certmgr
- J'ai utilisé la clé mentionnée pour signer PDF via JSignPdf 1.6.3 (algorithme de hachage sha-256)
Le résultat des étapes ci-dessus est un document PDF correctement signé (barre supérieure verte). Ensuite, j'ai utilisé notepad ++ pour supprimer le champ de contenu, comme indiqué dans la documentation d'Adobe, afin de recevoir un fichier brut permettant de déterminer si le hachage correspond à celui incorporé à l'intérieur de la structure de contenu. Cette étape a été couronnée de succès avec mon SHA-256.
Voici la sortie du décodeur ASN.1 pour la valeur du champ de contenu à partir de PDF:
2.16.840.1.101.3.4.2.1sha-256 (algorithme NIST)
1.2.840.113549.1.9.3contentType (PKCS # 9)
1.2.840.113549.1.7.1data (PKCS # 7)
1.2.840.113549.1.9.4messageDigest (PKCS # 9) 32 octets
E271FBADC18080C7E8BD5F0FFBCA0BD77E488309E450D28B79B720D08F69F3FC
1.2.840.113549.1.1.1rsaEncryption (PKCS # 1) 256 octets
6547B3C9658AA8C1C259A97F1B336A099677013EDABE315F9C18C4CE6B6341CAA7054…
Je peux obtenir la même valeur en calculant SHA-256 sur ce fichier modifié manuellement que celle incorporée au format PDF (E271FB *).
Le problème auquel je suis confronté est que je ne peux pas obtenir manuellement la dernière valeur rsaEncryption sur le même fichier compatible sha-256 ou simplement en fonction du hachage mentionné.
Voici ce que j'ai essayé ..
- openssl dgst -sign ./domain.key fichier_hash.pdf> signature.bin
- openssl dgst -sha256 -sign ./domain.key -out signature.bin fichier_hash.pdf
Où file_hash.pdf est le fichier qui sha-256 correspond à celui en vert PDF de JSignPDF et domain.key est la même clé importée dans Windows (avec le texte --- begin private key ---).
Pouvez-vous me dire ce que je ne fais pas bien à la fin ou comment puis-je atteindre cette valeur 6547B *?
la source