توفر واجهة أساسية لسياقات التشفير القابلة للتغيير للاستعلام عن ID الخوارزمية بطريقة آمنة بالنسبة للخيوط (thread-safe).
السياق
تُعرّف الواجهة ara::crypto::cryp::CryptoContext التجريد الأساسي لسياقات التشفير القابلة للتغيير (mutable cryptographic contexts) داخل وحدة التشفير الخاصة بـ AUTOSAR Adaptive Platform. وعلى النقيض من كائنات التشفير الثابتة، فإن مثل هذا السياق لا يرتبط بشكل صارم بكائن تشفيري منفرد. بل إنه يُستخدم كفئة أساسية مشتركة لسياقات معالجة تشفيرية مختلفة يمكن لحالتها الداخلية أن تتغير أثناء تنفيذ العمليات التشفيرية.
تعمل دالة الأعضاء الافتراضية الصرفة GetAlgId() كعنصر مركزي في هذه الواجهة الأساسية. وهي تتيح لشركاء التفاعل الاستعلام عن معرف الخوارزمية التشفيرية المكونة حالياً في السياق [SWS_CRYPT_20411]. ومن المرجح أن تُشتق سياقات الحساب والتحويل التشفيرية الفعلية، مثل خدمات التجزئة أو التوقيع أو التشفير، من CryptoContext في النظام لتوفير وظائف خوارزمية محددة. سؤال Q-203d40209cd355fa (مفتوح)
دورة الحياة
تتميز دورة حياة CryptoContext بهوية فريدة وعلاقات ملكية صارمة. ولمنع التكرار غير المنضبط أو عمليات النقل غير المتسقة لحالات السياق في وقت الترجمة، يتم حظر عمليات النسخ الدلالية بالكامل. وقد تم الإعلان صراحةً عن كل من منشئ النسخ [SWS_CRYPT_41003] وعامل إسناد النسخ [SWS_CRYPT_30214] على أنهما محذوفان (=delete).
وبالطريقة ذاتها، يمنع تعريف الواجهة نقل السياقات: حيث تم حذف كل من منشئ النقل [SWS_CRYPT_41004] وعامل إسناد النقل [SWS_CRYPT_30215] (=delete). وبناءً على ذلك، تظل مثيلات الفئات المشتقة بشكل دائم في موضع تخزينها الأصلي. ويتم التدمير وتحرير الموارد بشكل حتمي عبر المدمر الافتراضي، المحدد كـ default وnoexcept [SWS_CRYPT_20401]. ويضمن ذلك إمكانية تحرير كائنات السياق المشتقة بأمان ودون تسريبات للموارد عبر مؤشرات تشير إلى الواجهة الأساسية.
فيما يتعلق بالتزامن، يحدد المتطلب الخاص بـ GetAlgId() صراحةً أمان الخيوط [SWS_CRYPT_20411]. وبالتالي يمكن لخيوط متعددة قراءة معرف الخوارزمية للسياق نفسه في الوقت ذاته ودون مزامنة خارجية.
مسار الاستخدام
نظراً لأن CryptoContext واجهة افتراضية صرفة، فلا يمكن لمطوري التطبيقات إنشاء مثيلات مباشرة منها. ومن المرجح أن يتم إنشاء مثيلات لفئات السياق المتخصصة عادةً عبر دوال مصنع (factory functions) أو مكونات مزود لمكدس التشفير، وإتاحتها للمستدعي عبر مؤشرات أو مراجع. سؤال Q-728a7b6dd526eb64 (مفتوح) يتضمن مسار الاستخدام النموذجي على مستوى الواجهة الأساسية المراحل التالية:
- الإتاحة: يتلقى المستدعي مرجعاً أو مؤشراً إلى سياق مُكوَّن من مزود تشفير.
- فحص الخوارزمية: عبر استدعاء
GetAlgId() يتم الاستعلام عن معرف الخوارزمية وتقييمه [SWS_CRYPT_20411]، لضمان استيفاء السياق للمواصفات المطلوبة.
- العملية والتنظيف: بعد إجراء العمليات المحددة للخوارزمية عبر الواجهة المشتقة، يتم تحرير السياق تلقائياً عبر المدمر الافتراضي [SWS_CRYPT_20401].
سيناريوهات الأخطاء
يتبع مفهوم معالجة الأخطاء الخاص بـ CryptoContext التصميم العام الآمن من الأخطاء لـ AUTOSAR Adaptive Platform ويتخلى عن استثناءات ++C. وتُحدد الطريقة GetAlgId() على أنها آمنة من حيث الاستثناءات (exception safe) وتُرجع نتيجتها في ara::core::Result<ara::crypto::AlgIdString> [SWS_CRYPT_20411]. وإذا حدث خطأ أثناء تحديد ID الخوارزمية، فإنه يُنقل عبر قناة الخطأ الخاصة بكائن Result.
وفقاً للمواصفة، لا تُعرّف GetAlgId() أي رموز أخطاء قياسية [SWS_CRYPT_20411]. ولذلك يجب على المستدعين التحقق أولاً مما إذا كان Result يحتوي على قيمة صالحة، قبل الوصول إلى سلسلة ID الخوارزمية. وعند تفكيك الكائن، يضمن المدمر الافتراضي المعلن بـ noexcept عدم نشر أي استثناءات أثناء التدمير واكتمال عملية التنظيف دائماً بموثوقية [SWS_CRYPT_20401].
يستند هذا الدليل إلى مواصفة AUTOSAR Adaptive برقم R25-11 وقد تم إنشاؤه بواسطة مساعد تنسيق بالذكاء الاصطناعي.
gemini-3.8-flash-low· 2026-10-13 · الأصل الألماني