تحديد الواجهة لحساب الحجم والتسلسل العام للكائنات التشفيرية.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: dacacac17ff9المصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
تحديد الواجهة لحساب الحجم والتسلسل العام للكائنات التشفيرية.
تحدد الواجهة ara::crypto::Serializable المعيار الموحد للتصدير العام للكائنات التشفيرية إلى تسلسلات بايتات خاصة بالصيغة. تحدد التطبيقات مسبقًا عبر GetExportSize() حجم المخزن المؤقت المطلوب وتنفذ بعد ذلك التسلسل الفعلي عبر ExportPublicly() في مخزن مؤقت تم توفيره [SWS_CRYPT_10711]. وتتميز جميع العمليات بأنها آمنة ضد الاستثناءات وكذلك آمنة خيطيًا، حيث يتطلب تصدير المفاتيح بالضرورة الصلاحية kAllowPlaintextExport، وتخضع الأخطاء دائمًا لدلالات التراجع (Rollback) [SWS_CRYPT_50006].
السياق
تحدد الواجهة ara::crypto::Serializable العقد التجريدي للكائنات التشفيرية في الوحدة crypto التي يمكن تحويلها إلى تمثيل بايتات قياسي. وكواجهة صرفة، فإنها تغلّف القدرة على تسلسل كائن إلى صيغة إخراج محددة بواسطة معرّف صيغة (FormatId) [SWS_CRYPT_10711]. وتشمل أطراف التفاعل النموذجية مكونات التطبيق أو المنصة التي يتعين عليها حفظ عناصر تشفيرية مثل المفاتيح أو الشهادات بشكل دائم، أو نقلها عبر قنوات الاتصال، أو تبادلها بنص صريح. وتضمن الواجهة إجراء التصدير بشكل متحكم فيه ومع مراعاة الصيغ وقيود الأمان.
دورة الحياة
نظرًا لأن ara::crypto::Serializable تمثل واجهة افتراضية صرفة ذات دوال افتراضية صرفة، فإن الفئة لا تمتلك منطق إنشاء نسخ خاصًا بها. ويعتمد العمر والإنشاء كليًا على فئات التشفير الملموسة المشتقة التي تنفذ الواجهة. وتُعلن كلتا الدالتين المحددتين للواجهة، GetExportSize()[SWS_CRYPT_50006] وExportPublicly()[SWS_CRYPT_10711]، كـ const ولا تُغيّران الحالة الداخلية للكائن أثناء التسلسل. ووفقًا للمواصفات، صُممت العمليات لتكون آمنة ضد الاستثناءات (exception safe) وآمنة تزامنًا (thread-safe) [SWS_CRYPT_10711]، [SWS_CRYPT_50006]، بحيث يُسمح بعمليات الوصول المتوازية للقراءة إلى نفس نسخة الكائن.
مسار الاستخدام
ينقسم المسار العادي للتصدير إلى تسلسل من خطوتين يتكون من حساب الحجم والتسلسل الفعلي. ولتجنب طفحان المخزن المؤقت أو فشل التخصيص، يستعلم المتصل مسبقًا عبر الدالة GetExportSize() عن حجم المخزن المؤقت المطلوب بدقة بالبايتات لصيغة الهدف المطلوبة [SWS_CRYPT_50006]. وبعد تلقي استجابة ناجحة، يوفر المتصل نطاق ذاكرة قابلاً للكتابة من النوع ReadWriteMemRegion. ومن المحتمل أن يتم تخصيص نطاق الذاكرة هذا في معظم التطبيقات ديناميكيًا بناءً على عدد البايتات المحسوب أو توفيره من تجمع ذاكرة محجوز مسبقًا. سؤال Q-0c04ba0a352f0a37 (مفتوح)
في الخطوة التالية، يستدعي التطبيق ExportPublicly() ويمرر كلاً من المخزن المؤقت المتوفر وFormatId[SWS_CRYPT_10711] المحددة مسبقًا. يقوم الكائن بتسلسل بياناته المفيدة في نطاق الذاكرة الممرر، ويُرجع في حالة النجاح ضمن نوع الإرجاع ara::core::Result<std::size_t> عدد البايتات المكتوبة فعليًا [SWS_CRYPT_10711].
تشير عمليات الواجهة إلى حالات الخطأ عبر نوع الإرجاع ara::core::Result، حيث تضمن جميع الأخطاء المحددة دلالات تراجع صارمة (rollback_semantics) [SWS_CRYPT_10711]، [SWS_CRYPT_50006]. إذا فشل أي استدعاء، يظل النظام بأكمله في حالة متسقة. تم تعريف حالات الخطأ التالية:
ara::crypto::CryptoErrc::kUnsupportedFormat: يتم إرجاعه بواسطة كل من GetExportSize()[SWS_CRYPT_50006] وExportPublicly()[SWS_CRYPT_10711]، إذا كانت FormatId المحددة غير مدعومة لنوع الكائن الفعلي.
ara::crypto::CryptoErrc::kInsufficientCapacity: يحدث في ExportPublicly() إذا كانت سعة مخزن ReadWriteMemRegion المؤقت الممرر غير كافية للبيانات المتسلسلة [SWS_CRYPT_10711].
ara::crypto::CryptoErrc::kUnsupported: يتم الإبلاغ عنه بواسطة ExportPublicly() إذا كان التصدير غير مدعوم من حيث المبدأ للكائن المحدد [SWS_CRYPT_10711].
ara::crypto::CryptoErrc::kUsageViolation: يحدث عند ExportPublicly() إذا كان الكائن عبارة عن مفتاح لا تسمح قواعد استخدامه بتصدير نص عادي (الاستخدام المسموح به لا يتضمن kAllowPlaintextExport) [SWS_CRYPT_10711].
يستند هذا الدليل إلى مواصفة AUTOSAR R25-11.
مخطط الفئات UML
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 499fb38eb87aالمصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
الاستخدام
تسلسل دالة الأعضاء المتزامنة ExportPublicly للواجهة ara::crypto::Serializable الكائن بالتنسيق الناتج المحدد [SWS_CRYPT_10711]. يتم تمرير معرف التنسيق format (النوع FormatId) بالإضافة إلى منطقة الذاكرة الهدف out (النوع ReadWriteMem Region) كمعلمات. عند التنفيذ الناجح، ترجع الدالة العدد الفعلي للبايتات المكتوبة في ara::core::Result<std::size_t>[SWS_CRYPT_10711].
التفاعل مع الدوال ذات الصلة
ترتبط الدالة مباشرة بـ GetExportSize[SWS_CRYPT_50006]، والتي يمكن من خلالها تحديد حجم البايت المطلوب لتنسيق معين. من المرجح أن يستعلم المستدعون عادةً عن GetExportSize أولاً قبل تقديم المخزن المؤقت للإخراج out، وذلك لضمان سعة كافية للمخزن المؤقت. سؤال Q-394ae08d9d7e6fa7 (مفتوح)
معالجة الأخطاء
في حالة حدوث خطأ، تسري دلالات التراجع ويتم إرجاع رمز خطأ مطابق [SWS_CRYPT_10711]:
ara::crypto::CryptoErrc::kInsufficientCapacity: المخزن المؤقت للإخراج المُمرر out ذو حجم صغير جدًا [SWS_CRYPT_10711].
ara::crypto::CryptoErrc::kUnsupportedFormat: مُعرّف التنسيق المُمرر غير مدعوم لنوع الكائن هذا [SWS_CRYPT_10711].
ara::crypto::CryptoErrc::kUnsupported: تصدير الكائن غير مدعوم بشكل عام [SWS_CRYPT_10711].
ara::crypto::CryptoErrc::kUsageViolation: الكائن المراد تصديره هو مفتاح لا تسمح قواعد استخدامه بالتصدير بنص صريح (kAllowPlaintextExport) [SWS_CRYPT_10711].
التزامن والشروط الحدية
تم تحديد الدالة على أنها const، وnoexcept، وآمنة مسار المعالجة («thread-safe»)، وآمنة من الاستثناءات («exception safe») [SWS_CRYPT_10711]. وبالتالي يمكن تنفيذها بالتزامن ولا تطلق استثناءات C++.
تم إنشاء ملاحظة الاستخدام هذه بواسطة ذكاء اصطناعي استنادًا إلى مواصفة AUTOSAR R25-11.
gemini-3.8-flash-low· 2026-10-13 · الأصل الألماني