THPDFCMSVerifyOptions レコード
CMS 署名検証の上限、外部プロバイダー、署名ポリシーのピン留め、タイムスタンプ再検証を設定します
宣言
THPDFCMSVerifyOptions= record
SignatureProvider: THPDFSignatureProvider;
AllowMLDSA: boolean;
OpenSSLLibraryPath: string;
MaxSignerCount: Integer;
MaxCounterSignatureDepth: Integer;
// Policy pinning is applied to primary SignerInfo values. Empty
// expected fields do not constrain the corresponding policy field
RequireSignaturePolicy: boolean;
ExpectedSignaturePolicyOID: AnsiString;
ExpectedSignaturePolicyHash: TBytes;
SignaturePolicyDocument: TBytes;
// Set this flag to hash an intentionally empty policy document
VerifySignaturePolicyDocumentHash: boolean;
RejectUnknownSignaturePolicyHash: boolean;
// Batch validation sets this when a shared timestamp cache already
// holds the verdict for the embedded signature timestamp token: token
// re-verification is skipped and the caller restores the cached
// THPDFTimestampInfo afterwards. Document timestamps (ETSI.RFC3161)
// never take this path because the token is the primary signature
SkipSignatureTimestampVerification: boolean;
class function Default: THPDFCMSVerifyOptions; static;
end;
ユニット
HPDFSignVerify
フィールド
| フィールド | 目的 |
|---|---|
SignatureProvider | 署名と検証のプリミティブに使われる省略可能な外部 THPDFSignatureProvider。nil で組み込み実装を選択します |
AllowMLDSA | 検証中の ML-DSA 署名を許可します |
OpenSSLLibraryPath | 検証が OpenSSL バックエンドを通るときの OpenSSL ライブラリのあるディレクトリ |
MaxSignerCount | 処理するプライマリ署名者の上限。Default は 256 を設定します |
MaxCounterSignatureDepth | カウンター署名のネスト制限。Default は 8 を設定します |
RequireSignaturePolicy | True の場合、署名ポリシーを持たない署名は失敗します |
ExpectedSignaturePolicyOID | プライマリ SignerInfo が提示すべきポリシー OID。空なら制約しません |
ExpectedSignaturePolicyHash | ピン留めする期待ポリシーダイジェスト。空なら制約しません |
SignaturePolicyDocument | ハッシュ比較に使うポリシードキュメントのバイト列 |
VerifySignaturePolicyDocumentHash | True の場合、意図的に空のポリシードキュメントをハッシュします |
RejectUnknownSignaturePolicyHash | 埋め込みポリシーハッシュがどの期待値にも一致しない場合に検証を失敗させます |
SkipSignatureTimestampVerification | 一括検証の際、埋め込み署名タイムスタンプトークンの判定をキャッシュ済みとして信頼します |
Default | ゼロ初期化レコードに MaxSignerCount 256 と MaxCounterSignatureDepth 8 を設定して返すクラス関数 |
使用上の注意
- ゼロ初期化のローカル変数ではなく、必ず
THPDFCMSVerifyOptions.Defaultを起点にしてください。そうしないと署名者数と深さの上限が実際には適用されません - ポリシーピン留めのフィールドはプライマリ SignerInfo 値だけに適用されます。期待値が空のフィールドは、対応するポリシーチェックを制約しません
- 共有タイムスタンプキャッシュがトークンの判定を既に保持している場合、一括検証は
SkipSignatureTimestampVerificationを設定します。ドキュメントタイムスタンプがこの経路を通ることはありません