TPDFlibCSCClient

Säkerhet och signaturer

Beskrivning

Tillhandahåller en synkron klient för Cloud Signature Consortiums credential-, auktoriserings- och digest-signeringsslutpunkter

Klienten hämtar signerarcertifikatet och de stödda algoritm-OID:erna från credentials/info, inhämtar signaturaktiveringsdata från credentials/authorize och skickar en eller flera redan beräknade digests till signatures/signHash

SignDigest implementerar TPDFlibExternalDigestSignEvent och kan tilldelas direkt till TPDFlib.OnExternalDigestSign, vilket håller skapande av PDF ByteRange, CMS-autentiserade attribut, platshållarstorleksanpassning och verifiering av returnerad signatur inne i biblioteket

Enhet

PDFlibCSC

Konstruktion

Constructor TPDFlibCSCClient.Create;
Destructor TPDFlibCSCClient.Destroy;

Credential discovery

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

SigningCertificateDER måste lyckas före direkta auktoriserings- eller batchsigneringsanropSignerarcertifikatet exponeras via CertificateChainCount, ytterligare certifikat via CertificateChainCount och GetCertificateChainDER, och det fjärra batchtaken genom MaxBatchSizeAuthorizationFunction 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;För autentiseringsuppgifter med GetCertificateChainDER är digest-arrayen obligatorisk och måste innehålla exakt MaxBatchSize värdenFörhämtad SAD kontrolleras för utgång och hashbindning och konsumeras exakt en gång

Signering

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;

Varje digest i en batch måste använda samma algoritm och ha exakt den längd som HashPinningRequired=True medförNumSignatures stödjer

Förhämtad SAD kontrolleras för utgång och hashbindning och konsumeras exakt en gång

Signering

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;

DigestAlgorithm

SignatureAlgorithm and PDF_EXTERNAL_SIGNATURE_RSA_PKCS1PDF_EXTERNAL_SIGNATURE_ECDSA_DER

Parametrar

ServiceURLBas-URL för tjänsten före /csc/<version>
APIVersionEndpoint version segment, default v1
CredentialIDVendor-defined credential identifier
OAuthTokenSkrivonly-bearer token som läggs till varje standardtransportbegäran
TimeoutMSRequest timeout, default 300000 milliseconds
MaxResponseBytesMaximum accepted response size, default 8 MiB
ClientDataValfri leverantörsdefinierad skickad med signeringsbegäranden
AuthorizationPINSkrivonly-PIN som automatisk callback-auktorisering använder
AuthorizationOTPSkrivonly-engångslösenord som raderas efter callback-auktorisering
AuthorizationDescriptionOptional description used by automatic callback authorization
OnTransportOptional transport callback for mTLS, proxy, vendor-specific, or deterministic test integration

Status properties

CredentialLoaded, SigningCertificateDER, CertificateChainCount, SupportedAlgorithmCount, MaxBatchSize, HashPinningRequired, LastAuthorizationExpiresAt, LastHTTPStatus och LastError exponerar aktuellt tillstånd utan att returnera OAuth-, PIN-, OTP- eller SAD-hemligheter

Exempel

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;

Felbeteende

Metoder returnerar False och sätter LastError när konfigurations-, transport-, JSON-, Base64-, X.509-, algoritm-, batch-, aktiverings- eller svarsantal-validering misslyckasDen externa digest-signeringsvägen verifierar oberoende varje returnerad råsignatur mot

SigningCertificateDER innan PDF:en godtas

Se även

OnExternalDigestSign, SetSignProcessExternalDigestSigner, SetSignProcessDigestAlgorithm