يتيح تغليف المفاتيح وفك تغليفها بشكل آمن باستخدام تشفير المفاتيح المتماثل.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 16126e8d9692المصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
يتيح تغليف المفاتيح وفك تغليفها بشكل آمن باستخدام تشفير المفاتيح المتماثل.
يُستخدم السياق SymmetricKeyWrapperCtx للتغليف وفك التغليف التشفيري للمفاتيح باستخدام خوارزميات متماثلة. قبل تنفيذ Wrap أو UnwrapSymmetricKey، يجب تكوين السياق عبر SetKey بمفتاح تشفير مفاتيح (KEK) متوافق [SWS_CRYPT_24018]. تفترض جميع العمليات وجود أذونات الاستخدام المقابلة لكائنات المفاتيح المشاركة وتبلغ عن الأخطاء عبر ara::core::Result بدلالات التراجع [SWS_CRYPT_24014]. الواجهة آمنة من الاستثناءات ومحددة كآمنة للخيوط للتشغيل المتزامن.
السياق
تحدد الفئة SymmetricKeyWrapperCtx الواجهة القياسية لخوارزميات لف المفاتيح المتماثلة (Key Wrapping) ضمن AUTOSAR Adaptive Platform. وتتمثل مسؤوليتها المركزية في الحماية التشفيرية للمفاتيح أثناء التصدير وكذلك استعادة المفاتيح المغلفة للاستخدام الداخلي. تتفاعل الفئة هنا بشكل أساسي مع مفاتيح تشفير المفاتيح (Key Encryption Keys، KEK)، والتي يتم توفيرها إما ككائن مفتاح عابر من النوع SymmetricKey أو بشكل دائم عبر KeySlot[SWS_CRYPT_24018]، [SWS_CRYPT_50034]. عند التغليف، يستقبل السياق CryptoObject عاماً [SWS_CRYPT_24014]، بينما تنشئ عملية فك التغليف كائن SymmetricKey جديداً وجاهزاً للاستخدام وترجعه [SWS_CRYPT_24016].
دورة الحياة
تتم إدارة حالات SymmetricKeyWrapperCtx عبر المؤشر الذكي محدد النوع Sptr (وهو اسم مستعار لـ std::shared_ptr<SymmetricKeyWrapperCtx>) [SWS_CRYPT_24001]. ويُرجح أن يتم الإنشاء الفعلي للكائن عبر مصنع مزود مختص، نظراً لأن الفئة تمثل واجهة مجردة ذات توابع افتراضية بحتة. سؤال Q-7b9a1007da43ddcd (مفتوح) جميع الدوال الأعضاء في الواجهة محددة بأنها آمنة من الاستثناءات (exception safe) وآمنة للخيوط (thread-safe)، مما يتيح الاستخدام الآمن في مكونات برمجية متزامنة [SWS_CRYPT_24014]، [SWS_CRYPT_24016].
يمر السياق في دورة حياته بمرحلتين أساسيتين: يكون في حالة غير مهيأة بعد إنشاء النسخة مباشرة. وخلال هذه المرحلة، تفشل العمليات التشفيرية وحسابات التخزين المؤقت بالخطأ kUninitializedContext[SWS_CRYPT_50035]، [SWS_CRYPT_24014]. ولا ينتقل السياق إلى الحالة الجاهزة للتشغيل، التي يمكن فيها تغليف المفاتيح أو فك تغليفها بأمان، إلا بعد الاستدعاء الناجح لـ SetKey باستخدام KEK أو KeySlot متوافق [SWS_CRYPT_24018]، [SWS_CRYPT_50034].
مسار الاستخدام
يتطلب المسار المعتاد لتغليف مفتاح تسلسلاً منسقاً من التكوين، وفحص التخزين المؤقت، والتنفيذ. في البداية، يقوم التطبيق بتكوين السياق عبر SetKey باستخدام كائن KEK المطلوب [SWS_CRYPT_24018] أو بربط KeySlot مطابق [SWS_CRYPT_50034]. وفي الخطوة الثانية، يحدد التطبيق عبر GetRequiredWrappedKeyBufferSize الحد الأقصى لحجم المخزن المؤقت للإخراج المطلوب للكائن الهدف المراد تغليفه [SWS_CRYPT_50035]. وبعد توفير نطاق ذاكرة ذي أبعاد مناسبة (ReadWriteMemRegion)، يتم استدعاء Wrap، والذي يكتب بيانات المفتاح المسلسلة والمشفرة في المخزن المؤقت ويرجع عدد البايتات الدقيق [SWS_CRYPT_24014].
بالنسبة للعملية المكملة المتمثلة في فك التغليف، يمرر التطبيق، بعد التكوين بواسطة SetKey، المخزن المؤقت للإدخال المحتوي على البيانات الملفوفة إلى UnwrapSymmetricKey[SWS_CRYPT_24016]. ويجب عندئذ تحديد معرف الخوارزمية الهدف (targetAlgId) بالإضافة إلى رايات الاستخدام المسموح بها (allowedUsage) للمفتاح المتماثل الجديد المراد إنشاؤه بشكل صريح [SWS_CRYPT_24016].
سيناريوهات الأخطاء
تشير طرائق الفئة إلى الأخطاء عبر نوع الإرجاع ara::core::Result مع دلالات التراجع. وتشمل سيناريوهات الأخطاء المركزية:
غياب التهيئة: إذا تم استدعاء GetRequiredWrappedKeyBufferSize أو Wrap أو UnwrapSymmetricKey قبل تعيين ناجح للمفتاح، فإنها تُرجع ara::crypto::CryptoErrc::kUninitializedContext[SWS_CRYPT_50035]، [SWS_CRYPT_24014]، [SWS_CRYPT_24016].
انتهاك حقوق الاستخدام: عند تعيين KEK، يجب أن يمتلك على الأقل الإذن kAllowKeyWrapping أو kAllowKeyUnwrapping، وإلا فإن SetKey سيفشل مع ara::crypto::CryptoErrc::kUsageViolation[SWS_CRYPT_24018]. وفي حالة Wrap، يؤدي غياب kAllowKeyWrapping في KEK أو غياب kAllowSecuredExport في الكائن المراد تغليفه أيضاً إلى kUsageViolation[SWS_CRYPT_24014]. وعند فك التغليف، يتم التحقق مما إذا كان KEK يسمح بـ kAllowKeyUnwrapping[SWS_CRYPT_24016].
حالات عدم التوافق وأخطاء المخزن المؤقت: إذا كان المخزن المؤقت الهدف لـ Wrap صغيراً جداً، يتم الإبلاغ عن ara::crypto::CryptoErrc::kInsufficientCapacity[SWS_CRYPT_24014]. وتؤدي تنسيقات المفاتيح الخاطئة أو الأنواع غير المتوافقة إلى ara::crypto::CryptoErrc::kInvalidArgument[SWS_CRYPT_24014]، [SWS_CRYPT_24016]. وإذا كان السياق يدعم الفتحات فقط أو كائنات المفاتيح فقط، يبلغ SetKey عن الخطأ kUnsupported[SWS_CRYPT_24018]، [SWS_CRYPT_50034].
تعارضات الموارد والفتحات الفارغة: إذا وصلت العملية إلى مورد مشغول، يتم إرجاع ara::crypto::CryptoErrc::kBusyResource؛ وإذا كان KeySlot المشار إليه فارغاً، ينتج عن ذلك ara::crypto::CryptoErrc::kEmptyKeySlot[SWS_CRYPT_24014]، [SWS_CRYPT_24016].
تم إنشاء هذا الدليل بواسطة ذكاء اصطناعي ويستند حصرياً إلى مواصفات AUTOSAR.
Configure the context to use the provided key as key encryption key.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: d0a83598653dالمصدر
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
الاستخدام والدلالات
تُهيئ دالة العضو المتزامنة SetKey مثيلاً من ara::crypto::cryp::SymmetricKeyWrapperCtx بحيث يُستخدم الكائن المُمرَّر SymmetricKey::Sptr كـ Key Encryption Key (KEK) لعمليات المفاتيح اللاحقة [SWS_CRYPT_24018]. حُددت الدالة كدالة افتراضية صرفة مع noexcept وتُرجع ara::core::Result<void> فارغًا إذا كان التعيين ناجحًا [SWS_CRYPT_24018].
معالجة الأخطاء والتراجع (Rollback)
إذا حدث خطأ أثناء التكوين، تُطبق دلالات تراجع إلزامية، بحيث تظل حالة السياق دون تغيير [SWS_CRYPT_24018]. وتُمثَّل أسباب الأخطاء المحتملة عبر رموز أخطاء من ara::crypto::CryptoErrc:
kIncompatibleObject: كائن المفتاح المُمرَّر غير متوافق مع السياق المتماثل [SWS_CRYPT_24018].
kUsageViolation: الاستخدام المسموح به للمفتاح لا يتضمن kAllowKeyWrapping ولا kAllowKeyUnwrapping[SWS_CRYPT_24018].
kUnsupported: يدعم تنفيذ السياق حصريًا تعيين مفتاح عبر KeySlot[SWS_CRYPT_24018].
التزامن والتفاعل
حُددت الدالة على أنها thread-safe وآمنة من الاستثناءات (exception safe) [SWS_CRYPT_24018]. وإذا كانت المفاتيح تُدار عبر فتحات أو كان السياق يدعم KeySlots حصريًا، فيوجد لسياق التغليف نفسه التحميل الزائد البديل SetKey مع KeySlot::Sptr[SWS_CRYPT_50034]. ويقوم هذا التحميل بتهيئة السياق لتحميل المفتاح المخزن في الفتحة في وقت تنفيذ عملية تغليف المفتاح [SWS_CRYPT_50034].
تستند ملاحظة الاستخدام هذه إلى مواصفة AUTOSAR Adaptive Platform الإصدار R25-11.
Configure the context to use the key stored in the provided KeySlot at the time the key wrapping is performed.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 30d79040bb46المصدر
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
الاستخدام
تقوم الطريقة الافتراضية SetKey بتهيئة السياق ara::crypto::cryp::SymmetricKeyWrapperCtx بحيث يُستخدم المفتاح المخزن في KeySlot المقدم بمجرد تنفيذ تغليف المفاتيح [SWS_CRYPT_50034]. يتوقع الاستدعاء كمعامل keySlot عنصر KeySlot::Sptr يحتوي على مفتاح متماثل [SWS_CRYPT_50034]. يتم استدعاء الدالة بشكل متزامن، وهي معلنة بـ noexcept وتُرجع ara::core::Result<void>[SWS_CRYPT_50034].
معالجة الأخطاء
في حالة حدوث خطأ، تضمن الطريقة دلالات التراجع (Rollback) وتُرجع إحدى نتائج الخطأ التالية [SWS_CRYPT_50034]:
ara::crypto::CryptoErrc::kIncompatibleObject: عنصر keySlot الممرر غير متوافق مع هذا السياق [SWS_CRYPT_50034].
ara::crypto::CryptoErrc::kUnsupported: يدعم السياق فقط تعيين SymmetricKey مباشر [SWS_CRYPT_50034].
التزامن
العملية آمنة من حيث خيوط التنفيذ (thread-safe) وتوفر أمان استثناءات مضمونًا (exception safe) [SWS_CRYPT_50034].
تفاعل
تمثل الواجهة داخل SymmetricKeyWrapperCtx النظير المعتمد على الفتحات للتحميل الزائد SetKey مع SymmetricKey::Sptr، والذي يربط مفتاحًا مباشرة كمفتاح تشفير المفاتيح (KEK) [SWS_CRYPT_24018]. وتُستخدم دوال تهيئة مماثلة معتمدة على الفتحات أيضًا في سياقات تشفير ذات صلة مثل KeyDerivationFunctionCtx[SWS_CRYPT_50010]، وKeyEncapsulatorPublicCtx[SWS_CRYPT_50012]، وVerifierPublicCtx[SWS_CRYPT_50018]، وMessageAuthnCodeCtx[SWS_CRYPT_50026]، وSignerPrivateCtx[SWS_CRYPT_50036].
تم توليد إشعار الاستخدام هذا آليًا استنادًا إلى مواصفة AUTOSAR Adaptive R25-11.
Unwrap a wrapped key using the previously set key encryption key and return an SymmetricKey.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: fe87df5f5eaeالمصدر
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
تفك الطريقة UnwrapSymmetricKey للواجهة ara::crypto::cryp::SymmetricKeyWrapperCtx تشفير مفتاح مغلف باستخدام مفتاح تشفير المفاتيح (KEK) الذي تم تعيينه مسبقًا، وتُرجع كائن SymmetricKey جديدًا [SWS_CRYPT_24016]. وتستقبل الدالة المتزامنة كمعلمات كلاً من مخزن الإدخال المؤقت المحتوي على بيانات المفتاح المحمية (wrappedKey)، ومعرّف الخوارزمية للمفتاح الهدف (targetAlgId)، بالإضافة إلى رايات البت لأنواع التحويل المسموح بها الخاصة به (allowedUsage) [SWS_CRYPT_24016].
تحتوي قيمة الإرجاع ara::core::Result<SymmetricKey::Sptr> عند التنفيذ الناجح على مؤشر ذكي إلى المفتاح المُنشأ أو تشير إلى خطأ مع أسلوب دلالي للتراجع [SWS_CRYPT_24016]. وأسباب الخطأ المحتملة هي:
InvalidArgument: لا يمكن فك تغليف بيانات المفتاح الممررة في wrappedKey، لسبب مثل التنسيق غير الصالح أو الحجم الخاطئ للمخزن المؤقت [SWS_CRYPT_24016].
ara::crypto::CryptoErrc::kUninitializedContext: لم تتم تهيئة سياق أداة التغليف بعد باستخدام KEK مناسب [SWS_CRYPT_24016].
ara::crypto::CryptoErrc::kUsageViolation: قيود استخدام الـ KEK تمنع فك التغليف (غياب kAllowKeyUnwrapping) [SWS_CRYPT_24016].
ara::crypto::CryptoErrc::kUnknownIdentifier: القيمة الممررة لـ targetAlgId غير معروفة أو غير مدعومة [SWS_CRYPT_24016].
ara::crypto::CryptoErrc::kIncompatibleArguments: رايات allowedUsage المحددة غير متوافقة مع targetAlgId أو مع نوع المفتاح [SWS_CRYPT_24016].
ara::crypto::CryptoErrc::kBusyResource: يوجد مورد نظام مطلوب للعملية قيد الاستخدام حاليًا [SWS_CRYPT_24016].
ara::crypto::CryptoErrc::kEmptyKeySlot: يوجد KeySlot تم تكوينه للعملية وهو فارغ [SWS_CRYPT_24016].
تم التصريح عن الطريقة كـ const وكذلك noexcept، وتضمن الأمان من الاستثناءات، وهي آمنة خيطيًا (thread-safe) للاستدعاء المتزامن وفقًا للمواصفة [SWS_CRYPT_24016].
تم إنشاء هذا النص بواسطة ذكاء اصطناعي وهو بمثابة دليل توجيهي. المرجع الأساسي هو المواصفة.
Wrap the provided key using the previously set key encryption key.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 8e6ff8198c9dالمصدر
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
الاستخدام
تغلف الطريقة Wrap للفئة ara::crypto::cryp::SymmetricKeyWrapperCtx (ملف الترويسة ara/crypto/cryp/symmetric_key_wrapper_ctx.h) مفتاحًا تم توفيره باستخدام مفتاح تشفير المفاتيح (Key Encryption Key) الذي تم تعيينه مسبقًا [SWS_CRYPT_24014].
wrappedKey (ReadWriteMemRegion): مخزن مؤقت للإخراج يُكتب فيه المفتاح المغلف.
كقيمة إرجاع، تقدم العملية ara::core::Result<std::size_t>، والذي يحتوي في حالة النجاح على عدد البايتات المكتوبة في المخزن المؤقت للمفتاح المغلف [SWS_CRYPT_24014].
معالجة الأخطاء والدلالة
تُعرَّف الطريقة كـ exception safe وتطبق أسلوبًا دلاليًا صارمًا للتراجع في حالات الخطأ [SWS_CRYPT_24014]. ويمكن الإبلاغ عن حالات الخطأ التالية [SWS_CRYPT_24014]:
InvalidArgument: لا يمكن تغليف كائن المفتاح (على سبيل المثال بسبب حجم غير صالح أو نوع خاطئ).
ara::crypto::CryptoErrc::kUninitializedContext: لم تتم تهيئة السياق بعد بقيمة مفتاح.
ara::crypto::CryptoErrc::kUsageViolation: الاستخدام المسموح به للـ KEK لا يتضمن kAllowKeyWrapping، أو أن الاستخدام الخاص بالكائن لا يتضمن kAllowSecuredExport.
ara::crypto::CryptoErrc::kInsufficientCapacity: المخزن المؤقت للإخراج wrappedKey صغير جدًا.
ara::crypto::CryptoErrc::kBusyResource: يوجد مورد مطلوب قيد الاستخدام.
ara::crypto::CryptoErrc::kEmptyKeySlot: إن KeySlot الذي تم تكوينه فارغ حاليًا.
التزامن والقيود
تم تحديد الواجهة كـ thread-safe[SWS_CRYPT_24014]. ويُعد وجود سياق مهيأ مسبقًا بالإضافة إلى سمات استخدام مناسبة للمفاتيح المعنية شرطًا أساسيًا للتنفيذ [SWS_CRYPT_24014].
تم توليد إشعار الاستخدام هذا تلقائيًا استنادًا إلى مواصفة AUTOSAR Adaptive R25-11.
rollback_semantics if the allowed usage of the KEK does not include kAllowKey Wrapping or the allowed usage of the object does not include k AllowSecuredExport
gemini-3.8-flash-low· 2026-10-13 · الأصل الألماني