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
PDFlibCSCKonstruktion
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
| ServiceURL | Bas-URL för tjänsten före /csc/<version> |
|---|---|
| APIVersion | Endpoint version segment, default v1 |
| CredentialID | Vendor-defined credential identifier |
| OAuthToken | Skrivonly-bearer token som läggs till varje standardtransportbegäran |
| TimeoutMS | Request timeout, default 300000 milliseconds |
| MaxResponseBytes | Maximum accepted response size, default 8 MiB |
| ClientData | Valfri leverantörsdefinierad skickad med signeringsbegäranden |
| AuthorizationPIN | Skrivonly-PIN som automatisk callback-auktorisering använder |
| AuthorizationOTP | Skrivonly-engångslösenord som raderas efter callback-auktorisering |
| AuthorizationDescription | Optional description used by automatic callback authorization |
| OnTransport | Optional 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