Crypto Driver (Crypto)
Low-level driver executing cryptographic primitives on hardware security modules (HSM) or software libraries.
Funktionen — Übersicht
void Crypto_Init (const Crypto_ConfigType* configPtr);Initializes the Crypto Driver.void Crypto_GetVersionInfo (Std_VersionInfoType* versioninfo);Returns the version information of this module.Std_ReturnType Crypto_ProcessJob (uint32 objectId, Crypto_JobType* job);Service Crypto_ProcessJob.Std_ReturnType Crypto_CancelJob (uint32 objectId, Crypto_JobType* job);This interface removes the provided job from the queue and cancels the processing of the job if possible.Std_ReturnType Crypto_KeyElementSet (uint32 cryptoKeyId, uint32 keyElementId, const uint8* keyPtr, uint32 keyLength);Sets the given key element bytes to the key identified by crypto Key Id.Std_ReturnType Crypto_KeySetValid (uint32 cryptoKeyId);Sets the key state of the key identified by crypto Key Id to valid.Std_ReturnType Crypto_KeySetInvalid (uint32 cryptoKeyId);Sets invalid for the status of the key identifi ed by crypto Key Id.Std_ReturnType Crypto_KeyElementGet (uint32 cryptoKeyId, uint32 keyElementId, uint8* resultPtr, uint32* resultLengthPtr);This interface shall be used to get a key element of the key identified by the cryptoStd_ReturnType Crypto_KeyGetStatus (uint32 cryptoKeyId, Crypto_KeyStatusType* keyStatusPtr);Returns the key state of the key identified by crypto Key Id.Std_ReturnType Crypto_KeyElementCopy (uint32 cryptoKeyId, uint32 keyElementId, uint32 targetCryptoKeyId, uint32 targetKeyElementId);Service Crypto_KeyElementCopy.Std_ReturnType Crypto_KeyElementCopyPartial (uint32 cryptoKeyId, uint32 keyElementId, uint32 keyElementSourceOffset, uint32 keyElementTargetOffset, uint32 keyElementCopyLength, uint32 targetCryptoKeyId, uint32 targetKeyElementId);Service Crypto_KeyElementCopyPartial.Std_ReturnType Crypto_KeyCopy (uint32 cryptoKeyId, uint32 targetCryptoKeyId);Copies a key with all its elements to another key in the same crypto driver.Std_ReturnType Crypto_KeyElementIdsGet (uint32 cryptoKeyId, uint32* keyElementIdsPtr, uint32* keyElementIdsLengthPtr);Used to retrieve information which key elements are available in a given key.Std_ReturnType Crypto_RandomSeed (uint32 cryptoKeyId, const uint8* seedPtr, uint32 seedLength);This function generates the internal seed state using the pro vided entropy source.Std_ReturnType Crypto_KeyGenerate (uint32 cryptoKeyId);Generates new key material store it in the key identified by crypto Key Id.Std_ReturnType Crypto_KeyDerive (uint32 cryptoKeyId, uint32 targetCryptoKeyId);Derives a new key by using the key elements in the given key identified by the crypto Key Id.Std_ReturnType Crypto_KeyExchangeCalcPubVal (uint32 cryptoKeyId, uint8* publicValuePtr, uint32* publicValueLengthPtr);Calculates the public value for the key exchange a nd stores the public key in the memory location pointed by the public value...Std_ReturnType Crypto_KeyExchangeCalcSecret (uint32 cryptoKeyId, const uint8* partnerPublicValuePtr, uint32 partnerPublicValueLength);Calculates the shared secret key for the key exchange with the key material of the key identified by the crypto Key Id and the...void Crypto_MainFunction (void);If asynchronous job processing is configured and there are job queues, the function is called cyclically to process queued jobs.
Typen — Übersicht
struct Crypto_ConfigTypeConfiguration data structure of Cry If module
Funktionen & Typen — Detailansicht
دالة Crypto_Init [SWS_Crypto_91000] 📄 PDF
void Crypto_Init (const Crypto_ConfigType* configPtr);
Initializes the Crypto Driver.
تُستخدم الدالة Crypto_Init لتهيئة Crypto Driver وفقًا لـ [SWS_Crypto_91000]. تم التصريح عن الواجهة في ملف الرأس Crypto.h ولها معرّف الخدمة 0x00 [SWS_Crypto_91000].
تم تحديد الخصائص التالية للاستدعاء ومعلمات الواجهة:
- مؤشر التكوين: عبر معلمة الإدخال
configPtrمن النوعconst Crypto_ConfigType*، يُمرَّر مؤشر إلى بنية التكوين المحددة [SWS_Crypto_91000]. - قيمة الإرجاع: ليس للدالة قيمة إرجاع (
void)؛ ولا توجد معلمات إدخال/إخراج ولا معلمات إخراج منفصلة [SWS_Crypto_91000]. - سلوك التنفيذ: يتم تنفيذ روتين التهيئة بشكل متزامن (
Synchronous) [SWS_Crypto_91000]. - إمكانية إعادة الدخول: تم تعريف الدالة على أنها غير قابلة لإعادة الدخول (
Non Reentrant) [SWS_Crypto_91000]. الاستدعاءات المتوازية أو المتداخلة غير مسموح بها.
نظرًا للتصنيف على أنها غير قابلة لإعادة الدخول ولأن المواصفات لا تُرجع رموز خطأ محددة، فمن المرجح أن يتم الاستدعاء عادةً بشكل مركزي خلال مرحلة بدء تشغيل وحدة التحكم الإلكترونية قبل جميع عمليات الوصول الأخرى إلى المشغّل (تفسير). سؤال Q-008bb5a45b823891 (مفتوح) ومن المرجح أيضًا أن تكون الجهة المستدعية مسؤولة عن بقاء بنية التكوين المشار إليها صالحة بشكل دائم في الذاكرة (تفسير). سؤال Q-6271a86fad440121 (مفتوح)
تم توليد ملاحظة الاستخدام هذه بواسطة ذكاء اصطناعي بناءً على مواصفة AUTOSAR CP R20-11.
دليل المنفِّذ قيد الإعداد (التعقيد I1)
دالة Crypto_GetVersionInfo [SWS_Crypto_91001] 📄 PDF
void Crypto_GetVersionInfo (Std_VersionInfoType* versioninfo);
Returns the version information of this module.
دالة Crypto_ProcessJob [SWS_Crypto_91003] 📄 PDF
Std_ReturnType Crypto_ProcessJob (uint32 objectId, Crypto_JobType* job);
Service Crypto_ProcessJob.
تنفذ الدالة Crypto_ProcessJob الأصل التشفيري المُكوّن في المعلمة job على كائن Crypto Driver Object المشار إليه بواسطة objectId [SWS_Crypto_91003]. الاستدعاء قابل لإعادة الدخول ويعمل بشكل متزامن أو غير متزامن اعتمادًا على تكوين الوظيفة [SWS_Crypto_91003]. عبر المؤشر إلى Crypto_JobType، يتم تمرير كل من بيانات تكوين الأصل والمخازن المؤقتة لبيانات النتائج [SWS_Crypto_91003].
قبل التنفيذ الفعلي للوظيفة، يتحقق المشغّل من صحة معرّفات المفاتيح: إذا كان job->cryptoKeyId أو job->targetCryptoKeyId عند الاقتضاء خارج النطاق المسموح به، تُبلّغ الدالة عن الخطأ CRYPTO_E_PARAM_HANDLE إلى DET وتُرجع E_NOT_OK [SWS_Crypto_00217]. ينطبق هذا أيضًا على الخدمة CRYPTO_KEYDERIVE (job->jobPrimitiveInfo->primitiveInfo->service)، بشرط أن يكون job->targetCryptoKeyId غير صالح [SWS_Crypto_00202].
بالإضافة إلى E_OK وE_NOT_OK، تشير رموز خطأ محددة إلى فشل الطلب [SWS_Crypto_91003]:
CRYPTO_E_BUSY، إذا كان كائن المشغّل مشغولاً أو كانت قائمة الانتظار الخاصة به ممتلئة [SWS_Crypto_91003]،- أخطاء متعلقة بالمفتاح مثل
CRYPTO_E_KEY_NOT_VALID،CRYPTO_E_KEY_SIZE_MISMATCH،CRYPTO_E_KEY_READ_FAIL،CRYPTO_E_KEY_WRITE_FAIL،CRYPTO_E_KEY_NOT_AVAILABLEأوCRYPTO_E_KEY_EMPTY[SWS_Crypto_91003]، CRYPTO_E_JOB_CANCELEDعند إلغاء وظيفة متزامنة [SWS_Crypto_91003] بالإضافة إلىCRYPTO_E_ENTROPY_EXHAUSTEDفي حالة عدم كفاية الاعتلاج لمولد أرقام عشوائية؛ وفي هذه الحالة تُبلّغ الدالة بالإضافة إلى ذلك عن خطأ وقت التشغيلCRYPTO_E_RE_ENTROPY_EXHAUSTED[SWS_Crypto_00141]، [SWS_Crypto_91003].
أُنشئ هذا النص بواسطة ذكاء اصطناعي بناءً على بيانات مواصفات AUTOSAR R20-11.
دليل المنفِّذ قيد الإعداد (التعقيد I1)
دالة Crypto_CancelJob [SWS_Crypto_00122] 📄 PDF
Std_ReturnType Crypto_CancelJob (uint32 objectId, Crypto_JobType* job);
This interface removes the provided job from the queue and cancels the processing of the job if possible.
الاستخدام
تزيل الدالة المتزامنة Crypto_CancelJob وظيفةً مُمرَّرة من قائمة الانتظار وتُلغي معالجتها قدر الإمكان [SWS_Crypto_00122]. عند الاستدعاء، يُمرَّر معرّف كائن Crypto Driver Object (objectId) بالإضافة إلى مؤشر إلى تكوين الوظيفة (job) [SWS_Crypto_00122].
تشير قيم الإرجاع إلى نتيجة محاولة الإلغاء:
E_OK: كان الطلب ناجحًا وتمت إزالة الوظيفة [SWS_Crypto_00122]. إذا لم يكن هناك خطأ في المشغّل ولم تكن الوظيفة قيد المعالجة حاليًا، تُرجع الخدمة بالمثلE_OKدون إجراءات أخرى [SWS_Crypto_00214].E_NOT_OK: فشل الطلب، نظراً لتعذر إزالة المهمة [SWS_Crypto_00122].CRYPTO_E_JOB_CANCELED: تم إلغاء الوظيفة، لكنها تستمر في التنفيذ؛ ولا يتم إرجاع أي نتائج إلى التطبيق [SWS_Crypto_00122]. ينطبق هذا إذا كان المشغّل يعمل بدون أخطاء، ولكنه لا يستطيع إلغاء الوظيفة (بسبب قيود العتاد مثلًا) [SWS_Crypto_00183].
التزامن والقيود
الواجهة قابلة لإعادة الدخول لمثيلات مختلفة، ولكن لا يجوز استدعاؤها في الوقت نفسه لكائن Crypto Driver Object نفسه [SWS_Crypto_00122].
تم إنشاء ملاحظة الاستخدام هذه تلقائيًا وتستند حصريًا إلى بيانات مواصفات AUTOSAR R20-11.
دليل المنفِّذ قيد الإعداد (التعقيد I1)
دالة Crypto_KeyElementSet [SWS_Crypto_91004] 📄 PDF
Std_ReturnType Crypto_KeyElementSet (uint32 cryptoKeyId, uint32 keyElementId, const uint8* keyPtr, uint32 keyLength);
Sets the given key element bytes to the key identified by crypto Key Id.
تُستخدم الدالة المتزامنة Crypto_KeyElementSet لتعيين البيانات الأولية لعنصر مفتاح معين لمفتاح مُحدَّد عبر cryptoKeyId في مشغّل التشفير [SWS_Crypto_91004].
المعلمات وقيم الإرجاع
عبر keyElementId يتم عنونة عنصر المفتاح الهدف، بينما يشير keyPtr إلى المخزن المؤقت للبيانات وkeyLength إلى حجمه بالبايت [SWS_Crypto_91004]. عند نجاح التعيين، تُرجع الواجهة E_OK [SWS_Crypto_91004].
معالجة الأخطاء
إذا حدث خطأ أثناء المعالجة، تُرجع الدالة قيم إرجاع محددة [SWS_Crypto_91004]:
CRYPTO_E_BUSY: كائن مشغّل التشفير المقترن مشغول.CRYPTO_E_KEY_WRITE_FAIL: تم رفض وصول الكتابة إلى عنصر المفتاح.CRYPTO_E_KEY_NOT_AVAILABLE: عنصر المفتاح المطلوب أو المفتاح غير متاح.CRYPTO_E_KEY_SIZE_MISMATCH: طول البيانات المُمرَّرة لا يتطابق مع حجم عنصر المفتاح.E_NOT_OK: فشل الطلب لأسباب أخرى.
التزامن
تم تحديد الدالة على أنها غير قابلة لإعادة الدخول (Non Reentrant) [SWS_Crypto_91004]. تفسير: من المرجح أن تكون الجهات المستدعية مسؤولة عن مزامنة الاستدعاءات المتوازية فيما بينها لمنع عدم اتساق البيانات في المشغّل. سؤال Q-d7ef7a774052a212 (مفتوح)
تم إنشاء ملاحظة الاستخدام هذه آليًا استنادًا إلى المواصفة SWS_Crypto_91004 (R20-11).
دليل المنفِّذ قيد الإعداد (التعقيد I1)
دالة Crypto_KeySetValid [SWS_Crypto_91014] 📄 PDF
Std_ReturnType Crypto_KeySetValid (uint32 cryptoKeyId);
Sets the key state of the key identified by crypto Key Id to valid.
تُستخدم الدالة المتزامنة Crypto_KeySetValid لضبط حالة مفتاح محدد بواسطة المعرّف cryptoKeyId إلى صالح ([SWS_Crypto_91014]). تتوفر الواجهة عبر ملف الرأس Crypto.h ولها معرّف الخدمة 0x05 ([SWS_Crypto_91014]).
عند الاستخدام، يتم تحديد المعلمات وقيم الإرجاع التالية ([SWS_Crypto_91014]):
- معلمة الإدخال: عبر
cryptoKeyId(النوعuint32) يتم تمرير معرّف المفتاح المراد ضبط حالته إلى صالح ([SWS_Crypto_91014]). لا توجد معلمات إدخال أو إخراج إضافية ([SWS_Crypto_91014]). - قيمة الإرجاع: يفيد رمز حالة من النوع
Std_ReturnTypeبنتيجة الطلب ([SWS_Crypto_91014]):E_OK: كان الطلب ناجحًا ([SWS_Crypto_91014]).E_NOT_OK: فشل الطلب ([SWS_Crypto_91014]).CRYPTO_E_BUSY: فشل التنفيذ لأن كائن Crypto Driver المعني مشغول ([SWS_Crypto_91014]).
فيما يتعلق بالتزامن، تم تحديد الدالة على أنها غير قابلة لإعادة الدخول («Non Reentrant») ([SWS_Crypto_91014]). تفسير: قد يضطر المتصلون إلى تنسيق الاستدعاءات المتوازية عبر المهام خارجيًا لتجنب التعارضات، وينبغي عليهم عند استلام CRYPTO_E_BUSY التخطيط لإعادة محاولة الاستدعاء في وقت لاحق. سؤال Q-32d775a9e61e5731 (مفتوح)
تم إنشاء هذا النص بواسطة ذكاء اصطناعي ويستند إلى حالة المواصفة AUTOSAR R20-11.
دليل المنفِّذ قيد الإعداد (التعقيد I1)
دالة Crypto_KeySetInvalid [SWS_Crypto_91020] 📄 PDF
Std_ReturnType Crypto_KeySetInvalid (uint32 cryptoKeyId);
Sets invalid for the status of the key identifi ed by crypto Key Id.
Verwendung und Semantik
Die synchrone Funktion Crypto_KeySetInvalid setzt den Status eines durch cryptoKeyId identifizierten Schlüssels auf ungültig [SWS_Crypto_91020]. Die Funktion ist in der Header-Datei Crypto.h definiert und wird über die Service-ID 0x15 angesprochen [SWS_Crypto_91020]. Als einziger Übergabeparameter dient der Eingabewert cryptoKeyId (Typ uint32), welcher den eindeutigen Bezeichner des Zielschlüssels enthält; Ein-/Ausgabe- sowie Ausgabeparameter sind nicht vorhanden [SWS_Crypto_91020].
Fehlerbehandlung und Rückgabewerte
Das Ergebnis der Funktionsausführung wird über den Rückgabewert vom Typ Std_ReturnType signalisiert [SWS_Crypto_91020]:
E_OK: Die Anforderung war erfolgreich und der Schlüsselstatus wurde auf ungültig gesetzt [SWS_Crypto_91020].E_NOT_OK: Die Durchführung der Anforderung ist fehlgeschlagen [SWS_Crypto_91020].CRYPTO_E_BUSY: Die Anforderung schlug fehl, da das zuständige Krypto-Treiberobjekt (Crypto Driver Object) derzeit belegt ist [SWS_Crypto_91020].
Nebenläufigkeit und Einschränkungen
Die Schnittstelle ist als nicht reentrant (Non Reentrant) spezifiziert [SWS_Crypto_91020]. Ein nebenläufiger oder unterbrechender Aufruf ist daher unzulässig. Da die Funktion synchron ausgeführt wird, kehrt sie erst nach Abschluss der Statusänderung bzw. nach Feststellung des Fehlers zum Aufrufer zurück [SWS_Crypto_91020].
Dieser Nutzungshinweis wurde automatisch auf Basis der Spezifikation generiert.
دليل المنفِّذ قيد الإعداد (التعقيد I1)
دالة Crypto_KeyElementGet [SWS_Crypto_91006] 📄 PDF
Std_ReturnType Crypto_KeyElementGet (uint32 cryptoKeyId, uint32 keyElementId, uint8* resultPtr, uint32* resultLengthPtr);
This interface shall be used to get a key element of the key identified by the crypto
تُستخدم الدالة المتزامنة والقابلة لإعادة الدخول Crypto_KeyElementGet لقراءة عنصر مفتاح مُحدَّد بواسطة keyElementId من المفتاح cryptoKeyId وتخزينه في منطقة الذاكرة resultPtr [SWS_Crypto_91006]. تُوفَّر الواجهة عبر ملف الرأس Crypto.h وتملك معرّف الخدمة 0x06 [SWS_Crypto_91006]. عند الاستدعاء، تُمرّر الجهة المستدعية حجم المخزن المؤقت عبر معلمة الإدخال/الإخراج resultLengthPtr أو حجم القراءة المطلوب في حالة تهيئة الوصول الجزئي؛ وبعد اكتمال التنفيذ، يُودع المشغّل كمية البيانات المنسوخة فعليًا هناك [SWS_Crypto_91006].
في حالة النجاح، تُرجع الدالة E_OK [SWS_Crypto_91006]. وإذا فشلت العملية، فإنها تشير إلى ذلك عبر رموز خطأ محددة: CRYPTO_E_BUSY عند انشغال كائن مشغّل التشفير، CRYPTO_E_KEY_NOT_AVAILABLE إذا كان عنصر المفتاح غير متاح، CRYPTO_E_KEY_READ_FAIL عند رفض الوصول للقراءة، CRYPTO_E_KEY_EMPTY عند وجود عنصر مصدر غير مهيأ، بالإضافة إلى الخطأ العام E_NOT_OK [SWS_Crypto_91006].
على الرغم من تحديد الواجهة على أنها قابلة لإعادة الدخول، تشير المواصفات إلى أنه في حالة التعيين المباشر لعنصر المفتاح في ذاكرة فلاش، قد تحدث فترات انتقال ملموسة أثناء التنفيذ المتزامن [SWS_Crypto_91006]. تفسير: نظراً لهذه التأخيرات المحتملة، من المرجح أن يكون الاستدعاء مجديًا في سياق المهمة (Task context) وليس داخل روتينات خدمة المقاطعة الحساسة للوقت. سؤال Q-ff4e2843b9aad46d (مفتوح)
تم إنشاء ملاحظة الاستخدام هذه آليًا وتستند إلى حالة مواصفات AUTOSAR Classic R20-11.
دليل المنفِّذ قيد الإعداد (التعقيد I1)
دالة Crypto_KeyGetStatus [SWS_Crypto_91019] 📄 PDF
Std_ReturnType Crypto_KeyGetStatus (uint32 cryptoKeyId, Crypto_KeyStatusType* keyStatusPtr);
Returns the key state of the key identified by crypto Key Id.
تُستخدم الدالة المتزامنة Crypto_KeyGetStatus للاستعلام عن الحالة الحالية لمفتاح محدد داخل برنامج تشغيل التشفير [SWS_Crypto_91019]. ويتم توفيرها عبر ملف الترويسة Crypto.h وتحمل معرّف الخدمة Service-ID 0x14 [SWS_Crypto_91019].
الاستخدام والمعلمات
يتم الاستدعاء بشكل متزامن ويتوقع معامليْن [SWS_Crypto_91019]:
cryptoKeyId: معرّف المفتاح المراد تحديد حالته.keyStatusPtr: مؤشر إلى منطقة الذاكرة من النوعCrypto_KeyStatusTypeالتي تُعاد إليها الحالة.
كقيمة إرجاع، تُرجع واجهة التعامل Std_ReturnType. وعند التنفيذ الناجح، يتم الإبلاغ عن E_OK، بينما يتم إرجاع E_NOT_OK في حالة حدوث خطأ [SWS_Crypto_91019].
التزامن والقيود
تم التصريح عن الدالة بأنها غير قابلة لإعادة الدخول (Non Reentrant) [SWS_Crypto_91019]. ولذلك، يجب على جهات الاستدعاء التأكد من تجنب الاستدعاءات المتزامنة التفرعية من خلال آليات مزامنة ذات مستوى أعلى. ولا توجد رسائل خطأ DET محددة مدرجة؛ ومن المفترض أن الاستدعاء الخاطئ مثل تمرير مؤشر غير صالح أو معرّف ID غير صالح يؤدي مباشرةً إلى إرجاع E_NOT_OK [SWS_Crypto_91019]. سؤال Q-5703fab02905e91a (مفتوح)
تم إنشاء هذا النص بواسطة ذكاء اصطناعي ويستند إلى مواصفة AUTOSAR R20-11.
دليل المنفِّذ قيد الإعداد (التعقيد I1)
دالة Crypto_KeyElementCopy [SWS_Crypto_00148] 📄 PDF
Std_ReturnType Crypto_KeyElementCopy (uint32 cryptoKeyId, uint32 keyElementId, uint32 targetCryptoKeyId, uint32 targetKeyElementId);
Service Crypto_KeyElementCopy.
تُستخدم الدالة المتزامنة Crypto_KeyElementCopy لنسخ عنصر مفتاح إلى عنصر مفتاح آخر داخل مشغّل التشفير نفسه [SWS_Crypto_00148]. يتم تمرير معرّفات المفتاح المصدر (cryptoKeyId) وعنصر المفتاح المصدر (keyElementId) بالإضافة إلى المفتاح الهدف (targetCryptoKeyId) وعنصر المفتاح الهدف (targetKeyElementId) [SWS_Crypto_00148].
فيما يتعلق بالسلوك الزمني، تجدر الإشارة إلى أنه في حالة عناصر المفاتيح المعينة مباشرة في ذاكرة فلاش، قد تحدث تأخيرات أكبر أثناء استدعاء الدالة نظرًا للتنفيذ المتزامن [SWS_Crypto_00148]. لذلك، يجب مراعاة سلوك وقت التشغيل لا سيما في السياقات الحساسة للوقت.
صُممت الدالة لتكون قابلة لإعادة الدخول، ولكن صراحةً ليس لنفس cryptoKeyId [SWS_Crypto_00148]. وبناءً على ذلك، يتعين على الجهة المستدعية مزامنة الاستدعاءات المتزامنة ذات المفتاح المصدر المتطابق أو استبعادها.
في حالة النجاح، تُرجع الدالة E_OK [SWS_Crypto_00148]. وفي حالة حدوث أخطاء، تشير قيمة الإرجاع إلى السبب المحدد [SWS_Crypto_00148]:
CRYPTO_E_BUSY: كائن مشغّل التشفير مشغول [SWS_Crypto_00148].CRYPTO_E_KEY_NOT_AVAILABLE: عنصر المفتاح المطلوب لمفتاح واحد على الأقل غير متاح [SWS_Crypto_00148].CRYPTO_E_KEY_READ_FAILأوCRYPTO_E_KEY_WRITE_FAIL: قراءة عنصر المصدر أو كتابة عنصر الهدف غير مسموح بها [SWS_Crypto_00148].CRYPTO_E_KEY_SIZE_MISMATCH: أحجام عناصر المفاتيح غير متوافقة مع بعضها البعض [SWS_Crypto_00148].CRYPTO_E_KEY_EMPTY: عنصر المفتاح المصدر غير مهيأ [SWS_Crypto_00148].E_NOT_OK: فشل الطلب بشكل عام [SWS_Crypto_00148].
تم إنشاء ملاحظة الاستخدام هذه بصورة آلية بناءً على مواصفة AUTOSAR Classic R20-11.
دليل المنفِّذ قيد الإعداد (التعقيد I1)
دالة Crypto_KeyElementCopyPartial [SWS_Crypto_91015] 📄 PDF
Std_ReturnType Crypto_KeyElementCopyPartial (uint32 cryptoKeyId, uint32 keyElementId, uint32 keyElementSourceOffset, uint32 keyElementTargetOffset, uint32 keyElementCopyLength, uint32 targetCryptoKeyId, uint32 targetKeyElementId);
Service Crypto_KeyElementCopyPartial.
تُستخدم الدالة المتزامنة Crypto_KeyElementCopyPartial للنسخ الجزئي للبيانات من عنصر مفتاح مصدر إلى عنصر مفتاح وجهة ضمن مشغل التشفير نفسه [SWS_Crypto_91015]. عبر المعلمتين keyElementSourceOffset وkeyElementCopyLength، يتم تحديد الجزء المراد نسخه من عنصر المصدر (cryptoKeyId، keyElementId)، بينما يحدد keyElementTargetOffset موضع البداية في عنصر الوجهة (targetCryptoKeyId، targetKeyElementId). في حال نجاح التحقق دون أخطاء، ينفذ المشغل عملية النسخ بشكل متزامن ويُرجع E_OK [SWS_Crypto_00209].
قبل التنفيذ، يتحقق المشغل من حالات المخزن المؤقت والمشغل:
- إذا لم يكن مشغل التشفير مهيأً وكان فحص التطوير مفعلًا، تُبلغ الدالة
CRYPTO_E_UNINITإلى DET وتُرجعE_NOT_OK[SWS_Crypto_00205]. - إذا كان الطول الإجمالي لعنصر مفتاح المصدر أقل من
keyElementSourceOffset + keyElementCopyLength، يفشل الاستدعاء معCRYPTO_E_KEY_SIZE_MISMATCH[SWS_Crypto_00207]. - إذا كان المخزن المؤقت الأقصى لعنصر مفتاح الوجهة يوفر مساحة أقل من
keyElementTargetOffset + keyElementCopyLength، يتم الإبلاغ عنCRYPTO_E_KEY_SIZE_MISMATCHأيضًا [SWS_Crypto_00208]. - تشمل قيم الأخطاء المحددة الإضافية من بين أمور أخرى
CRYPTO_E_BUSY(كائن المشغل مشغول)،CRYPTO_E_KEY_EMPTY(عنصر مصدر غير مهيأ)،CRYPTO_E_KEY_NOT_AVAILABLEبالإضافة إلى أخطاء الوصول للقراءة أو الكتابة (CRYPTO_E_KEY_READ_FAIL،CRYPTO_E_KEY_WRITE_FAIL) [SWS_Crypto_91015].
الدالة قابلة لإعادة الدخول، ولكن لا يجوز استدعاؤها في نفس الوقت لنفس معرف المفتاح cryptoKeyId [SWS_Crypto_91015]. إذا كان عنصر المفتاح مخزنًا مباشرة في ذاكرة Flash، فقد يؤدي التنفيذ المتزامن إلى تأخيرات زمنية ملحوظة [SWS_Crypto_91015].
تم إنشاء ملاحظة الاستخدام هذه بصورة آلية بناءً على مواصفة AUTOSAR R20-11.
دليل المنفِّذ قيد الإعداد (التعقيد I2)
دالة Crypto_KeyCopy [SWS_Crypto_00155] 📄 PDF
Std_ReturnType Crypto_KeyCopy (uint32 cryptoKeyId, uint32 targetCryptoKeyId);
Copies a key with all its elements to another key in the same crypto driver. Note: If the actual key element is directly mapped to flash memory, there could be a bigger delay when calling this function (synchronous operation)
Verwendung
Die synchrone Funktion Crypto_KeyCopy kopiert einen Schlüssel mitsamt all seiner Schlüsselelemente auf einen Zielschlüssel innerhalb desselben Crypto-Treibers [SWS_Crypto_00155]. Die Zuordnung erfolgt über die Eingangsparameter cryptoKeyId für den Quellschlüssel sowie targetCryptoKeyId für den Zielschlüssel [SWS_Crypto_00155]. Ein erfolgreicher Kopiervorgang wird mit E_OK bestätigt [SWS_Crypto_00155].
Nebenläufigkeit und Laufzeitverhalten
Die Schnittstelle ist reentrant ausgelegt, darf jedoch nicht zeitgleich für dieselbe cryptoKeyId ausgeführt werden [SWS_Crypto_00155]. Da die Ausführung synchron erfolgt, kann es bei Schlüsselelementen, die direkt im Flash-Speicher abgelegt sind, zu spürbaren Zeitverzögerungen während des Aufrufs kommen [SWS_Crypto_00155].
Fehlerbehandlung
Im Fehlerfall liefert die Funktion spezifische Rückgabewerte vom Typ Std_ReturnType [SWS_Crypto_00155]:
CRYPTO_E_BUSY: Das zugehörige Crypto Driver Object ist ausgelastet [SWS_Crypto_00155].CRYPTO_E_KEY_NOT_AVAILABLE: Mindestens einer der angeforderten Schlüssel ist nicht verfügbar [SWS_Crypto_00155].CRYPTO_E_KEY_READ_FAIL: Das Auslesen des Quellschlüsselelements ist nicht erlaubt [SWS_Crypto_00155].CRYPTO_E_KEY_WRITE_FAIL: Das Beschreiben des Zielschlüsselelements ist nicht erlaubt [SWS_Crypto_00155].CRYPTO_E_KEY_SIZE_MISMATCH: Die Größen der Schlüsselelemente sind nicht miteinander kompatibel [SWS_Crypto_00155].CRYPTO_E_KEY_EMPTY: Das Schlüsselelement des Quellschlüssels ist nicht initialisiert [SWS_Crypto_00155].E_NOT_OK: Die Durchführung der Anforderung ist fehlgeschlagen [SWS_Crypto_00155].
Dieser Verwendungshinweis wurde von einer KI auf Basis der Spezifikation AUTOSAR CP R20-11 generiert.
دالة Crypto_KeyElementIdsGet [SWS_Crypto_00160] 📄 PDF
Std_ReturnType Crypto_KeyElementIdsGet (uint32 cryptoKeyId, uint32* keyElementIdsPtr, uint32* keyElementIdsLengthPtr);
Used to retrieve information which key elements are available in a given key.
تُستخدم الدالة المتزامنة Crypto_KeyElementIdsGet للاستعلام عن معلومات حول عناصر المفاتيح المتاحة في مفتاح معين [SWS_Crypto_00160]. عبر معلمة الإدخال cryptoKeyId، يتم تمرير معرّف المفتاح المراد تصدير معرّفات عناصره المتاحة [SWS_Crypto_00160]. يتم تخزين المعرّفات المحددة في المصفوفة المشار إليها بواسطة المؤشر keyElementIdsPtr [SWS_Crypto_00160].
تتم إدارة حجم المخزن المؤقت عبر معلمة الإدخال والإخراج keyElementIdsLengthPtr: عند الاستدعاء، يجب أن تحتوي هذه المعلمة على الحجم المقدَّم للمخزن المؤقت keyElementIdsPtr [SWS_Crypto_00160]. بعد انتهاء العملية، يتم إيداع العدد الفعلي لعناصر المفاتيح الموجودة هناك [SWS_Crypto_00160].
كنتيجة إرجاع، تُرجع الخدمة E_OK عند نجاح الاستعلام أو E_NOT_OK إذا فشل الطلب [SWS_Crypto_00160]. إذا كان كائن مشغّل التشفير المسؤول مشغولاً في وقت الاستدعاء، يتم إرجاع رمز الخطأ CRYPTO_E_BUSY [SWS_Crypto_00160].
فيما يتعلق بالتزامن، فإن الدالة قابلة لإعادة الدخول، ولكن لا يجوز استدعاؤها في الوقت نفسه لنفس cryptoKeyId [SWS_Crypto_00160]. التصريح متاح عبر ملف الرأس Crypto.h [SWS_Crypto_00160].
تم إنشاء هذا النص بواسطة ذكاء اصطناعي بناءً على مواصفات AUTOSAR.
دليل المنفِّذ قيد الإعداد (التعقيد I1)
دالة Crypto_RandomSeed [SWS_Crypto_91013] 📄 PDF
Std_ReturnType Crypto_RandomSeed (uint32 cryptoKeyId, const uint8* seedPtr, uint32 seedLength);
This function generates the internal seed state using the pro vided entropy source. Furthermore, this function can be used to update the seed state with new entropy
تُستخدم الدالة المتزامنة Crypto_RandomSeed (معرّف الخدمة Service-ID 0x0d) وفقًا لـ [SWS_Crypto_91013] لإنشاء حالة البذرة (Seed) الداخلية لمفتاح وتحديثها باستخدام مصدر إنتروبيا مقدم. ويحتوي ملف الترويسة Crypto.h على تصريح الدالة.
الاستخدام ومعاملات الاستدعاء
إلى جانب التوليد الأولي، يمكن أيضًا استخدام الدالة وفقًا لـ [SWS_Crypto_91013] لتحديث حالة البذرة بإنتروبيا جديدة. ويتطلب الاستدعاء المتزامن في هذا الصدد ثلاثة معاملات إدخال:
cryptoKeyId: يمرر معرّف المفتاح الذي يُراد إنشاء بذرة جديدة له.seedPtr: يحتوي على مؤشر إلى منطقة الذاكرة التي تضم البيانات المخصصة لتغذية البذرة.seedLength: يحدد طول بيانات البذرة الممررة بالبايت.
قيم الإرجاع ومعالجة الأخطاء
كقيمة إرجاع، تبلّغ Crypto_RandomSeed عن حالة من النوع Std_ReturnType وفقًا لـ [SWS_Crypto_91013]:
E_OK: تم تنفيذ الطلب بنجاح.E_NOT_OK: فشل الطلب.CRYPTO_E_KEY_NOT_VALID: يفشل التنفيذ لأن حالة المفتاح المحدد بواسطةcryptoKeyIdفي الحالة «invalid».
التزامن والقيود
وفقًا لـ [SWS_Crypto_91013]، تم تحديد الدالة على أنها قابلة لإعادة الدخول (reentrant)، ولكن ليس من أجل cryptoKeyId نفسها بشكل صريح. ولذلك، يجب منع الاستدعاءات المتوازية للمفتاح نفسه من جانب جهة الاستدعاء.
تم إنشاء هذا النص بواسطة ذكاء اصطناعي ويستند حصريًا إلى بيانات المواصفة الواردة في الحمولة (Payload).
دليل المنفِّذ قيد الإعداد (التعقيد I1)
دالة Crypto_KeyGenerate [SWS_Crypto_91007] 📄 PDF
Std_ReturnType Crypto_KeyGenerate (uint32 cryptoKeyId);
Generates new key material store it in the key identified by crypto Key Id.
الاستخدام
تولّد الدالة Crypto_KeyGenerate المُوفَّرة عبر ملف الرأس Crypto.h مادة مفتاح جديدة وتحدّث المفتاح الذي تتم عنونته عبر المعرّف cryptoKeyId [SWS_Crypto_91007]. تعمل الدالة بشكل متزامن تمامًا وهي معرّفة تحت معرّف الخدمة 0x07 [SWS_Crypto_91007]. لا توجد معلمات أخرى إلى جانب معرّف المفتاح [SWS_Crypto_91007].
التزامن والقيود
فيما يتعلق بالتزامن، تم تحديد Crypto_KeyGenerate على أنها قابلة لإعادة الدخول، ولكن مع القيد الصريح بأن هذا لا ينطبق على نفس cryptoKeyId [SWS_Crypto_91007]. إذا تم تقديم طلبات متعددة لنفس المفتاح، فيجب مزامنتها من جانب الجهة المستدعية لتجنب تعارضات المشغّل.
قيم الإرجاع ومعالجة الأخطاء
عبر قيمة الإرجاع من النوع الأساسي Std_ReturnType، تتلقى الجهة المستدعية إفادة تفصيلية حول النجاح أو أسباب الخطأ المحددة للعملية [SWS_Crypto_91007]:
E_OK: تم تنفيذ توليد المفتاح بنجاح [SWS_Crypto_91007].CRYPTO_E_BUSY: فشل الطلب لأن كائن Crypto Driver Object المسؤول مشغول حاليًا [SWS_Crypto_91007].CRYPTO_E_KEY_EMPTY: فشل التوليد لأن عنصر المفتاح المصدر المطلوب غير مهيأ [SWS_Crypto_91007].CRYPTO_E_KEY_NOT_VALID: فشلت العملية لأن حالة المفتاح للمفتاح المشار إليه بواسطةcryptoKeyIdتم تمييزها على أنها غير صالحة [SWS_Crypto_91007].E_NOT_OK: فشل طلب توليد المفتاح لأسباب أخرى [SWS_Crypto_91007].
تم إنشاء ملاحظة الاستخدام هذه بصورة آلية بناءً على مواصفة AUTOSAR Classic R20-11.
دالة Crypto_KeyDerive [SWS_Crypto_91008] 📄 PDF
Std_ReturnType Crypto_KeyDerive (uint32 cryptoKeyId, uint32 targetCryptoKeyId);
Derives a new key by using the key elements in the given key identified by the crypto Key Id. The given key contains the key elements for the password, salt. The derived key is stored in the key element with the id 1 of the key identified by target Crypto Key Id. The number of iterations is given in the key element CRYPTO_ KE_ KEYDERIVATION_ ITERATIONS.
تشتق الدالة المتزامنة Crypto_KeyDerive مفتاحًا تشفيريًا جديدًا من عناصر المفتاح لمفتاح مصدر (cryptoKeyId) وتخزنه في عنصر المفتاح ذي المعرّف 1 للمفتاح الهدف (targetCryptoKeyId) [SWS_Crypto_91008]. يجب أن يحتوي المفتاح المصدر على عناصر المفاتيح المطلوبة لكلمة المرور والملح (Salt)؛ ويتم تحديد عدد التكرارات عبر عنصر المفتاح CRYPTO_KE_KEYDERIVATION_ITERATIONS [SWS_Crypto_91008].
الاستدعاء والتزامن
تتميز واجهة التعامل بأنها قابلة لإعادة الدخول (reentrant)، ولكن لا يجوز استدعاؤها في الوقت نفسه من أجل cryptoKeyId نفسها [SWS_Crypto_91008]. ولذلك، يجب على جهات الاستدعاء التأكد من أن عمليات الاشتقاق المتوازية تعمل على مفاتيح مصدرية مختلفة.
قيم الإرجاع ومعالجة الأخطاء
تشير الدالة إلى النتيجة عبر قيم إرجاع محددة من النوع Std_ReturnType [SWS_Crypto_91008]:
E_OK: تم إجراء اشتقاق المفتاح بنجاح.E_NOT_OK: فشل الاشتقاق. إذا كان المعاملtargetCryptoKeyIdخارج النطاق الصالح، تُبلّغ الدالة بالإضافة إلى ذلكCRYPTO_E_PARAM_HANDLEإلى DET [SWS_Crypto_00180] عند تفعيل ميزة كشف التطوير.CRYPTO_E_BUSY: كائن برنامج تشغيل التشفير المعني (Crypto Driver Object) مشغول [SWS_Crypto_91008].CRYPTO_E_KEY_EMPTY: أحد عناصر المفتاح المصدري المطلوبة غير مهيأ [SWS_Crypto_91008].CRYPTO_E_KEY_NOT_VALID: حالة المفتاح المشار إليه بواسطةcryptoKeyIdغير صالحة [SWS_Crypto_91008].
تم توليد ملاحظة الاستخدام هذه تلقائياً بناءً على المواصفة.
دليل المنفِّذ قيد الإعداد (التعقيد I1)
دالة Crypto_KeyExchangeCalcPubVal [SWS_Crypto_91009] 📄 PDF
Std_ReturnType Crypto_KeyExchangeCalcPubVal (uint32 cryptoKeyId, uint8* publicValuePtr, uint32* publicValueLengthPtr);
Calculates the public value for the key exchange a nd stores the public key in the memory location pointed by the public value pointer.
الاستخدام
تحسب الدالة المتزامنة Crypto_KeyExchangeCalcPubVal القيمة العامة لبروتوكول تبادل المفاتيح وتخزنها في موضع التخزين الخاص بـ publicValuePtr ([SWS_Crypto_91009]). وتمرر جهة الاستدعاء عبر cryptoKeyId معرّف المفتاح الذي يُفترض استخدامه للبروتوكول. كما يجب عبر معامل الإدخال والإخراج publicValueLengthPtr تمرير حجم المخزن المؤقت للذاكرة المقدمة عند الاستدعاء؛ وبعد اكتمال التنفيذ، يُحفظ الطول الفعلي للقيمة العامة المحسوبة هناك ([SWS_Crypto_91009]).
معالجة الأخطاء وقيم الإرجاع
تُرجع الدالة E_OK عند التنفيذ الناجح. وفي حال حدوث خطأ، يتم إرجاع E_NOT_OK أو رمز خطأ محدد ([SWS_Crypto_91009]):
CRYPTO_E_BUSY: يفشل الطلب لأن Crypto Driver Object مشغول.CRYPTO_E_KEY_EMPTY: يفشل الطلب لأن عنصر المفتاح المصدري غير مهيأ.CRYPTO_E_KEY_NOT_VALID: يفشل الطلب لأن حالة المفتاح المشار إليه عبرcryptoKeyIdغير صالحة.
التزامن وتكامل النظام
وفقًا لـ [SWS_Crypto_91009]، تعد الدالة قابلة لإعادة الدخول (reentrant)، ولكن ليس من أجل cryptoKeyId نفسها. وإذا كان برنامج تشغيل التشفير يحتاج لأغراض داخلية مثل Crypto_KeyExchangeCalcPubVal إلى خدمات مولد أرقام عشوائية (RNG)، فيجب تهيئة Crypto Driver Object الأول (رقم الكائن 0) لهذا الغرض ([SWS_Crypto_00224]).
تم إنشاء هذا النص بواسطة ذكاء اصطناعي. تستند جميع البيانات إلى مواصفة AUTOSAR Classic R20-11.
دليل المنفِّذ قيد الإعداد (التعقيد I1)
دالة Crypto_KeyExchangeCalcSecret [SWS_Crypto_91010] 📄 PDF
Std_ReturnType Crypto_KeyExchangeCalcSecret (uint32 cryptoKeyId, const uint8* partnerPublicValuePtr, uint32 partnerPublicValueLength);
Calculates the shared secret key for the key exchange with the key material of the key identified by the crypto Key Id and the partner public key. The shared secret key is stored as a key element in the same key.
تُستخدم الدالة المتزامنة Crypto_KeyExchangeCalcSecret لحساب سر مشترك (Shared Secret Key) لبروتوكول تبادل المفاتيح [SWS_Crypto_91010]. وتعالج مادة المفتاح للمفتاح المحدد عبر cryptoKeyId جنبًا إلى جنب مع القيمة العامة للطرف المقابل الممررة عبر partnerPublicValuePtr، والتي يُحدد عدد بايتاتها عبر partnerPublicValueLength [SWS_Crypto_91010]. ويتم تخزين السر المشترك المحسوب مباشرةً كعنصر مفتاح داخل المفتاح نفسه [SWS_Crypto_91010].
كقيمة إرجاع، تقدم الدالة الحالة عبر Std_ReturnType [SWS_Crypto_91010]:
E_OK: اكتمل حساب السر وحفظه بنجاح [SWS_Crypto_91010].E_NOT_OK: فشل الطلب [SWS_Crypto_91010].CRYPTO_E_BUSY: تعذر التنفيذ لأن Crypto Driver Object المسؤول مشغول [SWS_Crypto_91010].CRYPTO_E_KEY_EMPTY: عنصر المفتاح المصدر غير مهيأ [SWS_Crypto_91010].CRYPTO_E_KEY_NOT_VALID: حالة المفتاح المشار إليه بواسطةcryptoKeyIdغير صالحة [SWS_Crypto_91010].
تم تنفيذ واجهة التعامل لتكون قابلة لإعادة الدخول (reentrant)، ولكن لا يجوز استدعاؤها على نحو متزامن تفرعي من أجل cryptoKeyId نفسها [SWS_Crypto_91010]. ولذلك، يجب على جهات الاستدعاء التأكد من تجنب الاستدعاءات المتزامنة ذات معرّف المفتاح ID المطابق، والتأكد من تهيئة مادة المفتاح المشار إليها مسبقًا وأنها في حالة صالحة لتفادي حالات الخطأ [SWS_Crypto_91010].
تم إنشاء ملاحظة الاستخدام هذه بصورة آلية بناءً على مواصفة SWS_Crypto_91010.
دالة Crypto_MainFunction [SWS_Crypto_91012] 📄 PDF
void Crypto_MainFunction (void);
If asynchronous job processing is configured and there are job queues, the function is called cyclically to process queued jobs. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_CryptoDriver
تُستخدم الدالة Crypto_MainFunction للمعالجة الدورية للمهام التشفيرية المدرجة في قوائم انتظار المهام الخاصة ببرنامج تشغيل التشفير [SWS_Crypto_91012]. والشرط الأساسي لاستخدامها هو أن تكون معالجة المهام غير المتزامنة مهيأة في الوحدة النمطية مع وجود قوائم انتظار مهام مطابقة [SWS_Crypto_91012].
الاستدعاء والدلالات
تمتلك الدالة التوقيع void Crypto_MainFunction(void) وهي محددة بمعرّف الخدمة Service-ID 0x0c [SWS_Crypto_91012]. وهي لا تقبل أي معاملات إدخال ولا تقدم أي قيمة إرجاع. ويتم توفير واجهة التعامل عبر ملف الترويسة SchM_Crypto.h [SWS_Crypto_91012]. يتيح ذلك تفسيرًا مفاده أن الاستدعاء الدوري يُطلق على نحو مخطط له بواسطة مجدول BSW (المسمى Schedule Manager) في سياق مهمة دورية تابعة لنظام التشغيل.
التزامن والقيود
يرتبط الاستدعاء ارتباطًا وثيقًا بتهيئة قوائم انتظار المهام غير المتزامنة [SWS_Crypto_91012]. وبما أن المواصفة لا تشير إلى قابلية إعادة الدخول (reentrancy) بالنسبة لـ Crypto_MainFunction، فمن المرجح وجوب معاملة الدالة على أنها غير قابلة لإعادة الدخول؛ ولذلك يجب تجنب الاستدعاءات المتوازية من عدة سلاسل عمليات (threads) أو مهام (tasks). سؤال Q-038d384305c8c5c3 (مفتوح)
معالجة الأخطاء
لا تتضمن المواصفة رموز أخطاء محددة أو مدخلات DET لهذه الدالة [SWS_Crypto_91012]. وبما أن الدالة لا توفر قيم إرجاع، فمن المفترض أن يتم تمرير أي أخطاء تحدث أثناء المعالجة غير المتزامنة إلى الطبقات العليا عبر استعلامات الحالة أو عبر قنوات الإبلاغ الخاصة بالمهام المعنية. سؤال (مفتوح)
تم توليد ملاحظة الاستخدام هذه بواسطة ذكاء اصطناعي بناءً على مواصفة AUTOSAR CP R20-11.
نوع Crypto_ConfigType [SWS_Crypto_91016] 📄 PDF
Configuration data structure of Cry If module
Request a governed re-review of this record. The record is not changed immediately.
- Record
AUTOSAR/AP/record/CP_MOD_Crypto- Status
- unspecified
- Version
AUTOSAR/AP/record/CP_MOD_Crypto@rel:R20-11#8f44fa0b- Content hash
8f44fa0b- Source
- https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_CryptoDriver.pdf#nameddest=SWS_Crypto_91000
gemini-3.8-flash-low· 2026-10-13 · الأصل الألماني