THPDFSignatureInfo Record
인증서 신원부터 byte-range coverage, 검증 판정까지 로드된 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;
유닛
HPDFSignVerify
필드
| 필드 | 목적 |
|---|---|
FieldName | signature 폼 필드의 partial 이름 |
SubFilter | signature 사전의 /SubFilter 항목 값 |
SignerName | signer 인증서 subject의 CN |
SubjectDN | 인증서의 subject distinguished name 표기 |
IssuerDN | 인증서의 issuer distinguished name 표기 |
SerialNumberHex | 인증서 일련번호(16진수) |
ValidFrom | 인증서 notBefore. 없으면 0 |
ValidTo | 인증서 notAfter. 없으면 0 |
SigningTime | signed attribute 1.2.840.113549.1.9.5, 없으면 /M 항목, 그것도 없으면 0 |
HashAlgorithm | digest 계열 이름. SHA-1, SHA-2, SHA-3, SHAKE256 |
DigestAlgorithmOID | digest 알고리즘 object identifier |
DigestConsistencyIssue | CMS 구조 안에서 digest 알고리즘이 서로 맞지 않음을 감지 |
SignaturePolicy | 서명이 policy를 실고 있을 때의 signature policy 상세 |
Reason | /Reason 항목 값 |
Location | /Location 항목 값 |
ContactInfo | /ContactInfo 항목 값 |
ByteRange | 덮는 바이트 구간을 기술하는 /ByteRange 오프셋·길이 쌍 |
CoversWholeDocument | 바이트 범위가 /Contents 갭을 제외한 파일 전체를 덮으면 True |
SignedRevisionLength | 이 서명이 덮는 소스 접두부의 길이 |
UnsignedTrailingBytes | 서명된 리비전 뒤에 추가된 바이트 수 |
CertificateTimeValidity | 서명 시각이 인증서 유효 기간 안에 드는지 여부 |
Status | THPDFSignatureVerifyStatus 타입의 검증 판정 |
PublicKeyAlgorithm | public key 계열. RSA, ECDSA, EdDSA, ML-DSA |
SignatureAlgorithm | CMS signature 알고리즘 이름 |
SignatureAlgorithmOID | signature 알고리즘 object identifier |
CurveName | ECDSA 곡선 이름. P-256 등 |
Timestamp | RFC 3161 signature 또는 document timestamp 상세 |
CMSAttributes | signed CMS attribute 요약 |
CertificateValidation | 인증서 체인 검증 결과 |
사용 참고 사항
GetLoadedSignatureInfo는 기술 필드를 반환하고,VerifyLoadedSignature와VerifyLoadedSignatureEx는 digest 검사 뒤 상태·검증 필드를 채웁니다CoversWholeDocument와UnsignedTrailingBytes를 함께 보면 서명 이후 리비전이 문서를 바꿨는지 알 수 있습니다- 같은 레코드가 인증서 검증에도 쓰이므로, 한 번의 호출로 신원·coverage·알고리즘·체인 검사를 모두 커버합니다