HPDFVerifyHeadlessCMS
HPDFHeadlessCMS는 OpenSSL 3과 공유 서명 ByteRange 검증기로 호출자 소유 TStream에 대해 detached CMS 서명을 검증합니다
function HPDFVerifyHeadlessCMS(Source: TStream; const ByteRange: array of Int64; const CMSDER: SysUtils.TBytes; const Options: THPDFHeadlessCMSOptions): THPDFHeadlessCMSResult;
두 요소 범위는 스트림 전체를 덮어야 합니다. 네 요소 범위는 0에서 시작해 비어 있지 않은 구간 하나를 제외하며, 순서 있고 bounded인 쌍과 오버플로 안전 산술을 씁니다
CMS는 detached 콘텐츠와 서명자 최소 한 명을 담아야 합니다. 검증기는 소스 전체를 모으지 않고 콘텐츠 다이제스트, 서명된 속성, 모든 서명자를 인증하고, 뒤따르는 0 패딩은 받아들이며 0이 아닌 뒤따르는 CMS 데이터는 거절합니다
소스 소유는 호출자에 남고 위치는 복원되며, 검증 중 호출자가 단독 직렬 접근을 제공해야 합니다
SignatureValid는 암호학적 무결성을 기술합니다. 인증서 신뢰는 TrustedCAFile이 명시적 PEM 신뢰 앵커를 공급할 때만 별도 평가됩니다
RequireCAdES는 인증된 ESS v1 또는 v2 signing-certificate 바인딩을 요구합니다. 그 인증서 해시와 선택적 발급자·일련번호는 인증서 신뢰와 무관하게 실제 서명자를 식별해야 합니다
기존 ESS 속성은 RequireCAdES가 false여도 검사됩니다. 중복 속성, 다중 값, 형식이 틀린 시퀀스, 뒤따르는 ASN.1 바이트는 거절되고, 명시적 신뢰 앵커는 별도 인증서 체인 검증 패스를 켭니다
함수는 수치 범위를 검증하지만 제외된 갭을 PDF Contents 토큰에 묶지 않습니다. 문서 수준 검사는 THPDFHeadlessDocument.VerifySignature로 하세요
로더는 설정되면 HOTPDF_OPENSSL_LIBRARY를 쓰고, 아니면 Linux의 libcrypto.so.3 또는 Windows의 libcrypto-3.dll을 씁니다. 런타임 라이브러리는 프로세스 아키텍처와 일치해야 하고, 성공적으로 로드된 첫 라이브러리는 유닛 파이널라이제이션까지 활성으로 남습니다
형식이 틀린 CMS, 예산, 없는 런타임 심볼, 소스 읽기 실패, 취소는 EHPDFHeadlessCMSError를 발생시킵니다. 잘못된 서명과 신뢰할 수 없는 인증서 체인은 OpenSSL 세부 정보와 함께 명시적 false 결과 필드를 반환합니다
이 함수는 폐기 증거, 신뢰 앵커, timestamp, 원격 인증서 데이터를 가져오지 않고 과거 시점 서명 시각도 수립하지 않습니다