Native Linux ABI Timestamp Transport
Natywne zadania podpisywania Linuksa wspierają rzeczywisty transport znaczników czasu RFC 3161 przez rozszerzony rekord operacji; oryginalna wersja ABI, prefiks operacji, eksportowana funkcja i zwykły rozmiar rekordu operacji pozostają niezmienione
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 and JSON configuration
Zainicjuj oryginalne pola operacji i ustaw operation.struct_size na sizeof(hpdf_signing_operation_v1); przekaż &record.operation do hpdf_document_execute_json_v1 z zadaniem podpisywania schemaVersion 1 i timestamp: true
Rozszerzenie ma 72 bajty na natywnym Linuksie x86-64; oryginalny hpdf_operation_v1 pozostaje 56-bajtowy, a hpdf_abi_operation_v1_size nadal raportuje oryginalny rozmiar
timestampTrustedCAFile dostarcza korzenie zaufania TSA; opcjonalne timestampTrustedCRLFile i requireTimestampRevocation włączają jawną weryfikację revokacji
Callback otrzymuje rzeczywiste żądanie DER znacznika czasu, łącznie z imprintem podpisu i wygenerowanym nonce; zwróć rzeczywiste bajty odpowiedzi DER przez dostarczony callback zapisu i zwróć status ABI
Ownership and cancellation
Transport działa synchronicznie na wątku wywołującym; bajty żądania, tabela callbacków odpowiedzi i user data odpowiedzi są pożyczone wyłącznie do powrotu transportu
Odpytuj response_io->is_cancelled podczas pracy transportu, honoruj awarie zapisu odpowiedzi i wymuszaj terminy sieciowe albo podprocesów w callbacku aplikacji
maxTimestampResponseBytes domyślnie to mniejsza z wartości 4194304 bajtów i jednej ósmej budżetu roboczego operacji; skonfigurowany limit musi być dodatni i nie może przekraczać tego ułamka budżetu
Biblioteka zachowuje nieudany albo anulowany zapis odpowiedzi nawet, gdy callback aplikacji później zwróci sukces; awarie znaczników czasu zachowują niepodpisany załadowany kontekst i nie publikują podpisanego wyjścia
Validation and results
Natywna implementacja weryfikuje status odpowiedzi, imprint podpisu, nonce, cel certyfikatu TSA, łańcuch certyfikatów i żądaną politykę revokacji przed dodaniem atrybutu signatureTimeStampToken i publikacją podpisu
Wyniki podpisywania zawierają timestampCount, timestampValid i timestampTrustEvaluated; signatures.verify akceptuje requireTimestamp i te same jawne opcje zaufania/revokacji TSA
Acceptance
Oba natywne kompilatory Linuksa przechodzą 319 rzeczywistych asercji ctypes, 39 rzeczywistych asercji klienta znaczników czasu C, 33 istniejących asercji C ABI i 296 niezależnych sprawdzeń wyjścia
Niezależna weryfikacja OpenSSL uwierzytelnia podpisy CMS i osadzone tokeny znaczników czasu, odrzuca zmienione imprinty podpisów i revokowane certyfikaty TSA oraz weryfikuje dokumenty znacznikowane plain i AES-256 R5/R6
Natywne zadania podpisywania · Native C ABI · Transport znaczników czasu Pascal