TPDFlibCSCClient
Sécurité et signatures
Description
Fournit un client synchrone pour les points de terminaison d'identification, d'autorisation et de signature de condensé du Cloud Signature Consortium
Le client récupère le certificat de signature et les OID d’algorithmes pris en charge depuis credentials/info, obtient les données d’activation de signature depuis credentials/authorize et soumet un ou plusieurs condensats déjà calculés à signatures/signHash
SignDigest implémente TPDFlibExternalDigestSignEvent et peut être affecté directement à TPDFlib.OnExternalDigestSign, en conservant dans la bibliothèque la création de ByteRange PDF, les attributs CMS authentifiés, le dimensionnement de l’espace réservé et la vérification de la signature renvoyée
Unité
PDFlibCSCConstruction
Constructor TPDFlibCSCClient.Create;
Destructor TPDFlibCSCClient.Destroy;Découverte des identifiants
Function TPDFlibCSCClient.RefreshCredentialInfo: Boolean;
Function TPDFlibCSCClient.SupportsAlgorithm(DigestAlgorithm, SignatureAlgorithm: Integer): Boolean;
Function TPDFlibCSCClient.GetCertificateChainDER(Index: Integer): AnsiString;
Function TPDFlibCSCClient.GetSupportedAlgorithmOID(Index: Integer): AnsiString;
Procedure TPDFlibCSCClient.ClearCredentialInfo;RefreshCredentialInfo doit réussir avant les appels d'autorisation directe ou de signature par lot
Le certificat de signature est exposé par SigningCertificateDER, les certificats supplémentaires par CertificateChainCount et GetCertificateChainDER, et la limite du lot distant par MaxBatchSize
Autorisation
Function TPDFlibCSCClient.Authorize(NumSignatures: Integer; Const Digests: TPDFlibCSCByteArray; Const PIN, OTP, Description, ClientData: WideString; Out SAD: AnsiString): Boolean;
Function TPDFlibCSCClient.PrefetchAuthorization(NumSignatures: Integer; Const Digests: TPDFlibCSCByteArray; Const PIN, OTP, Description, ClientData: WideString): Boolean;
Function TPDFlibCSCClient.SetPrefetchedSAD(Const SAD: AnsiString; ExpiresInSeconds: Integer; Const PinnedDigests: TPDFlibCSCByteArray): Boolean;
Procedure TPDFlibCSCClient.ClearSAD;
Procedure TPDFlibCSCClient.ClearAuthorizationSecrets;Pour les identifiants avec HashPinningRequired=True, le tableau de condensés est obligatoire et doit contenir exactement NumSignatures valeurs
Le SAD prérécupéré est contrôlé quant à son expiration et sa liaison de hachage, puis consommé une seule fois
Signature
Function TPDFlibCSCClient.SignHashes(Const Digests: TPDFlibCSCByteArray; DigestAlgorithm, SignatureAlgorithm: Integer; Const SAD: AnsiString; Out Signatures: TPDFlibCSCByteArray): Boolean;
Function TPDFlibCSCClient.SignAuthorizedHashes(Const Digests: TPDFlibCSCByteArray; DigestAlgorithm, SignatureAlgorithm: Integer; Out Signatures: TPDFlibCSCByteArray): Boolean;
Function TPDFlibCSCClient.SignDigest(Sender: TObject; SignProcessID: Integer; Const Digest: AnsiString; DigestAlgorithm, SignatureAlgorithm: Integer; Var Signature: AnsiString): Boolean;Chaque condensé d'un lot doit utiliser le même algorithme et avoir exactement la longueur impliquée par DigestAlgorithm
SignatureAlgorithm prend en charge PDF_EXTERNAL_SIGNATURE_RSA_PKCS1 et PDF_EXTERNAL_SIGNATURE_ECDSA_DER ; les signatures ECDSA de CSC sont encodées en DER, de sorte qu’une sortie P1363 n’est pas déduite
Paramètres
| ServiceURL | URL de base du service avant /csc/<version> |
|---|---|
| APIVersion | Segment de version du point de terminaison, v1 par défaut |
| CredentialID | Identifiant d’informations d’identification défini par le fournisseur |
| OAuthToken | Jeton porteur en écriture seule ajouté à chaque requête de transport par défaut |
| TimeoutMS | Délai d’expiration de la requête, 300000 millisecondes par défaut |
| MaxResponseBytes | Taille maximale admissible de la réponse, 8 MiB par défaut |
| ClientData | Valeur facultative définie par le fournisseur et envoyée avec les demandes de signature |
| AuthorizationPIN | PIN en écriture seule utilisé par l’autorisation automatique des rappels |
| AuthorizationOTP | Mot de passe à usage unique en écriture seule effacé après l’autorisation du rappel |
| AuthorizationDescription | Description facultative utilisée par l’autorisation automatique des rappels |
| OnTransport | Rappel de transport facultatif pour l'intégration mTLS, proxy, propre à un fournisseur ou déterministe dans les tests |
Propriétés d’état
CredentialLoaded, SigningCertificateDER, CertificateChainCount, SupportedAlgorithmCount, MaxBatchSize, HashPinningRequired, LastAuthorizationExpiresAt, LastHTTPStatus et LastError exposent l’état actuel sans renvoyer de secrets OAuth, PIN, OTP ou SAD
Exemple
var
CSC: TPDFlibCSCClient;
ProcessID: Integer;
begin
CSC:= TPDFlibCSCClient.Create;
try
CSC.ServiceURL:= 'https://sign.example.com';
CSC.CredentialID:= 'account/signing-key';
CSC.OAuthToken:= AccessToken;
CSC.AuthorizationPIN:= UserPIN;
CSC.AuthorizationOTP:= CurrentOTP;
if not CSC.RefreshCredentialInfo then
raise Exception.Create(String(CSC.LastError));
PDF.OnExternalDigestSign:= CSC.SignDigest;
ProcessID:= PDF.NewSignProcessFromFile(InputFile, '');
PDF.SetSignProcessField(ProcessID, 'Approval');
PDF.SetSignProcessDigestAlgorithm(ProcessID, 2);
PDF.SetSignProcessExternalDigestSigner(ProcessID,
CSC.SigningCertificateDER, PDF_EXTERNAL_SIGNATURE_RSA_PKCS1, 512);
PDF.EndSignProcessToFile(ProcessID, OutputFile);
finally
CSC.Free;
end;
end;Comportement en cas d’échec
Les méthodes renvoient False et définissent LastError si la validation de configuration, transport, JSON, Base64, X.509, algorithme, lot, activation ou nombre de réponses échoue
Le chemin de signature externe du condensé vérifie indépendamment chaque signature brute renvoyée avec SigningCertificateDER avant d'accepter le PDF
Voir aussi
OnExternalDigestSign, SetSignProcessExternalDigestSigner, SetSignProcessDigestAlgorithm