CMS s více primárními podepisovateli

HotPDF dokáže vytvořit jeden kontejner SignedData podle RFC 5652 obsahující až 256 nezávislých primárních záznamů SignerInfo

Požadavky na sestavení

Každý THPDFCMSPrimarySignerRequest dodává vlastní certifikát a klíčový materiál, digest dokumentu, THPDFCMSSignOptions, volitelný THPDFSignatureProvider a identifikátor klíče poskytovatele

HPDFCMSBuildMultiSignedData ověřuje každý požadavek před vyvoláním jakéhokoli nativního klíče, externího callbacku, callbacku časového razítka, PDF MAC callbacku nebo poskytovatele, čímž zabraňuje, aby neplatný pozdější požadavek způsobil vyhnutelnou částečnou vzdálenou práci při podepisování

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);

Deterministické sloučení

HPDFCMSMergeSignedData kombinuje již vytvořené CMS kontejnery pro asynchronní nebo distribuované pracovní postupy podepisování bez opakování operací se soukromým klíčem

Každý vstup musí používat obálky a sady signedData s určenou délkou, musí deklarovat každý digest algoritmus použitý svými primárními podepisovateli a musí nést bitově identické encapContentInfo; další deklarované digest algoritmy zůstávají povoleny

Sloučený kontejner deduplikuje digest algoritmy, certifikáty a hodnoty odvolání, třídí všechny hodnoty SET OF podle DER pořadí bajtů, zachovává každého primárního podepisovatele a zvyšuje vnější verzi na nejvyšší platný požadavek vstupu

Pořadí požadavků po zakódování záměrně není pozorovatelné, protože signerInfos je DER SET OF; výsledky parsování a ověřování proto používají DER pořadí namísto pořadí požadavků

Sestavení s jedním podepisovatelem a sloučení jednoho kontejneru zachovávají stávající bajty CMS přesně

Nezávislá validace

HPDFParseCMSSignatures, HPDFVerifyCMSSignaturesEx a HPDFVerifyCMSSignerReport vracejí nezávislý výsledek pro každého primárního podepisovatele, včetně jeho atributů, politiky digestu a podpisu, odpovídajícího certifikátu, časových razítek, protipodpisů a stavu selhání

Malformovaný nebo kryptograficky neplatný podepisovatel nevymaže platný výsledek sourozence, zatímco agregovaný logický výsledek je nepravda, pokud neuspěje každý primární podepisovatel

Velikost placeholderu

HPDFCMSEstimateMultiSignerPlaceholder odvozuje délku každého podpisu bez podepisování, sestaví přesný deduplikovaný statický tvar kontejneru se syntetickými hodnotami podpisů, sečte rezervy dynamických callbacků a jednou aplikuje nakonfigurovanou globální bezpečnostní rezervu, zarovnání, minimum a maximum

THPDFCMSPlaceholderEstimateInfo.SignatureBytes hlásí součet pro všechny primární podepisovatele a cpesMixed identifikuje výsledek, jehož podepisovatelé použili různé zdroje odhadu

Hranice PDF pracovního postupu

API pro více podepisovatelů vystavují generickou funkci CMS pro aplikace, jejichž konzumní profil umožňuje několik primárních podepisovatelů v jednom kontejneru

Mnoho pracovních postupů PDF podpisu a PAdES modeluje jednoho primárního podepisovatele na slovník podpisu, takže používejte samostatná pole podpisu PDF, pokud recipientův profil výslovně nepřijímá CMS s více podepisovateli

Viz podepisovatele CMS SubjectKeyIdentifier, konzistenci digest algoritmu CMS a automatickou velikost CMS placeholderu