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
PDFlibCSCOpbouw
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
| ServiceURL | Basis-service-URL vóór /csc/<version> |
|---|---|
| APIVersion | Versiesegment van het endpoint, standaard v1 |
| CredentialID | Door de leverancier gedefinieerde referentie-identificator |
| OAuthToken | Alleen-schrijven bearer-token dat aan elk standaardtransportverzoek wordt toegevoegd |
| TimeoutMS | Time-out voor verzoeken, standaard 300000 milliseconden |
| MaxResponseBytes | Maximaal aanvaarde antwoordgrootte, standaard 8 MiB |
| ClientData | Optionele vendor-defined waarde die met ondertekeningsverzoeken wordt meegestuurd |
| AuthorizationPIN | Alleen-schrijven PIN die door automatische callback-autorisatie wordt gebruikt |
| AuthorizationOTP | Alleen-schrijven eenmalig wachtwoord dat na autorisatie van de callback wordt gewist |
| AuthorizationDescription | Optionele omschrijving die door automatische callback-autorisatie wordt gebruikt |
| OnTransport | Optionele 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