PDFium Delphi Component Docs

FPdfCryptoWin الوحدة

الوحدة: FPdfCryptoWin
خلفية Windows Cryptography API لتوقيع PAdES والتحقق المنفصل من CMS وتقييم ثقة شهادات النظام من المخزن المؤقت فقط

الصياغة

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 دون سلسلة شهادات حقيقية

أنواع التحقق

النوعالأعضاء والغرض
TWinCmsVerifyStatuswcvsUnavailable أو wcvsValid أو wcvsInvalid أو wcvsUnsupported أو wcvsIndeterminate
TWinCmsVerifyStagewcvstCryptographicSignature أو wcvstChainBuild أو wcvstOnlineRetrieval أو wcvstRevocationCheck
TWinCmsVerifyCheckpointاستدعاء بطريقة كائن يستقبل كل TWinCmsVerifyStage
TWinCmsVerifyOptionsOnlineRetrieval و 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 بالحصول على الأدلة الداعمة ضمن مهلة الجلب المضبوطة

ملاحظات

انظر أيضًا

FPdfCrypto, FPdfCms