Dient als gemeinsame Schnittstelle zur threadsicheren Inspektion und persistenten Ablage kryptographischer Objekte.
Kontext
Die Schnittstelle ara::crypto::cryp::CryptoObject bildet die gemeinsame Abstraktion für alle kryptographischen Objekte, die von einem Crypto-Provider erkannt und verwaltet werden können. Die Klasse erweitert ara::crypto::Serializable und definiert grundlegende Eigenschaften wie Algorithmen-Identifikation, Verwendungsbeschränkungen sowie Mechanismen zur persistenten Ablage. Typische Interaktionspartner sind aufrufende Applikationen, der bereitstellende Crypto-Provider sowie Zielspeicher in Form von WriteableKeySlot-Instanzen.
Lebenszyklus
Kryptographische Objekte werden innerhalb der Plattform primär über geteilte Eigentümerschaft verwaltet. Hierfür definiert die Klasse den kanonischen Smart-Pointer-Alias ara::crypto::cryp::CryptoObject::Sptr als std::shared_ptr<CryptoObject> [SWS_CRYPT_20501]. Konkrete Instanzen dürften durch die spezialisierten Fabrik- und Laderoutinen eines Crypto-Providers instanziiert und dem Aufrufer über diesen Pointer-Typ bereitgestellt werden. Frage Q-36e2bd12d7dc8b98 (offen) Sämtliche deklarierten Methoden der Schnittstelle sind als thread-safe und ausnahmesicher (exception safe, noexcept) spezifiziert, wodurch ein sicherer nebenläufiger Lese- und Speicherzugriff über mehrere Threads hinweg gewährleistet wird [SWS_CRYPT_20505], [SWS_CRYPT_50092], [SWS_CRYPT_20517]. Die Freigabe des Objekts und des zugehörigen Schlüsselmaterials erfolgt automatisch, sobald die letzte Sptr-Referenz erlischt.
Nutzungspfad
Ein typischer Nutzungspfad umfasst die Identifikation der kryptographischen Eigenschaften eines Objekts und dessen anschließende persistente Speicherung. Zunächst fragt die Anwendung über GetAlgId() den Algorithmenbezeichner des Objekts als ara::crypto::AlgIdString ab [SWS_CRYPT_20505]. Anschließend werden über GetAllowedUsage() die zulässigen Verwendungsflags (AllowedUsageFlags) ermittelt [SWS_CRYPT_50092], um sicherzustellen, dass das Objekt für die beabsichtigte Operation autorisiert ist. Zur dauerhaften Sicherung übergibt die Anwendung einen beschreibbaren Schlüssel-Slot an die Methode Save() [SWS_CRYPT_20517]. Das Schlüsselmaterial sowie zugehörige Metadaten werden daraufhin im Ziel-Slot hinterlegt, wobei zuvor vorhandene Daten im Slot überschrieben werden [SWS_CRYPT_20517].
Sequenzdiagramm: Typischer Ablauf zur Inspektion und Persistierung eines kryptographischen Objekts in einem KeySlot. Quellen: [SWS_CRYPT_20505], [SWS_CRYPT_50092], [SWS_CRYPT_20517].
Fehlerszenarien
Während GetAlgId() [SWS_CRYPT_20505] und GetAllowedUsage() [SWS_CRYPT_50092] keine standardisierten Fehlercodes ausweisen und im Erfolgsfall das jeweilige Ergebnis in einem ara::core::Result zurückliefern, definiert die Persistierungsoperation Save() spezifische Fehlerbedingungen mit verbindlicher Rollback-Semantik [SWS_CRYPT_20517]:
ara::crypto::CryptoErrc::kIncompatibleObject: Tritt auf, wenn das Objekt inkompatibel zum übergebenen WriteableKeySlot ist, beispielsweise weil die Algorithmen-Identifikatoren (AlgId) voneinander abweichen oder der Key-Slot zu einem abweichenden Crypto-Provider gehört [SWS_CRYPT_20517].
ara::crypto::CryptoErrc::kUsageViolation: Signalisiert eine unzulässige Verwendung, falls die über GetAllowedUsage() deklarierten Nutzungsflags des Schlüssels das Recht zur Persistierung (kAllowPersist) nicht enthalten [SWS_CRYPT_50092], [SWS_CRYPT_20517].
ara::crypto::CryptoErrc::kBusyResource: Wird zurückgegeben, wenn die zugrundeliegende Speicherressource temporär belegt ist und die Operation nicht unmittelbar ausgeführt werden kann [SWS_CRYPT_20517].
Dank der Rollback-Semantik bleibt der Zustand des WriteableKeySlot bei jedem dieser Fehler intakt, sodass keine partiell geschriebenen oder korrumpierten Schlüsseldaten im Speicher verbleiben [SWS_CRYPT_20517].
Dieser Leitfaden basiert auf der Spezifikation AUTOSAR Adaptive R25-11 und fasst die Anforderungen an die Schnittstelle ara::crypto::cryp::CryptoObject zusammen.
gemini-3.8-flash-medium· 2026-10-13