Firmatari CMS SubjectKeyIdentifier

HotPDF può identificare il firmatario primario CMS tramite l'estensione X.509 subjectKeyIdentifier invece del nome issuer e del numero di serie del certificato

Scelta dell'identificatore

HPDFCMSDefaultOptions imposta THPDFCMSSignOptions.SignerIdentifier a cmsidIssuerAndSerialNumber, così i chiamanti esistenti conservano la loro forma di byte CMS deterministica

Impostare il campo a cmsidSubjectKeyIdentifier prima di chiamare HPDFCMSBuildSignedDataEx, un builder CMS basato su provider, la stima dei placeholder o un overload di firma di alto livello che accetta THPDFCMSSignOptions

Options := HPDFCMSDefaultOptions(palBaseline_B_B);
Options.SignerIdentifier := cmsidSubjectKeyIdentifier;
CMS := HPDFCMSBuildSignedDataEx(KeyMaterial, DocumentDigest, Options);

Requisiti del certificato

Il certificato del firmatario deve contenere esattamente una estensione X.509 non vuota con OID 2.5.29.14 il cui valore di estensione contiene un OCTET STRING DER completo

HotPDF fallisce prima della firma quando quella estensione manca, è duplicata, vuota, troncata o malformata; non sintetizza un key identifier dalla chiave pubblica

SigningCertificateV2 continua a legare lo stesso certificato con i suoi campi issuer e seriale anche quando il SID del SignerInfo usa il key identifier

Formato sul filo e verifica

Il key identifier è codificato come IMPLICIT primitivo [0], SignerInfo.version è 3, e il SignedData.version generato a firmatario singolo è 3 come richiesto da RFC 5652

La verifica richiede che i byte del SID corrispondano all'estensione del certificato incorporato e rifiuta valori SID non corrispondenti, record issuer-and-serial con versione del firmatario diversa da 1, record SKI con versione del firmatario diversa da 3 e contenitori SKI la cui versione esterna è inferiore a 3

L'identità compatta è utile per i certificate store orientati alle chiavi e per i workflow che non conservano le codifiche dei nomi issuer, ma il software di consumo deve supportare la scelta SKI di RFC 5652

HPDFCMSBuildCounterSignerInfo continua a usare identità issuer-and-serial; configurare il firmatario primario tramite THPDFCMSSignOptions

Vedere modern signature providers e coerenza degli algoritmi di digest CMS