TPDFlibCSCClient
Sikkerhed og signaturer
Beskrivelse
Leverer en synkron klient til Cloud Signature Consortiums slutpunkter for legitimationsoplysninger, godkendelse og digest-signering
Klienten henter signeringscertifikatet og understøttede algoritme-OID'er fra credentials/info, henter signaturaktiveringsdata fra credentials/authorize og sender en eller flere allerede beregnede hashes til signatures/signHash
SignDigest implementerer TPDFlibExternalDigestSignEvent og kan tildeles direkte til TPDFlib.OnExternalDigestSign, så oprettelse af PDF ByteRange, CMS-godkendte attributter, størrelsesfastsættelse af pladsholdere og verificering af den returnerede signatur forbliver i biblioteket
Unit
PDFlibCSCKonstruktion
Constructor TPDFlibCSCClient.Create;
Destructor TPDFlibCSCClient.Destroy;Søgning efter legitimationsoplysninger
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 skal lykkes før direkte godkendelse eller batchsigneringskald
Signeringscertifikatet eksponeres gennem SigningCertificateDER, yderligere certifikater gennem CertificateChainCount og GetCertificateChainDER og loftet for fjernbatcher gennem 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;For legitimationsoplysninger med HashPinningRequired=True er digest-arrayet obligatorisk og skal indeholde nøjagtigt NumSignatures værdier
Forhåndshentet SAD kontrolleres for udløb og hashbinding og forbruges præcis én gang
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;Hver digest i en batch skal bruge den samme algoritme og have præcis den længde, som DigestAlgorithm angiver
SignatureAlgorithm understøtter PDF_EXTERNAL_SIGNATURE_RSA_PKCS1 og PDF_EXTERNAL_SIGNATURE_ECDSA_DER; CSC ECDSA-signaturer er DER-kodede, så P1363-output udledes ikke
Parametre
| ServiceURL | Basistjeneste-URL før /csc/<version> |
|---|---|
| APIVersion | Slutpunktets versionssegment, som standard v1 |
| CredentialID | Leverandørdefineret legitimationsidentifikator |
| OAuthToken | Bearer-token kun til skrivning, som føjes til hver standardtransportanmodning |
| TimeoutMS | Timeout for anmodning, standard 300000 millisekunder |
| MaxResponseBytes | Maksimal accepteret svarstørrelse, standard 8 MiB |
| ClientData | Valgfri leverandørdefineret værdi, der sendes med signeringsanmodninger |
| AuthorizationPIN | Skrivebeskyttet PIN, der bruges af automatisk callbackgodkendelse |
| AuthorizationOTP | Skrivebeskyttet engangsadgangskode, der slettes efter callbackgodkendelse |
| AuthorizationDescription | Valgfri beskrivelse, der bruges ved automatisk callbackgodkendelse |
| OnTransport | Valgfri transportcallback til mTLS-, proxy-, leverandørspecifik eller deterministisk testintegration |
Statusegenskaber
CredentialLoaded, SigningCertificateDER, CertificateChainCount, SupportedAlgorithmCount, MaxBatchSize, HashPinningRequired, LastAuthorizationExpiresAt, LastHTTPStatus og LastError eksponerer den aktuelle tilstand uden at returnere OAuth-, PIN-, OTP- eller SAD-hemmeligheder
Eksempel
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;Adfærd ved fejl
Metoder returnerer False og indstiller LastError, når validering af konfiguration, transport, JSON, Base64, X.509, algoritme, batch, aktivering eller svarantal mislykkes
Den eksterne digest-signeringssti verificerer uafhængigt hver returneret rå signatur mod SigningCertificateDER, før PDF-dokumentet accepteres
Se også
OnExternalDigestSign, SetSignProcessExternalDigestSigner, SetSignProcessDigestAlgorithm