DEENESPTFRRUARHIKOZHNL

Crypto Driver (Crypto)

ModulCrypto (Crypto Driver)
BSW-Modul-ID114
Standard-Header#include "Crypto.h"
SWS-SpezifikationAUTOSAR_SWS_CryptoDriver.pdf
ClusterCrypto Services

Modul-GuideKI-GENERIERT

Bietet kryptografische Primitiven und Schlüsselverwaltung für den hardwarenahen AUTOSAR-Classic-Kryptostack.
KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 79b1b64c6bf7 Herkunft Offene Fragen (2)
Kausaler Anker: R20-11 Gültig ab R20-11 Neu synthetisiert für diesen Spezifikationsstand.
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Bietet kryptografische Primitiven und Schlüsselverwaltung für den hardwarenahen AUTOSAR-Classic-Kryptostack.

Der Crypto Driver stellt als MCAL-Modul hardwarenahe kryptografische Berechnungen sowie die Schlüsselverwaltung für den AUTOSAR-Classic-Kryptostack bereit (EXP_UtilizationOfCryptoServices S. 8). Er kapselt Hardware-Sicherheitsmodule (HSM) oder Software-Bibliotheken in Driver Objects und wickelt synchrone wie asynchrone Aufträge über die zentrale Schnittstelle Crypto_ProcessJob ab ([SWS_Crypto_91003]). Schlüsselzugriffe unterliegen konfigurierbaren Rechten, und eine dauerhafte Speicherung im NVM wird erst bei erfolgreicher Schlüsselvalidierung ausgelöst (SWS_CryptoDriver S. 37).

Der Crypto Driver (Modul Crypto) bildet als MCAL-Treiber das unterste Fundament des AUTOSAR-Classic-Kryptostacks und bindet Hardware-Sicherheitsmodule (HSM), Krypto-Beschleuniger sowie Software-Routinen direkt an die Krypto-Schnittstelle (CryIf) an (EXP_UtilizationOfCryptoServices S. 8, SWS_CryptoDriver S. 15). Bei Mehrfachimplementierungen werden Instanzen herstellerspezifisch mit dem Schema Crypto_<vi>_<ai> benannt ([SWS_Crypto_00012]). Die Initialisierung erfolgt synchron über [SWS_Crypto_91000] mit einem obligatorischen Nullzeiger für [SWS_Crypto_91016] ([SWS_Crypto_00215]). Intern kapselt das Modul eigenständige Recheneinheiten in Crypto Driver Objects, von denen jedes genau einen Auftrag gleichzeitig ausführen kann ([SWS_Crypto_00014]), während n Objekte parallele Berechnungen ermöglichen ([SWS_Crypto_00117]). Driver Object 0 fungiert dabei als zentraler Zufallsgenerator für interne Bedarfe aller weiteren Treiberobjekte derselben Instanz ([SWS_Crypto_00224], [SWS_Crypto_00225]).

diag_architektur CSM CSM CryIf CryIf CSM->CryIf Csm_Job CryptoDriver CryptoDriver CryIf->CryptoDriver Crypto_ProcessJob / Key APIs Object0 Object0 CryptoDriver->Object0 RNG Default ObjectN ObjectN CryptoDriver->ObjectN Primitive Job NvM NvM CryptoDriver->NvM NvM_WriteBlock Det DET CryptoDriver->Det Det_ReportError HW_HSM HW_HSM Object0->HW_HSM Hardware Kanal (HSM) SW_Crypto SW_Crypto ObjectN->SW_Crypto Software / Beschleuniger NvM->CryptoDriver NvBlock Callbacks

Kontextdiagramm: Einbettung des Crypto Drivers in den AUTOSAR-Kryptostack mit Driver Objects und Schnittstellen zu NvM und DET. Quellen: SWS_CryptoDriver S. 15, SWS_Crypto_00012, SWS_Crypto_91017

Kryptografische Aufträge werden über [SWS_Crypto_91003] (Crypto_ProcessJob) abgewickelt, wobei ein Modus-Bitfeld (START, UPDATE, FINISH) Streaming und Gesamtaufrufe vereinheitlicht (SWS_CryptoDriver S. 25, [SWS_Crypto_00017]). Asynchrone Aufträge werden über die zyklische Funktion [SWS_Crypto_91012] (Crypto_MainFunction) berechnet und nach Vollendung via CRYIF_CallbackNotification an CryIf gemeldet ([SWS_Crypto_00027], [SWS_Crypto_00028]). Laufende Aufträge lassen sich synchron mittels [SWS_Crypto_00122] stornieren ([SWS_Crypto_00183], [SWS_Crypto_00214]), während direkte Pufferumleitungen auf Schlüsselelemente Kopiervorgänge reduzieren ([SWS_Crypto_00203], [SWS_Crypto_00221]).

Asynchrone Auftragsverarbeitung über den Crypto DriverCryIfCrypto DriverDriver ObjectSchM / OSCrypto_ProcessJob(objectId, job)Parameter & Schlüsselhandles prüfenE_OK (Auftrag angenommen)Crypto_MainFunction()Berechnung anstoßen (START/UPDATE/FINISH)Kryptografische Berechnung ausführenErgebnis bereitstellenCRYIF_CallbackNotification(job, result)Rückkehr

Sequenzdiagramm: Asynchroner Verarbeitungsablauf über Crypto_ProcessJob, Zyklus in Crypto_MainFunction und Rückmeldung via CRYIF_CallbackNotification. Quellen: SWS_Crypto_91003, SWS_Crypto_00027, SWS_Crypto_00028, SWS_Crypto_91012

Die Schlüsselverwaltung umfasst das Setzen ([SWS_Crypto_91004]), Auslesen ([SWS_Crypto_91006]), Kopieren ([SWS_Crypto_00155], [SWS_Crypto_91015]), Generieren ([SWS_Crypto_91007]) und Ableiten ([SWS_Crypto_91008]) von Schlüsselelementen unter strikter Zugriffsrechtekontrolle ([SWS_Crypto_00219], [SWS_Crypto_00220]). Eine Persistierung im Non-Volatile RAM Manager (NvM) wird aus Konsistenzgründen niemals beim Einzelschreiben, sondern ausschließlich bei der Schlüsselvalidierung via [SWS_Crypto_91014] (Crypto_KeySetValid) angestoßen (SWS_CryptoDriver S. 37, [SWS_Crypto_91025]). In Mehrkernumgebungen agiert das Modul in jeder Partition isoliert ([SWS_Crypto_CONSTR_00001]), wobei HSM-Objekte maximal einer Partition zugeordnet werden dürfen ([SWS_Crypto_CONSTR_00003]).

Rolle und Systemgrenzen des Crypto Drivers im Classic-Kryptostack

Der Crypto Driver (Modulkürzel Crypto) ist auf der untersten Schicht der AUTOSAR-Classic-Basissoftware im Microcontroller Abstraction Layer (MCAL) angesiedelt (EXP_UtilizationOfCryptoServices S. 8). Er befindet sich direkt unterhalb der Krypto-Schnittstelle (Crypto Interface, CryIf) und bedient über diese den Crypto Service Manager (CSM) (SWS_CryptoDriver S. 15). Seine Hauptaufgabe besteht in der Kapselung der konkreten kryptografischen Rechenwerke – seien es hardwaregestützte Sicherheitsmodule (Hardware Security Modules, HSM), dedizierte Krypto-Beschleuniger wie AES-Engines oder reine Software-Bibliotheken (SWS_CryptoDriver S. 15). Neben der eigentlichen Berechnung kryptografischer Primitiven umfasst der Funktionsumfang die Speicherung, Konfiguration und Verwaltung kryptografischer Schlüssel (SWS_CryptoDriver S. 24).

In einem Steuergerät können mehrere Treiberinstanzen unterschiedlicher Hersteller parallel existieren; in diesem Fall werden Datei-, API- und Konfigurationsbezeichner durch ein herstellerspezifisches Infix nach dem Schema Crypto_<vi>_<ai> eindeutig differenziert ([SWS_Crypto_00012]). Die Initialisierung des Moduls erfolgt über die Funktion [SWS_Crypto_91000] (Crypto_Init). Als Besonderheit gilt für den Konfigurationszeiger des Typs [SWS_Crypto_91016] (Crypto_ConfigType), dass dieser stets als Nullzeiger übergeben werden muss ([SWS_Crypto_00215]). Versionsinformationen können synchron über [SWS_Crypto_91001] (Crypto_GetVersionInfo) abgefragt werden, wobei die Übergabe eines Nullzeigers bei aktiver Entwicklungserkennung mit dem Fehler CRYPTO_E_PARAM_POINTER an das DET gemeldet wird (SWS_CryptoDriver S. 56).

diag_architektur CSM CSM CryIf CryIf CSM->CryIf Csm_Job CryptoDriver CryptoDriver CryIf->CryptoDriver Crypto_ProcessJob / Key APIs Object0 Object0 CryptoDriver->Object0 RNG Default ObjectN ObjectN CryptoDriver->ObjectN Primitive Job NvM NvM CryptoDriver->NvM NvM_WriteBlock Det DET CryptoDriver->Det Det_ReportError HW_HSM HW_HSM Object0->HW_HSM Hardware Kanal (HSM) SW_Crypto SW_Crypto ObjectN->SW_Crypto Software / Beschleuniger NvM->CryptoDriver NvBlock Callbacks

Kontextdiagramm: Einbettung des Crypto Drivers in den AUTOSAR-Kryptostack mit Driver Objects und Schnittstellen zu NvM und DET. Quellen: SWS_CryptoDriver S. 15, SWS_Crypto_00012, SWS_Crypto_91017

Verwaltung von Crypto Driver Objects und Hardware-Abstraktion

Jede Instanz des Crypto Drivers gliedert sich intern in ein oder mehrere logische Treiberobjekte (Crypto Driver Objects) (SWS_CryptoDriver S. 15). Ein Crypto Driver Object bildet die funktionale Endstelle eines Krypto-Kanals und repräsentiert ein eigenständiges Hardware-Rechenwerk oder eine Software-Implementierung (SWS_CryptoDriver S. 15). Ein einzelnes Driver Object kann zu einem gegebenen Zeitpunkt prinzipbedingt immer nur genau einen Auftrag (Job) aktiv ausführen ([SWS_Crypto_00014]). Ein Crypto Driver mit n Driver Objects besitzt folglich die Kapazität, n Krypto-Aufträge parallel zu berechnen ([SWS_Crypto_00117]). Welche mathematischen und sicherheitsrelevanten Primitiven unterstützt werden, bestimmt die Leistungsfähigkeit des zugeordneten Objekts ([SWS_Crypto_00013]).

Benötigt ein Treiberobjekt interne Zufallszahlen (beispielsweise zur Berechnung öffentlicher Werte im Rahmen des Schlüsselaustauschs via [SWS_Crypto_91009]) und verfügt nicht über einen eigenen Zufallsgenerator, greift es zwingend auf das Crypto Driver Object 0 desselben Treibers zurück ([SWS_Crypto_00224], [SWS_Crypto_00225]). Treiberobjekte dürfen hierbei unter keinen Umständen Zufallsgeneratoren fremder Krypto-Treiberinstanzen adressieren ([SWS_Crypto_00226]). Interpretation: Driver Object 0 fungiert somit als zentraler interner Referenz-Zufallsgenerator für alle weiteren Treiberobjekte derselben Partition. Frage Q-4e8e30714cbc9c80 (offen)

Auftragsabwicklung zwischen synchronem Direct-Call und asynchronem Streaming

Kryptografische Verarbeitungen werden dem Modul als Job-Strukturen des Typs Crypto_JobType über die zentrale Schnittstelle [SWS_Crypto_91003] (Crypto_ProcessJob) übergeben ([SWS_Crypto_00042], AUTOSAR_CP_SWS_CryptoServiceManager S. 21). Die Schnittstelle vereint blockbasierte Gesamtaufrufe und fortlaufendes Daten-Streaming über ein modusspezifisches Bitfeld: Die Operationen START, UPDATE und FINISH können einzeln oder kombiniert übergeben werden (SWS_CryptoDriver S. 25). Das Setzen des START-Flags markiert einen neuen Auftrag und bricht alle vorhergehenden Instanzen desselben Jobs ab ([SWS_Crypto_00017]). Bei kombinierter Übergabe werden die Schritte stets in der festen Reihenfolge START, UPDATE und abschließend FINISH ausgeführt (SWS_CryptoDriver S. 25).

Ob ein Auftrag synchron oder asynchron verarbeitet wird, ist Teil der Metadatenkonfiguration in Crypto_JobType (SWS_CryptoDriver S. 26). Im asynchronen Modus nimmt [SWS_Crypto_91003] lediglich die Auftragsdaten entgegen; die eigentliche Durchführung wird durch die zyklische Hauptfunktion [SWS_Crypto_91012] (Crypto_MainFunction) angestoßen bzw. abgearbeitet ([SWS_Crypto_00027], [SWS_Crypto_91012]). Nach Abschluss der asynchronen Berechnung benachrichtigt der Crypto Driver die übergeordnete Schicht CryIf verbindlich über den Aufruf der Callback-Funktion CRYIF_CallbackNotification unter Rückgabe des Status und der Ergebniszeiger ([SWS_Crypto_00028]). Interpretation: Synchrone Aufrufe führen die Krypto-Operation dagegen blockierend im Kontext des Aufrufers durch, ohne über die Hauptfunktion entkoppelt zu werden. Frage Q-0447ed9db11aa30b (offen)

Asynchrone Auftragsverarbeitung über den Crypto DriverCryIfCrypto DriverDriver ObjectSchM / OSCrypto_ProcessJob(objectId, job)Parameter & Schlüsselhandles prüfenE_OK (Auftrag angenommen)Crypto_MainFunction()Berechnung anstoßen (START/UPDATE/FINISH)Kryptografische Berechnung ausführenErgebnis bereitstellenCRYIF_CallbackNotification(job, result)Rückkehr

Sequenzdiagramm: Asynchroner Verarbeitungsablauf über Crypto_ProcessJob, Zyklus in Crypto_MainFunction und Rückmeldung via CRYIF_CallbackNotification. Quellen: SWS_Crypto_91003, SWS_Crypto_00027, SWS_Crypto_00028, SWS_Crypto_91012

Laufende oder anstehende Krypto-Aufträge können über die Funktion [SWS_Crypto_00122] (Crypto_CancelJob) storniert werden. Befindet sich der angeforderte Job nicht in aktiver Bearbeitung durch das Treiberobjekt, wird er unmittelbar entfernt und der Aufruf liefert E_OK zurück ([SWS_Crypto_00214]). Kann die Hardware den aktiven Rechenvorgang jedoch nicht sofort unterbrechen, quittiert die API den Versuch mit CRYPTO_E_JOB_CANCELED, und der Abbruch wird beim nächsten erreichbaren Schritt vollendet ([SWS_Crypto_00183]).

Job-Abbruch über Crypto_CancelJobCryIfCrypto DriverDriver ObjectCrypto_CancelJob(objectId, job)altJob ist nicht in aktiver BearbeitungJob aus Treiberwarteschlange entfernenE_OK (Job sofort entfernt)Job aktiv & Hardware kann nicht sofort abbrechenHardware-Abbruch anfordernCRYPTO_E_JOB_CANCELED

Sequenzdiagramm: Synchroner Abbruch kryptografischer Jobs über Crypto_CancelJob mit Fallunterscheidung bei aktiver Hardwareausführung. Quellen: SWS_Crypto_00122, SWS_Crypto_00183, SWS_Crypto_00214

Zur Vermeidung unnötiger Kopiervorgänge zwischen Anwendungs- und Hardwarespeichern unterstützt der Crypto Driver eine direkte Pufferumleitung (Job Redirection): Eingangs- und Ausgangsdaten können über jobRedirectionInfoRef direkt auf interne Schlüsselelemente referenziert werden ([SWS_Crypto_00203], [SWS_Crypto_00204]). Um Datenlecks zu unterbinden, gelten hierbei strenge Rechteprüfungen: Bei Eingangs-Redirections für Ver- und Entschlüsselungsdienste muss das Schlüsselelement mindestens das Recht CRYPTO_RA_ENCRYPTED aufweisen, für reine Leseumleitungen ist mindestens CRYPTO_RA_INTERNAL_COPY gefordert ([SWS_Crypto_00221]).

Schlüsselverwaltung, Zugriffsrechte und kryptografische Schlüsseloperationen

Ein logischer Schlüssel (Key) besteht im Crypto Driver aus einem oder mehreren Schlüsselelementen (Key Elements), die das eigentliche Schlüsselmaterial, Initialisierungsvektoren (IV), Zufalls-Seeds oder SHE-Beweise (Proof) aufnehmen (SWS_CryptoDriver S. 28). Der Zugriff auf jedes einzelne Element ist streng reglementiert: Lese- und Schreibzugriffe werden anhand konfigurierter Rechtehierarchien (z. B. CRYPTO_RA_ALLOWED, CRYPTO_RA_ENCRYPTED, CRYPTO_RA_INTERNAL_COPY) überwacht, wobei ein kleinerer Enumerationswert ein höherwertiges Zugriffsrecht darstellt (SWS_CryptoDriver S. 28, [SWS_Crypto_00219]). Direkte Leseoperationen sind nur bei CRYPTO_RA_ALLOWED oder CRYPTO_RA_ENCRYPTED gestattet ([SWS_Crypto_00222]); Schreibzugriffe setzen mindestens CRYPTO_WA_ALLOWED oder CRYPTO_WA_ENCRYPTED voraus ([SWS_Crypto_00223]). Beim Kopieren muss das Quellelement mindestens CRYPTO_RA_INTERNAL_COPY besitzen und darf keine geringeren Rechte als das Zielelement aufweisen ([SWS_Crypto_00220]).

Für die direkte Manipulation von Schlüsseln und deren Elementen stellt der Crypto Driver eine Reihe synchroner APIs bereit: Das Setzen und Auslesen von Daten erfolgt über [SWS_Crypto_91004] (Crypto_KeyElementSet) bzw. [SWS_Crypto_91006] (Crypto_KeyElementGet). Vorhandene Element-Identifikatoren eines Schlüssels können über [SWS_Crypto_00160] (Crypto_KeyElementIdsGet) ermittelt werden. Vollständige Schlüssel oder einzelne Elemente werden mittels [SWS_Crypto_00155] (Crypto_KeyCopy) oder [SWS_Crypto_00148] (Crypto_KeyElementCopy) dupliziert. Für partielle Kopien existiert [SWS_Crypto_91015] (Crypto_KeyElementCopyPartial), welche präzise Längen- und Offsetprüfungen an Quell- und Zielpuffern erzwingt ([SWS_Crypto_00207], [SWS_Crypto_00208], [SWS_Crypto_00209]) und die Ziellänge dynamisch anpasst ([SWS_Crypto_00210], [SWS_Crypto_00211]).

Darüber hinaus unterstützt das Modul komplexe Schlüsseloperationen: Die Schlüsselerzeugung erfolgt über [SWS_Crypto_91007] (Crypto_KeyGenerate) auf Basis von Entropiedaten, die zuvor mittels [SWS_Crypto_91013] (Crypto_RandomSeed) initialisiert wurden. Die Ableitung neuer Schlüsselmaterialien übernimmt [SWS_Crypto_91008] (Crypto_KeyDerive). Für Diffie-Hellman-Schlüsselaustauschprotokolle stehen die Funktionen [SWS_Crypto_91009] (Crypto_KeyExchangeCalcPubVal) zur Generierung des öffentlichen Werts sowie [SWS_Crypto_91010] (Crypto_KeyExchangeCalcSecret) zur Ermittlung des gemeinsamen Geheimnisses bereit (SWS_CryptoServiceManager S. 70).

Jeder logische Schlüssel führt einen Status, der über [SWS_Crypto_91019] (Crypto_KeyGetStatus) abgefragt werden kann. Neu geschriebene Schlüssel befinden sich zunächst im Zustand invalid und werden erst nach erfolgreicher Validierung mittels [SWS_Crypto_91014] (Crypto_KeySetValid) als valid freigegeben, während [SWS_Crypto_91020] (Crypto_KeySetInvalid) den Schlüssel explizit sperrt. Hinsichtlich der Datenformate verarbeitet der Treiber asymmetrische Schlüssel nach RFC 5958 in ASN.1-PKCS#8-Kodierung ([SWS_Crypto_00184]), RSA-Schlüsselstrukturen nach RFC 8017 mit fester Algorithmus-OID 1.2.840.113549.1.1.1 ([SWS_Crypto_00185], [SWS_Crypto_00186], [SWS_Crypto_00187], [SWS_Crypto_00188]) sowie ECC-Kurvendaten (NIST, Brainpool, ED25519) in Little-Endian-Punktkoordinaten ([SWS_Crypto_00189], [SWS_Crypto_00190], [SWS_Crypto_00191], [SWS_Crypto_00192], [SWS_Crypto_00193]). Hardwarenahe SHE-Schlüssel werden im Format M1M2M3 übergeben; ihr Verifikationsnachweis M4M5 ist unmittelbar nach der Validierung temporär in Schlüsselelement 2 auslesbar ([SWS_Crypto_00255]).

diag_schluessel_lebenszyklus UNINITIALIZED UNINITIALIZED INVALID INVALID UNINITIALIZED->INVALID Crypto_Init / NVM-Ladefehler INVALID->INVALID Crypto_KeyElementSet / Crypto_KeyGenerate VALID VALID INVALID->VALID Crypto_KeySetValid (Prüfung OK) VALID->INVALID Crypto_KeySetInvalid VALID->VALID Crypto_KeyElementSet (Re-Validierung ausstehend) NVM_SYNC NVM_SYNC VALID->NVM_SYNC NVM-Schreibanforderung NVM_SYNC->VALID Persistierung erfolgreich

Zustandsdiagramm: Zustandsübergänge eines Schlüssels von der Befüllung über die Validierung bis zur Persistierung und Fehlerbehandlung. Quellen: SWS_Crypto_00198, SWS_Crypto_00242, SWS_Crypto_91014, SWS_Crypto_91019, SWS_Crypto_91020

Persistierung von Schlüsselelementen über den Non-Volatile RAM Manager

Sollen Schlüssel über Spannungszyklen hinweg nicht-flüchtig erhalten bleiben, wird der Crypto Driver an den Non-Volatile RAM Manager (NvM) angebunden (SWS_CryptoDriver S. 35, AUTOSAR_CP_SWS_CryptoDriver S. 37). Ein zentraler architektonischer Grundsatz besagt, dass Schreibvorgänge in den NvM niemals direkt beim Befüllen eines Einzelelements via Crypto_KeyElementSet angestoßen werden (SWS_CryptoDriver S. 37). Stattdessen wird die Persistierung ausschließlich durch die Statusvalidierung KEYSETVALID via [SWS_Crypto_91014] (Crypto_KeySetValid) oder einen äquivalenten Krypto-Job initiiert (SWS_CryptoDriver S. 37). Dies garantiert, dass voneinander abhängige Schlüsselelemente konsistent geprüft und in einem einzigen NvM-Schreibzugriff abgelegt werden, was Flash-Zyklen schont (SWS_CryptoDriver S. 37).

Das Zusammenspiel mit dem NvM erfolgt über dedizierte Callback-Schnittstellen: Während des Steuergeräte-Hochlaufs stellt der NvM über [SWS_Crypto_91023] (Crypto_<vi>_<ai>_NvBlock_Init_<NvBlock>) den Initialisierungsblock bereit. Das Laden persistierter Daten aus dem RAM-Spiegel des NvM erfolgt über [SWS_Crypto_91024] (Crypto_<vi>_<ai>_NvBlock_ReadFrom_<NvBlock>). Vor dem Schreiben ruft der NvM [SWS_Crypto_91025] (Crypto_<vi>_<ai>_NvBlock_WriteTo_<NvBlock>) auf, damit der Krypto-Treiber seine internen Schlüsseldaten in den NvM-Puffer kopiert; der Abschluss des asynchronen Blocktransfers wird über [SWS_Crypto_91026] (Crypto_<vi>_<ai>_NvBlock_Callback_<NvBlock>) gemeldet. Zur Steuerung nutzt der Treiber die NvM-Dienste NvM_SetRamBlockStatus und NvM_WriteBlock ([SWS_Crypto_91017]). Schlägt das Laden eines persistenten Schlüssels beim Start fehl, markiert der Treiber diesen Schlüssel verbindlich als invalid ([SWS_Crypto_00198]).

Persistierung von Schlüsseln im NVM bei ValidierungCryIf / ApplikationCrypto DriverNvMCrypto_KeySetValid(cryptoKeyId)Konsistenz & Abhängigkeiten der Elemente prüfenNvM_WriteBlock(BlockId, NvM_Buffer)Crypto_<vi>_<ai>_NvBlock_WriteTo_<NvBlock>(NvmBuffer)Schlüsseldaten in NvM-RAM-Spiegel übertragenE_OKCrypto_<vi>_<ai>_NvBlock_Callback_<NvBlock>(BlockRequest, JobResult)Schlüsselstatus auf VALID setzenE_OKE_OK

Sequenzdiagramm: Persistierung von Schlüsselelementen in das NVM bei Validierung über NvM_WriteBlock und treiberspezifische Callbacks. Quellen: SWS_Crypto_00242, SWS_Crypto_91017, SWS_Crypto_91025, SWS_Crypto_91026

Partitionierung und Mehrkern-Betriebsregeln

Um Krypto-Operationen auf Mehrkernsystemen effizient aufzuteilen, kann der Krypto-Stack auf mehrere Software-Partitionen verteilt werden (BSWDistributionGuide S. 59). Das Modul Crypto arbeitet in jeder Partition als vollständig eigenständige Instanz: Jeder API-Aufruf verarbeitet Daten ausschließlich innerhalb der Partition, in der er abgesetzt wurde ([SWS_Crypto_CONSTR_00001]). Die Partitionierung der Treiberobjekte unterliegt festen Konfigurationsregeln: Die durch CryptoDriverObjectEcucPartitionRef referenzierten Partitionen müssen zwingend eine echte Teilmenge der dem Modul zugewiesenen Partitionen (CryptoEcucPartitionRef) bilden ([SWS_Crypto_CONSTR_00002]). Ist ein Crypto Driver Object an ein Hardware-Sicherheitsmodul (HSM) gekoppelt, darf es aus Gründen der Hardwareisolation genau 0 oder 1 Partition zugeordnet werden ([SWS_Crypto_CONSTR_00003]).

Verhalten im Fehlerfall

Der Crypto Driver implementiert eine zweistufige Fehlerüberwachung aus Entwicklungserkennung (Development Errors) und Laufzeitfehlern (Runtime Errors). Bei aktiviertem Entwicklungssicherheitsmodus (DET) werden formale Schnittstellenverletzungen an Det_ReportError übermittelt ([SWS_Crypto_91017]). Hierzu zählen Aufrufe vor der Treiberinitialisierung (CRYPTO_E_UNINIT, 0x00) ([SWS_Crypto_00040], [SWS_Crypto_00196], [SWS_Crypto_00205]), ungültige Initialisierungsdaten (CRYPTO_E_INIT_FAILED, 0x01) sowie unzulässige Nullzeiger (CRYPTO_E_PARAM_POINTER, 0x02) ([SWS_Crypto_00040]). Liegen Schlüsselidentifikatoren oder Zielschlüssel-Handles außerhalb des zulässigen Wertebereichs, bricht der Treiber den Aufruf mit E_NOT_OK ab und meldet CRYPTO_E_PARAM_HANDLE (0x04) ([SWS_Crypto_00040], [SWS_Crypto_00180], [SWS_Crypto_00197], [SWS_Crypto_00202], [SWS_Crypto_00217]).

Reichen die übergebenen Ein- oder Ausgangspuffer für eine Operation nicht aus, wird die Ausführung verweigert und bei aktivem DET der Fehler CRYPTO_E_SMALL_BUFFER gemeldet ([SWS_Crypto_00195], SWS_CryptoDriver S. 49). Eine normative Ausnahme gilt für die Dienste CRYPTO_HASH und CRYPTO_MACGENERATE: Ist der Ausgabepuffer hier kleiner als die native Hash- bzw. MAC-Länge, wird das Ergebnis nicht verworfen, sondern trunkiert in Form der höchstwertigen Bits (MSB) in den Puffer geschrieben ([SWS_Crypto_00065]). Im operativen Betrieb meldet der Treiber spezifische Laufzeitfehler über den Rückgabewert: Ein Erschöpfen der Zufallsentropie quittiert [SWS_Crypto_91003] mit dem Returncode CRYPTO_E_ENTROPY_EXHAUSTED und meldet den Laufzeitfehler CRYPTO_E_RE_ENTROPY_EXHAUSTED (0x03) ([SWS_Crypto_00141], [SWS_Crypto_00194], [SWS_Crypto_91018]). Schlagen Lese- oder Schreibzugriffe auf das NVM fehl, wird CRYPTO_E_RE_NVM_ACCESS_FAILED (0x04) signalisiert ([SWS_Crypto_00194]). Weitere standardisierte API-Rückgabewerte sind CRYPTO_E_BUSY, CRYPTO_E_KEY_READ_FAIL, CRYPTO_E_KEY_WRITE_FAIL, CRYPTO_E_KEY_NOT_AVAILABLE, CRYPTO_E_KEY_NOT_VALID, CRYPTO_E_KEY_SIZE_MISMATCH und CRYPTO_E_KEY_EMPTY ([SWS_Crypto_00155], [SWS_Crypto_00207], [SWS_Crypto_91018]).

Weiterführende Detailbelege

Die wesentlichen Eigenschaften des Crypto Drivers stützen sich auf folgende funktionale Spezifikationsvorgaben und Architekturstellen:

ThemenbereichWesentliche SpezifikationselementeDokumentbezug
Modulrahmen & Instanziierung[SWS_Crypto_00012], [SWS_Crypto_91000], [SWS_Crypto_91016], [SWS_Crypto_00215]SWS_CryptoDriver S. 15
Auftragsabwicklung & Cancellation[SWS_Crypto_91003], [SWS_Crypto_00017], [SWS_Crypto_00027], [SWS_Crypto_00122], [SWS_Crypto_00183]SWS_CryptoDriver S. 25
Schlüssel- & Rechteverwaltung[SWS_Crypto_91004], [SWS_Crypto_91006], [SWS_Crypto_00219], [SWS_Crypto_00220], [SWS_Crypto_91014]SWS_CryptoDriver S. 28
Krypto-Operationen & Austausch[SWS_Crypto_91007], [SWS_Crypto_91008], [SWS_Crypto_91009], [SWS_Crypto_91010]SWS_CryptoServiceManager S. 70
NvM-Persistierung & Callbacks[SWS_Crypto_91023], [SWS_Crypto_91024], [SWS_Crypto_91025], [SWS_Crypto_91026]SWS_CryptoDriver S. 37
Mehrkern & Partitionierung[SWS_Crypto_CONSTR_00001], [SWS_Crypto_CONSTR_00002], [SWS_Crypto_CONSTR_00003]BSWDistributionGuide S. 59

Dieser Leitfaden basiert ausschließlich auf den normativen Festlegungen der Spezifikation AUTOSAR Classic R20-11.

Crypto Driver (Crypto)

Low-level driver executing cryptographic primitives on hardware security modules (HSM) or software libraries.

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

function Crypto_Init [SWS_Crypto_91000] 📄 PDF

void Crypto_Init (const Crypto_ConfigType* configPtr);

Initializes the Crypto Driver.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 4040b6dde00b Herkunft Offene Fragen (2)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die Funktion Crypto_Init dient der Initialisierung des Crypto Drivers gemäß [SWS_Crypto_91000]. Die Schnittstelle ist im Header Crypto.h deklariert und besitzt die Service-ID 0x00 [SWS_Crypto_91000].

Für den Aufruf und die Schnittstellenparameter sind folgende Eigenschaften spezifiziert:

  • Konfigurationszeiger: Über den Eingangsparameter configPtr vom Typ const Crypto_ConfigType* wird ein Zeiger auf die ausgewählte Konfigurationsstruktur übergeben [SWS_Crypto_91000].
  • Rückgabewert: Die Funktion besitzt keinen Rückgabewert (void); es existieren weder Ein-/Ausgabeparameter noch separate Ausgabeparameter [SWS_Crypto_91000].
  • Ausführungsverhalten: Die Initialisierungsroutine wird synchron ausgeführt (Synchronous) [SWS_Crypto_91000].
  • Reentranz: Die Funktion ist als nicht reentrant (Non Reentrant) definiert [SWS_Crypto_91000]. Parallele oder überlappende Aufrufe sind unzulässig.

Aufgrund der Einstufung als nicht reentrant und da die Spezifikation keine spezifischen Fehlercodes zurückgibt, dürfte der Aufruf typischerweise zentral während der Startphase des Steuergeräts vor allen anderen Treiberzugriffen erfolgen (Interpretation). Frage Q-008bb5a45b823891 (offen) Der Aufrufer dürfte zudem dafür zuständig sein, dass die referenzierte Konfigurationsstruktur im Speicher dauerhaft gültig bleibt (Interpretation). Frage Q-6271a86fad440121 (offen)

Dieser Nutzungshinweis wurde von einer KI auf Basis der Spezifikation AUTOSAR CP R20-11 generiert.

Implementer's Guide folgt (Komplexität I1)

function Crypto_ProcessJob [SWS_Crypto_91003] 📄 PDF

Std_ReturnType Crypto_ProcessJob (uint32 objectId, Crypto_JobType* job);

Service Crypto_ProcessJob.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 58fc9052e1fa Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die Funktion Crypto_ProcessJob führt das im Parameter job konfigurierte kryptografische Primitiv auf dem durch objectId referenzierten Crypto Driver Object aus [SWS_Crypto_91003]. Der Aufruf ist reentrant und arbeitet abhängig von der Job-Konfiguration synchron oder asynchron [SWS_Crypto_91003]. Über den Zeiger auf Crypto_JobType werden sowohl Konfigurationsdaten für das Primitiv als auch Puffer für die Ergebnisdaten übergeben [SWS_Crypto_91003].

Vor der eigentlichen Ausführung eines Jobs prüft der Treiber die Schlüsselbezeichner auf Gültigkeit: Liegen job->cryptoKeyId oder gegebenenfalls job->targetCryptoKeyId außerhalb des zulässigen Bereichs, meldet die Funktion den Fehler CRYPTO_E_PARAM_HANDLE an das DET und gibt E_NOT_OK zurück [SWS_Crypto_00217]. Dies gilt auch für den Dienst CRYPTO_KEYDERIVE (job->jobPrimitiveInfo->primitiveInfo->service), sofern job->targetCryptoKeyId ungültig ist [SWS_Crypto_00202].

Neben E_OK und E_NOT_OK signalisieren spezifische Fehlercodes das Scheitern der Anforderung [SWS_Crypto_91003]:

  • CRYPTO_E_BUSY, wenn das Treiber-Objekt belegt oder dessen Warteschlange voll ist [SWS_Crypto_91003],
  • schlüsselbezogene Fehler wie 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 oder CRYPTO_E_KEY_EMPTY [SWS_Crypto_91003],
  • CRYPTO_E_JOB_CANCELED bei Abbruch eines synchronen Jobs [SWS_Crypto_91003] sowie
  • CRYPTO_E_ENTROPY_EXHAUSTED bei unzureichender Entropie eines Zufallsgenerators; hierbei meldet die Funktion zusätzlich den Laufzeitfehler CRYPTO_E_RE_ENTROPY_EXHAUSTED [SWS_Crypto_00141], [SWS_Crypto_91003].

Dieser Text wurde von einer KI basierend auf AUTOSAR R20-11 Spezifikationsdaten erstellt.

Implementer's Guide folgt (Komplexität I1)

function 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.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 53c6dc327c97 Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Verwendung

Die synchrone Funktion Crypto_CancelJob entfernt einen übergebenen Job aus der Warteschlange und bricht dessen Verarbeitung nach Möglichkeit ab [SWS_Crypto_00122]. Beim Aufruf werden der Bezeichner des Crypto Driver Objects (objectId) sowie ein Zeiger auf die Jobkonfiguration (job) übergeben [SWS_Crypto_00122].

Die Rückgabewerte signalisieren das Ergebnis des Abbruchversuchs:

  • E_OK: Die Anforderung war erfolgreich und der Job wurde entfernt [SWS_Crypto_00122]. Liegt kein Fehler im Treiber vor und wird der Job derzeit nicht verarbeitet, liefert der Dienst ebenfalls E_OK ohne weitere Aktionen zurück [SWS_Crypto_00214].
  • E_NOT_OK: Die Anforderung ist fehlgeschlagen, da der Job nicht entfernt werden konnte [SWS_Crypto_00122].
  • CRYPTO_E_JOB_CANCELED: Der Job wurde abgebrochen, wird jedoch weiter ausgeführt; es werden keine Ergebnisse an die Anwendung zurückgemeldet [SWS_Crypto_00122]. Dies gilt, wenn der Treiber fehlerfrei arbeitet, den Job jedoch (beispielsweise aufgrund von Hardware-Einschränkungen) nicht abbrechen kann [SWS_Crypto_00183].

Nebenläufigkeit und Einschränkungen

Die Schnittstelle ist reentrant für unterschiedliche Instanzen, darf jedoch nicht zeitgleich für dasselbe Crypto Driver Object aufgerufen werden [SWS_Crypto_00122].

Dieser Nutzungshinweis wurde automatisch erstellt und basiert ausschließlich auf den Spezifikationsdaten von AUTOSAR R20-11.

Implementer's Guide folgt (Komplexität I1)

function 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.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: c644721999af Herkunft Offene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die synchrone Funktion Crypto_KeyElementSet dient dazu, die Rohdaten eines bestimmten Schlüsselelements für einen über cryptoKeyId identifizierten Schlüssel im Krypto-Treiber zu setzen [SWS_Crypto_91004].

Parameter und Rückgabewerte

Über keyElementId wird das Ziel-Schlüsselelement adressiert, während keyPtr auf den Datenpuffer und keyLength auf dessen Bytegröße verweist [SWS_Crypto_91004]. Bei erfolgreicher Zuweisung gibt die Schnittstelle E_OK zurück [SWS_Crypto_91004].

Fehlerbehandlung

Tritt bei der Verarbeitung ein Fehler auf, liefert die Funktion spezifische Rückgabewerte [SWS_Crypto_91004]:

  • CRYPTO_E_BUSY: Das zugehörige Crypto-Driver-Objekt ist belegt.
  • CRYPTO_E_KEY_WRITE_FAIL: Der Schreibzugriff auf das Schlüsselelement wurde verweigert.
  • CRYPTO_E_KEY_NOT_AVAILABLE: Das angeforderte Schlüsselelement oder der Schlüssel ist nicht verfügbar.
  • CRYPTO_E_KEY_SIZE_MISMATCH: Die übergebene Datenlänge stimmt nicht mit der Größe des Schlüsselelements überein.
  • E_NOT_OK: Die Anfrage ist aus sonstigen Gründen fehlgeschlagen.

Nebenläufigkeit

Die Funktion ist als nicht reentrant (Non Reentrant) spezifiziert [SWS_Crypto_91004]. Interpretation: Aufrufer dürften dafür zuständig sein, parallele Aufrufe gegeneinander zu synchronisieren, um Dateninkonsistenzen im Treiber zu verhindern. Frage Q-d7ef7a774052a212 (offen)

Dieser Nutzungshinweis wurde automatisiert auf Basis der Spezifikation SWS_Crypto_91004 (R20-11) erstellt.

Implementer's Guide folgt (Komplexität I1)

function 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.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 234814436706 Herkunft Offene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die synchrone Funktion Crypto_KeySetValid dient dazu, den Zustand eines über die Kennung cryptoKeyId spezifizierten Schlüssels auf gültig zu setzen ([SWS_Crypto_91014]). Die Schnittstelle ist über die Header-Datei Crypto.h verfügbar und besitzt die Service-ID 0x05 ([SWS_Crypto_91014]).

Bei der Verwendung sind folgende Parameter und Rückgabewerte definiert ([SWS_Crypto_91014]):

  • Eingabeparameter: Über cryptoKeyId (Typ uint32) wird die Kennung des Schlüssels übergeben, dessen Zustand auf gültig gesetzt werden soll ([SWS_Crypto_91014]). Zusätzliche Ein- oder Ausgabeparameter existieren nicht ([SWS_Crypto_91014]).
  • Rückgabewert: Ein Statuscode vom Typ Std_ReturnType informiert über das Resultat der Anforderung ([SWS_Crypto_91014]):

Hinsichtlich der Nebenläufigkeit ist die Funktion als nicht reentrant („Non Reentrant“) spezifiziert ([SWS_Crypto_91014]). Interpretation: Aufrufer dürften parallele Aufrufe über Tasks hinweg extern koordinieren müssen, um Konflikte zu vermeiden, und sollten bei Erhalt von CRYPTO_E_BUSY eine Wiederholung des Aufrufs zu einem späteren Zeitpunkt vorsehen. Frage Q-32d775a9e61e5731 (offen)

Dieser Text wurde von einer KI erstellt und basiert auf dem Spezifikationsstand AUTOSAR R20-11.

Implementer's Guide folgt (Komplexität I1)

function 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.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: f9c09a4552e9 Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

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.

Implementer's Guide folgt (Komplexität I1)

function 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

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: c68d666a4fd9 Herkunft Offene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die synchrone und reentrante Funktion Crypto_KeyElementGet dient dazu, ein durch keyElementId identifiziertes Schlüsselelement aus dem Schlüssel cryptoKeyId auszulesen und im Speicherbereich resultPtr abzulegen [SWS_Crypto_91006]. Die Schnittstelle wird über den Header Crypto.h bereitgestellt und besitzt die Service-ID 0x06 [SWS_Crypto_91006]. Beim Aufruf übergibt der Aufrufer über den In-Out-Parameter resultLengthPtr die Puffergröße oder bei konfiguriertem Teilzugriff die gewünschte Lesegröße; nach Abschluss der Ausführung hinterlegt der Treiber dort die tatsächlich kopierte Datenmenge [SWS_Crypto_91006].

Im Erfolgsfall liefert die Funktion E_OK zurück [SWS_Crypto_91006]. Schlägt die Operation fehl, signalisiert sie dies über spezifische Fehlercodes: CRYPTO_E_BUSY bei belegtem Crypto-Treiberobjekt, CRYPTO_E_KEY_NOT_AVAILABLE falls das Schlüsselelement nicht verfügbar ist, CRYPTO_E_KEY_READ_FAIL bei verweigertem Lesezugriff, CRYPTO_E_KEY_EMPTY bei einem uninitialisierten Quellelement sowie generisch E_NOT_OK [SWS_Crypto_91006].

Obwohl die Schnittstelle als reentrant spezifiziert ist, weist die Spezifikation darauf hin, dass bei direktem Mapping des Schlüsselelements in den Flash-Speicher spürbare Latenzen während der synchronen Ausführung auftreten können [SWS_Crypto_91006]. Interpretation: Aufgrund dieser potenziellen Verzögerungen dürfte der Aufruf primär im Task-Kontext und nicht innerhalb zeitkritischer Interrupt-Service-Routinen zweckmäßig sein. Frage Q-ff4e2843b9aad46d (offen)

Dieser Nutzungshinweis wurde automatisiert generiert und basiert auf dem Spezifikationsstand von AUTOSAR Classic R20-11.

Implementer's Guide folgt (Komplexität I1)

function 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.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 4f6e929a170d Herkunft Offene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die synchrone Funktion Crypto_KeyGetStatus dient dem Abfragen des aktuellen Zustands eines spezifischen Schlüssels innerhalb des Crypto-Treibers [SWS_Crypto_91019]. Sie wird über den Header Crypto.h bereitgestellt und führt die Service-ID 0x14 [SWS_Crypto_91019].

Verwendung und Parameter

Der Aufruf erfolgt synchron und erwartet zwei Parameter [SWS_Crypto_91019]:

  • cryptoKeyId: Der Bezeichner des Schlüssels, dessen Status ermittelt werden soll.
  • keyStatusPtr: Zeiger auf den Speicherbereich vom Typ Crypto_KeyStatusType, an den der Zustand zurückgegeben wird.

Als Rückgabewert liefert die Schnittstelle Std_ReturnType zurück. Bei erfolgreicher Durchführung wird E_OK gemeldet, während im Fehlerfall E_NOT_OK zurückgegeben wird [SWS_Crypto_91019].

Nebenläufigkeit und Einschränkungen

Die Funktion ist als nicht reentrant (Non Reentrant) deklariert [SWS_Crypto_91019]. Aufrufer müssen daher sicherstellen, dass nebenläufige Aufrufe durch übergeordnete Synchronisationsmechanismen vermieden werden. Spezifische DET-Fehlermeldungen sind nicht aufgeführt; vermutlich führt ein fehlerhafter Aufruf wie ein ungültiger Zeiger oder eine ungültige ID direkt zur Rückgabe von E_NOT_OK [SWS_Crypto_91019]. Frage Q-5703fab02905e91a (offen)

Dieser Text wurde durch eine KI erstellt und basiert auf der Spezifikation von AUTOSAR R20-11.

Implementer's Guide folgt (Komplexität I1)

function Crypto_KeyElementCopy [SWS_Crypto_00148] 📄 PDF

Std_ReturnType Crypto_KeyElementCopy (uint32 cryptoKeyId, uint32 keyElementId, uint32 targetCryptoKeyId, uint32 targetKeyElementId);

Service Crypto_KeyElementCopy.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 0bf976054e55 Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die synchrone Funktion Crypto_KeyElementCopy dient dem Kopieren eines Schlüsselelements auf ein anderes Schlüsselelement innerhalb desselben Crypto-Treibers [SWS_Crypto_00148]. Übergeben werden die Identifikatoren des Quellschlüssels (cryptoKeyId) und des Quell-Schlüsselelements (keyElementId) sowie des Zielschlüssels (targetCryptoKeyId) und des Ziel-Schlüsselelements (targetKeyElementId) [SWS_Crypto_00148].

Hinsichtlich des Zeitverhaltens ist zu beachten, dass es bei direkt im Flash-Speicher abgebildeten Schlüsselelementen aufgrund der synchronen Ausführung zu größeren Verzögerungen beim Funktionsaufruf kommen kann [SWS_Crypto_00148]. Das Laufzeitverhalten ist daher insbesondere in zeitkritischen Kontexten zu berücksichtigen.

Die Funktion ist reentrant ausgelegt, jedoch explizit nicht für dieselbe cryptoKeyId [SWS_Crypto_00148]. Gleichzeitige Aufrufe mit identischem Quellschlüssel sind folglich vom Aufrufer zu synchronisieren oder auszuschließen.

Im Erfolgsfall gibt die Funktion E_OK zurück [SWS_Crypto_00148]. Bei Fehlern signalisiert der Rückgabewert die spezifische Ursache [SWS_Crypto_00148]:

  • CRYPTO_E_BUSY: Das Crypto-Treiber-Objekt ist belegt [SWS_Crypto_00148].
  • CRYPTO_E_KEY_NOT_AVAILABLE: Das angeforderte Schlüsselelement mindestens eines Schlüssels ist nicht verfügbar [SWS_Crypto_00148].
  • CRYPTO_E_KEY_READ_FAIL oder CRYPTO_E_KEY_WRITE_FAIL: Das Auslesen des Quell- bzw. Schreiben des Zielelements ist nicht gestattet [SWS_Crypto_00148].
  • CRYPTO_E_KEY_SIZE_MISMATCH: Die Größen der Schlüsselelemente sind nicht zueinander kompatibel [SWS_Crypto_00148].
  • CRYPTO_E_KEY_EMPTY: Das Quell-Schlüsselelement ist nicht initialisiert [SWS_Crypto_00148].
  • E_NOT_OK: Die Anfrage ist allgemein fehlgeschlagen [SWS_Crypto_00148].

Dieser Nutzungshinweis wurde automatisiert auf Basis der Spezifikation von AUTOSAR Classic R20-11 generiert.

Implementer's Guide folgt (Komplexität I1)

function 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.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: a5ad7cce8b26 Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die synchrone Funktion Crypto_KeyElementCopyPartial dient dem partiellen Kopieren von Daten aus einem Quell-Schlüsselelement in ein Ziel-Schlüsselelement innerhalb desselben Krypto-Treibers [SWS_Crypto_91015]. Über die Parameter keyElementSourceOffset und keyElementCopyLength wird der zu kopierende Ausschnitt des Quell-Elements (cryptoKeyId, keyElementId) festgelegt, während keyElementTargetOffset die Startposition im Ziel-Element (targetCryptoKeyId, targetKeyElementId) bestimmt. Bei fehlerfreier Prüfung führt der Treiber den Kopiervorgang synchron durch und gibt E_OK zurück [SWS_Crypto_00209].

Vor der Durchführung validiert der Treiber die Puffer- und Treiberzustände:

  • Ist der Krypto-Treiber nicht initialisiert und die Entwicklungskontrolle aktiviert, meldet die Funktion CRYPTO_E_UNINIT an das DET und liefert E_NOT_OK [SWS_Crypto_00205].
  • Ist die Gesamtlänge des Quell-Schlüsselelements kleiner als keyElementSourceOffset + keyElementCopyLength, schlägt der Aufruf mit CRYPTO_E_KEY_SIZE_MISMATCH fehl [SWS_Crypto_00207].
  • Bietet der maximale Puffer des Ziel-Schlüsselelements weniger Platz als keyElementTargetOffset + keyElementCopyLength, wird ebenfalls CRYPTO_E_KEY_SIZE_MISMATCH gemeldet [SWS_Crypto_00208].
  • Weitere spezifizierte Fehlerwerte sind unter anderem CRYPTO_E_BUSY (Treiberobjekt belegt), CRYPTO_E_KEY_EMPTY (uninitialisiertes Quell-Element), CRYPTO_E_KEY_NOT_AVAILABLE sowie Lese- oder Schreibzugriffsfehler (CRYPTO_E_KEY_READ_FAIL, CRYPTO_E_KEY_WRITE_FAIL) [SWS_Crypto_91015].

Die Funktion ist reentrant, darf jedoch nicht zeitgleich für dieselbe Schlüssel-ID cryptoKeyId aufgerufen werden [SWS_Crypto_91015]. Ist ein Schlüsselelement direkt im Flash-Speicher abgelegt, kann die synchrone Ausführung zu spürbaren Zeitverzögerungen führen [SWS_Crypto_91015].

Dieser Nutzungshinweis wurde automatisiert auf Basis der AUTOSAR-Spezifikation R20-11 generiert.

Implementer's Guide folgt (Komplexität I2)

function 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)

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 4fed74be6625 Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

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.

function 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.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 73fbfa8804b7 Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die synchrone Funktion Crypto_KeyElementIdsGet dient dazu, Informationen darüber abzufragen, welche Schlüsselelemente in einem gegebenen Schlüssel verfügbar sind [SWS_Crypto_00160]. Über den Eingabeparameter cryptoKeyId wird die Kennung des Schlüssels übergeben, dessen verfügbare Element-IDs exportiert werden sollen [SWS_Crypto_00160]. Die ermittelten Identifikatoren werden in dem durch den Zeiger keyElementIdsPtr referenzierten Array abgelegt [SWS_Crypto_00160].

Die Verwaltung der Puffergröße erfolgt über den Ein- und Ausgangsparameter keyElementIdsLengthPtr: Beim Aufruf muss dieser Parameter die bereitgestellte Größe des Puffers keyElementIdsPtr enthalten [SWS_Crypto_00160]. Nach Beendigung der Operation wird dort die tatsächliche Anzahl der vorhandenen Schlüsselelemente hinterlegt [SWS_Crypto_00160].

Als Rückgabewert liefert der Dienst E_OK bei erfolgreicher Abfrage oder E_NOT_OK, falls die Anfrage fehlgeschlagen ist [SWS_Crypto_00160]. Ist das zuständige Krypto-Treiber-Objekt zum Aufrufzeitpunkt beschäftigt, wird der Fehlercode CRYPTO_E_BUSY zurückgegeben [SWS_Crypto_00160].

Hinsichtlich der Nebenläufigkeit ist die Funktion reentrant, darf jedoch nicht zeitgleich für dieselbe cryptoKeyId aufgerufen werden [SWS_Crypto_00160]. Die Deklaration ist über den Header Crypto.h verfügbar [SWS_Crypto_00160].

Dieser Text wurde von einer KI auf Basis der AUTOSAR-Spezifikation generiert.

Implementer's Guide folgt (Komplexität I1)

function 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

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 7ee33749b38a Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die synchrone Funktion Crypto_RandomSeed (Service-ID 0x0d) dient gemäß [SWS_Crypto_91013] der Erzeugung sowie der Aktualisierung des internen Seed-Zustands eines Schlüssels unter Nutzung einer bereitgestellten Entropiequelle. Die Funktionsdeklaration ist in der Header-Datei Crypto.h enthalten.

Verwendung und Aufrufparameter

Neben der initialen Generierung kann die Funktion laut [SWS_Crypto_91013] auch genutzt werden, um den Seed-Zustand mit neuer Entropie zu aktualisieren. Der synchrone Aufruf erfordert dabei drei Eingangsparameter:

  • cryptoKeyId: Übergibt den Identifikator des Schlüssels, für den ein neuer Seed erzeugt werden soll.
  • seedPtr: Hält einen Zeiger auf den Speicherbereich mit den Daten zur Speisung des Seeds.
  • seedLength: Definiert die Länge der übergebenen Seed-Daten in Bytes.

Rückgabewerte und Fehlerbehandlung

Als Rückgabewert meldet Crypto_RandomSeed einen Status vom Typ Std_ReturnType nach [SWS_Crypto_91013]:

  • E_OK: Die Anfrage wurde erfolgreich ausgeführt.
  • E_NOT_OK: Die Anfrage ist fehlgeschlagen.
  • CRYPTO_E_KEY_NOT_VALID: Die Ausführung schlägt fehl, da sich der Schlüsselzustand des durch cryptoKeyId identifizierten Schlüssels im Status „invalid“ befindet.

Nebenläufigkeit und Einschränkungen

Gemäß [SWS_Crypto_91013] ist die Funktion als reentrant spezifiziert, jedoch ausdrücklich nicht für dieselbe cryptoKeyId. Parallele Aufrufe für denselben Schlüssel müssen daher auf Aufruferseite verhindert werden.

Dieser Text wurde von einer KI generiert und basiert ausschließlich auf den Spezifikationsdaten aus dem Payload.

Implementer's Guide folgt (Komplexität I1)

function 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.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 9465afa4791c Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Verwendung

Die über die Header-Datei Crypto.h bereitgestellte Funktion Crypto_KeyGenerate erzeugt neues Schlüsselmaterial und aktualisiert den Schlüssel, der über die Kennung cryptoKeyId adressiert wird [SWS_Crypto_91007]. Die Funktion arbeitet vollständig synchron und ist unter der Service-ID 0x07 definiert [SWS_Crypto_91007]. Weitere Parameter existieren neben dem Schlüsselbezeichner nicht [SWS_Crypto_91007].

Nebenläufigkeit und Einschränkungen

In Bezug auf die Nebenläufigkeit ist Crypto_KeyGenerate als reentrant spezifiziert, jedoch ausdrücklich mit der Einschränkung, dass dies nicht für dieselbe cryptoKeyId gilt [SWS_Crypto_91007]. Werden mehrere Anforderungen für denselben Schlüssel gestellt, müssen diese aufruferseitig synchronisiert werden, um Treiberkonflikte zu vermeiden.

Rückgabewerte und Fehlerbehandlung

Über den Rückgabewert vom Basistyp Std_ReturnType erhält der Aufrufer detaillierte Rückmeldung über Erfolg oder spezifische Fehlerursachen der Operation [SWS_Crypto_91007]:

  • E_OK: Die Schlüsselerzeugung wurde erfolgreich ausgeführt [SWS_Crypto_91007].
  • CRYPTO_E_BUSY: Die Anfrage schlug fehl, da das zuständige Crypto Driver Object derzeit belegt ist [SWS_Crypto_91007].
  • CRYPTO_E_KEY_EMPTY: Die Erzeugung schlug fehl, weil ein erforderliches Quellschlüsselelement uninitialisiert ist [SWS_Crypto_91007].
  • CRYPTO_E_KEY_NOT_VALID: Die Operation scheiterte, da der Schlüsselzustand des durch cryptoKeyId referenzierten Schlüssels als ungültig markiert ist [SWS_Crypto_91007].
  • E_NOT_OK: Die Anfrage zur Schlüsselerzeugung ist aus sonstigen Gründen fehlgeschlagen [SWS_Crypto_91007].

Dieser Nutzungshinweis wurde automatisiert auf Basis der Spezifikation von AUTOSAR Classic R20-11 generiert.

function 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.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 5847568b736a Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die synchrone Funktion Crypto_KeyDerive leitet aus den Schlüsselelementen eines Quellschlüssels (cryptoKeyId) einen neuen kryptografischen Schlüssel ab und speichert diesen im Schlüsselelement mit der ID 1 des Zielschlüssels (targetCryptoKeyId) [SWS_Crypto_91008]. Der Quellschlüssel muss die erforderlichen Schlüsselelemente für Passwort und Salt enthalten; die Anzahl der Iterationen wird über das Schlüsselelement CRYPTO_KE_KEYDERIVATION_ITERATIONS vorgegeben [SWS_Crypto_91008].

Aufruf und Nebenläufigkeit

Die Schnittstelle ist reentrant, darf jedoch nicht zeitgleich für dieselbe cryptoKeyId aufgerufen werden [SWS_Crypto_91008]. Aufrufer müssen daher sicherstellen, dass parallele Ableitungsvorgänge auf unterschiedlichen Quellschlüsseln operieren.

Rückgabewerte und Fehlerbehandlung

Die Funktion signalisiert das Ergebnis über definierte Rückgabewerte vom Typ Std_ReturnType [SWS_Crypto_91008]:

  • E_OK: Schlüsselableitung erfolgreich durchgeführt.
  • E_NOT_OK: Ableitung fehlgeschlagen. Liegt der Parameter targetCryptoKeyId außerhalb des gültigen Bereichs, meldet die Funktion bei aktivierter Entwicklungserkennung zudem CRYPTO_E_PARAM_HANDLE an das DET [SWS_Crypto_00180].
  • CRYPTO_E_BUSY: Das zuständige Crypto Driver Object ist belegt [SWS_Crypto_91008].
  • CRYPTO_E_KEY_EMPTY: Ein benötigtes Quellschlüsselelement ist nicht initialisiert [SWS_Crypto_91008].
  • CRYPTO_E_KEY_NOT_VALID: Der Zustand des durch cryptoKeyId referenzierten Schlüssels ist ungültig [SWS_Crypto_91008].

Dieser Nutzungshinweis wurde automatisiert auf Basis der Spezifikation generiert.

Implementer's Guide folgt (Komplexität I1)

function 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.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: c27ddd0a9e75 Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Verwendung

Die synchrone Funktion Crypto_KeyExchangeCalcPubVal berechnet den öffentlichen Wert für ein Schlüsselaustauschprotokoll und speichert diesen am Speicherort von publicValuePtr ab ([SWS_Crypto_91009]). Der Aufrufer übergibt über cryptoKeyId die Kennung des Schlüssels, der für das Protokoll genutzt werden soll. Über den Ein- und Ausgangsparameter publicValueLengthPtr muss beim Aufruf die Puffergröße des bereitgestellten Speichers übergeben werden; nach Abschluss der Ausführung wird dort die tatsächliche Länge des berechneten öffentlichen Werts hinterlegt ([SWS_Crypto_91009]).

Fehlerbehandlung und Rückgabewerte

Die Funktion gibt E_OK bei erfolgreicher Ausführung zurück. Tritt ein Fehler auf, wird E_NOT_OK oder ein spezifischer Fehlercode zurückgegeben ([SWS_Crypto_91009]):

  • CRYPTO_E_BUSY: Die Anfrage schlägt fehl, da das Crypto Driver Object belegt ist.
  • CRYPTO_E_KEY_EMPTY: Die Anfrage schlägt fehl, weil das Quell-Schlüsselelement nicht initialisiert ist.
  • CRYPTO_E_KEY_NOT_VALID: Die Anfrage schlägt fehl, da der Status des über cryptoKeyId referenzierten Schlüssels ungültig ist.

Nebenläufigkeit und Systemintegration

Gemäß [SWS_Crypto_91009] ist die Funktion reentrant, jedoch nicht für dieselbe cryptoKeyId. Wenn der Krypto-Treiber für interne Zwecke wie Crypto_KeyExchangeCalcPubVal Dienste eines Zufallszahlengenerators (RNG) benötigt, muss das erste Crypto Driver Object (Objektnummer 0) für diesen Zweck konfiguriert sein ([SWS_Crypto_00224]).

Dieser Text wurde durch eine KI generiert. Alle Angaben basieren auf der Spezifikation AUTOSAR Classic R20-11.

Implementer's Guide folgt (Komplexität I1)

function 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.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: c3912e0f8927 Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die synchrone Funktion Crypto_KeyExchangeCalcSecret dient der Berechnung eines gemeinsamen Geheimnisses (Shared Secret Key) für ein Schlüsselaustausch-Protokoll [SWS_Crypto_91010]. Sie verarbeitet das Schlüsselmaterial des über cryptoKeyId spezifizierten Schlüssels zusammen mit dem über partnerPublicValuePtr übergebenen öffentlichen Wert des Partners, dessen Bytezahl über partnerPublicValueLength angegeben wird [SWS_Crypto_91010]. Das berechnete gemeinsame Geheimnis wird direkt als Schlüsselelement innerhalb desselben Schlüssels gespeichert [SWS_Crypto_91010].

Als Rückgabewert liefert die Funktion den Status über Std_ReturnType [SWS_Crypto_91010]:

  • E_OK: Die Berechnung und Ablage des Geheimnisses wurden erfolgreich abgeschlossen [SWS_Crypto_91010].
  • E_NOT_OK: Die Anfrage ist fehlgeschlagen [SWS_Crypto_91010].
  • CRYPTO_E_BUSY: Die Ausführung scheiterte, da das zuständige Crypto Driver Object belegt ist [SWS_Crypto_91010].
  • CRYPTO_E_KEY_EMPTY: Das Quell-Schlüsselelement ist uninitialisiert [SWS_Crypto_91010].
  • CRYPTO_E_KEY_NOT_VALID: Der Zustand des durch cryptoKeyId referenzierten Schlüssels ist ungültig [SWS_Crypto_91010].

Die Schnittstelle ist reentrant implementiert, darf jedoch nicht nebenläufig für dieselbe cryptoKeyId aufgerufen werden [SWS_Crypto_91010]. Aufrufer müssen daher sicherstellen, dass gleichzeitige Aufrufe mit identischer Schlüssel-ID vermieden werden und das referenzierte Schlüsselmaterial vorab initialisiert sowie in einem gültigen Zustand ist, um Fehlerzustände zu verhindern [SWS_Crypto_91010].

Dieser Nutzungshinweis wurde automatisiert auf Basis der Spezifikation von SWS_Crypto_91010 generiert.

function 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

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 0801a980dea9 Herkunft Offene Fragen (3)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die Funktion Crypto_MainFunction dient der zyklischen Abarbeitung von eingereihten kryptografischen Aufträgen in den Job-Warteschlangen des Krypto-Treibers [SWS_Crypto_91012]. Voraussetzung für ihren Einsatz ist, dass im Modul die asynchrone Auftragsverarbeitung konfiguriert wurde und entsprechende Auftragswarteschlangen vorhanden sind [SWS_Crypto_91012].

Aufruf und Semantik

Die Funktion besitzt die Signatur void Crypto_MainFunction(void) und ist mit der Service-ID 0x0c spezifiziert [SWS_Crypto_91012]. Sie nimmt keine Eingabeparameter entgegen und liefert keinen Rückgabewert. Die Schnittstelle wird über den Header SchM_Crypto.h bereitgestellt [SWS_Crypto_91012]. Dies lässt die Interpretation zu, dass der zyklische Aufruf planmäßig durch den BSW-Scheduler (Schedule Manager) im Kontext einer periodischen Task des Betriebssystems angestoßen wird.

Nebenläufigkeit und Einschränkungen

Der Aufruf ist strikt an die Konfiguration asynchroner Job-Warteschlangen gebunden [SWS_Crypto_91012]. Da die Spezifikation keine Reentranz für Crypto_MainFunction ausweist, dürfte die Funktion als nicht reentrant zu behandeln sein; parallele Aufrufe aus mehreren Threads oder Tasks sollten daher vermieden werden. Frage Q-038d384305c8c5c3 (offen)

Fehlerbehandlung

In der Spezifikation sind für diese Funktion keine spezifischen Fehlercodes oder DET-Einträge hinterlegt [SWS_Crypto_91012]. Da die Funktion keine Rückgabewerte bereitstellt, werden etwaige Fehler während der asynchronen Abarbeitung vermutlich über Statusabfragen oder über die Rückmeldekanäle der jeweiligen Jobs an übergeordnete Schichten weitergegeben. Frage (offen)

Dieser Nutzungshinweis wurde von einer KI auf Basis der Spezifikation AUTOSAR CP R20-11 generiert.

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#32e9ac7f
Content hash
32e9ac7f
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_CryptoDriver.pdf#nameddest=SWS_Crypto_91000

Initialisierung und Status

Returns the version information of this module.

void Crypto_GetVersionInfo (Std_VersionInfoType* versioninfo);
Crypto_Init function

Initializes the Crypto Driver.

void Crypto_Init (const Crypto_ConfigType* configPtr);

Dienste · KeyElement…

Service Crypto_KeyElementCopy.

Std_ReturnType Crypto_KeyElementCopy (uint32 cryptoKeyId, uint32 keyElementId, uint32 targetCryptoKeyId, uint32 targetKeyElementId);

Service Crypto_KeyElementCopyPartial.

Std_ReturnType Crypto_KeyElementCopyPartial (uint32 cryptoKeyId, uint32 keyElementId, uint32 keyElementSourceOffset, uint32 keyElementTargetOffset, uint32 keyElementCopyLength, uint32 targetCryptoKeyId, uint32 targetKeyElementId);

This interface shall be used to get a key element of the key identified by the crypto

Std_ReturnType Crypto_KeyElementGet (uint32 cryptoKeyId, uint32 keyElementId, uint8* resultPtr, uint32* resultLengthPtr);

Used to retrieve information which key elements are available in a given key.

Std_ReturnType Crypto_KeyElementIdsGet (uint32 cryptoKeyId, uint32* keyElementIdsPtr, uint32* keyElementIdsLengthPtr);

Sets the given key element bytes to the key identified by crypto Key Id.

Std_ReturnType Crypto_KeyElementSet (uint32 cryptoKeyId, uint32 keyElementId, const uint8* keyPtr, uint32 keyLength);

Dienste · Key…

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)

Std_ReturnType Crypto_KeyCopy (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.

Std_ReturnType Crypto_KeyDerive (uint32 cryptoKeyId, uint32 targetCryptoKeyId);

Calculates the public value for the key exchange a nd stores the public key in the memory location pointed by the public value pointer.

Std_ReturnType Crypto_KeyExchangeCalcPubVal (uint32 cryptoKeyId, uint8* publicValuePtr, uint32* publicValueLengthPtr);

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.

Std_ReturnType Crypto_KeyExchangeCalcSecret (uint32 cryptoKeyId, const uint8* partnerPublicValuePtr, uint32 partnerPublicValueLength);

Generates new key material store it in the key identified by crypto Key Id.

Std_ReturnType Crypto_KeyGenerate (uint32 cryptoKeyId);

Returns the key state of the key identified by crypto Key Id.

Std_ReturnType Crypto_KeyGetStatus (uint32 cryptoKeyId, Crypto_KeyStatusType* keyStatusPtr);

Sets invalid for the status of the key identifi ed by crypto Key Id.

Std_ReturnType Crypto_KeySetInvalid (uint32 cryptoKeyId);

Sets the key state of the key identified by crypto Key Id to valid.

Std_ReturnType Crypto_KeySetValid (uint32 cryptoKeyId);

Dienste · Weitere

This interface removes the provided job from the queue and cancels the processing of the job if possible.

Std_ReturnType Crypto_CancelJob (uint32 objectId, Crypto_JobType* job);

Service Crypto_ProcessJob.

Std_ReturnType Crypto_ProcessJob (uint32 objectId, Crypto_JobType* job);

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

Std_ReturnType Crypto_RandomSeed (uint32 cryptoKeyId, const uint8* seedPtr, uint32 seedLength);

Zyklisch

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

void Crypto_MainFunction (void);

Typen

Configuration data structure of Cry If module