TPDFlibCSCClient
Güvenlik ve imzalar
Açıklama
Cloud Signature Consortium kimlik bilgisi, yetkilendirme ve özet imzalama uç noktaları için eşzamanlı bir istemci sağlar
İstemci, imzalama sertifikasını ve desteklenen algoritma OID'lerini credentials/info öğesinden alır, imza etkinleştirme verilerini credentials/authorize öğesinden edinir ve önceden hesaplanmış bir veya daha fazla özeti signatures/signHash öğesine gönderir
SignDigest, TPDFlibExternalDigestSignEvent uygular ve doğrudan TPDFlib.OnExternalDigestSign öğesine atanabilir; PDF ByteRange oluşturmayı, CMS kimliği doğrulanmış öznitelikleri, yer tutucu boyutlandırmayı ve döndürülen imza doğrulamasını kitaplık içinde tutar
Birim
PDFlibCSCOluşturma
Constructor TPDFlibCSCClient.Create;
Destructor TPDFlibCSCClient.Destroy;Kimlik bilgisi bulma
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;Doğrudan yetkilendirme veya toplu imzalama çağrılarından önce RefreshCredentialInfo başarılı olmalıdır
İmzalama sertifikası SigningCertificateDER, ek sertifikalar CertificateChainCount ve GetCertificateChainDER, uzak toplu işlem üst sınırı ise MaxBatchSize aracılığıyla sunulur
Yetkilendirme
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;HashPinningRequired=True kimlik bilgileri için özet dizisi zorunludur ve tam olarak NumSignatures değer içermelidir
Önceden getirilen SAD, süre sonu ve karma bağı için denetlenir ve tam olarak bir kez tüketilir
İmzalama
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;Bir topludaki her özet aynı algoritmayı kullanmalı ve DigestAlgorithm tarafından belirtilen kesin uzunlukta olmalıdır
SignatureAlgorithm, PDF_EXTERNAL_SIGNATURE_RSA_PKCS1 ve PDF_EXTERNAL_SIGNATURE_ECDSA_DER değerlerini destekler; CSC ECDSA imzaları DER kodludur, bu nedenle P1363 çıktısı çıkarımsanmaz
Parametreler
| ServiceURL | /csc/<version> öncesindeki temel hizmet URL'si |
|---|---|
| APIVersion | Uç nokta sürüm bölümü, varsayılan v1 |
| CredentialID | Üretici tanımlı kimlik bilgisi tanımlayıcısı |
| OAuthToken | Her varsayılan aktarım isteğine eklenen yalnızca yazılabilir taşıyıcı belirteci |
| TimeoutMS | İstek zaman aşımı; varsayılan değer 300000 milisaniyedir |
| MaxResponseBytes | Kabul edilen en büyük yanıt boyutu, varsayılan 8 MiB |
| ClientData | İmzalama istekleriyle gönderilen isteğe bağlı, satıcı tanımlı değer |
| AuthorizationPIN | Otomatik geri çağırma yetkilendirmesinde kullanılan salt yazılır PIN |
| AuthorizationOTP | Geri çağırma yetkilendirmesinden sonra silinen, yalnızca yazılabilir tek kullanımlık parola |
| AuthorizationDescription | Otomatik geri çağırma yetkilendirmesinde kullanılan isteğe bağlı açıklama |
| OnTransport | mTLS, proxy, satıcıya özgü veya belirlenimci test tümleştirmesi için isteğe bağlı aktarım geri çağrısı |
Durum özellikleri
CredentialLoaded, SigningCertificateDER, CertificateChainCount, SupportedAlgorithmCount, MaxBatchSize, HashPinningRequired, LastAuthorizationExpiresAt, LastHTTPStatus ve LastError, OAuth, PIN, OTP veya SAD gizli bilgilerini döndürmeden geçerli durumu sunar
Örnek
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;Hata davranışı
Yapılandırma, aktarım, JSON, Base64, X.509, algoritma, toplu iş, etkinleştirme veya yanıt sayısı doğrulaması başarısız olduğunda yöntemler False döndürür ve LastError ayarlar
Harici özet imzalama yolu, PDF'yi kabul etmeden önce döndürülen her ham imzayı SigningCertificateDER değerine göre bağımsız olarak doğrular
Ayrıca bkz
OnExternalDigestSign, SetSignProcessExternalDigestSigner, SetSignProcessDigestAlgorithm