TPDFlibCSCClient

Beveiliging en handtekeningen

Beschrijving

Biedt een synchrone client voor de Cloud Signature Consortium-eindpunten voor credential, autorisatie en digest-ondertekening

De client haalt het ondertekeningscertificaat en de ondersteunde algorisme-OID's op uit credentials/info, verkrijgt signature activation data uit credentials/authorize en submitteert een of meer al berekende digests aan signatures/signHash

SignDigest implementeert TPDFlibExternalDigestSignEvent en kan direct aan TPDFlib.OnExternalDigestSign worden toegewezen, waarbij PDF ByteRange-aanmaak, CMS geauthenticeerde attributen, placeholder-bemating en verificatie van de teruggegeven handtekening binnen de library blijven

Eenheid

PDFlibCSC

Opbouw

Constructor TPDFlibCSCClient.Create;
Destructor TPDFlibCSCClient.Destroy;

Detectie van referenties

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

Het ondertekencertificaat wordt blootgelegd via SigningCertificateDER, aanvullende certificaten via CertificateChainCount en GetCertificateChainDER, en het externe batchplafond via MaxBatchSize

Ondertekening

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;

Elke digest in een batch moet hetzelfde algoritme gebruiken en de exacte lengte hebben die HashPinningRequired=True impliceert NumSignatures ondersteunt

Vooraf opgehaalde SAD wordt gecontroleerd op verloop en hashbinding en wordt exact één keer verbruikt

Ondertekenen

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;

Elke digest in een batch moet hetzelfde algoritme gebruiken en de exacte lengte hebben die DigestAlgorithm impliceert

SignatureAlgorithm and PDF_EXTERNAL_SIGNATURE_RSA_PKCS1PDF_EXTERNAL_SIGNATURE_ECDSA_DER

Parameters

ServiceURLBasis-service-URL vóór /csc/<version>
APIVersionVersiesegment van het endpoint, standaard v1
CredentialIDDoor de leverancier gedefinieerde referentie-identificator
OAuthTokenAlleen-schrijven bearer-token dat aan elk standaardtransportverzoek wordt toegevoegd
TimeoutMSTime-out voor verzoeken, standaard 300000 milliseconden
MaxResponseBytesMaximaal aanvaarde antwoordgrootte, standaard 8 MiB
ClientDataOptionele vendor-defined waarde die met ondertekeningsverzoeken wordt meegestuurd
AuthorizationPINAlleen-schrijven PIN die door automatische callback-autorisatie wordt gebruikt
AuthorizationOTPAlleen-schrijven eenmalig wachtwoord dat na autorisatie van de callback wordt gewist
AuthorizationDescriptionOptionele omschrijving die door automatische callback-autorisatie wordt gebruikt
OnTransportOptionele transportcallback voor mTLS, proxy, leveranciersspecifieke of deterministische testintegratie

Statuseigenschappen

CredentialLoaded, SigningCertificateDER, CertificateChainCount, SupportedAlgorithmCount, MaxBatchSize, HashPinningRequired, LastAuthorizationExpiresAt, LastHTTPStatus en LastError leggen de huidige status bloot zonder OAuth-, PIN-, OTP- of SAD-geheimen terug te geven

Voorbeeld

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;

Gedrag bij fouten

Methodes geven False terug en stellen LastError in wanneer validatie van configuratie, transport, JSON, Base64, X.509, algoritme, batch, activering of antwoordaantal faalt

Het pad voor ondertekening met externe digest verifieert elke geretourneerde ruwe handtekening onafhankelijk tegen SigningCertificateDER voordat de PDF wordt geaccepteerd

Zie ook

OnExternalDigestSign, SetSignProcessExternalDigestSigner, SetSignProcessDigestAlgorithm