コンテンツにスキップ

PAdES ベースライン署名で PDF に署名する(移動済み)

このページに以前掲載していた署名手順は、現在は 置き換えられています。代わりに、正規のレシピを使用してください。

PAdES B-B で PDF に署名し、PAdES B-T に拡張する

このページの以前のバージョンでは、高レベルの Document::setSignature()save() 連結部は接続されておらずNotImplementedException をスローすると記載していました。これは現在では当てはまりません。 高レベルの連結部は、現在は実際の署名を出力します。

Document::setSignature($cert, SignatureLevel::PAdES_B_B)->save()(および同等の output() / getPdfData())は、/Sig フィールド(/ByteRange を伴う)と、DER エンコードされた CMS SignedData オブジェクトを署名ディクショナリの Contents エントリ内に書き込みます。これは、ISO 32000-2 §12.8 が ETSI.CAdES.detached SubFilter に対して規定している構造です。結果は CMS 検証可能 です。標準的な CMS/PKCS#7 検証ツールで解析・検証できます。

  • B-B(Core レベル)は、この連結部を通じて直接生成されます。
  • B-T は、同じ呼び出しに TsaClient を渡すことで、RFC 3161 の signature-time-stamp を 1 つ追加します。
  • B-LT / B-LTA は、同じ 高レベルの連結部(setSignature($cert, SignatureLevel::PAdES_B_LTA, $tsaClient)->save())を通じて、Pro および Enterprise パッケージがインストールされている場合に利用できます。これらがない場合、呼び出しは部分的な長期リビジョンを書き込まず、フェイルクローズします。暗号化されたドキュメントも、B-LT/B-LTA ではフェイルクローズします。

低レベルの NextPDF\Security\Signature\DigitalSigner パスも引き続きサポートされており、以下の正規のレシピではこのパスをエンドツーエンドで解説しています。高レベルの連結部は、同じ署名エンジンの上に薄く重ねた便利機能にすぎません。統合テストスイートは両方のパスを実行し、実際に解析可能な CMS オブジェクトを生成します。

U-1 の注意事項(主張の範囲)。 「CMS 検証可能」とは、生成されたオブジェクトが RFC 5652 および ISO 32000-2 §12.8 に準拠した整形式の CMS SignedData であることを意味し、 ETSI EN 319 142-1 のベースラインプロファイル適合性の主張では ありません。 また、法的有効性の主張でもありません。その標準のベースラインレベルに関する部分は、 検証コーパスに含まれていません。B-T の signature-time-stamp 要件は、 RFC 3161、RFC 5652、RFC 5816 および ISO 32000-2 §12.8 を用いて、ETSI EN 319 122-1 §5.3 に照らして確認されました。 B-LT/B-LTA は、長期検証の構造(DSS ディクショナリと DocTimeStamp リビジョン)を生成します。ただし、これらについてプロファイル適合性テスト済みであるとは 謳っていません。適合性および法的有効性の判定は、独立した検証ツールが行います。

旧ページがディスク上の成果物について主張していた構造上の事実は、引き続き正しいままです。置き換え後のレシピでは、それらを根拠とともに改めて説明しています。

  • 署名値は、署名ディクショナリの Contents エントリに格納されます(ISO 32000-2 §12.8.1)。
  • ダイジェストは ByteRange 全体にわたって計算され、署名値そのものは除外されます(ISO 32000-2 §12.8.1)。

このページは、生成された署名が法的に有効であるとは主張しません。法的有効性は、証明書、そのトラストアンカー、および検証ツールのポリシーに依存しますが、これらはすべてこのライブラリの外側に存在します。