TPDFlibCSCClient
Zabezpieczenia i podpisy
Opis
Udostępnia synchronicznego klienta punktów końcowych poświadczeń, autoryzacji i podpisywania skrótów Cloud Signature Consortium
Klient pobiera certyfikat podpisujący i obsługiwane identyfikatory OID algorytmów z credentials/info, uzyskuje dane aktywacji podpisu z credentials/authorize i przekazuje co najmniej jeden już obliczony skrót do signatures/signHash
SignDigest implementuje TPDFlibExternalDigestSignEvent i może zostać przypisany bezpośrednio do TPDFlib.OnExternalDigestSign, pozostawiając tworzenie PDF ByteRange, uwierzytelnione atrybuty CMS, ustalanie rozmiaru symbolu zastępczego i weryfikację zwróconego podpisu wewnątrz biblioteki
Unit
PDFlibCSCKonstrukcja
Constructor TPDFlibCSCClient.Create;
Destructor TPDFlibCSCClient.Destroy;Wykrywanie poświadczeń
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 musi zakończyć się powodzeniem przed bezpośrednimi wywołaniami autoryzacji lub podpisywania wsadowego
Certyfikat podpisujący jest udostępniany przez SigningCertificateDER, dodatkowe certyfikaty przez CertificateChainCount i GetCertificateChainDER, a zdalny limit partii przez MaxBatchSize
Autoryzacja
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;Dla poświadczeń z HashPinningRequired=True tablica skrótów jest obowiązkowa i musi zawierać dokładnie NumSignatures wartości
Wstępnie pobrane SAD jest sprawdzane pod kątem wygaśnięcia i powiązania ze skrótem oraz zużywane dokładnie jeden raz
Podpisywanie
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;Każdy skrót w partii musi używać tego samego algorytmu i mieć dokładną długość wynikającą z DigestAlgorithm
SignatureAlgorithm obsługuje PDF_EXTERNAL_SIGNATURE_RSA_PKCS1 i PDF_EXTERNAL_SIGNATURE_ECDSA_DER; podpisy CSC ECDSA są kodowane w DER, dlatego wynik P1363 nie jest domniemywany
Parametry
| ServiceURL | Bazowy adres URL usługi przed /csc/<version> |
|---|---|
| APIVersion | Segment wersji punktu końcowego, domyślnie v1 |
| CredentialID | Identyfikator poświadczenia zdefiniowany przez dostawcę |
| OAuthToken | Token bearer tylko do zapisu, dodawany do każdego domyślnego żądania transportowego |
| TimeoutMS | Limit czasu żądania, domyślnie 300000 milisekund |
| MaxResponseBytes | Maksymalny akceptowany rozmiar odpowiedzi, domyślnie 8 MiB |
| ClientData | Opcjonalna wartość zdefiniowana przez dostawcę, wysyłana z żądaniami podpisywania |
| AuthorizationPIN | Kod PIN tylko do zapisu używany przez automatyczną autoryzację funkcji wywołania zwrotnego |
| AuthorizationOTP | Hasło jednorazowe tylko do zapisu, usuwane po autoryzacji funkcji wywołania zwrotnego |
| AuthorizationDescription | Opcjonalny opis używany przez automatyczną autoryzację funkcji wywołania zwrotnego |
| OnTransport | Opcjonalna funkcja wywołania zwrotnego transportu dla integracji mTLS, proxy, właściwej dla dostawcy lub deterministycznego testowania |
Właściwości stanu
CredentialLoaded, SigningCertificateDER, CertificateChainCount, SupportedAlgorithmCount, MaxBatchSize, HashPinningRequired, LastAuthorizationExpiresAt, LastHTTPStatus i LastError udostępniają bieżący stan bez zwracania tajnych wartości OAuth, PIN, OTP ani SAD
Przykład
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;Zachowanie przy niepowodzeniu
Metody zwracają False i ustawiają LastError, gdy nie powiedzie się walidacja konfiguracji, transportu, JSON, Base64, X.509, algorytmu, partii, aktywacji lub liczby odpowiedzi
Ścieżka zewnętrznego podpisywania skrótu niezależnie weryfikuje każdy zwrócony surowy podpis przy użyciu SigningCertificateDER przed zaakceptowaniem pliku PDF
Zobacz również
OnExternalDigestSign, SetSignProcessExternalDigestSigner, SetSignProcessDigestAlgorithm