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

PDFlibCSC

Oluş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
APIVersionUç nokta sürüm bölümü, varsayılan v1
CredentialIDÜretici tanımlı kimlik bilgisi tanımlayıcısı
OAuthTokenHer 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
MaxResponseBytesKabul 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
AuthorizationPINOtomatik geri çağırma yetkilendirmesinde kullanılan salt yazılır PIN
AuthorizationOTPGeri çağırma yetkilendirmesinden sonra silinen, yalnızca yazılabilir tek kullanımlık parola
AuthorizationDescriptionOtomatik geri çağırma yetkilendirmesinde kullanılan isteğe bağlı açıklama
OnTransportmTLS, 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