PAdES ベースライン署名で PDF に署名する(移動済み)
このレシピは移動しました
「このレシピは移動しました」という見出しのセクションこのページに以前掲載していた署名手順は、現在は 置き換えられています。代わりに、正規のレシピを使用してください。
このページが変更された理由(正誤表)
「このページが変更された理由(正誤表)」という見出しのセクションこのページの以前のバージョンでは、高レベルの 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)。
このページは、生成された署名が法的に有効であるとは主張しません。法的有効性は、証明書、そのトラストアンカー、および検証ツールのポリシーに依存しますが、これらはすべてこのライブラリの外側に存在します。