Podpisujący CMS SubjectKeyIdentifier

HotPDF potrafi identyfikować głównego podpisującego CMS po rozszerzeniu X.509 subjectKeyIdentifier zamiast po nazwie wystawcy i numerze seryjnym certyfikatu

Wybór identyfikatora

HPDFCMSDefaultOptions ustawia THPDFCMSSignOptions.SignerIdentifier na cmsidIssuerAndSerialNumber, więc istniejący wywołujący zachowują swój deterministyczny kształt bajtów CMS

Ustaw pole na cmsidSubjectKeyIdentifier przed wywołaniem HPDFCMSBuildSignedDataEx, budowniczego CMS opartego o dostawcę, szacowania placeholdera albo wysokopoziomowej przeciążonej wersji podpisywania przyjmującej THPDFCMSSignOptions

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

Wymagania dotyczące certyfikatu

Certyfikat podpisującego musi zawierać dokładnie jedno niepuste rozszerzenie X.509 o OID 2.5.29.14, którego wartość rozszerzenia zawiera kompletny DER OCTET STRING

HotPDF zawodzi przed podpisaniem, gdy to rozszerzenie brakuje, jest zduplikowane, puste, ucięte lub wadliwe; nie syntetyzuje identyfikatora klucza z klucza publicznego

SigningCertificateV2 dalej wiąże ten sam certyfikat swoimi polami wystawcy i numeru seryjnego, nawet gdy SID SignerInfo używa identyfikatora klucza

Format przewodowy i weryfikacja

Identyfikator klucza jest kodowany jako prymitywny IMPLICIT [0], SignerInfo.version wynosi 3, a generowany SignedData.version dla pojedynczego podpisującego wynosi 3, zgodnie z wymogami RFC 5652

Weryfikacja wymaga, by bajty SID pasowały do osadzonego rozszerzenia certyfikatu, i odrzuca niedopasowane wartości SID, rekordy issuer-and-serial z wersją podpisującego różną od 1, rekordy SKI z wersją podpisującego różną od 3 oraz kontenery SKI o wersji zewnętrznej niższej niż 3

Kompaktowa tożsamość jest przydatna dla magazynów certyfikatów zorientowanych na klucze i workflowów nieprzechowujących kodowań nazw wystawców, ale oprogramowanie konsumujące musi obsługiwać wariant SKI z RFC 5652

HPDFCMSBuildCounterSignerInfo dalej używa tożsamości issuer-and-serial; głównego podpisującego konfiguruj przez THPDFCMSSignOptions

Zobacz nowoczesnych dostawców podpisu i spójność algorytmów skrótów CMS