Transport de timestamps na ABI nativa de Linux

Trabalhos nativos de assinatura em Linux suportam transport real de timestamps RFC 3161 através de um registo de operações estendido; a versão original da ABI, o prefixo de operações, a função exportada e o tamanho ordinário do registo de operações 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;

Registo 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 a hpdf_document_execute_json_v1 com um trabalho de assinatura schemaVersion 1 e timestamp: true

A extensão tem 72 bytes em Linux nativo x86-64; o hpdf_operation_v1 original permanece com 56 bytes e hpdf_abi_operation_v1_size continua a reportar esse tamanho original

timestampTrustedCAFile fornece as raízes de confiança do TSA; timestampTrustedCRLFile e requireTimestampRevocation opcionais ativam a verificação explícita de revogação

O callback recebe o pedido real DER de timestamps, incluindo o imprint da assinatura e o nonce gerado; devolva bytes DER reais de respostas através do callback de escrita fornecido e devolva um status de ABI

Propriedade e cancelamento

O transport corre sincronamente na thread chamadora; bytes do pedido, tabela de callbacks de respostas e dados de utilizador de respostas são emprestados apenas até o transport devolver

Consulte response_io->is_cancelled durante o trabalho de transport, honre falhas de escrita de respostas e imponha prazos de rede ou de subprocessos no callback da aplicação

maxTimestampResponseBytes tem por defeito o menor entre 4194304 bytes e um oitavo do orçamento de trabalho da operação; um limite configurado tem de ser positivo e não pode exceder essa fração do orçamento de trabalho

A biblioteca retém uma escrita de respostas falhada ou cancelada mesmo que o callback da aplicação devolva depois sucesso; falhas de timestamps preservam o contexto carregado não assinado e não publicam saída assinada nenhuma

Validação e resultados

A implementação nativa verifica o status da resposta, o imprint da assinatura, o nonce, o propósito dos certificados TSA, a cadeia de certificados e a política pedida de revogação antes de acrescentar o atributo signatureTimeStampToken e publicar a assinatura

Os resultados de assinatura incluem timestampCount, timestampValid e timestampTrustEvaluated; signatures.verify aceita requireTimestamp e as mesmas opções explícitas de confiança/revogação TSA

Aceitação

Ambos os compiladores nativos de Linux passam 319 asserções reais de ctypes, 39 asserções reais de clientes C de timestamps, 33 asserções existentes da ABI C e 296 verificações independentes de saídas

A verificação independente OpenSSL autentica as assinaturas CMS e os tokens de timestamps incorporados, rejeita imprints de assinaturas alterados e certificados TSA revogados, e verifica documentos com timestamps em texto simples e AES-256 R5/R6

Trabalhos nativos de assinatura · ABI C nativa · Transport Pascal de timestamps