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