Provider di Firma Remota CSC
THPDFCSCSignatureProvider implementa CSC API v2 credentials/info, credentials/authorize, credentials/authorizeCheck, signatures/signHash, signatures/signPolling e signatures/timestampsul contratto THPDFSignatureProvider esistente
Trasporto e autorizzazione
Il provider non seleziona mai uno stack HTTP né memorizza un token di refresh, un segreto client, un PIN o un OTP
THPDFCSCTransport riceve il metodo esatto, l'URL, l'autorizzazione bearer, il corpo JSON, la chiave di idempotenza stabile, il numero di tentativo, l'identificatore di operazione e il budget di risposta, mentre THPDFCSCAccessTokenCallback fornisce e aggiorna i token di accesso OAuth a breve scadenza
Quando è richiesto il SAD, il provider recupera i metadati delle credenziali e la catena di certificati completa delimitata, chiede a THPDFCSCAuthenticationCallback i valori di autenticazione rivisti, ottiene un SAD e interroga un handle di autorizzazione asincrono quando necessario
Sicurezza di firma e riproducibilità
Sign accetta l'input digest dalla pipeline CMS, porta gli OID di digest e firma in signatures/signHash ed emette i parametri RSA-PSS codificati DER quando richiesto
responseID opaco prima dell'interrogazione
Una chiamata multi-digest viene accettata solo quando il suo conteggio sta sia in MaxBatchSignatures sia nel multisign richiesto dalle credenziali, e la risposta deve contenere esattamente una firma per ogni digest richiesto
Le richieste transitorie riusano un Idempotency-Key, mentre la cache limitata delle operazioni restituisce copie difensive di un batch già completato quando la stessa operazione, credenziale, parametri e digest ordinati vengono presentati di nuovo
Un tentativo di trasporto fallito conserva un SAD autorizzato automaticamente per un retry esatto, ma un batch diverso non può consumare quel SAD e deve ottenere una nuova autorizzazione
Budget e annullamento
THPDFCSCOptions.Default delimita i byte di risposta, le firme, i timestamp, il conteggio e i byte della catena di certificati, i tentativi, i ritardi Retry-After, i tentativi di interrogazione e le operazioni memorizzate
Cancel viene osservato prima delle chiamate di trasporto, tra i tentativi e durante le attese di interrogazione a fette brevi, e l'identificatore di operazione viene passato anche al trasporto, così che un'applicazione possa cancellare la propria richiesta HTTP in volo
Catene di certificati e timestamp
RefreshCredentialInfo valida e memorizza nella cache i metadati di chiave, algoritmo, autorizzazione, SCAL, multisignature e catena di certificati senza firmare
GetCertificateChain restituisce copie di byte difensive adatte all'input dei certificati CMS, mentre TimestampDigest richiede e decodifica un token RFC 3161 con un nonce facoltativo