function WinCryptoAvailable: Boolean;
function WinCmsVerificationAvailable: Boolean;
function VerifyWinDetachedCms(const CmsDer: TBytes; Segment1: Pointer; Segment1Length: Cardinal; Segment2: Pointer; Segment2Length: Cardinal): TWinCmsVerifyResult;
function VerifyWinDetachedCmsEx(const CmsDer: TBytes; Segment1: Pointer; Segment1Length: Cardinal; Segment2: Pointer; Segment2Length: Cardinal; const Options: TWinCmsVerifyOptions): TWinCmsVerifyResult;
function VerifyWinAttachedCmsEx(const CmsDer: TBytes; const Options: TWinCmsVerifyOptions): TWinCmsVerifyResult;
function ResolveWinSigner(const Options: TPadesSignerOptions): TPadesResolvedSigner;
function TestBuildWinCmsTrust(SignerCert: Pointer;
const Options: TWinCmsVerifyOptions; GetChain, VerifyPolicy,
FreeChain: Pointer): TWinCmsVerifyResult; // PDFIUMPAS_CRYPTO_TESTS only
FPdfCryptoWin هو خلفية التعمية الخاصة بـ Windows التي تستهلكها FPdfCrypto. يفتح مخازن شهادات المستخدم الحالي والجهاز المحلي عبر CryptoAPI، ويعثر على الشهادة المطابقة للبصمة المطلوبة، ويحصل على مقبض مفتاح NCRYPT الخاص المرتبط، ويعيد TPadesResolvedSigner يوقِّع ICmsSigner الخاص به عبر CNG
يُجري WinCryptoAvailable الفحص الخفيف بأن ربطَي Crypt32 / ncrypt يُحلان، فيستطيع المستدعون أن يقرروا عند الإقلاع ما إذا كان توقيع PAdES ممكنًا على هذه الآلة
يصادق VerifyWinDetachedCms على قيمة CMS منفصلة مقابل مقطعَي بايتات يملكهما المستدعي، ويعيد شهادة الموقِّع، ويقيّم سلسلتها بسياسة Windows الأساسية من المخزن المؤقت فقط دون جلب عبر الشبكة
تقبل دوال التحقق الموسعة TWinCmsVerifyOptions فيستطيع المستدعون تمكين جلب الشهادات عبر الشبكة، وطلب فحص الإبطال، وضبط مهلة جلب، وملاحظة نقاط تفتيش التحقق
صلاحية التوقيع وثقة الشهادة نتيجتان مستقلتان فيبقى التوقيع الأمين من شهادة غير موثوقة أو موقَّعة ذاتيًا قابلًا للتمييز عن المحتوى العبث به
| الدالة | الوصف |
|---|---|
WinCryptoAvailable | يعيد True عندما يمكن حل ربطَي Crypt32 و ncrypt في Windows عند التشغيل |
WinCmsVerificationAvailable | يعيد True عندما تتوفر واجهات التحقق المنفصل من CMS وسياسة سلسلة الشهادات |
VerifyWinDetachedCms | يتحقق من سمات CMS الموقَّعة والتوقيع فوق مقطعَي محتوى منفصلين ويُبلِّغ عنثقة النظام الحالية من المخزن المؤقت فقط كل على حدة |
VerifyWinDetachedCmsEx | يتحقق من محتوى CMS منفصل بخيارات جلب عبر الشبكة وإبطال ومهلة ونقاط تفتيش صريحة |
VerifyWinAttachedCmsEx | يتحقق من قيمة CMS مرفقة ويقيّم شهادة موقِّعها بالخيارات المُزوَّدة |
ResolveWinSigner | يحل بصمة إلى موقِّع و DER شهادة وسلسلة باستخدام مخزن شهادات Windows والمفتاح الخاص CNG |
TestBuildWinCmsTrust | خطاف مشروط بالاختبار يُترجم فقط تحت PDFIUMPAS_CRYPTO_TESTS: يستبدل مؤشرات دوال سياسة سلسلة CNG برُدم يوفرها المستدعي، ويشغّل بناء الثقة مع ضبط حالة التوقيع مسبقًا إلى صالح، ثم يستعيد المؤشرات، فيتمكن اختبارات وحدة التشفير من تمرين BuildWinCmsTrust دون سلسلة شهادات حقيقية |
| النوع | الأعضاء والغرض |
|---|---|
TWinCmsVerifyStatus | wcvsUnavailable أو wcvsValid أو wcvsInvalid أو wcvsUnsupported أو wcvsIndeterminate |
TWinCmsVerifyStage | wcvstCryptographicSignature أو wcvstChainBuild أو wcvstOnlineRetrieval أو wcvstRevocationCheck |
TWinCmsVerifyCheckpoint | استدعاء بطريقة كائن يستقبل كل TWinCmsVerifyStage |
TWinCmsVerifyOptions | OnlineRetrieval و CheckRevocation و CollectChainCertificates و UrlRetrievalTimeoutMs و OnCheckpoint، ومصنع Default الساكن |
TWinCmsVerifyResult | اسم بديل لـ TPdfCmsVerifyResult، ويحوي SignatureStatus و TrustStatus و RevocationStatus و SignatureError و TrustError و SignerCertificate و ChainCertificates و RevocationReason و RevocationError |
مع تمكين CheckRevocation، تبني الخلفية سلسلة إبطال منفصلة وتملأ RevocationStatus و RevocationReason و RevocationError. ولا تستبدل إخفاقات الإبطال نتيجة التوقيع ولا TrustStatus و TrustError المقيّمين بشكل مستقل
بالنسبة لسلسلة أصلية سليمة البنية، ينتج الإبطال المؤكد wcvsInvalid مع pcrrCertificateRevoked. وبغياب الإبطال المؤكد، تنتج السلسلة غير الموثوقة wcvsIndeterminate مع pcrrChainUntrusted؛ وتبقى البنى الأصلية غير المكتملة وفحوصات الإبطال غير المحسومة عند wcvsIndeterminate مع pcrrUnknown
تتطلب النتيجة الصالحة سلسلة موثوقة، ولا أخطاء سلسلة، وشهادة واحدة على الأقل تتطلب فحص إبطال، ونتيجة إبطال أصلية ناجحة لكل شهادة من ذلك النوع. والوحيدة المستثناة من شرط التغطية هذا هي شهادة نهائية موسومة صراحة كموقعة ذاتيًا أو كمرساة CA موثوقة؛ فالسلسلة المقتصرة على الجذر أو الأدلة الناقصة لكل شهادة تبقى غير محسومة
يحفظ RevocationError قيمة DWORD خام من CERT_REVOCATION_INFO.dwRevocationResult، أو قيمة GetLastError المباشرة عندما يفشل استدعاء سلسلة الإبطال. والصفر يعني عدم توفر تشخيص أصلي، بما في ذلك عندما تثبت حالة سلسلة الإبطال دون كود مزود مقابل. وتُستخدم بتات CERT_TRUST_STATUS.dwErrorStatus التجميعية للتصنيف ولا تُنسخ إلى هذا الحقل بوصفها خطأً أصليًا مُخترعًا
فسر القيمة الخام في سياق مزود Windows أو واجهته؛ فهي غير مضمونة أنها HRESULT. والأدلة الإبطالية دون اتصال أو المتقادمة أو المجهولة لا تحدد انتهاء صلاحية CRL ولا سوء بنيتها ولا توقيعها السيئ، لذا لا تستنتج هذه الخلفية تلك الأسباب التفصيلية
مع OnlineRetrieval = False يستخدم بناء السلسلة وفحص الإبطال الجلبَ من المخزن المؤقت وحده. وتمكين الجلب عبر الشبكة يسمح لمحرك سلاسل Windows بالحصول على الأدلة الداعمة ضمن مهلة الجلب المضبوطة
PadesCryptoAvailable = False ما لم تُسجل خلفية أخرىTWinCmsVerifyOptions.Default التحقق من المخزن المؤقت فقط؛ فعِّل الجلب عبر الشبكة وفحص الإبطال فقط عندما يقبل التطبيق الوصول إلى الشبكة وزمن استجابتهRevocationReason: TPdfCmsRevocationReason و RevocationError: Cardinal. وعندما يكون الإبطال معطلًا أو لم يصل إليه المرور، يحتفظ الحقلان بـ pcrrNone والصفر؛ والقيمتان نفسهتان تصاحبان فحصًا ناجحًا، فاستخدم RevocationStatus للحكمNativeRevocationError و NativeTimeStampRevocationError