DEENESPTFRRUARHIKOZHNL
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_JobType und 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 (Enumeration CRYPTO_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).
  • 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*.
  • Crypto_JobPrimitiveInfoType:
    • callbackId: uint32: ID der Callback-Funktion bei asynchroner Signalisierung.
    • cryIfKeyId: uint32: Zugeordneter virtueller Treiber-Key.
    • processingType: Crypto_ProcessingType: CRYPTO_PROCESSING_SYNC vs. CRYPTO_PROCESSING_ASYNC (im Diagramm typografisch als _ASNC dargestellt).
    • 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) oder Csm_AsyncJob() (asynchron).
  • Zustandsübergang: jobState wechselt von CRYPTO_JOBSTATE_IDLE nach CRYPTO_JOBSTATE_ACTIVE. Ein Wiedereintritt desselben Jobs im Zustand ACTIVE ist abzuweisen (Det-Fehler CRYPTO_E_BUSY).
  • Streaming vs. One-Shot:
    • Multi-Part: Sequentielles Durchlaufen von CRYPTO_OPERATIONMODE_START, CRYPTO_OPERATIONMODE_UPDATE (mehrfach) und CRYPTO_OPERATIONMODE_FINISH.
    • Single-Call: Direkte Ausführung aller Phasen über CRYPTO_OPERATIONMODE_SINGLECALL.
  • 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 über CryIf_CallbackNotification(), woraufhin der CSM den anwenderspezifischen Callback (callbackId) triggert.

4. Normative Relevanz & Entwickler-Hinweise

  • ROM/RAM-Aufteilung (Const-Correctness):
    • Crypto_JobInfoType, Crypto_JobPrimitiveInfoType, Crypto_PrimitiveInfoType und Crypto_AlgorithmInfoType sind als const deklariert und verbleiben zur RAM-Schonung im Flash/ROM (PBCfg/Pre-Compile).
    • Crypto_JobType und Crypto_JobPrimitiveInputOutputType mü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üssen inputPtr, outputPtr sowie die referenzierten Crypto_JobType-Instanzen bis zum Eintreffen des Callbacks persistent und unmodifiziert bleiben (keine Zuweisung lokaler Stack-Buffer ohne Blockieren).
  • Key-Redirection (Crypto_JobRedirectionInfoType):
    • Wird ein Schlüssel oder Puffer umgeleitet (jobRedirectionInfoRef != NULL), liest der Treiber die Eingangsdaten nicht aus inputPtr, sondern direkt aus dem über inputKeyId/inputKeyElementId spezifizierten Schlüssel-Element (z. B. interner HSM-Key-Storage).
  • Speicher-Alignment & Puffergrößen:
    • outputLengthPtr dient 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 mit CRYPTO_E_SMALL_BUFFER.

Zugeordnete Anforderungen

Diese Angaben zeigt der Versions-Explorer.

Erkannte Spezifikationsbelege & Anforderungen auf dieser Seite

Vorkommen in AUTOSAR-Releases (2)

Release Dokument Seite Nr. Bildunterschrift im Dokument
R24-11 AUTOSAR_CP_SWS_CryptoServiceManager S. 21 7.3 Figure 7.3: Structure of Crypto_JobType (Job) and its dependencies
R25-11 AUTOSAR_CP_SWS_CryptoServiceManager S. 21 7.3 Figure 7.3: Structure of Crypto_JobType (Job) and its dependencies