Запис THPDFSignatureInfo
Описує один завантажений підпис PDF — від ідентичностей сертифікатів і покриття байтового діапазону до вердикту перевірки
Оголошення
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;
Unit
HPDFSignVerify
Поля
| Поле | Призначення |
|---|---|
FieldName | Часткова назва поля форми підписа |
SubFilter | Значення запису /SubFilter у словнику підписа |
SignerName | CN суб'єкта сертифіката підписувача |
SubjectDN | Відрендерована distinguished name суб'єкта сертифіката |
IssuerDN | Відрендерована distinguished name видавця сертифіката |
SerialNumberHex | Серійний номер сертифіката у шістнадцятковому кодуванні |
ValidFrom | notBefore сертифіката; 0, коли відсутній |
ValidTo | notAfter сертифіката; 0, коли відсутній |
SigningTime | Підписаний атрибут 1.2.840.113549.1.9.5, інакше запис /M, інакше 0 |
HashAlgorithm | Назва сімейства дайджестів: SHA-1, SHA-2, SHA-3 чи SHAKE256 |
DigestAlgorithmOID | Ідентифікатор об'єкта алгоритму дайджеста |
DigestConsistencyIssue | Виявлено невідповідність алгоритмів дайджеста всередині структури CMS |
SignaturePolicy | Подробиці політики підпису, коли підпис несе політику |
Reason | Значення запису /Reason |
Location | Значення запису /Location |
ContactInfo | Значення запису /ContactInfo |
ByteRange | Пари зміщення та довжини /ByteRange, що описують покриті байтові інтервали |
CoversWholeDocument | True, коли байтовий діапазон сягає всього файла, окрім розриву /Contents |
SignedRevisionLength | Довжина префікса джерела, покритого цим підписом |
UnsignedTrailingBytes | Байти, додані після підписаної ревізії |
CertificateTimeValidity | Чи час підписання потрапляє у вікно чинності сертифіката |
Status | Вердикт перевірки типу THPDFSignatureVerifyStatus |
PublicKeyAlgorithm | Сімейство відкритих ключів: RSA, ECDSA, EdDSA чи ML-DSA |
SignatureAlgorithm | Назва алгоритму підпису CMS |
SignatureAlgorithmOID | Ідентифікатор об'єкта алгоритму підпису |
CurveName | Назва кривої ECDSA, як-от P-256 |
Timestamp | Подробиці підписа RFC 3161 чи документного штампа часу |
CMSAttributes | Підсумок підписаних атрибутів CMS |
CertificateValidation | Результат перевірки ланцюжка сертифікатів |
Примітки щодо використання
GetLoadedSignatureInfoповертає описові поля;VerifyLoadedSignatureіVerifyLoadedSignatureExзаповнюють поля статусу та перевірки після звірки дайджестівCoversWholeDocumentразом ізUnsignedTrailingBytesпоказує, чи змінювали пізніші ревізії документ після підписання- Той самий запис живить перевірку сертифікатів, тож один виклик покриває ідентичності, покриття, алгоритми та перевірки ланцюжка