THPDFSignatureInfo Record
Opisuje jeden wczytany podpis PDF: od tożsamości certyfikatów, przez pokrycie zakresów bajtów, po werdykt weryfikacji
Deklaracja
THPDFSignatureInfo= record
FieldName: AnsiString; // signature form field partial name
SubFilter: AnsiString; // /SubFilter of the signature dictionary
SignerName: AnsiString; // CN of the signer certificate subject
SubjectDN: AnsiString; // rendered subject distinguished name
IssuerDN: AnsiString; // rendered issuer distinguished name
SerialNumberHex: AnsiString; // certificate serial number, hex encoded
ValidFrom: TDateTime; // certificate notBefore (0 when absent)
ValidTo: TDateTime; // certificate notAfter (0 when absent)
SigningTime: TDateTime; // signed attribute 1.2.840.113549.1.9.5,
// else the /M entry, else 0
HashAlgorithm: AnsiString; // SHA-1, SHA-2, SHA-3, or SHAKE256
DigestAlgorithmOID: AnsiString;
DigestConsistencyIssue: THPDFCMSDigestConsistencyIssue;
SignaturePolicy: THPDFSignaturePolicyInfo;
Reason: AnsiString; // /Reason from the signature dictionary
Location: AnsiString; // /Location
ContactInfo: AnsiString; // /ContactInfo
ByteRange: array of Int64; // /ByteRange pairs (offset, length, ...)
CoversWholeDocument: boolean; // ByteRange spans the file except /Contents
SignedRevisionLength: Int64; // source prefix covered by this signature
UnsignedTrailingBytes: Int64; // bytes appended after the signed revision
CertificateTimeValidity: THPDFSignatureTimeValidity;
Status: THPDFSignatureVerifyStatus;
PublicKeyAlgorithm: AnsiString; // RSA, ECDSA, EdDSA, or ML-DSA
SignatureAlgorithm: AnsiString; // CMS signature algorithm name
SignatureAlgorithmOID: AnsiString;
CurveName: AnsiString; // ECDSA curve, such as 'P-256'
Timestamp: THPDFTimestampInfo; // RFC 3161 signature or document timestamp
CMSAttributes: THPDFCMSAttributeSummary;
CertificateValidation: THPDFCertificateValidationInfo;
end;
Jednostka
HPDFSignVerify
Pola
| Pole | Przeznaczenie |
|---|---|
FieldName | Nazwa częściowa pola formularza podpisu |
SubFilter | Wartość wpisu /SubFilter w słowniku podpisu |
SignerName | CN podmiotu certyfikatu podpisującego |
SubjectDN | Zrenderowana nazwa wyróżniająca podmiotu certyfikatu |
IssuerDN | Zrenderowana nazwa wyróżniająca wystawcy certyfikatu |
SerialNumberHex | Numer seryjny certyfikatu w zapisie szesnastkowym |
ValidFrom | notBefore certyfikatu, 0 gdy brak |
ValidTo | notAfter certyfikatu, 0 gdy brak |
SigningTime | Podpisany atrybut 1.2.840.113549.1.9.5, w przeciwnym razie wpis /M, a ostatecznie 0 |
HashAlgorithm | Nazwa rodziny digestów: SHA-1, SHA-2, SHA-3 lub SHAKE256 |
DigestAlgorithmOID | Identyfikator obiektu algorytmu digest |
DigestConsistencyIssue | Wykryta niezgodność algorytmów digest wewnątrz struktury CMS |
SignaturePolicy | Szczegóły polityki podpisu, gdy podpis ją niesie |
Reason | Wartość wpisu /Reason |
Location | Wartość wpisu /Location |
ContactInfo | Wartość wpisu /ContactInfo |
ByteRange | Pary offsetu i długości /ByteRange opisujące pokryte przedziały bajtów |
CoversWholeDocument | True, gdy zakres bajtów obejmuje cały plik poza luką /Contents |
SignedRevisionLength | Długość prefiksu źródła objętego tym podpisem |
UnsignedTrailingBytes | Bajty dopisane po podpisanej rewizji |
CertificateTimeValidity | Czy czas podpisania mieści się w oknie ważności certyfikatu |
Status | Werdykt weryfikacji typu THPDFSignatureVerifyStatus |
PublicKeyAlgorithm | Rodzina kluczy publicznych: RSA, ECDSA, EdDSA lub ML-DSA |
SignatureAlgorithm | Nazwa algorytmu podpisu CMS |
SignatureAlgorithmOID | Identyfikator obiektu algorytmu podpisu |
CurveName | Nazwa krzywej ECDSA, na przykład P-256 |
Timestamp | Szczegóły znacznika czasu RFC 3161 podpisu lub dokumentu |
CMSAttributes | Podsumowanie podpisanych atrybutów CMS |
CertificateValidation | Wynik walidacji łańcucha certyfikatów |
Uwagi dotyczące użycia
GetLoadedSignatureInfozwraca pola opisowe;VerifyLoadedSignatureiVerifyLoadedSignatureExwypełniają pola statusu i walidacji po sprawdzeniu digestówCoversWholeDocumentrazem zUnsignedTrailingBytespokazuje, czy późniejsze rewizje zmieniły dokument po podpisaniu- Ten sam rekord zasila walidację certyfikatów, więc jedno wywołanie obejmuje tożsamości, pokrycie, algorytmy i sprawdzenie łańcucha