RSAで署名されたPDF文書を手動で検証したいのですが、それ以降はPDF内でエンコードされたものとは異なる署名を受け取ることができません。ここに私が従ったステップがあります、どんな助け/ヒントでも本当に感謝しました。
- 単純なテキストのPDFを作成しました(〜1Kb)
- 適切な2048ビットRSAキーを使用してopenssl pfxファイルを生成しました。
- 私はWindowsユーザーcertmgrに言及されたキーのアップロードをしました
- 私はJSignPdf 1.6.3(ハッシュアルゴリズムsha-256)によってPDFに署名するために言及されたキーを使用しました
上記のステップからの出力は、正しく署名されたPDF文書(緑色のトップバー)です。それから私はハッシュがコンテンツ構造の中に埋め込まれたものと一致するかどうか計算するために生のファイルを受け取るためにアドビドキュメントで説明されるようにコンテンツフィールドを削除するためにnotepad ++を使いました。このステップは私のSHA-256がうまくいったことに成功しました。
これは、PDFのcontentsフィールド値に対するASN.1デコーダの出力です。
2.16.840.1.101.3.4.2.1sha-256(NISTアルゴリズム)
1.2.840.113549.1.9.3 contentType(PKCS#9)
1.2.840.113549.1.7.1データ(PKCS#7)
1.2.840.113549.1.9.4 messageDigest(PKCS#9)32バイト
E271FBADC18080C7E8BD5F0FFBCA0BD77E488309E450D28B79B720D08F69F3FC
1.2.840.113549.1.1.1rsaEncryption(PKCS#1)256バイト
6547B3C9658AA8C1C259A97F1B336A099677013EDABE315F9C18C4CE6B6341CAA7054…
私はこの修正されたファイル上でSHA-256を計算するのと同じ値をPDFに埋め込まれたものと手動で得ることができます(E271FB *)。
私が直面している問題は、同じsha-256準拠のファイルに対して手動で最後の値rsaEncryptionを取得することができないか、または単に前述のハッシュに基づいて取得することができないということです。
これが私が試したものです。
- openssl dgst -sign ./domain.key file_hash.pdf> signature.bin
- openssl dgst -sha256 -sign ./domain.key -out signature.bin file_hash.pdf
file_hash.pdfは、sha-256がJSignPDFの緑色のPDFファイルに一致するファイルで、domain.keyはWindowsにインポートされたものと同じキーです(text --- begin private key ---)。
最後に何が悪いのか、またはこの6547 B *値をどのように達成することができますか。