Transporte de timestamps del ABI nativo de Linux
Los trabajos de firma nativos de Linux soportan transporte de timestamps RFC 3161 real mediante un registro de operación extendido; la versión original del ABI, 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 asigna 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 es de 72 bytes en Linux x86-64 nativo; el hpdf_operation_v1 original sigue siendo de 56 bytes y hpdf_abi_operation_v1_size sigue reportando ese tamaño original
timestampTrustedCAFile aporta las raíces de trust de la TSA; el timestampTrustedCRLFile opcional y requireTimestampRevocation activan la verificación de revocación explícita
El callback recibe la solicitud de timestamp DER real, incluido el imprint de la firma y el nonce generado; devuelve los bytes de respuesta DER reales a través del callback de escritura suministrado y devuelve un estado ABI
Propiedad y cancelación
El transporte corre síncronamente en el hilo llamador; los bytes de la solicitud, la tabla de callbacks de respuesta y los user data de respuesta se toman prestados solo hasta que el transporte devuelve
Consulta response_io->is_cancelled durante el trabajo del transporte, respeta los fallos de escritura de la respuesta y aplica los deadlines de red o de subprocess en el callback de la aplicación
maxTimestampResponseBytes es 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 exceder esa fracción del presupuesto de trabajo
La librería conserva 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 TSA, la cadena de certificados y la política de revocación solicitada antes de agregar 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 TSA
Aceptación
Ambos compiladores nativos de Linux pasan 319 aserciones ctypes reales, 39 aserciones reales del cliente de timestamps en C, 33 aserciones existentes del C ABI y 296 verificaciones independientes de salida
La verificación OpenSSL independiente autentica las firmas CMS y los tokens de timestamp embebidos, rechaza imprints de firma modificados y certificados TSA revocados, y verifica documentos en texto plano y AES-256 R5/R6 con timestamp
Trabajos de firma nativos · C ABI nativo · Transporte de timestamps en Pascal