Transporte de timestamps na ABI nativa do Linux
Jobs nativos de assinatura no Linux suportam transporte real de timestamps RFC 3161 através de um record de operação estendido; a versão original da ABI, o prefixo de operação, a função exportada e o tamanho comum do record de operação permanecem inalterados
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;
Record e configuração JSON
Inicialize os campos originais da operação e defina operation.struct_size como sizeof(hpdf_signing_operation_v1); passe &record.operation para hpdf_document_execute_json_v1 com um job sign schemaVersion 1 e timestamp: true
A extensão tem 72 bytes no Linux nativo x86-64; o hpdf_operation_v1 original permanece com 56 bytes e hpdf_abi_operation_v1_size continua reportando aquele tamanho original
timestampTrustedCAFile fornece as trust roots do TSA; o timestampTrustedCRLFile opcional e requireTimestampRevocation habilitam a verificação explícita de revogação
O callback recebe a requisição real de timestamp DER, incluindo o imprint da assinatura e o nonce gerado; retorne os bytes reais da resposta DER pelo callback de gravação fornecido e retorne um status da ABI
Posse e cancelamento
O transporte roda sincronamente na thread chamadora; os bytes da requisição, a tabela de callbacks de resposta e o user data da resposta são emprestados apenas até o transporte retornar
Faça polling de response_io->is_cancelled durante o trabalho de transporte, honre falhas de gravação da resposta, e aplique deadlines de rede ou subprocessos no callback da aplicação
maxTimestampResponseBytes tem default o menor entre 4194304 bytes e um oitavo do orçamento de trabalho da operação; um limite configurado precisa ser positivo e não pode exceder essa fração do orçamento de trabalho
A biblioteca retém uma gravação de resposta com falha ou cancelada mesmo que o callback da aplicação retorne sucesso depois; falhas de timestamp preservam o contexto carregado não assinado e não publicam saída assinada
Validação e resultados
A implementação nativa verifica o status da resposta, o imprint da assinatura, o nonce, o propósito do certificado do TSA, a cadeia de certificados e a política de revogação solicitada antes de adicionar o atributo signatureTimeStampToken e publicar a assinatura
Os resultados da assinatura incluem timestampCount, timestampValid e timestampTrustEvaluated; signatures.verify aceita requireTimestamp e as mesmas opções explícitas de confiança/revogação do TSA
Aceitação
Ambos os compiladores nativos do Linux passam por 319 assertions reais de ctypes, 39 assertions reais de clientes de timestamp em C, 33 assertions existentes da C ABI e 296 checagens independentes de saída
A verificação independente do OpenSSL autentica as assinaturas CMS e os tokens de timestamp embutidos, rejeita imprints de assinatura alterados e certificados de TSA revogados, e verifica documentos com timestamp plain e AES-256 R5/R6
Jobs nativos de assinatura · C ABI nativa · Transporte de timestamps em Pascal