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