デジタル署名された PDF ドキュメント (フォームに記入済み) があるとします。PHP を使用してその PDF ファイルを検証する方法を見つける必要があります。
function を使用する必要があることはわかっていますopenssl_verify($data, $signature, $pub_key_id)
。3 つのパラメーターが必要です (公開証明書を持っています)。
PDF ファイルから署名済みデータと署名自体を抽出するにはどうすればよいですか?
デジタル署名された PDF ドキュメント (フォームに記入済み) があるとします。PHP を使用してその PDF ファイルを検証する方法を見つける必要があります。
function を使用する必要があることはわかっていますopenssl_verify($data, $signature, $pub_key_id)
。3 つのパラメーターが必要です (公開証明書を持っています)。
PDF ファイルから署名済みデータと署名自体を抽出するにはどうすればよいですか?
PDF を解析する必要があります。理論的には、独自の解析関数を作成できます。ただし、既製のものを使用すると、多くの時間を節約できます。
Apache の PDFBox はどうですか? 他のシェル スクリプトとして実行するか、PHP/Java ブリッジを使用することができます。
手動で行うことにした場合は、パーサーを実装する方法についてPDF 仕様を参照してください。複雑な部分は無視して、startxref を探すことで署名を見つけることができるはずです。
VersyPDF.PHPのようなプロプライエタリなソリューションもありますが、それらはあなたの仕事には少しやり過ぎかもしれません (ただし、透かしの入った出力を気にしないため、評価版を使用することでうまくいくかもしれません)。
データと署名を抽出するには、PDF の /ByteRange フィールドで数値を使用できます。/ByteRange[abcd] として 4 つの数字があります。署名は b(th) バイトから c(th) バイトまでで、残りはデータです。PHP では、stream_get_contents() 関数を使用してストリームごとにコンテンツを取得できます。