CMS SubjectKeyIdentifier 署名者

HotPDF は、発行者名と証明書シリアル番号の代わりに、X.509 subjectKeyIdentifier 拡張機能を使用してプライマリ CMS 署名者を特定できます

識別子の選択

HPDFCMSDefaultOptions は THPDFCMSSignOptions.SignerIdentifier を cmsidIssuerAndSerialNumber に設定するため、既存の呼び出し側は決定的な CMS バイト形状を保持します

HPDFCMSBuildSignedDataEx、プロバイダベースの CMS ビルダー、プレースホルダのサイズ見積もり、または THPDFCMSSignOptions を受け入れる高水準の署名オーバーロードを呼び出す前に、フィールドを cmsidSubjectKeyIdentifier に設定してください

Options := HPDFCMSDefaultOptions(palBaseline_B_B);
Options.SignerIdentifier := cmsidSubjectKeyIdentifier;
CMS := HPDFCMSBuildSignedDataEx(KeyMaterial, DocumentDigest, Options);

証明書の要件

署名者証明書には、OID 2.5.29.14 を持つ非空の X.509 拡張機能が厳密に 1 つだけ含まれ、その拡張値には完全な DER OCTET STRING が含まれていなければなりません

その拡張機能が欠落、重複、空、切り詰め、または不正な場合、HotPDF は署名前に失敗します。公開鍵から鍵識別子を合成することはありません

SigningCertificateV2 は、SignerInfo SID が鍵識別子を使用する場合でも、発行者とシリアルフィールドで同じ証明書をバインドし続けます

ワイヤ形式と検証

鍵識別子はプリミティブ IMPLICIT [0] としてエンコードされ、SignerInfo.version は 3 であり、生成される単一署名者の SignedData.version は RFC 5652 で要求される 3 です

検証では、SID バイトが埋め込まれた証明書拡張機能と一致することを要求し、一致しない SID 値、バージョンが 1 でない発行者とシリアルレコード、バージョンが 3 でない SKI レコード、および外側バージョンが 3 未満の SKI コンテナを拒否します

コンパクトな識別子は、キー指向の証明書ストアと発行者名エンコーディングを保持しないワークフローに役立ちますが、使用するソフトウェアは RFC 5652 の SKI 選択肢をサポートする必要があります

HPDFCMSBuildCounterSignerInfo は発行者とシリアル ID を使い続けます。プライマリ署名者は THPDFCMSSignOptions で設定してください

最新の署名プロバイダとCMS ダイジェストアルゴリズムの整合性を参照してください