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