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 ダイジェストアルゴリズムの整合性を参照してください