TPDFlibPFXFile

Security and Signatures

الوصف

تحمل TPDFlibPFXFile هوية التوقيع المستخدمة لإنتاج توقيع PKCS#7 منفصل (detached)

يمكن أن تأتي الهوية من ملف PFX، أو مدخل في مخزن شهادات نظام Windows يُحلّ باسمه البسيط الظاهر، أو سياق PCCERT_CONTEXT مكرَّر خارجيًا، أو زوج مفاتيح Ed25519، أو مفتاح CNG، أو نداء خلاصة خارجي

بعد ربط الهوية، يُنتج SignData بايتات توقيع CMS، وتحسب دوال التقدير حجم حجز /Contents قبل كتابة التوقيع

يفتح العرض التوضيحي SigningWorkbench ملف PFX بهذه الفئة قبل تسليم الهوية إلى خط أنابيب التوقيع

الصيغة

Delphi

TPDFlibPFXFile = Class
  Public
    Destructor Destroy; Override;
    Function Open(Const FileName: WideString; Const Password: AnsiString; UseMachineKeyset: Boolean): TPDFlibSignerResult;
    Function OpenFromStore(Const StoreName, CertName: WideString; UseMachineStore: Boolean): TPDFlibSignerResult;
    Function EnumerateStore(Const StoreName: WideString; UseMachineStore: Boolean;
      Var Infos: Array Of TPDFlibCertificateInfo): Integer;
    Function OpenFromContext(CertContext: Pointer): TPDFlibSignerResult;
    Function OpenEd25519(Const CertificateDER, PrivateKeyDER: AnsiString): TPDFlibSignerResult;
    Function OpenEd25519FromFile(Const CertificateFile, PrivateKeyFile: WideString): TPDFlibSignerResult;
    Function OpenCNGKey(Const CertificateDER: AnsiString;
      Const ProviderName, KeyName: WideString; UseMachineKey, AllowUI: Boolean): TPDFlibSignerResult;
    Function OpenCNGKeyHandle(Const CertificateDER: AnsiString; KeyHandle: TPLIntPtr; AllowUI: Boolean): TPDFlibSignerResult;
    Function OpenExternalDigestSigner(Const CertificateDER: AnsiString;
      Signer: TPDFlibExternalDigestSignEvent; Sender: TObject;
      SignProcessID, SignatureAlgorithm, SignatureReserveBytes: Integer): TPDFlibSignerResult;
    Function GetCertificateDER: AnsiString;
    Procedure SetPrivateKeyUI(AllowUI: Boolean);
    Procedure SetRSAPSSPadding(Enable: Boolean);
    Function CertificateKeyUsage: Integer;
    Function EstimateSignatureSize(Const Data, SubFilter: AnsiString;
      DigestAlgorithm: TPDFlibDigestAlgorithm;
      Const CommitmentTypeDER, SignaturePolicyDER, RevocationInfoDER: AnsiString): Integer;
    Function EstimateCertificateChainSize: Integer;
    Function SignData(Const Data, SubFilter: AnsiString; DigestAlgorithm: TPDFlibDigestAlgorithm;
      Const CommitmentTypeDER, SignaturePolicyDER, RevocationInfoDER: AnsiString): AnsiString;
  End;

الطرق

Openتحمّل ملف PFX أو PKCS#12 مع كلمة مروره؛ ويختار UseMachineKeyset مجموعة مفاتيح الجهاز
OpenFromStoreتحدد موقع شهادة في مخزن نظام Windows بالاسم البسيط الظاهر لـ Subject وتربط سياقها؛ وتفوز أول شهادة تحمل مفتاحًا خاصًا صالحًا للاستخدام
EnumerateStoreتملأ المصفوفة التي يمررها المستدعي بقيمة TPDFlibCertificateInfo لكل شهادة في المخزن وتُعيد العدد المملوء فعليًا
OpenFromContextتربط سياق PCCERT_CONTEXT مُتاحًا خارجيًا؛ تبقى الملكية للمستدعي وعليه إبقاء السياق صالحًا حتى اكتمال التوقيع
OpenEd25519, OpenEd25519FromFileتربط شهادة Ed25519 وبذرتها من الذاكرة أو من ملفات
OpenCNGKey, OpenCNGKeyHandleتربط مفتاحًا مدعومًا من CNG بالموفر واسم المفتاح، أو بمقبض مفتاح قائم
OpenExternalDigestSignerتوقّع عبر نداء TPDFlibExternalDigestSignEvent بدل مفتاح خاص محلي
GetCertificateDERالشهادة المرتبطة بصيغة DER
SetPrivateKeyUIتتيح أو تكتم مطالبة المفتاح الخاص في CryptoAPI
SetRSAPSSPaddingتختار حشوة RSASSA-PSS لتوقيعات RSA المنفصلة؛ وتبقى المفاتيح القديمة في CryptoAPI على PKCS#1 v1.5
CertificateKeyUsageبتات استخدام مفتاح X.509 معبأة في بايتين، أو -1 عند غياب سياق مرتبط
EstimateSignatureSize, EstimateCertificateChainSizeالحدود العليا لمخرَج CMS وسلسلة الشهادات
SignDataتُنتج توقيع CMS المنفصل للبيانات بالفلتر الفرعي وخوارزمية الخلاصة المختارين

ملاحظات

تُعيد كل دوال الفتح قيمة TPDFlibSignerResult، فيمكن الإبلاغ عن فشل ربط الهوية بدقة

تصل الواجهة الرابطة إلى الهويات نفسها عبر SetSignProcessPFXFromFile وSetSignProcessCertFromStore وSetSignProcessEd25519Identity وSetSignProcessCNGKey

انظر أيضًا

TPDFlibSignerResult, TPDFlibCertificateInfo, TPDFlibSigner, TPDFlibSignDoc, NewSignProcessFromFile