네이티브 Linux ABI timestamp 전송

네이티브 Linux 서명 작업은 확장된 연산 레코드로 실제 RFC 3161 timestamp 전송을 지원합니다. 원본 ABI 버전, 연산 접두부, 익스포트 함수, 일반 연산 레코드 크기는 바뀌지 않습니다

typedef hpdf_status (HPDF_CDECL *hpdf_timestamp_transport_v1)(
    void *user_data, const void *request, size_t request_length,
    const hpdf_io_v1 *response_io);

typedef struct hpdf_signing_operation_v1 {
    hpdf_operation_v1 operation;
    void *timestamp_user_data;
    hpdf_timestamp_transport_v1 timestamp_transport;
} hpdf_signing_operation_v1;

레코드와 JSON 구성

원본 연산 필드를 초기화하고 operation.struct_size를 sizeof(hpdf_signing_operation_v1)로 설정하세요. schemaVersion 1 sign 작업과 timestamp: true로 &record.operation을 hpdf_document_execute_json_v1에 넘깁니다

확장은 네이티브 Linux x86-64에서 72바이트입니다. 원본 hpdf_operation_v1은 56바이트로 남고 hpdf_abi_operation_v1_size는 계속 그 원본 크기를 보고합니다

timestampTrustedCAFile은 TSA 신뢰 루트를 공급합니다. 선택적 timestampTrustedCRLFile과 requireTimestampRevocation이 명시적 폐기 검증을 켭니다

콜백은 서명 임프린트와 생성된 nonce를 포함한 실제 DER timestamp 요청을 받습니다. 공급된 쓰기 콜백으로 실제 DER 응답 바이트를 돌려주고 ABI 상태를 반환하세요

소유와 취소

전송은 호출 스레드에서 동기로 실행됩니다. 요청 바이트, 응답 콜백 테이블, 응답 사용자 데이터는 전송이 돌아올 때까지만 빌려 씁니다

전송 작업 중 response_io->is_cancelled를 폴링하고 응답 쓰기 실패를 존중하며, 애플리케이션 콜백에서 네트워크·서브프로세스 기한을 강제하세요

maxTimestampResponseBytes의 기본값은 4194304바이트와 연산 작업 예산 8분의 1 중 작은 쪽입니다. 구성한 한도는 양수여야 하고 그 작업 예산 비율을 넘을 수 없습니다

라이브러리는 애플리케이션 콜백이 나중에 성공을 반환해도 실패·취소된 응답 쓰기를 유지합니다. timestamp 실패는 서명되지 않은 로드 컨텍스트를 유지하고 서명된 출력을 발행하지 않습니다

검증과 결과

네이티브 구현은 signatureTimeStampToken 속성을 추가하고 서명을 발행하기 전에 응답 상태, 서명 임프린트, nonce, TSA 인증서 용도, 인증서 체인, 요청한 폐기 정책을 검증합니다

서명 결과에는 timestampCount, timestampValid, timestampTrustEvaluated가 들어갑니다. signatures.verify는 requireTimestamp와 같은 명시적 TSA 신뢰·폐기 옵션을 받습니다

인수 검증

두 네이티브 Linux 컴파일러가 실제 ctypes 어설션 319개, 실제 C timestamp 클라이언트 어설션 39개, 기존 C ABI 어설션 33개, 독립 출력 검사 296개를 통과합니다

독립 OpenSSL 검증이 CMS 서명과 임베드 timestamp 토큰을 인증하고, 바뀐 서명 임프린트와 폐기된 TSA 인증서를 거절하며, timestamp가 찍힌 평문·AES-256 R5/R6 문서를 검증합니다

네이티브 서명 작업 · 네이티브 C ABI · Pascal timestamp 전송