Transporte de timestamps por ABI nativa de Linux

Los trabajos de firma de Linux nativo soportan transporte real de timestamps RFC 3161 mediante un registro de operación extendido; la versión de la ABI original, el prefijo de operación, la función exportada y el tamaño ordinario del registro de operación siguen sin cambios

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;

Configuración del registro y del JSON

Inicializa los campos de operación originales y establece operation.struct_size a sizeof(hpdf_signing_operation_v1); pasa &record.operation a hpdf_document_execute_json_v1 con un trabajo de firma schemaVersion 1 y timestamp: true

La extensión son 72 bytes en Linux nativo x86-64; el hpdf_operation_v1 original sigue siendo de 56 bytes y hpdf_abi_operation_v1_size sigue informando de ese tamaño original

timestampTrustedCAFile aporta las raíces de trust de la TSA; el timestampTrustedCRLFile opcional y requireTimestampRevocation activan la verificación explícita de revocación

El callback recibe la petición de timestamp DER real, incluido el imprint de la firma y el nonce generado; devuelve bytes de respuesta DER reales a través del callback de escritura suministrado y devuelve un estado ABI

Propiedad y cancelación

El transporte se ejecuta de forma síncrona en el hilo llamante; los bytes de la petición, la tabla de callbacks de respuesta y los user data de respuesta se prestan solo hasta que el transporte retorna

Consulta response_io->is_cancelled durante el trabajo de transporte, respeta los fallos de escritura de respuesta y aplica los deadlines de red o de subprocess en el callback de la aplicación

maxTimestampResponseBytes toma por defecto el menor entre 4194304 bytes y un octavo del presupuesto de trabajo de la operación; un límite configurado debe ser positivo y no puede superar esa fracción del presupuesto de trabajo

La librería retiene una escritura de respuesta fallida o cancelada aunque el callback de la aplicación devuelva éxito después; los fallos de timestamp preservan el contexto cargado sin firmar y no publican salida firmada

Validación y resultados

La implementación nativa verifica el estado de la respuesta, el imprint de la firma, el nonce, el propósito del certificado de la TSA, la cadena de certificados y la política de revocación solicitada antes de añadir el atributo signatureTimeStampToken y publicar la firma

Los resultados de firma incluyen timestampCount, timestampValid y timestampTrustEvaluated; signatures.verify acepta requireTimestamp y las mismas opciones explícitas de trust/revocación de TSA

Aceptación

Ambos compiladores nativos de Linux superan 319 aserciones ctypes reales, 39 aserciones C reales de cliente de timestamp, 33 aserciones existentes de la C ABI y 296 comprobaciones independientes de salida

La verificación independiente con OpenSSL autentica las firmas CMS y los tokens de timestamp incrustados, rechaza imprints de firma modificados y certificados TSA revocados, y verifica documentos con timestamp en texto plano y AES-256 R5/R6

Trabajos de firma nativos · C ABI nativa · Transporte de timestamps Pascal