Trasporto timestamp nell'ABI nativa di Linux
I job di firma nativi di Linux supportano il vero trasporto timestamp RFC 3161 tramite un record operazione esteso; versione ABI originale, prefisso operazione, funzione esportata e dimensione ordinaria del record operazione restano invariati
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 configurazione JSON
Inizializza i campi operazione originali e imposta operation.struct_size a sizeof(hpdf_signing_operation_v1); passa &record.operation a hpdf_document_execute_json_v1 con un job sign schemaVersion 1 e timestamp: true
L'estensione è di 72 byte su Linux nativo x86-64; l'originale hpdf_operation_v1 resta di 56 byte e hpdf_abi_operation_v1_size continua a riportare quella dimensione originale
timestampTrustedCAFile fornisce le radici di trust TSA; il timestampTrustedCRLFile opzionale e requireTimestampRevocation abilitano la verifica esplicita della revoca
La callback riceve la vera richiesta timestamp DER, inclusi l'impronta della firma e il nonce generato; restituisci i veri byte di risposta DER tramite la callback di scrittura fornita e restituisci uno status ABI
Proprietà e cancellazione
Il transport gira in modo sincrono sul thread chiamante; byte di richiesta, tabella callback di risposta e user data di risposta sono presi in prestito solo finché il transport non restituisce
Interroga response_io->is_cancelled durante il lavoro del transport, onora i fallimenti di scrittura della risposta e applica i deadline di rete o subprocess nella callback dell'applicazione
maxTimestampResponseBytes vale per default il minore tra 4194304 byte e un ottavo del budget di lavoro dell'operazione; un limite configurato deve essere positivo e non può superare quella frazione del budget di lavoro
La libreria conserva una scrittura di risposta fallita o annullata anche se la callback dell'applicazione restituisce poi successo; i fallimenti del timestamp preservano il context caricato non firmato e non pubblicano output firmato
Validazione e risultati
L'implementazione nativa verifica status della risposta, impronta della firma, nonce, purpose del certificato TSA, catena di certificati e policy di revoca richiesta prima di aggiungere l'attributo signatureTimeStampToken e pubblicare la firma
I risultati di firma includono timestampCount, timestampValid e timestampTrustEvaluated; signatures.verify accetta requireTimestamp e le stesse opzioni esplicite di trust/revoca TSA
Validazione
Entrambi i compilatori nativi di Linux passano 319 asserzioni ctypes reali, 39 asserzioni C di timestamp client reali, 33 asserzioni C ABI esistenti e 296 verifiche indipendenti dell'output
La verifica indipendente OpenSSL autentica le firme CMS e i token timestamp incorporati, rifiuta impronte di firma alterate e certificati TSA revocati e verifica documenti plain e AES-256 R5/R6 con timestamp
Job di firma nativi · C ABI nativa · Trasporto timestamp Pascal