Transport d'horodatage ABI Linux natif

Les jobs de signature Linux natifs prennent en charge un véritable transport d'horodatage RFC 3161 via un record d'opération étendu ; la version ABI d'origine, le préfixe d'opération, la fonction exportée et la taille ordinaire du record d'opération restent inchangés

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 et configuration JSON

Initialisez les champs d'opération d'origine et définissez operation.struct_size à sizeof(hpdf_signing_operation_v1) ; passez &record.operation à hpdf_document_execute_json_v1 avec un job de signature schemaVersion 1 et timestamp: true

L'extension fait 72 octets sur Linux x86-64 natif ; le hpdf_operation_v1 d'origine reste à 56 octets et hpdf_abi_operation_v1_size continue de rapporter cette taille d'origine

timestampTrustedCAFile fournit les racines de confiance TSA ; timestampTrustedCRLFile et requireTimestampRevocation optionnels activent une vérification de révocation explicite

Le callback reçoit la requête d'horodatage DER réelle, y compris l'empreinte de signature et le nonce généré ; retournez les octets de réponse DER réels via le callback d'écriture fourni et retournez un statut ABI

Propriété et annulation

Le transport s'exécute de façon synchrone sur le thread appelant ; les octets de requête, la table de callbacks de réponse et les user data de réponse ne sont empruntés que jusqu'au retour du transport

Sondez response_io->is_cancelled pendant le travail de transport, honorez les échecs d'écriture de réponse, et appliquez les échéances réseau ou de subprocess dans le callback applicatif

maxTimestampResponseBytes vaut par défaut le plus petit entre 4194304 octets et un huitième du budget de travail de l'opération ; une limite configurée doit être positive et ne peut pas dépasser cette fraction du budget de travail

La bibliothèque conserve une écriture de réponse en échec ou annulée même si le callback applicatif retourne plus tard un succès ; les échecs d'horodatage préservent le contexte chargé non signé et ne publient aucune sortie signée

Validation et résultats

L'implémentation native vérifie le statut de réponse, l'empreinte de signature, le nonce, le but du certificat TSA, la chaîne de certificats et la politique de révocation demandée avant d'ajouter l'attribut signatureTimeStampToken et de publier la signature

Les résultats de signature incluent timestampCount, timestampValid et timestampTrustEvaluated ; signatures.verify accepte requireTimestamp et les mêmes options explicites de trust/révocation TSA

Acceptation

Les deux compilateurs Linux natifs passent 319 assertions ctypes réelles, 39 assertions réelles de client d'horodatage C, 33 assertions C ABI existantes et 296 vérifications de sortie indépendantes

Une vérification OpenSSL indépendante authentifie les signatures CMS et tokens d'horodatage embarqués, rejette les empreintes de signature modifiées et les certificats TSA révoqués, et vérifie les documents plain et AES-256 R5/R6 horodatés

Jobs de signature natifs · ABI C natif · Transport d'horodatage Pascal