أخطاء الأمان والتوقيع
لمحة سريعة
قسم بعنوان «لمحة سريعة»توثّق هذه الصفحة استثناءات مجال الأمان في شجرة فضاء الأسماء NextPDF\Security. ويذكر كل مدخل الفئة، ويبيّن متى تُطلَق، ويسرد الحقول التي يُرجعها getContext() الخاص بها، ويقدّم خطوة تعافٍ.
تمدّد معظم هذه الفئات SecurityException، التي تمدّد NextPdfException وتطبّق ContextAwareExceptionInterface. وهذا يعني أن getContext(): array يُرجع تشخيصات مُنظَّمة وخالية من الأسرار يمكنك توجيهها إلى خطوط أنابيب التسجيل أو مراقبة أداء التطبيق (APM). اعترض SecurityException لاقتناص كل إخفاق في مجال الأمان في كتلة واحدة؛ واعترض فئة فرعية محددة عندما تحتاج إلى حمولتها ذات النوع.
تمدّد بضع فئات في هذه الشجرة RuntimeException مباشرةً بدلًا من SecurityException. وهذه مُعلَّمة أدناه؛ فهي لا تكشف getContext()، ومعظمها مُوثَّق بوصفه إشارات تحكّم داخلية في التدفّق لا ينبغي أن تتوقّع اعتراضها في شفرة التطبيق.
اصطلاح حقل السياق
قسم بعنوان «اصطلاح حقل السياق»| الجانب | السلوك |
|---|---|
| العقد الأساسي | يُرجع NextPdfException::getContext() القيمة []؛ وتتجاوزه الفئات الفرعية. |
| سلامة الأسرار | تُغفِل الرسائل والسياق مادة المفتاح الخام، والنص الصريح، وأرقام التعريف الشخصية (PINs)، وبايتات متجه التهيئة (IV). وتُظهَر المفاتيح فقط بوصفها سابقة بصمة. |
SecurityException | أساس مُجرَّد؛ لا يحمل حقولًا خاصة به. وتُعرِّف الفئات الفرعية الحمولة. |
النوع الأساسي
قسم بعنوان «النوع الأساسي»SecurityException
قسم بعنوان «SecurityException»- متى يُطلَق. لا يُطلَق مباشرةً أبدًا؛ فهو الأساس المُجرَّد لمجال الأمان. وهو موجود حتى تستطيع كتلة
catch (SecurityException $e)واحدة اقتناص إخفاقات سلامة التشفير المُصادَق عليه، ودفاعات إعادة استخدام الرقم المُستخدَم لمرة، وربط PDF/A بالتشفير، وأعطال إدارة المفاتيح، وإخفاقات PKI. - حقول السياق. لا حقول خاصة به. يرث الافتراضي الفارغ من
NextPdfException؛ وتملأ الفئات الفرعية الحمولة. - التعافي. اعترض الفئة الفرعية الفعلية للمعالجة القابلة للتنفيذ، أو
SecurityExceptionلتوجيه حوادث الأمن توجيهًا خشنًا.
أخطاء التشفير والتشفير المُصادَق عليه
قسم بعنوان «أخطاء التشفير والتشفير المُصادَق عليه»تُطلق هذه أداة التشفير AES-GCM (وضع جالوا/العدّاد) وحارس PDF/A. للإرشاد المُنطلِق من العَرَض، انظر التشفير والأذونات.
DecryptionFailedException
قسم بعنوان «DecryptionFailedException»- متى يُطلَق. يُخفق فكّ تشفير مُصادَق عليه مع بيانات مرتبطة (AEAD) لسبب غير العبث: نصّ مُشفَّر مُقتطَع، أو متجه تهيئة مفقود، أو مفتاح خاطئ مُمرَّر عند حدّ واجهة API، حيث لم تكن هناك مادة كافية لتشغيل فحص السلامة فعلًا. هذا خطأ إعداد أو نقل، لا حادث أمني.
- حقول السياق.
algorithm(على سبيل المثالAES-256-GCM)، وreason(على سبيل المثالciphertext shorter than IV+tag). - التعافي. تحقّق من أن النصّ المُشفَّر ومتجه التهيئة والمفتاح كاملة ومُؤطَّرة بصورة صحيحة؛ ولا تعامل هذا بوصفه عبثًا. قابِله بـ
TamperedDataException.
TamperedDataException
قسم بعنوان «TamperedDataException»- متى يُطلَق. يُخفق التحقق من وسم مصادقة AEAD. يغطي الوسم النصّ المُشفَّر إضافةً إلى البيانات المُصادَق عليها المرتبطة (AAD)؛ فإذا عُدِّل أيٌّ منهما بعد التشفير، يُرجع
openssl_decrypt()الأساسي القيمةfalse. ويتيح لك هذا النوع الفرعي المتميّز إظهار إنذار بدرجة حادث أمني بدلًا من خطأ تأطير. - حقول السياق.
algorithm، وciphertext_length(طول النصّ المُشفَّر المرفوض، باستثناء متجه التهيئة والوسم). - التعافي. عامِله بوصفه عبثًا أو مفتاحًا/متجه تهيئة خاطئًا. لا تُعِد المحاولة عمياء؛ حقّق في مصدر النصّ المُشفَّر. وفق ISO/TS 32003:2023 §5.2 وNIST SP 800-38D §6.5، يعني فشل فحص الوسم أن البيانات غير أصيلة.
NonceReuseException
قسم بعنوان «NonceReuseException»- متى يُطلَق. يُطلَب من AES-GCM التشفير مرتين بزوج المفتاح ومتجه التهيئة نفسه. تدافع أداة التشفير بعدّاد رتيب لكل نسخة، وكدفاع في العمق، بمجموعة تجزئة في وقت التشغيل لكل زوج (بصمة مفتاح، متجه تهيئة) صادر. ولأن العدّاد يستبعد التصادمات ببنائه، فهذا الإطلاق مؤشر عيب حرج الأولوية يجب ألا يقع أبدًا في الإنتاج. تُشكِّل إعادة استخدام زوج مفتاح/متجه تهيئة خطر تدفّق المفاتيح كاملًا (ISO/TS 32003:2023 §5.2 NOTE 2؛ NIST SP 800-38D §8.3).
- حقول السياق.
key_fingerprint_prefix(أول 8 محارف سداسية عشرية من SHA-256(key))، وiv_length(دائمًا 12 لـISO/TS 32003)، وreason(hashset-collisionأوcounter-rollover، يميّز عيب إعادة هيكلة يُبطل العدّاد عن سلك التعثّر للعدّاد عند 2^63)، وiv_fixed_field_hex(الحقل الثابت لمتجه التهيئة، موجود فقط عند توفيره، مُبلَّغ تحت مفتاحه الخاص ولا يُوسَم خطأً بوصفه بصمة المفتاح أبدًا). - التعافي. أجهِض فورًا ودوِّر المفتاح. أعِدّ تقرير عيب؛ فهذا يُشير إلى عيب في أداة التشفير، لا إلى مُدخَل مُستدعٍ سيئ.
GcmInvocationLimitExceededException
قسم بعنوان «GcmInvocationLimitExceededException»- متى يُطلَق. يُبلَغ عدّ استدعاءات اختياري لسلامة الاستعمال وفق NIST SP 800-38D §8.3 لمفتاح AES-GCM مُعطى. وهذا خطّاف قياس عن بُعد للدفاع في العمق للمُستدعين الذين يريدون فرض الحدّ الموصى به في المواصفة (نحو 2^32 استدعاء لكل مفتاح) قبل الحدود البنيوية داخل أداة التشفير. وهو لا يُطلَق افتراضيًا؛ فمساعِد
assertWithinSafetyBound()وحده هو الذي يُطلقه. - حقول السياق.
key_fingerprint_prefix، وinvocation_count(عدّencrypt()الحالي، عند الحدّ أو فوقه)، وinvocation_limit(الحدّ الاختياري). - التعافي. دوِّر مفتاح المستند (أنشئ أداة تشفير جديدة بمادة مفتاح جديدة) قبل أن يتوقّف احتمال التصادم والتزوير التراكمي عن كونه مُهمَلًا، أو وسّع سياسة المُستدعي لرفض استمرار الخدمة.
IncompatiblePdfAModeException
قسم بعنوان «IncompatiblePdfAModeException»- متى يُطلَق. تُحاوَل عملية تشفير على مستند مُوسَّم بـPDF/A. تمنع عائلة PDF/A (PDF/A-2 وPDF/A-3 وPDF/A-4) التشفير منعًا موحَّدًا: وفق ISO 19005 §6.1.3 يجب ألا يكون المفتاح
Encryptموجودًا في المُذيَّل، وترث ISO 19005-4:2020 في المُلحَقين A وB هذا دون تعديل. ولا توجد تركيبة مسموح بها من PDF/A والتشفير. - حقول السياق.
pdfa_mode(على سبيل المثالpdfa4،pdfa3)، وencryption_operation(الاستدعاء المرفوض، على سبيل المثالuseAesGcm). - التعافي. لإنتاج مستند مُشفَّر، احذف استدعاء
enablePdfA()؛ ولإنتاج مستند أرشيفي، احذف استدعاء التشفير. انظر التحقق من PDF/A و PDF/UA.
إنفاذ سياسة التشفير
قسم بعنوان «إنفاذ سياسة التشفير»CryptoPolicyViolationException
قسم بعنوان «CryptoPolicyViolationException»- متى يُطلَق. ترفض سياسة تشفير مُهيّأة خوارزميةً أو قوة مفتاح أو شيفرة اختارتها عملية توقيع أو تشفير أو تجزئة في النواة. وهو حدّ الإخفاق الآمن لإنفاذ المطابقة (على سبيل المثال FIPS 140-2/3، أو eIDAS، أو سياسة مؤسسية مخصّصة) ويُطلقه
CryptoPolicyEnforcerقبل إنتاج أي توقيع أو نصّ مُشفَّر، حتى لا تستطيع عملية مُنتهِكة للسياسة إصدار مُنتَج غير مُعتمَد أبدًا. متميّز عن إخفاق عملية OpenSSL ضيّق وعن إخفاق أداة التوقيع الأولية: فهذا رفض سياسي لطلب صحيح بخلاف ذلك. مُتوائم مع NIST SP 800-131A Rev. 2 وISO/IEC 19790:2025 §7. - حقول السياق.
policy(اسم السياسة، على سبيل المثالFIPS 140-3 Strict)، وcategory(hashأوsignatureأوencryptionأوkey-strength)، وitem(العنصر المرفوض، على سبيل المثال مُعرِّف كائن (OID)، أو اسم شيفرة، أوrsa/1024)، وreason. - التعافي. اختر خوارزميةً أو طول مفتاح أو شيفرة تعتمدها السياسة المسماة، أو عدّل السياسة إن كنت تملكها. وجّه السياق المُنظَّم إلى دليل تشغيل المطابقة المُوثَّق.
إدارة المفاتيح
قسم بعنوان «إدارة المفاتيح»توجد فئتان متطابقتا الاسم. وتتشاركان جذر SecurityException فتقتنصهما كتلة catch (SecurityException $e) واحدة، لكنهما تحملان حمولتين متمايزتين. استورد بالاسم المؤهَّل بالكامل عندما تحتاج إلى شكل محدد.
KeyManagementException (دورة الحياة: NextPDF\Security\Exception)
قسم بعنوان «KeyManagementException (دورة الحياة: NextPDF\Security\Exception)»- متى يُطلَق. تُخفق عملية إدارة مفاتيح قبل استهلاك المفتاح من قِبَل أداة توقيع أو تشفير أولية: إخفاقات تحليل مفتاح البريد مُعزَّز الخصوصية (PEM)، أو PKCS#12، أو PKCS#11؛ أو إخفاقات اشتقاق المفاتيح (HKDF، PBKDF2، scrypt)؛ أو رفض تغليف مفتاح AES (RFC 3394) على مفتاح تشفير مفاتيح خاطئ؛ أو وحدة أمان عتادية (HSM) تُرجع قواعد ترميز مميِّز (DER) مُشوَّهة؛ أو عدم تطابق طول بذرة Ed25519.
- حقول السياق.
operation(على سبيل المثالload_pem،kek_derive،key_wrap)، وkey_type(على سبيل المثالRSA،EC-P256،Ed25519،AES-256)، وreason. ولا تُضمَّن مادة المفتاح الخام أبدًا. - التعافي. افحص العملية المسماة ونوع المفتاح، وأصلِح مادة المفتاح المصدر أو مُدخَل الاشتقاق، ثم أعد المحاولة.
KeyManagementException (مسار التوقيع: NextPDF\Security\Signature\Exception)
قسم بعنوان «KeyManagementException (مسار التوقيع: NextPDF\Security\Signature\Exception)»- متى يُطلَق. يصطدم مزوّد مُوقِّع بعطل في إدارة المفاتيح: إصدار المفتاح المطلوب غير معروف، أو مُعطَّل، أو مُجدوَل للإتلاف، أو يفتقر إلى إذن التوقيع، أو غير قابل للاستعمال بخلاف ذلك. وهذا ما يُطلقه
RsaPssSignerوLocalKeySignerProviderعند إخفاقات المفتاح الحيّ. المُنشئات المسماة:unknownKeyVersion()وkeyVersionDisabled(). - حقول السياق.
providerId، وkeyVersion، وreason. المُلتقِطات:providerId()وkeyVersion()وreason(). - التعافي. دوِّر المفتاح أو أعد منحه الأذونات، أو اختر إصدار مفتاح قابلًا للاستعمال، ثم أعد المحاولة. متميّز عن
SignatureFailedExceptionالذي يُشير إلى أن أداة التوقيع الأولية نفسها أخفقت.
التوقيع
قسم بعنوان «التوقيع»للإرشاد المُنطلِق من العَرَض حول المستويات غير القابلة للبلوغ والقدرات المفقودة، انظر إخفاقات التوقيع والطابع الزمني.
SignatureFailedException (R4-13: NextPDF\Security\Exception)
قسم بعنوان «SignatureFailedException (R4-13: NextPDF\Security\Exception)»- متى يُطلَق. تُخفق عملية توقيع تشفيري: تُرجع أداة توقيع RSA أو ECDSA أو Ed25519 أولية القيمة
falseأو خرجًا بطول خاطئ؛ أو يستجيب رمز HSM أو PKCS#11 مميَّز بحالة غير ناجحة؛ أو يُخفق تجميعSignedDataلبنية رسالة التشفير (CMS) على شهادة أو سلسلة مُشوَّهة؛ أو يُخفق تحقق Ed25519 الذاتي ذهابًا وإيابًا. ينبغي للشفرة الجديدة أن تُفضِّل هذا النوع الفرعي R4-13 على استثناء التوقيع القديم المقترن بـPAdES. - حقول السياق.
operation(على سبيل المثالsign،verify،build_cms)، وalgorithm(على سبيل المثالrsa-pkcs1v15-sha256،ed25519)، وreason. المُلتقِطات:getOperation()وgetAlgorithm()وgetReason(). - التعافي. اقرأ العملية والخوارزمية، وصحّح المُدخَل (المفتاح، أو سلسلة الشهادات، أو توفّر الخلفية)، ثم أعد المحاولة. مُتوائم مع وضعية معالجة المفاتيح بالإخفاق الآمن في ETSI EN 319 142-1.
SignatureFailedException (SPI: NextPDF\Security\Signature\Exception)
قسم بعنوان «SignatureFailedException (SPI: NextPDF\Security\Signature\Exception)»- متى يُطلَق. لا يستطيع تنفيذ
SignerProviderInterfaceإتمام عملية توقيع لأي سبب غير مُصنَّف بوصفه إدارة مفاتيح: خطأ مُشغِّل خلفية، أو مادة مفتاح مُشوَّهة، أو إدخال/إخراج HSM غير قابل للتعافي. وهذا هو الاقتناص الجامع لعقد التوقيع بالإخفاق الآمن، حيث يُطلق كل أداة أولية عند الإخفاق بدلًا من إرجاعnullأوfalseأو سلسلة فارغة. المُنشئ المسمى:forProvider(). - حقول السياق.
providerId، وreason. المُلتقِطات:providerId()وreason(). - التعافي. افحص مُعرِّف المزوّد والسبب، وأصلِح خلفية المزوّد أو مادة المفتاح، ثم أعد المحاولة. تفرّع بين
KeyManagementExceptionوهذا النوع لتفصل “المفتاح سيئ” عن “أخفقت الأداة الأولية”.
SignatureLevelUnreachableException
قسم بعنوان «SignatureLevelUnreachableException»- متى يُطلَق. لا يمكن احترام مستوى مطابقة PAdES المطلوب تحت البنية التحتية الحالية لوقت التشغيل (غالبًا هيئة طابع زمني مفقودة لـB-T وما فوق) ولم يمنح المُستدعي إذنًا بالتدهور. والافتراضي هو الإخفاق الآمن: يرفض المحرك بدلًا من أن يُنتج بصمت مستوى أدنى مع الإعلان عن المستوى الأعلى، وهو ما كان سيمثّل تراجعًا بدرجة eIDAS. مُتوائم مع ETSI EN 319 142-1 §6. لاحظ أن هذه الفئة تمدّد
NextPdfExceptionمباشرةً (لاSecurityException). - حقول السياق.
requestedLevel، وhighestAchievableLevel، وreason. المُلتقِطات:requestedLevel()وhighestAchievableLevel()وreason(). - التعافي. اقرأ
reasonلتحديد البنية التحتية المفقودة ووفّرها (على سبيل المثال اضبط هيئة طابع زمني)، أو مرّرallowDegradation: trueإلىPadesOrchestratorلقبول أعلى مستوى قابل للبلوغ عن قصد.
SignerProviderNotFoundException
قسم بعنوان «SignerProviderNotFoundException»- متى يُطلَق. يُطلَب من
SignerProviderRegistry::get()مُعرِّف مزوّد غير مُسجَّل. يطبّق PSR-11NotFoundExceptionInterface، فيتوافق السجلّ مع عقد حاوية PSR-11. المُنشئ المسمى:forId(). وتمدّد هذه الفئةRuntimeExceptionولا تكشفgetContext(). - حقول السياق. لا شيء. ويظهر المُعرِّف غير المُسجَّل في الرسالة.
- التعافي. سجّل المزوّد تحت المُعرِّف المتوقَّع قبل طلبه، أو صحّح المُعرِّف الذي تُمرِّره إلى السجلّ.
التجزئة (SHAKE256)
قسم بعنوان «التجزئة (SHAKE256)»تمدّد هذه RuntimeException ولا تكشف getContext(). وSHAKE256 هي دالة الخرج القابلة للتمديد من SHA-3 التي تتطلبها بعض مسارات ISO/TS 32001.
Shake256NotAvailableException
قسم بعنوان «Shake256NotAvailableException»- متى يُطلَق. وقت التجزئة، عندما لا يستطيع المزوّد المُختار تلبية الطلب. المُنشئات المسماة:
noBackend()(لا توجد خلفية SHAKE256 عاملة على هذا المضيف، عبر كل المراتب المُجرَّبة) وffiCallFailed()(استدعاء OpenSSL EVP مربوط بـFFI أرجع حالة غير ناجحة، على سبيل المثال من بناء libcrypto مُجرَّد). - حقول السياق. لا شيء. وتذكر الرسالة المراتب المُجرَّبة أو الرمز المُخفِق.
- التعافي. ثبّت
ext-ffiمع وجود OpenSSL 3.x، أو رقِّ إلى بناء PHP يكشفshake256فيhash_algos(). ولم يُشحَن احتياط Keccak في فضاء المستخدم عن قصد.
Shake256ProviderNotAvailableException
قسم بعنوان «Shake256ProviderNotAvailableException»- متى يُطلَق. من مُنشئ مزوّد SHAKE256 عندما يُخفق مَجَسّ القدرة، فلا يمكن إنشاء المزوّد. وهي إشارة تحكّم في التدفّق: يلتقطها سجلّ المزوّدين، ويُسجِّل وسم المرتبة، ويُجرِّب المرتبة التالية. ولا ينبغي أن تفلت أبدًا إلى شفرة التطبيق. المُنشئ المسمى:
forTier(). - حقول السياق. لا شيء. وتذكر الرسالة المرتبة والسبب.
- التعافي. ليست قابلة للتنفيذ من قِبَل المُستدعي مباشرةً؛ فإذا استُنفدت سلسلة المراتب كاملةً، يُظهِر السجلّ بدلًا من ذلك
Shake256NotAvailableException::noBackend()، الذي يحمل الإصلاح الموجَّه للمُشغِّل.
سلامة رمز مصادقة رسالة المستند (ISO/TS 32004)
قسم بعنوان «سلامة رمز مصادقة رسالة المستند (ISO/TS 32004)»تغطي هذه رمز مصادقة الرسالة (MAC) على مستوى المستند وفق ISO/TS 32004، المُخزَّن تحت /AuthCode. وكلاهما يمدّد NextPdfException ويتجاوز getContext().
DocumentMacTokenException
قسم بعنوان «DocumentMacTokenException»- متى يُطلَق. بإخفاق آمن، من قارئ رمز MAC، عندما يكون رمز MAC لـCMS
AuthenticatedDataمُشوَّهًا بنيويًا أو يُصرّح بخوارزمية خارج المجموعة المُتفَق عليها في ISO/TS 32004. المُنشئات المسماة:malformed()وalgorithmMismatch(). مُعلَّم بـ@internal. - حقول السياق.
status(قيمةDocumentMacVerificationStatus، إمّاMalformedTokenأوAlgorithmMismatch). الخاصية العامة للقراءة فقط:$status. - التعافي. عامِل المستند بوصفه غير مُتحقَّق منه. يعني الرمز المُشوَّه أو الخوارزمية الخارجة عن المجموعة المُتفَق عليها أن MAC لا يستطيع إرساء ثقة؛ لا تمضِ كما لو أن المحتوى محميّ.
DocumentMacVerificationException
قسم بعنوان «DocumentMacVerificationException»- متى يُطلَق. بإخفاق آمن، عندما لا يستطيع التحقق من MAC على مستوى المستند بلوغ حالة موثوقة:
/AuthCodeمفقود أو مُشوَّه، أو خوارزمية خارج المجموعة المُتفَق عليها، أو إخفاق فكّ التغليف، أو عدم تطابق MAC (عبث). يُرجعverify()للمُتحقِّق نتيجةً صريحة للتفرّع؛ وهذا هو نظيره في تدفّق الاستثناءات الذي يُطلقهassertVerified()حتى لا تستطيع شفرة “ثِق بالمحتوى” أن تتجاوز مستندًا غير مُتحقَّق منه. المُنشئ المسمى:fromResult(). - حقول السياق.
status(قيمةDocumentMacVerificationStatus). الخاصية العامة للقراءة فقط:$status. - التعافي. لا تثق بمحتوى المستند. افحص
statusللتمييز بين عبث (عدم تطابق MAC) ومشكلة إعداد (/AuthCodeمفقود أو مُشوَّه، أو عدم تطابق خوارزمية).
التحقق من مسار PKI (RFC 5280)
قسم بعنوان «التحقق من مسار PKI (RFC 5280)»تغطي هذه التحقق من مسار التصديق وفق RFC 5280. والنوع الأساسي وفئاته الفرعية تُخفق بأمان.
PkiPathValidationException
قسم بعنوان «PkiPathValidationException»- متى يُطلَق. إخفاق وضع صارم من مُتحقِّق مسار RFC 5280. وهو الأساس غير النهائي لفئات فرعية أضيق (
ChainLengthExceededExceptionوUnsupportedExtensionException)، فالمُعالِجات التي تعترض هذا النوع تعترض تلك أيضًا عبر استبدال ليسكوف. يمدّدSecurityException. - حقول السياق. لا يتجاوز
getContext()(يرث الافتراضي الفارغ). ويحمل الأسباب المُنظَّمة في خاصية المصفوفة العامة المُجمَّدة للقراءة فقط$reasons(قائمة غير فارغة من سلاسل اسم القاعدة إضافةً إلى الوصف). - التعافي. اقرأ
$reasonsلتحديد القاعدة المُخفِقة، وأصلِح سلسلة الشهادات، وأعد التحقق. اعترض هذا النوع لمعالجة أي إخفاق تحقق مسار معالجةً موحَّدة.
ChainLengthExceededException
قسم بعنوان «ChainLengthExceededException»- متى يُطلَق. يُطلَب من مُتحقِّق المسار السير في سلسلة يتجاوز طولها السقف المُهيّأ. ويُفرَض الحدّ قبل بدء أي تحليل، فلا يستطيع مزوّد خبيث دفع المُتحقِّق إلى عمل تربيعي أو استنزاف الموارد بسلسلة عميقة عشوائيًا. والسقف الافتراضي البالغ 10 يتبع ملف تعريف PKIX-CMP (RFC 4210 §5.3.18)؛ وتتسع السلاسل في العالم الواقعي في 5 إلى 6 مداخل. فئة فرعية من
PkiPathValidationException. - حقول السياق. يرث
getContext()الفارغ؛ وتُمرَّر سلسلة السببchain_length_exceeded: supplied=<n> cap=<n>إلى$reasonsللأب. الخصائص العامة للقراءة فقط:$supplied، و$cap. - التعافي. وفّر سلسلة ضمن السقف، أو ارفع الحدّ المُهيّأ إن كانت سلسلة أطول مشروعة متوقَّعة.
UnsupportedExtensionException
قسم بعنوان «UnsupportedExtensionException»- متى يُطلَق. يلاقي مُتحقِّق المسار امتداد X.509 حرجًا لم يُنفَّذ إنفاذه بعد. وفق RFC 5280 §4.2، يجب أن يُخفق امتداد حرج غير مُتعرَّف عليه بأمان؛ ويُخفق الوضعان الصارم والمتساهل بأمان هنا، لأن تخطّي امتداد حرج بصمت كان سيمثّل تراجعًا أمنيًا. يغطي المُتحقِّق بناء السلسلة، ومطابقة AKI/SKI، واستخدام المفتاح، واستخدام المفتاح المُوسَّع، والقيود الأساسية، وانتهاء الصلاحية، والتحقق من التوقيع؛ وأي شيء حرج آخر يُظهَر هنا. فئة فرعية من
PkiPathValidationException. - حقول السياق. يرث
getContext()الفارغ؛ وتُمرَّر الأسباب المُنظَّمة إلى$reasonsللأب. الخصائص العامة للقراءة فقط:$extensionOid(مُعرِّف كائن منقّط، على سبيل المثال2.5.29.30لقيود الأسماء)، و$extensionName، و$clauseRef(مؤشر إلى بند RFC 5280 ومدخل سجلّ العناصر المؤجَّلة). - التعافي. في الوضع المتساهل، اعترض هذه الفئة الفرعية تحديدًا للسقوط احتياطيًا إلى سياسة أخشن دون ابتلاع إخفاقات تحقق مسار حقيقية. دقّق
$extensionOidو$clauseRefمقابل تثبيتات PKI لديك لمعرفة أي امتداد يحجب التحقق.
RevocationCheckFailedException
قسم بعنوان «RevocationCheckFailedException»- متى يُطلَق. تُستنفد نقطتا نهاية OCSP وقائمة إبطال الشهادات (CRL) دون حُكم قاطع: إخفاق نقل OCSP أو استجابة مُشوَّهة، وإخفاق نقل CRL أو CRL مُشوَّهة، مع فتح كلا قاطعي الدارة أو فقدان كلا المخزنين. يعامل الوضع الصارم هذا بوصفه إخفاقًا آمنًا؛ ويلتقطه الوضع المتساهل ويُصدر تحذير PSR-3 مع
revocation = null. يمدّدSecurityException. - حقول السياق. لا يتجاوز
getContext()(يرث الافتراضي الفارغ). ويحمل الحالة في الخاصيتين العامتين للقراءة فقط$ocspStateو$crlState(وقيمة كلٍّ منهما الافتراضيةunknown). - التعافي. استعِد قابلية الوصول إلى مصدر إلغاء، أو انتظر إغلاق قاطعي الدارة، أو سخّن المخزن، ثم أعد المحاولة. لا تكبت هذا للحصول على مُنتَج تحقق طويل الأمد؛ فتأكيد الإلغاء جزء من ذلك المستوى.
التحقق من توقيع OCSP (RFC 6960)
قسم بعنوان «التحقق من توقيع OCSP (RFC 6960)»OcspSignatureInvalidException
قسم بعنوان «OcspSignatureInvalidException»- متى يُطلَق. يُخفق توقيع RFC 6960 §4.2.2.2
BasicOCSPResponseفي التحقق التشفيري مقابل شهادة المُجيب. يفكّ المُحلِّل ترميزsignatureAlgorithm(RSA-PSS أو ECDSA أو RSA-PKCS1v15) ويتحقق منsignatureعلىtbsResponseData؛ وأي إخفاق يُطلق هذا الاستثناء ذا النوع حتى يستطيع المُستدعون التمييز بين استجابة صحيحة بنيويًا لكن مُتلاعَب بها تشفيريًا واستجابة مُشوَّهة الـDER. غير نهائي، فتستطيع الحزم اللاحقة نشر فئات فرعية أكثر تحديدًا. يمدّدSecurityException. - حقول السياق. لا يتجاوز
getContext()(يرث الافتراضي الفارغ). ويحمل وسم الإخفاق في الخاصية العامة للقراءة فقط$reason(على سبيل المثالsignature_mismatch،responder_cert_not_in_bundle،unsupported_signature_algorithm)؛ ويُطوىdetailالحرّ في الرسالة. - التعافي. افحص
$reason. بالنسبة إلىresponder_cert_not_in_bundle، وفّر حزمة مرساة الثقة الصحيحة وشهادة المُجيب. وبالنسبة إلىsignature_mismatch، عامِل الاستجابة بوصفها غير موثوقة. انظر إخفاقات التوقيع والطابع الزمني.
الطوابع الزمنية (RFC 3161)
قسم بعنوان «الطوابع الزمنية (RFC 3161)»TsaException
قسم بعنوان «TsaException»- متى يُطلَق. إخفاق في اتصال هيئة الطابع الزمني (TSA) وفق RFC 3161 أو في تحليل الاستجابة: تُرجع TSA حالة خطأ، أو يُخفق طلب HTTP، أو لا يمكن تحليل استجابة ASN.1. وهو أساس هرم أعطال TSA وغير نهائي حتى تستطيع إخفاقات التحقق تمديده. يمدّد
NextPdfException. - حقول السياق. لا يتجاوز
getContext()(يرث الافتراضي الفارغ). - التعافي. اعترض
TsaExceptionلأي مسار عطل TSA. تحقّق من قابلية وصول TSA ومن أن نقطة النهاية تُرجع استجابة RFC 3161 سليمة الشكل.
TsaTokenVerificationException
قسم بعنوان «TsaTokenVerificationException»- متى يُطلَق. يُخفق تحقق CMS من
TimeStampTokenلـRFC 3161 في أيٍّ من خطوات التحقق المُلزَمة: ربط RFC 5816 §3 ESSCertIDv2، أو سلامة السمات المُوقَّعة وفق RFC 5652 §11، أو حداثةproducedAtوفق RFC 3161 §2.4.2، أو توقيعSignerInfoوفق RFC 5652 §5.4. بإخفاق آمن، مع مُميِّز خطوة ذي نوع حتى تستطيع خطوط أنابيب التدقيق التمييز بين إعادة التشغيل وانحراف الساعة وعدم تطابق الشهادة دون فحص الرسائل. فئة فرعية منTsaException، فتبقى مُعالِجاتcatch (TsaException)القديمة تُطلَق. - حقول السياق.
step(قيمةStepللخطوة المُخفِقة) وmessage. المُلتقِط:getStep(). - التعافي. قابل للتنفيذ من قِبَل مطوِّر (شهادة TSA سيئة الإعداد أو تساهل انحراف) أو من قِبَل الأمن (اشتباه في اعتراض الوسيط أو إعادة تشغيل). اقرأ
stepلتحديد المرحلة المُخفِقة وأصلِح المُدخَل المُقابِل أو إعداد الثقة.
MalformedDerException
قسم بعنوان «MalformedDerException»- متى يُطلَق. إشارة داخلية بأن سير DER اصطدم بحدّ مُشوَّه أو مُقتطَع، تُطلقها السائرات منخفضة المستوى داخل مُتحقِّق رمز TSA. وتُلتقَط دائمًا عند حدّ التحقق العام وتُعاد لفّها في
TsaTokenVerificationExceptionيحمل مُميِّز الخطوة الصحيح؛ ولا تتسرّب أبدًا إلى شفرة المُستدعي. تمدّدRuntimeException؛ مُعلَّمة بـ@internal. - حقول السياق. لا شيء.
- التعافي. ليست موجَّهة للمُستدعي. عالِج
TsaTokenVerificationExceptionالملفوف بدلًا منها.
فكّ ترميز امتداد الشهادة
قسم بعنوان «فكّ ترميز امتداد الشهادة»تمدّد هذه RuntimeException ولا تكشف getContext(). وكلاهما مُفكِّك ترميز يُخفق بأمان.
NameConstraintsDecodeException
قسم بعنوان «NameConstraintsDecodeException»- متى يُطلَق. يلاقي مُفكِّك ترميز قيود الأسماء عنصر
GeneralSubtreeقابلًا للإنفاذ لا يستطيع فكّ ترميزه بأمانة. يتطلب RFC 5280 §4.2.1.10 من الطرف المُعتمِد معالجة قيد اسم قابل للإنفاذ أو رفض الشهادة؛ وتحويل الإسقاط الصامت السابق إلى هذا الإخفاق ذي النوع يمنع إخفاقًا منفتحًا كان سيُوسِّع بصمت مجموعة الأسماء المقبولة. والنطاق محصور بأشكال الأسماء القابلة للإنفاذ (directoryNameوdNSNameوiPAddressوrfc822NameوuniformResourceIdentifier)؛ وتبقى الأشكال غير القابلة للإنفاذ قابلةً للتجاهل ولا تُطلقه أبدًا. المُنشئ المسمى:undecodableEnforceableBase(). مُعلَّم بـ@internal. - حقول السياق. لا شيء. وتُحمَل سلسلة تفصيل آمنة للسجلّ في الرسالة.
- التعافي. يُظهِر المُنفِّذ سببًا بإخفاق آمن
name_constraints:وتُرفض السلسلة. حقّق في ترميز قيود أسماء الشهادة؛ لا تُرخِّ الإنفاذ.
QcStatementsDecodeException
قسم بعنوان «QcStatementsDecodeException»- متى يُطلَق. امتداد
qcStatementsمُشوَّه بنيويًا: DER مُقتطَع، أو وسم خاطئ، أو فيض طول. ومُفكِّك الترميز يُخفق بأمان ويُطلق بدلًا من إرجاع نتيجة جزئية أو استدلالية حين لا يستطيع تحديد ما يقوله الامتداد بيقين. مُعلَّم بـ@api. - حقول السياق. لا شيء.
- التعافي. اعترضه صراحةً فقط إن كنت تنوي التسامح مع ترميز مُشوَّه؛ وإلّا فعامِل بيانات الشهادة المؤهَّلة بوصفها غير قابلة للتحديد وارفض الشهادة أو أعد إصدارها.
جلسات PKCS#11
قسم بعنوان «جلسات PKCS#11»Pkcs11SessionException
قسم بعنوان «Pkcs11SessionException»- متى يُطلَق. عيب في إدارة جلسة PKCS#11 v3.1. ويُربط كل مُنشئ مسمى بفئة عيب محددة وبقيمة عودة PKCS#11
CKR_*، مكشوفًا عبر مُميِّز$kindذي النوع حتى يتفرّع المُستدعون على سلسلة تعداد ثابتة بدلًا من مطابقة رسائل هشّة. وتشمل المُنشئات:cryptokiNotInitialized()، وuserNotLoggedIn()، وuserAlreadyLoggedIn()، وoperationNotInitialized()، وoperationActive()، وmechanismNotAllowed()، وtokenDisconnected()، وconcurrentSessionLimitExceeded()، وsessionAlreadyClosed()، وstateTransitionInvalid()، وosLockingRequired()، وloginTtlExpired()، وsignOperationTtlExpired(). يمدّدSecurityException. - حقول السياق. لا يتجاوز
getContext()(يرث الافتراضي الفارغ). ويحمل النوع ذا النوع في الخاصية العامة للقراءة فقط$kind، إحدى ثوابتKIND_*(على سبيل المثالKIND_USER_NOT_LOGGED_IN،KIND_TOKEN_DISCONNECTED،KIND_LOGIN_TTL_EXPIRED). وتظهر مُعرِّفات الخانة والجلسة، والآلية، وقيم TTL في الرسالة. ولا تُضمَّن أرقام التعريف الشخصية وبايتات الشهادة أبدًا. - التعافي. بدّل على
$kind. بالنسبة إلىuser_not_logged_in، سجّل الدخول برقم التعريف الشخصي للمستخدم قبل تهيئة عملية توقيع. وبالنسبة إلىtoken_disconnected، عامِل كل الجلسات على الخانة بوصفها مهجورة. وبالنسبة إلى أنواع TTL، أعد المصادقة أو أعد تهيئة العملية. وبالنسبة إلىmechanism_not_allowed، وسّع قائمة سماح الآليات المُهيّأة أو اختر آلية مسموحًا بها.