PDFium Delphi Component Docs

ValidatePadesTrust 메서드

컴포넌트: TPdf  ·  유닛: PDFium
PAdES 서명 무결성, 현재 시스템 신뢰, 선택적 폐기 증거, RFC 3161 타임스탬프 토큰을 검증합니다

구문

function ValidatePadesTrust(const Options: TPadesTrustValidationOptions): TPadesValidationResult;

function ValidatePadesTrustAsync(const Options: TPadesTrustValidationOptions; const Reply: TPadesTrustValidationReply): Boolean;

설명

두 메서드 모두 활성 컴포넌트가 보관하는 정확한 원본 파일, 메모리 버퍼, 사용자 지정 스트림, 완료된 progressive 소스를 그대로 사용하며 PDFium이 다시 저장한 사본은 결코 검증하지 않습니다

모든 일반 서명은 원본 ByteRange, CMS signed attributes와 서명 값, signing-certificate-v2 바인딩, 구성된 백엔드의 현재 인증서 체인, 선택적 폐기 증거와 대조해 검사합니다

서명 타임스탬프와 Document Time-stamp는 여기에 더해 SHA-256 message imprint, 첨부된 CMS 서명, TSA 체인, 선택적 폐기 상태를 검증합니다

RFC 3161 section 2.3에 따라 타임스탬프 서명자 인증서에는 id-kp-timeStamping만 포함한 critical Extended Key Usage 확장이 있어야 합니다. EKU가 없거나 critical이 아니거나, 다른 용도가 섞여 있거나 다른 EKU를 사용하면 토큰의 CMS 서명과 기본 인증서 체인이 유효하더라도 TimeStampTrustStatus는 invalid가 됩니다. 외부 문서 서명의 결과는 독립적으로 유지됩니다

비동기 오버로드는 디스패치 전에 소스를 캡처하고 TPadesTrustValidationReply로 완료를 보고합니다

옵션

NetworkPolicyptnpOffline은 캐시된 인증서 데이터만 사용하고 ptnpOnline은 Windows 체인 검색을 허용합니다
CheckRevocation구성된 백엔드의 체인 폐기 평가를 요청합니다. Windows는 루트 인증서를 제외하고, OpenSSL은 구성된 CRL을 체인과 대조해 검사합니다
CheckTimeStamps존재하는 경우 서명 타임스탬프와 Document Time-stamp 토큰을 검증합니다
UrlRetrievalTimeoutMs체인 및 폐기 처리에 쓰이는 네이티브 URL 검색에 시간 상한을 둡니다
QualifiedTrustEvaluator서명자와 수집된 체인을 인증된 오프라인 신뢰 목록 스냅샷과 대조해 선택적으로 평가합니다
QualifiedValidationTimeUTC 서비스 이력 평가 시각을 고르며 0이면 현재 시각을 사용합니다
CancellationToken다음 검증 단계 경계에서 중단합니다
OnProgress단계, 서명 인덱스, 서명 수, 전체 진행률을 받습니다

결과

TPadesValidationResult.Signatures는 ByteRangeStatus, CmsSignatureStatus, AlgorithmPolicyStatus, SigningCertificateStatus, CertificateTrustStatus, QualifiedTrustStatus, RevocationStatus, TimeStampStatus, TimeStampSignatureStatus, TimeStampTrustStatus, TimeStampRevocationStatus 값을 독립적으로 보고하고, QualifiedTrust는 일치한 영역, 공급자, 서비스, 유형, 상태, 시작 시각을 식별합니다

AlgorithmInfo는 CMS 다이제스트와 서명 OID, 서명 인증서의 공개 키와 named-curve OID를 기록하고, 무결성을 수용하기 전에 ISO/TS 32002 NIST, Brainpool, Ed25519, Ed448, 곡선-다이제스트 대응 규칙을 적용합니다

지원되지 않는 알고리즘, 사용할 수 없는 플랫폼 신뢰 서비스, 불완전한 폐기 증거, 취소된 검증은 유효한 상태로 승격되지 않습니다

각 서명 항목에는 CMS 검증에서 나온 RevocationReason과 NativeRevocationError가 들어가고, timestamp 토큰 검증에서 나온 TimeStampRevocationReason과 NativeTimeStampRevocationError는 별도로 유지됩니다. reason 필드는 TPdfCmsRevocationReason을 쓰고, 네이티브 오류 필드는 선택한 백엔드의 오류 공간에 있는 Cardinal 값입니다(OpenSSL의 X509_V_ERR_* 코드, 또는 raw Windows 공급자·GetLastError DWORD 등). Windows 값은 공용 HRESULT 공간으로 변환되지 않고 그대로 보존됩니다

timestamp 쌍은 내장된 signature timestamp나 Document Time-stamp를 설명하며 일반 서명 쌍을 덮어쓰지 않습니다. timestamp 진단은 토큰 구조와 message imprint 검사를 통과해 CMS 검증이 실행될 수 있을 때만 채워집니다

CheckRevocation = False이면 진단 reason은 pcrrNone, 오류는 0으로 유지됩니다. 검사에 도달하지 못했거나 백엔드가 상세 reason을 주지 않을 때도 같은 기본값이 적용되므로, 빈 진단을 성공으로 치지 말고 항상 대응하는 status를 읽으세요

참고 사항

예제

var
  Options: TPadesTrustValidationOptions;
  Validation: TPadesValidationResult;
begin
  Options := TPadesTrustValidationOptions.Default;
  Options.NetworkPolicy := ptnpOnline;
  Options.CheckRevocation := True;
  Validation := Pdf1.ValidatePadesTrust(Options);
end;

관련 항목

ValidatePades FPdfTrustedList AnalyzeSignatureRevisions RenewPadesArchiveTimestamp