TPDFlibCSCClient

الأمان والتواقيع

الوصف

يوفر عميلًا متزامنًا لنقاط نهاية بيانات اعتماد والتخويل وتوقيع الملخص في Cloud Signature Consortium

يجلب العميل شهادة التوقيع وOIDs الخوارزميات المدعومة من credentials/info ويحصل على بيانات تفعيل التوقيع من credentials/authorize ويرسل ملخصًا واحدًا أو أكثر حُسب سلفًا إلى signatures/signHash

استدعِ Reset على حدة عندما ينبغي التخلص من الحالة والموارد المسجلة معًا

الوحدة

PDFlibCSC

Construction

Constructor TPDFlibCSCClient.Create;
Destructor TPDFlibCSCClient.Destroy;

اكتشاف بيانات الاعتماد

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

ResourceType هو Font أو XObject أو ColorSpace أو Pattern أو Shading أو ExtGState أو Properties. ويجب أن يحدد رقم الكائن والجيل كائنًا غير مباشر قائمًا في المستند المحدد

Signing

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يدعم NumSignatures

يفحص SAD المجلب مسبقًا من حيث الانتهاء وربط البصمة ويستهلك مرة واحدة بالضبط

التوقيع

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;

DigestAlgorithm

SignatureAlgorithm and PDF_EXTERNAL_SIGNATURE_RSA_PKCS1PDF_EXTERNAL_SIGNATURE_ECDSA_DER

المعاملات

ServiceURLعنوان URL لخدمة الأساس قبل /csc/<version>
APIVersionمقطع إصدار نقطة النهاية، الافتراضي v1
CredentialIDمعرف بيانات اعتماد معرف من المورّد
OAuthTokenرمز حامل للكتابة فقط يُضاف إلى كل طلب نقل افتراضي
TimeoutMSمهلة الطلب، الافتراضي 300000 مللي ثانية
MaxResponseBytesأقصى حجم استجابة مقبول، الافتراضي 8 MiB
ClientDataقيمة معرفة من المورّد اختيارية تُرسل مع طلبات التوقيع
AuthorizationPINرمز PIN للكتابة فقط يستخدمه تخويل رد النداء التلقائي
AuthorizationOTPكلمة مرور أحادية الاستخدام للكتابة فقط تمسح بعد تخويل رد النداء
AuthorizationDescriptionوصف اختياري يستخدمه تخويل رد النداء التلقائي
OnTransportرد نداء نقل اختياري لـ mTLS أو وسيط أو تكامل مورّد أو اختبار حتمي

خصائص الحالة

Associated يساوي 0 أو 1عند الإضافة،

مثال

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;

سلوك الفشل

تُرجع التوابع False وتضبط LastError عند فشل التحقق من التهيئة أو النقل أو JSON أو Base64 أو X.509 أو الخوارزمية أو الدفعة أو التفعيل أو عدد الاستجاباتيتحقق مسار توقيع الملخص الخارجي بشكل مستقل كل توقيع خام مُرجع مقابل

ResetAbort قبل عملية أخرى

انظر أيضًا

OnExternalDigestSign, SetSignProcessExternalDigestSigner, SetSignProcessDigestAlgorithm