CMS Multiple Primary Signers

HotPDF može stvoriti jedan SignedData spremnik RFC 5652 koji sadrži do 256 neovisnih primarnih SignerInfo zapisa

Zahtjevi izgradnje

Svaki THPDFCMSPrimarySignerRequest isporučuje vlastite podatke certifikata i ključa, digest dokumenta, THPDFCMSSignOptions, opcionalni THPDFSignatureProvider i identifikator ključa providera

HPDFCMSBuildMultiSignedData provjerava svaki zahtjev prije pozivanja bilo kojeg nativnog ključa, vanjskog callbacka, timestamp callbacka, PDF MAC callbacka ili providera, sprječavajući da nevažeći kasniji zahtjev izazove izbježivi djelomični daljinski rad potpisivanja

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

Determinističko spajanje

HPDFCMSMergeSignedData kombinira već izgrađene CMS spremnike za asinkrone ili distribuirane tokove potpisivanja bez ponavljanja operacija na privatnom ključu

Svaki ulaz mora koristiti signedData omotnici i skupove određene duljine, mora deklarirati svaki algoritam digest koji koriste njegovi primarni potpisnici i mora nositi bajt-identični encapContentInfo; dodatno deklarirani algoritmi digestova ostaju dopušteni

Spojeni spremnik deduplicira algoritme digestova, certifikate i vrijednosti opoziva, sortira sve SET OF vrijednosti prema DER bajt-redoslijedu, zadržava svakog primarnog potpisnika i podiže vanjsku verziju na najviši važeći zahtjev ulaza

Redoslijed zahtjeva namjerno nije uočljiv nakon kodiranja jer je signerInfos DER SET OF; zato rezultati parsiranja i verifikacije koriste DER redoslijed, a ne redoslijed zahtjeva

Izgradnja s jednim potpisnikom i spajanje jednog spremnika zadržavaju postojeće CMS bajtove točno

Nezavisna provjera

HPDFParseCMSSignatures, HPDFVerifyCMSSignaturesEx i HPDFVerifyCMSSignerReport vraćaju nezavisan rezultat za svakog primarnog potpisnika, uključujući njegove atribute, digest i politiku potpisa, odgovarajući certifikat, vremenske žigove, counter-signature i status neuspjeha

Malformirani ili kriptografski nevažeći potpisnik ne briše važeći rezultat susjeda, dok je agregirani Boolean rezultat lažan osim ako svaki primarni potpisnik ne uspije

Određivanje veličine zamjenskog mjesta

HPDFCMSEstimateMultiSignerPlaceholder izvodi svaku duljinu potpisa bez potpisivanja, gradi točan deduplicirani oblik statičkog spremnika sa sintetičkim vrijednostima potpisa, zbraja dinamičke rezerve callbacka i primjenjuje konfiguriranu globalnu sigurnosnu marginu, poravnanje, minimum i maksimum jednom

THPDFCMSPlaceholderEstimateInfo.SignatureBytes prijavljuje zbroj za sve primarne potpisnike, a cpesMixed identificira rezultat čiji su potpisnici koristili različite izvore procjene

Granica PDF radnog toka

API-ji s više potpisnika izlažu generičku CMS funkcionalnost za aplikacije čiji potrošački profil dopušta nekoliko primarnih potpisnika u jednom spremniku

Mnogi PDF signature i PAdES radni tokovi modeliraju jednog primarnog potpisnika po signature dictionaryju, stoga koristite zasebna PDF polja potpisa osim ako profil primatelja izričito prihvaća CMS s više potpisnika

Vidi CMS SubjectKeyIdentifier signers, CMS digest-algorithm consistency i CMS placeholder auto-sizing