Windows 서명 타임스탬프

Windows sign 연산은 동기 애플리케이션 콜백으로 진짜 RFC3161 타임스탬프를 요청하고 응답을 인증한 뒤에야 PDF를 발행합니다

서명 옵션

{"schemaVersion":1,"type":"sign","incremental":true,
 "existingField":true,"fieldName":"ApprovalOne",
 "pfxFile":"C:/keys/signer.pfx","pfxPassword":"password",
 "cades":true,"digestMethod":"SHA384","timestamp":true,
 "timestampURL":"https://tsa.example/service",
 "timestampTrustedCAFile":"C:/trust/tsa-roots.pem",
 "timestampTrustedCRLFile":"C:/trust/tsa-crls.pem",
 "requireTimestampRevocation":true}

timestamp 기본값은 false입니다. true는 애플리케이션 전송 콜백과 신뢰하는 PEM 인증서 루트를 담은 명시적 timestampTrustedCAFile을 요구합니다

digestMethod는 실제 문서 CMS 다이제스트와 타임스탬프 인쇄물 알고리즘을 SHA256, SHA384, SHA512에서 고릅니다. messageImprint는 실제 CMS 서명 옥텟을 정확히 한 번 해시합니다

timestampTrustedCRLFile은 선택적으로 PEM CRL을 공급합니다. requireTimestampRevocation은 그 파일을 요구하고 폐기된 인증서와 만료된 증거를 포함해 issuer·인증서 CRL 검사를 켭니다

신뢰 입력 파일은 서명 중 쓰기 공유가 거부된 채 열려 있고, 합산 크기는 OpenSSL이 읽어 들이기 전에 memoryBytes의 1/8로 제한됩니다

요청마다 새 암호 nonce가 들어가고 TSA 인증서를 요청합니다. 응답 검증은 요청 nonce, 인쇄물, 완전한 CMS 서명, ESS 서명 인증서 바인딩, 인증서 체인, critical 타임스탬프 EKU를 인증합니다

C ABI 전송

hpdf_document_execute_json_v1에 hpdf_signing_operation_v1을 넘기고 operation.struct_size를 sizeof(hpdf_signing_operation_v1)로 둔 뒤 timestamp_transport와 timestamp_user_data를 공급하세요

연산 접두어는 기존 hpdf_operation_v1 레이아웃과 ABI 버전을 유지합니다. 평범한 연산은 계속 원래 구조를 씁니다

콜백은 완전한 DER TimeStampReq와 빌린 response_io를 받습니다. response_io.write로 완전한 DER TimeStampResp를 쓰고 hpdf_status를 반환하세요

콜백은 호출 스레드에서 실행되고 요청·응답 IO 포인터는 그 호출 동안만 유효합니다. 네트워크 전송, 인증, 타임아웃, 연결 정책은 애플리케이션이 소유합니다

response_io.is_cancelled은 연산 입력·출력·결과 취소 콜백을 폴링합니다. 응답 쓰기는 콜백 메모리를 복사하기 전에 16 MiB 최대치에 memoryBytes 1/8 상한을 추가로 적용합니다

응답 쓰기나 취소 실패는 콜백이 이후 success를 반환해도 연산에 계속 유효합니다. 실패한 응답은 PDF 바이트를 발행할 수 없습니다

Pascal 서비스 진입점

THPDFJobProcessor.ExecuteLoadedSigningOperation은 로드된 문서, 연산 JSON 객체, 출력 스트림, 체크포인트, THPDFHeadlessTimestampTransport 콜백, 불투명 콜백 컨텍스트를 받습니다

Pascal 전송은 요청 DER을 받고 응답 DER을 반환합니다. 중첩 동기 서명은 안쪽 연산이 반환될 때 둘러싼 콜백 컨텍스트를 복원합니다

seed 값과 출처

필수 SV TimeStamp 제약은 실제 인증된 응답으로 충족됩니다. 필수 TimeStamp 사전이 URL을 특정하면 timestampURL은 그 값과 일치해야 합니다

timestampURL은 애플리케이션이 주장하는 전송 출처입니다. 선언된 URL 비교만으로 HTTPS 서버 신원이 확립되지 않으며, 애플리케이션이 고른 엔드포인트를 인증해야 합니다

애플리케이션 콜백 없는 독립 파일 작업은 타임스탬프 요청을 수행할 수 없습니다. URL 문자열만으로 필수 타임스탬프를 충족하지 못합니다

증분 PFX 서명과 네이티브 RFC3161 검증을 참고하세요