SHA3 PDF 署名とタイムスタンプ

HotPDF は、detached CMS、署名属性、RSA または ECDSA の署名識別子、RFC 3161 の message imprint、署名タイムスタンプ、文書タイムスタンプ、Seed Value ディクショナリ、読み込んだ署名の検証の全体に、ひとつの digest ポリシーを適用する

Digest の選択

THPDFCMSDigestAlgorithm は cmsdaSHA256、cmsdaSHA384、cmsdaSHA512、cmsdaSHA3_256、cmsdaSHA3_384、cmsdaSHA3_512 を提供する

Options := HPDFCMSDefaultOptions(palBaseline_B_T);
Options.DigestAlgorithm := cmsdaSHA3_384;
Options.SignatureScheme := cmsRSAPSS;
Options.PSSSaltLength := 48;

HPDFCMSBuildSignedDataEx、ストリーム署名関数、外部署名者、署名プロバイダはすべて、SHA-256 へのフォールバックなしで選択した digest を使用する

RSA PKCS#1 v1.5 は digest 固有の DigestInfo を使用し、RSA-PSS は一致するハッシュと MGF1 パラメータを使用し、cmsECDSA は選択した digest 用の結合 ECDSA 署名 OID を出力する

タイムスタンプ ポリシー

GetContentTimeStamp は選択した文書 digest を受け取り、GetSignatureTimeStamp は CMS 署名値の選択した digest を受け取る

返された RFC 3161 トークンは、message-imprint の OID とバイトの両方が選択した digest ポリシーに一致しない限り拒否される

DigestAlgorithm パラメータを持つ THotPDF.RenewPAdESLTATimestamp のオーバーロードは、アーカイブ タイムスタンプの更新に同じポリシーを適用する。一方、互換用のオーバーロードは SHA-256 のままである

PDF の宣言と Seed Value

THPDFPage.AttachPAdESSeedValue で SHA3-256、SHA3-384、または SHA3-512 を使用すると、ISO 32001 PDF 2.0 のデベロッパー拡張が自動的に宣言される

カタログエントリでは、/Extensions /ISO_ に /BaseVersion /2.0、/ExtensionLevel 32001、/ExtensionRevision (:2022)、/Type /DeveloperExtensions を指定します

プロバイダの要件

THPDFPKCS11SignatureProvider は SHA3 リクエストを対応する PKCS#11 のハッシュと MGF 識別子にマップし、raw の ECDSA 署名を CMS DER に変換する

THPDFWindowsKeyStorageSignatureProvider は選択した SHA3 アルゴリズムを CNG に渡し、こちらも raw の ECDSA 署名を CMS DER に変換する

SignPDFWithSystemCertificate は、Windows 証明書ストアのキーに同じ CNG ポリシーを適用する。一方、レガシーの CryptoAPI キーは SHA3 を明示的に拒否する

要求された SHA3 アルゴリズムを実装していないトークン、キー ストレージ プロバイダ、または Windows のバージョンは、明示的な非対応ステータスを返す

ストリーミング性能

PDF のバイト範囲は境界のあるチャンクでハッシュされ、SHA3 署名は PDF MAC の生成と同じ範囲スキャンを共有できる。両方のポリシーが同じアルゴリズムを選択した場合は digest を直接再利用する