AUTOSAR_CP_SWS_CryptoServiceManager
FIG-e39a11daf7b2d30c
932 × 646 px
2 Release(s)
Figure 7.3: Structure of Crypto_JobType (Job) and its dependencies
SHA-256 Inhalts-Fingerabdruck:
e39a11daf7b2d30cfbf39921a0e7c40720bac30df46619b506c448b565745604
✦
KI-generierte Bildanalyse & technische Beschreibung
Modell: gemini-3.8-flash (via agy) · Rezept figure-description@2 · erstellt am 2026-10-07
1. Diagrammtyp & Architektur-Kontext
- Diagrammtyp: UML-Klassendiagramm / Datenstruktur-Metamodell der AUTOSAR C-Typspezifikation.
- Architektur-Kontext: AUTOSAR Classic Platform Crypto-Stack (SWS Crypto Service Manager, CSM, angebunden an CryIf und Crypto-Treiber gemäß SWS_Csm_00942 / SRS_CryptoStack_00111).
- Technischer Zweck: Definition der zentralen Laufzeitdatenstruktur
Crypto_JobTypeund ihrer hierarchischen Abhängigkeiten zur Kapselung kryptografischer Aufträge über die Schichtgrenzen CSM → CryIf → Crypto Driver (Hardware-/Software-Kryptotreiber).
2. Komponenten, Entitäten & Schnittstellen
2.1 Zentrale Entität: Crypto_JobType
Wurzelstruktur des Jobs, bestehend aus statischen Konfigurationsreferenzen und dynamischen Laufzeitdaten:
jobId: uint32: Eindeutige ID des Jobs.jobState: Crypto_JobStateType: Aktueller Ausführungszustand (EnumerationCRYPTO_JOBSTATE_IDLE,CRYPTO_JOBSTATE_ACTIVE).cryptoKeyId: uint32/targetCryptoKeyId: uint32: CSM-Schlüsselreferenzen für Quell- und Zielschlüssel (z. B. bei Key-Derivation/Key-Exchange).jobInfoType: const Crypto_JobInfoType*: Assoziation auf statische Job-Metadaten.jobPrimitiveInfoType: const Crypto_JobPrimitiveInfoType*: Assoziation auf statische Primitive- und Dispatching-Metadaten.jobPrimitiveInputOutput: Crypto_JobPrimitiveInputOutputType: Direkte Komposition (Wertekomponente) der dynamischen Puffer und Steuerparameter.jobRedirectionInfoRef: Crypto_JobRedirectionInfoType*: Optionale Referenz (0..1) für Schlüssel-/Datenumleitungen im HSM-/SHE-Kontext.
2.2 Assoziierte Sub-Strukturen & Enumerationen
Crypto_JobInfoType:jobId: uint32: Referenz-ID.jobPriority: uint32: Dynamische/statische Einplanungspriorität für Queuing im CryIf/Treiber.
Crypto_JobPrimitiveInputOutputType(I/O-Kanal):- Primitive I/O-Pointer und Längenangaben:
inputPtr,inputLength,outputPtr,outputLengthPtr. - Erweiterte Kanäle (z. B. für AEAD-Tags, Signaturen, asymmetrische Verfahren):
secondaryInputPtr/Length,secondaryOutputPtr/Length,tertiaryInputPtr/Length. - Status/Verifikation:
verifyPtr(Ergebniswert für Signatur-/MAC-Prüfung). - Treiber-Schlüsselzuordnung:
cryIfKeyId: uint32,targetCryIfKeyId: uint32. - Ausführungsmodus:
mode: Crypto_OperationModeType(START,UPDATE,FINISH,SINGLECALL).
- Primitive I/O-Pointer und Längenangaben:
Crypto_JobRedirectionInfoType(Key/Data-Redirection):- Erlaubt Zero-Copy-Operationen oder rein Hardware-interne Schlüsselketten ohne Transfer über den Mikrocontroller-RAM (
redirectionConfig: uint8). - Adressierung interner Key-Elemente:
inputKeyId,inputKeyElementId,secondaryInput*,tertiaryInput*,outputKey*.
- Erlaubt Zero-Copy-Operationen oder rein Hardware-interne Schlüsselketten ohne Transfer über den Mikrocontroller-RAM (
Crypto_JobPrimitiveInfoType:callbackId: uint32: ID der Callback-Funktion bei asynchroner Signalisierung.cryIfKeyId: uint32: Zugeordneter virtueller Treiber-Key.processingType: Crypto_ProcessingType:CRYPTO_PROCESSING_SYNCvs.CRYPTO_PROCESSING_ASYNC(im Diagramm typografisch als_ASNCdargestellt).primitiveInfo: const Crypto_PrimitiveInfoType*: Zeiger auf Algorithmenkonfiguration.
Crypto_PrimitiveInfoType&Crypto_AlgorithmInfoType:service: const Crypto_ServiceInfoType: Krypto-Dienstklasse (z. B. ENCRYPT, DECRYPT, HASH, MAC_GENERATE, KEY_DERIVE).resultLength: uint32: Erwartete/maximale Ergebnislänge.algorithm: const Crypto_AlgorithmInfoType(Komposition):family: Crypto_AlgorithmFamilyType(z. B. AES, RSA, SHA2).secondaryFamily: Crypto_AlgorithmFamilyType.mode: Crypto_AlgorithmModeType(z. B. CBC, ECB, GCM).keyLength: uint32: Schlüssellänge in Bits.
3. Dynamisches Verhalten & Sequenzablauf
Das Diagramm bildet ein statisches Metamodell ab; das abgeleitete Laufzeitverhalten gliedert sich in folgende Phasen:
[IDLE] -- Csm_ProcessJob() / Csm_AsyncJob() --> [ACTIVE]
|
+--> Start: mode = START (Init Kontext / IV)
+--> Update: mode = UPDATE (Streaming-Chunks)
+--> Finish: mode = FINISH (Finalisierung / Padding / Tag)
| (oder mode = SINGLECALL für atomare Jobs)
|
v
processingType == SYNC --> Direkte Rückgabe; State -> IDLE
processingType == ASYNC --> Treiber-Callback (callbackId) / Csm_MainFunction; State -> IDLE
- Trigger: Aufruf von
Csm_ProcessJob()(synchron) oderCsm_AsyncJob()(asynchron). - Zustandsübergang:
jobStatewechselt vonCRYPTO_JOBSTATE_IDLEnachCRYPTO_JOBSTATE_ACTIVE. Ein Wiedereintritt desselben Jobs im ZustandACTIVEist abzuweisen (Det-FehlerCRYPTO_E_BUSY). - Streaming vs. One-Shot:
- Multi-Part: Sequentielles Durchlaufen von
CRYPTO_OPERATIONMODE_START,CRYPTO_OPERATIONMODE_UPDATE(mehrfach) undCRYPTO_OPERATIONMODE_FINISH. - Single-Call: Direkte Ausführung aller Phasen über
CRYPTO_OPERATIONMODE_SINGLECALL.
- Multi-Part: Sequentielles Durchlaufen von
- Synchroner Pfad: Blockierende Abarbeitung im Kontext des Aufrufers; sofortige Rückgabe des Statuscodes (
E_OK,CRYPTO_E_QUEUE_FULL, etc.). - Asynchroner Pfad: Einreihung des Jobs in die CryIf-/Treiber-Queue nach
jobPriority. Abschluss signalisiert der Treiber überCryIf_CallbackNotification(), woraufhin der CSM den anwenderspezifischen Callback (callbackId) triggert.
4. Normative Relevanz & Entwickler-Hinweise
- ROM/RAM-Aufteilung (Const-Correctness):
Crypto_JobInfoType,Crypto_JobPrimitiveInfoType,Crypto_PrimitiveInfoTypeundCrypto_AlgorithmInfoTypesind alsconstdeklariert und verbleiben zur RAM-Schonung im Flash/ROM (PBCfg/Pre-Compile).Crypto_JobTypeundCrypto_JobPrimitiveInputOutputTypemüssen im nicht-gecachten oder DMA-fähigen RAM liegen, da Treiber Pointer modifizieren (outputLengthPtr,verifyPtr) und dynamische Buffer referenzieren.
- Lebensdauer von Zeigern:
- Bei asynchroner Verarbeitung (
CRYPTO_PROCESSING_ASYNC) müsseninputPtr,outputPtrsowie die referenziertenCrypto_JobType-Instanzen bis zum Eintreffen des Callbacks persistent und unmodifiziert bleiben (keine Zuweisung lokaler Stack-Buffer ohne Blockieren).
- Bei asynchroner Verarbeitung (
- Key-Redirection (
Crypto_JobRedirectionInfoType):- Wird ein Schlüssel oder Puffer umgeleitet (
jobRedirectionInfoRef != NULL), liest der Treiber die Eingangsdaten nicht ausinputPtr, sondern direkt aus dem überinputKeyId/inputKeyElementIdspezifizierten Schlüssel-Element (z. B. interner HSM-Key-Storage).
- Wird ein Schlüssel oder Puffer umgeleitet (
- Speicher-Alignment & Puffergrößen:
outputLengthPtrdient als In/Out-Parameter: Enthält vor Aufruf die maximal allozierte Puffergröße und nach Rückgabe die tatsächlich geschriebene Bytelänge. Unterschreitet der Puffer die Ausgabelänge, quittiert der Treiber mitCRYPTO_E_SMALL_BUFFER.
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.