CMS の複数のプライマリ署名者
HotPDF は、最大 256 個の独立したプライマリ SignerInfo レコードを含む単一の RFC 5652 SignedData コンテナを作成できます
ビルドリクエスト
各 THPDFCMSPrimarySignerRequest は、独自の証明書と鍵マテリアル、ドキュメントダイジェスト、THPDFCMSSignOptions、オプションの THPDFSignatureProvider、およびプロバイダ鍵識別子を供給します
HPDFCMSBuildMultiSignedData は、ネイティブ鍵、外部コールバック、タイムスタンプコールバック、PDF MAC コールバック、またはプロバイダを呼び出す前にすべてのリクエストを検証し、無効な後続リクエストによって回避可能な部分的なリモート署名作業が発生するのを防ぎます
SetLength(Signers, 2);
Signers[0].KeyMaterial := FirstKey;
Signers[0].DocumentDigest := HPDFCMSDigestBytes(DocumentBytes, cmsdaSHA256);
Signers[0].Options := FirstOptions;
Signers[1].KeyMaterial := SecondKey;
Signers[1].DocumentDigest := HPDFCMSDigestBytes(DocumentBytes, cmsdaSHA384);
Signers[1].Options := SecondOptions;
Signers[1].Provider := RemoteProvider;
Signers[1].KeyIdentifier := 'approval-key';
CMS := HPDFCMSBuildMultiSignedData(Signers);
決定的マージ
HPDFCMSMergeSignedData は、秘密鍵操作を繰り返さずに、非同期または分散署名ワークフローのために、すでに構築された CMS コンテナを組み合わせます
すべての入力は決定的長さの signedData エンベロープとセットを使用し、そのプライマリ署名者が使用するすべてのダイジェストアルゴリズムを宣言し、バイト同一の encapContentInfo を保持しなければなりません。追加で宣言されたダイジェストアルゴリズムは引き続き許可されます
マージされたコンテナはダイジェストアルゴリズム、証明書、失効値を重複除去し、すべての SET OF 値を DER バイト順でソートし、すべてのプライマリ署名者を保持し、外側のバージョンを最も高い有効な入力要件に引き上げます
signerInfos は DER の SET OF であるため、エンコード後はリクエスト順を観察できません。そのため、解析と検証の結果はリクエスト順ではなく DER 順を使用します
単一署名者のビルドと単一コンテナのマージは、既存の CMS バイトを正確に保持します
独立した検証
HPDFParseCMSSignatures、HPDFVerifyCMSSignaturesEx、および HPDFVerifyCMSSignerReport は、その属性、ダイジェストと署名ポリシー、一致する証明書、タイムスタンプ、カウンター署名、失敗ステータスを含めて、すべてのプライマリ署名者に独立した結果を返します
不正な署名者または暗号的に無効な署名者は、有効な兄弟の結果を消去しません。一方、集約されたブール結果は、すべてのプライマリ署名者が成功しない限り false です
プレースホルダのサイズ見積もり
HPDFCMSEstimateMultiSignerPlaceholder は署名なしで各署名長を導出し、合成署名値で正確に重複除去された静的コンテナ形状を構築し、動的コールバック予約を合計し、設定されたグローバル安全マージン、アライメント、最小値、最大値を一度だけ適用します
THPDFCMSPlaceholderEstimateInfo.SignatureBytes はすべてのプライマリ署名者の合計を報告し、cpesMixed は署名者が異なる見積もりソースを使用した結果を特定します
PDF ワークフローの境界
マルチ署名者 API は、その消費プロファイルが単一コンテナ内の複数のプライマリ署名者を許可するアプリケーション向けに、汎用 CMS 機能を公開します
多くの PDF 署名および PAdES ワークフローは署名辞書ごとに 1 つのプライマリ署名者をモデル化するため、受信者プロファイルがマルチ署名者 CMS を明示的に受け入れない限り、個別の PDF 署名フィールドを使用してください
CMS SubjectKeyIdentifier 署名者、CMS ダイジェストアルゴリズムの整合性、および CMS プレースホルダの自動サイズ調整を参照してください