module ara::crypto — Cryptography
Guide du moduleGÉNÉRÉ PAR IA
Fournit des opérations cryptographiques isolées, la gestion des clés et des services de certificats X.509 pour les applications.
Fournit des opérations cryptographiques isolées, la gestion des clés et des services de certificats X.509 pour les applications.
Le cluster fonctionnel Cryptography fournit des services de sécurité standardisés pour le chiffrement symétrique et asymétrique, la vérification de signature ainsi que la gestion sécurisée des clés et des certificats (PlatformDesign p. 71). L'accès aux opérations cryptographiques et aux emplacements de clé persistants s'effectue de manière strictement isolée via des fournisseurs spécifiques à la plateforme et des spécificateurs d'instance déclarés dans le manifeste (SWS Cryptography p. 39). L'application des restrictions d'utilisation empêche toute compromission du matériel de clé sensible ([SWS_CRYPT_50092]).
Le cluster fonctionnel Cryptography (ara::crypto) fournit une architecture de sécurité complète pour l'AUTOSAR Adaptive Platform (PlatformDesign p. 71). Pour se prémunir contre la compromission d'applications utilisateur, la conservation des clés et l'exécution cryptographique sont généralement encapsulées dans un démon de plateforme isolé ou un module matériel de sécurité (HSM) (AUTOSAR AP EXP SWArchitecture p. 97, SWS Cryptography p. 87). La fonctionnalité globale se divise en CryptoProvider spécialisés pour les primitives de calcul, l'espace de stockage de clés pour les emplacements de clés persistants (KeySlots) ainsi qu'un X509Provider à l'échelle de la machine pour la gestion des certificats PKI (SWS Cryptography p. 39).
Diagramme de contexte : relations d'architecture et de composants du cluster fonctionnel Cryptography entre application, démon et fournisseurs. Sources : SWS Cryptography p. 39, PlatformDesign p. 71, AUTOSAR AP EXP SWArchitecture p. 97.
Les applications créent des contextes cryptographiques tels que des chiffrements symétriques ([SWS_CRYPT_20742]), des chiffrements authentifiés ([SWS_CRYPT_20745]), des fonctions de hachage ([SWS_CRYPT_20747]) ou des instances de signataire et de vérificateur ([SWS_CRYPT_20756], [SWS_CRYPT_20757]) via leur fournisseur (AUTOSAR AP EXP SWArchitecture p. 99). Le traitement suit un cycle de vie déterministe : après la liaison de la clé (SetKey), la transformation est initiée via Start(), transmise en flux via Update() et finalisée avec Finish() (AUTOSAR AP TR SystemTests p. 206, EXP SWArchitecture p. 104). Des AllowedUsageFlags immuables empêchent efficacement toute utilisation non autorisée de la clé ([SWS_CRYPT_50092], AUTOSAR AP TR SystemTests p. 177).
Diagramme d'états : cycle de vie des contextes de transformation cryptographique, de l'allocation à la réinitialisation. Sources : [SWS_CRYPT_20742], [SWS_CRYPT_23911], [SWS_CRYPT_23625], [SWS_CRYPT_50046], [SWS_CRYPT_50212].
Les certificats et les CSR sont gérés via le X509Provider ([SWS_CRYPT_40099], [SWS_CRYPT_40640]), tandis que les contextes de validation vérifient les chaînes de certificats en prenant en compte les listes de révocation CRL ([SWS_CRYPT_50183]) et les réponses OCSP ([SWS_CRYPT_50124]) (AUTOSAR AP TR SystemTests p. 194). L'attribution des KeySlots et des certificats aux applications s'effectue sur la base de modèles dans le manifeste via InstanceSpecifier (AUTOSAR AP TPS ManifestSpecification p. 245, AUTOSAR AP TPS ManifestSpecification p. 649). L'ensemble des interfaces opère sans exceptions avec des retours ara::core::Result et signale les erreurs via le CryptoErrorDomain ([SWS_CRYPT_19902], SWS Cryptography p. 208).
Architecture, domaines de sécurité et isolation par démon
Le cluster fonctionnel Cryptography (ara::crypto) forme la base de sécurité centrale de l'AUTOSAR Adaptive Platform et fournit des mécanismes cryptographiques de base, la gestion des clés ainsi que des services de certificats (PlatformDesign p. 71). Conformément au modèle de confiance de la plateforme, les clusters fonctionnels de plateforme font partie du socle de confiance, tandis que les Adaptive Applications sont exécutées dans l'espace utilisateur non privilégié (SWS Cryptography p. 37). Afin de protéger efficacement le matériel de clé et les opérations cryptographiques, même en cas de compromission potentielle d'une application, l'architecture est généralement conçue autour d'un démon ; l'exécution proprement dite et la conservation des clés demeurent dans un processus de plateforme isolé ou dans un environnement d'exécution sécurisé (AUTOSAR AP EXP SWArchitecture p. 97, SWS Cryptography p. 87).
L'architecture divise la fonctionnalité cryptographique en trois domaines principaux : le CryptoProvider pour les primitives de calcul et les transformations de clés, l'espace de stockage de clés (ara::crypto::keys) pour la conservation persistante des objets, ainsi que le X509Provider (ara::crypto::x509) pour la gestion des certificats (SWS Cryptography p. 39, SWS Cryptography p. 87). Plusieurs instances spécialisées de CryptoProvider peuvent coexister en parallèle sur un calculateur, par exemple pour interfacer différents modules matériels de sécurité (HSM, TPM) ou des pilotes logiciels (SWS Cryptography p. 39). Il n'existe toutefois délibérément aucune interopérabilité entre les différents fournisseurs : un objet cryptographique ou une clé appartient exactement à un seul fournisseur et ne peut pas être traité par un autre fournisseur (SWS Cryptography p. 39). Cette encapsulation stricte est vraisemblablement due au fait que les domaines de sécurité matériels imposent physiquement les limites de leurs clés et que les descripteurs de clés ne sont pas valides d'un domaine à l'autre. Question Q-63efe107cf111983 (ouverte)
Diagramme de contexte : relations d'architecture et de composants du cluster fonctionnel Cryptography entre application, démon et fournisseurs. Sources : SWS Cryptography p. 39, PlatformDesign p. 71, AUTOSAR AP EXP SWArchitecture p. 97.
Points d'entrée et initialisation des fournisseurs cryptographiques
L'entrée dans le module s'effectue par des fonctions d'entrée globales qui servent de fabriques pour les interfaces d'abstraction centrales (SWArchitecture p. 71). Les applications créent ou chargent une instance d'un CryptoProvider via la fonction [SWS_CRYPT_20099] en indiquant un ara::core::InstanceSpecifier modélisé. Pour la gestion des certificats, il n'existe dans l'ensemble du système qu'un seul fournisseur de certificats global, qui est chargé via [SWS_CRYPT_40099] (SWS Cryptography p. 39). Des services auxiliaires globaux sont également disponibles, notamment la génération directe de données aléatoires via [SWS_CRYPT_30098] ainsi que l'interrogation d'un compteur de sécurité matériel via [SWS_CRYPT_20098] (SWArchitecture p. 71).
Les ressources de clés persistantes ne sont pas instanciées directement, mais chargées via des emplacements logiques de clés (KeySlots). À cette fin, l'environnement d'exécution fournit les fonctions [SWS_CRYPT_50004] pour les accès en lecture seule et [SWS_CRYPT_50005] pour les emplacements de clés accessibles en écriture, qui valident l'identifiant d'instance transmis par rapport à la configuration des autorisations (SWS Cryptography p. 87, AUTOSAR AP TPS ManifestSpecification p. 649). Via une instance de KeySlot obtenue, l'instance de fournisseur associée peut être interrogée au moyen de [SWS_CRYPT_30403], ce qui garantit le maintien d'une liaison étroite entre l'emplacement de stockage et l'environnement d'exécution (SWS Cryptography p. 39).
Dès qu'une instance de CryptoProvider est disponible, elle agit comme une fabrique centrale pour l'instanciation de contextes de travail cryptographiques spécifiques (AUTOSAR AP EXP SWArchitecture p. 99). Parmi les contextes pouvant être créés figurent notamment des contextes pour générateurs de nombres aléatoires ([SWS_CRYPT_20741]), chiffrements symétriques par blocs et par flux ([SWS_CRYPT_20742]), chiffrement authentifié ([SWS_CRYPT_20745]), codes d'authentification de message ([SWS_CRYPT_20746]), fonctions de hachage cryptographique ([SWS_CRYPT_20747]), chiffrement ou déchiffrement asymétrique ([SWS_CRYPT_20750], [SWS_CRYPT_20751]) ainsi que des contextes de signature et de vérification ([SWS_CRYPT_20756], [SWS_CRYPT_20757]) (EXP SWArchitecture p. 99).
Contextes de transformation cryptographique et traitement des données
Le traitement des données cryptographiques dans ara::crypto suit un cycle de vie strictement basé sur des états, garantissant le découplage entre la configuration de l'algorithme, la liaison de la clé et le traitement en flux (AUTOSAR AP TR SystemTests p. 211). Après l'allocation du contexte via le fournisseur, celui-ci se trouve initialement dans l'état non initialisé. Ce n'est que par la transmission d'une clé compatible via les surcharges typées de SetKey() — par exemple pour les clés symétriques ([SWS_CRYPT_23911]), les clés privées ([SWS_CRYPT_23515]) ou directement depuis un KeySlot ([SWS_CRYPT_50043]) — que le contexte passe à l'état prêt (AUTOSAR AP TR SystemTests p. 206).
Pour les traitements en flux, la transformation est initiée par Start(), éventuellement en transmettant un vecteur d'initialisation ou un contexte ([SWS_CRYPT_22110], [SWS_CRYPT_23625], [SWS_CRYPT_50020]). Ensuite, les blocs de données peuvent être injectés progressivement via Update() ([SWS_CRYPT_21113], [SWS_CRYPT_22113], [SWS_CRYPT_50139]). En cas de chiffrement authentifié (AEAD), l'interface sépare strictement les données associées, traitées via [SWS_CRYPT_20313], des données utiles confidentielles via [SWS_CRYPT_50074] (EXP SWArchitecture p. 104). La conclusion d'une transformation s'effectue via Finish() ou FinishEncrypt() ([SWS_CRYPT_21115], [SWS_CRYPT_23618], [SWS_CRYPT_50075]), après quoi les étiquettes d'authentification ou les sommes de contrôle peuvent être lues via GetDigest() ([SWS_CRYPT_21116], [SWS_CRYPT_22116]).
Outre le mode de traitement en flux, les classes de contexte telles que les chiffrements symétriques et les chiffrements authentifiés prennent en charge des appels uniques compacts via [SWS_CRYPT_50047] ou [SWS_CRYPT_50078], ce qui permet de chiffrer ou de déchiffrer efficacement de petites charges utiles sans appel de protocole multi-étapes (SWS Cryptography p. 58). Si une opération en cours doit être interrompue, un appel à Cancel() ([SWS_CRYPT_50023], [SWS_CRYPT_50046]) ou à Reset() ([SWS_CRYPT_50212]) ramène de manière déterministe le contexte à l'état initial réinitialisé (EXP SWArchitecture p. 100).
Diagramme d'états : cycle de vie des contextes de transformation cryptographique, de l'allocation à la réinitialisation. Sources : [SWS_CRYPT_20742], [SWS_CRYPT_23911], [SWS_CRYPT_23625], [SWS_CRYPT_50046], [SWS_CRYPT_50212].
Gestion des clés, encapsulation et application des autorisations
Dans le modèle objet, les clés cryptographiques sont typées en tant que CryptoObject ou RestrictedUseObject (AUTOSAR AP EXP SWArchitecture p. 111, EXP SWArchitecture p. 111). Le standard de la plateforme distingue les clés symétriques (SymmetricKey), les clés asymétriques privées (PrivateKey) et les clés publiques (PublicKey) (SWS Cryptography p. 291). Le matériel de clé peut être généré directement via le CryptoProvider ([SWS_CRYPT_20721], [SWS_CRYPT_20722]) ou dérivé d'un matériel de clé existant en paramétrant un KeyDerivationFunctionCtx ([SWS_CRYPT_20748]) avec une clé de base et en l'exécutant via [SWS_CRYPT_21515] (EXP SWArchitecture p. 108).
Pour appliquer le principe du moindre privilège, chaque objet clé comporte des restrictions d'utilisation immuables (AllowedUsageFlags), qui peuvent être interrogées via [SWS_CRYPT_50092] (AUTOSAR AP TR SystemTests p. 177). La pile cryptographique valide à chaque tentative de liaison (SetKey) si l'opération du contexte cible (par exemple le chiffrement, la signature, la dérivation ou l'exportation) est autorisée par les indicateurs de la clé, et rejette strictement les utilisations non autorisées (AUTOSAR AP TR SystemTests p. 177, SWArchitecture p. 95). L'affectation par défaut pour un algorithme peut être déterminée via [SWS_CRYPT_20955].
Pour l'échange sécurisé de clés, le module implémente plusieurs procédés standardisés : lors d'un accord de clé asymétrique (Diffie-Hellman / ECDH), un KeyAgreementPrivateCtx est créé via [SWS_CRYPT_20758], auquel la clé privée est liée ([SWS_CRYPT_21313]) ; la méthode [SWS_CRYPT_21312] calcule ensuite la clé cible symétrique commune en intégrant la clé publique de la partie distante (AUTOSAR AP TR SystemTests p. 179). Dans le cas du Key Encapsulation Mechanism (KEM), un KeyEncapsulatorPublicCtx ([SWS_CRYPT_20752]) encapsule une clé symétrique au moyen de [SWS_CRYPT_21813], tandis que la partie distante effectue la décapsulation via un KeyDecapsulatorPrivateCtx ([SWS_CRYPT_20753]) au moyen de [SWS_CRYPT_21412] (AUTOSAR AP TR SystemTests p. 173, AUTOSAR TR AdaptivePlatformSystemTests p. 188). Le Key Wrapping ([SWS_CRYPT_24014], [SWS_CRYPT_24016]) et l'exportation sécurisée ([SWS_CRYPT_20728]) sont disponibles pour le transport protégé de clés (AUTOSAR AP TR SystemTests p. 174, AUTOSAR AP TR SystemTests p. 182).
Diagramme de séquence : accord de clé asymétrique via Diffie-Hellman et dérivation de clés utiles symétriques. Sources : [SWS_CRYPT_20758], [SWS_CRYPT_21313], [SWS_CRYPT_21312], AUTOSAR AP TR SystemTests p. 179.
Les signatures asymétriques sont traitées via des contextes distincts : la signature s'effectue via un SignerPrivateCtx ([SWS_CRYPT_20756]) et la méthode [SWS_CRYPT_23512], tandis que la vérification est réalisée via un VerifierPublicCtx ([SWS_CRYPT_20757]) et la méthode [SWS_CRYPT_24112] (AUTOSAR AP TR SystemTests p. 164, SWArchitecture p. 84). Si un KeySlot est mis à jour en arrière-plan par des services de gestion privilégiés (par ex. un renouvellement de clé OTA), les bibliothèques consommatrices peuvent être notifiées via un observateur de mise à jour au moyen de [SWS_CRYPT_30404] afin de recharger de manière synchrone leur matériel de clé (AUTOSAR AP SWS Cryptography p. 36).
Diagramme de séquence : déroulement de la génération et de la vérification de signature à l'aide de contextes privés et publics distincts. Sources : [SWS_CRYPT_20756], [SWS_CRYPT_23515], [SWS_CRYPT_23512], [SWS_CRYPT_20757], [SWS_CRYPT_24115], [SWS_CRYPT_24112], AUTOSAR AP TR SystemTests p. 164.
Gestion, validation et groupes de certificats X.509
Le sous-système ara::crypto::x509 fournit des fonctionnalités standardisées pour les infrastructures à clés publiques (PKI) (EXP SWArchitecture p. 116). Le X509Provider central ([SWS_CRYPT_40099]) prend en charge aussi bien la mémoire de session volatile que les stockages persistants (SWS Cryptography p. 39). Les certificats et les chaînes sont analysés à partir de tampons d'octets via [SWS_CRYPT_40614] ou [SWS_CRYPT_40616]. Pour demander de nouveaux certificats d'identité, les applications peuvent générer des demandes de signature de certificat (CSR) signées cryptographiquement via [SWS_CRYPT_40640], le contexte de signataire et le Distinguished Name (DN) étant transmis via [SWS_CRYPT_50186] (AUTOSAR AP TR SystemTests p. 189).
Pour le contrôle de conformité et de validité, l'application instancie un CertificateValidationCtx via [SWS_CRYPT_50125]. Des ancres de confiance (Trust Anchors) sont ajoutées à ce contexte via [SWS_CRYPT_50117], des options de validation sont définies via [SWS_CRYPT_50120] et des horodatages de référence sont enregistrés via [SWS_CRYPT_50121]. La vérification hiérarchique de la chaîne par rapport à la chaîne de confiance s'effectue via [SWS_CRYPT_50122] ou [SWS_CRYPT_50123] (AUTOSAR AP TR SystemTests p. 194). Pour la prise en compte des révocations de certificats, des listes de révocation de certificats (CRL) peuvent être importées ([SWS_CRYPT_50183]) ou des requêtes en ligne sur le statut des certificats (OCSP selon la RFC 6960) peuvent être intégrées à l'état de validation via [SWS_CRYPT_40626], [SWS_CRYPT_50185] et [SWS_CRYPT_50124] (AUTOSAR AP TR SystemTests p. 194).
Afin de découpler les consommateurs de certificats des instances de certificats individuelles lors du renouvellement des clés, le manifeste prend en charge le concept de CryptoCertificateGroup (AUTOSAR AP TPS ManifestSpecification p. 657). Les applications consommatrices chargent l'ensemble du groupe de certificats logiquement liés via [SWS_CRYPT_50126], tandis que des services d'administration privilégiés peuvent remplacer ou purger dynamiquement les certificats via [SWS_CRYPT_50127] et [SWS_CRYPT_50128] (AUTOSAR AP TPS ManifestSpecification p. 657).
Diagramme de séquence : validation de certificat X.509 avec chaîne de certificats, import de CRL et vérification de statut OCSP en ligne. Sources : [SWS_CRYPT_40099], [SWS_CRYPT_50125], [SWS_CRYPT_50122], [SWS_CRYPT_50183], [SWS_CRYPT_50124], AUTOSAR AP TR SystemTests p. 194.
Modélisation du manifeste, interfaces de port et déploiement
L'intégration des ressources cryptographiques dans une architecture globale de véhicule s'effectue de manière déclarative via le métamodèle AUTOSAR dans le manifeste ARXML (AUTOSAR AP TPS ManifestSpecification p. 244). Les composants logiciels modélisent leurs exigences de sécurité au niveau de la conception via des ports (RPortPrototype), qui sont typés par des spécialisations de CryptoInterface : CryptoKeySlotInterface pour les emplacements de clés, CryptoCertificateInterface pour les ressources de certificats et CryptoProviderInterface pour l'accès aux fournisseurs d'exécution (TPS ManifestSpecification p. 167, AUTOSAR AP TPS ManifestSpecification p. 245). Les attributs des interfaces définissent de manière immuable si des droits de lecture ou d'écriture sont accordés (writeAccess) et quels types d'objets sont autorisés (TPS ManifestSpecification p. 168, TPS ManifestSpecification p. 438).
Dans le manifeste de déploiement, la configuration cible (Target Configuration) relie les prototypes de ports abstraits aux ressources de plateforme physiques concrètes (AUTOSAR AP TPS ManifestSpecification p. 649). L'élément de métamodèle CryptoKeySlotToPortPrototypeMapping mappe le port d'un processus sur un CryptoKeySlot déclaré dans le CryptoModuleInstantiation de la machine (TPS ManifestSpecification p. 614, TPS ManifestSpecification p. 646). De manière analogue, CryptoCertificateToPortPrototypeMapping associe des certificats (TPS ManifestSpecification p. 655). Au moment de l'exécution, le chemin du port dans le manifeste représente le ara::core::InstanceSpecifier, que le code applicatif transmet aux fonctions de chargement telles que [SWS_CRYPT_50004] (ManifestSpecification p. 154).
Pour les interactions de plateforme entre clusters fonctionnels – par exemple entre le Communication Management (SecOC, IPsec, TLS) et la pile cryptographique –, il n'existe pas de prototypes de port classiques (TPS ManifestSpecification p. 861). Ici, le InstanceSpecifier est formé à la place par des éléments dérivés de FunctionalClusterInteractsWithFunctionalClusterMapping, par exemple ComKeyToCryptoKeySlotMapping ou SecOcJobMapping (TPS ManifestSpecification p. 861, TPS ManifestSpecification p. 864, ManifestSpecification p. 411). La sécurisation de la persistance (Persistency Deployment) et les sommes de contrôle des clusters logiciels intègrent également leurs clés et leurs fournisseurs via ces mappages de manifeste standardisés (TPS ManifestSpecification p. 867, TPS ManifestSpecification p. 896).
Comportement en cas d'erreur
Le concept de gestion des erreurs du module cryptographique suit les exigences strictes de l'Adaptive Platform relatives au code insensible aux erreurs et sans exception (noexcept) (SWS Cryptography p. 145). Toutes les opérations synchrones renvoient les situations d'erreur via le type de résultat générique ara::core::Result<T, ara::core::ErrorCode> (SWS Cryptography p. 208). Les codes d'erreur sont ancrés dans un domaine d'erreur dédié, représenté via [SWS_CRYPT_19902] ; son nom peut être interrogé via [SWS_CRYPT_19950] et la description textuelle de l'erreur via [SWS_CRYPT_19953]. Pour les applications qui utilisent explicitement la gestion des exceptions, la pile fournit le type d'exception CryptoException ([SWS_CRYPT_19906]) et la fonction utilitaire [SWS_CRYPT_19954].
Les codes d'erreur fonctionnels typiques comprennent des violations de contexte telles que CryptoErrc::kUninitializedContext, lorsque des opérations cryptographiques sont déclenchées avant l'appel de SetKey(), ou CryptoErrc::kInvalidInputSize, lorsque les tampons de données d'entrée transmis ne correspondent pas à la grille de blocs requise (SWS Cryptography p. 208). Lors des opérations de sérialisation et de conversion, CryptoErrc::kUnknownIdentifier signale des valeurs d'argument non prises en charge et CryptoErrc::kIncompatibleArguments des combinaisons de paramètres incompatibles (SWS Cryptography p. 145). Lors de l'accès aux ressources de clés, la pile empêche les accès non autorisés en renvoyant kAccessViolation (SWS Cryptography p. 87). Lors de l'analyse d'extensions de certificat X.509 personnalisées défectueuses, l'analyseur s'interrompt avec CryptoErrc::kRuntimeFault (SWS Cryptography p. 280, SWS Cryptography p. 356).
Afin de rétablir un état défini dans le contexte après la survenance d'une erreur et d'éviter les fuites de mémoire ou les tampons de streaming bloqués dans le démon, l'appelant doit nettoyer le contexte. Cela s'effectue soit de manière ciblée par l'appel de Cancel() ([SWS_CRYPT_50046], [SWS_CRYPT_50089]), ce qui élimine les transformations inachevées, soit par Reset() ([SWS_CRYPT_50212]), ce qui réinitialise entièrement le contexte dans l'état antérieur à la liaison de la clé (EXP SWArchitecture p. 100).
Preuves détaillées supplémentaires
La spécification du module Cryptography s'appuie sur une série d'exigences et de documents d'architecture centraux, présentés ci-après :
- Points d'entrée globaux et fabriques : les spécifications [SWS_CRYPT_20099] (
LoadCryptoProvider) et [SWS_CRYPT_40099] (LoadX509Provider) définissent l'accès normatif aux deux domaines de fournisseurs primaires (SWArchitecture p. 71, SWS Cryptography p. 39). - Conservation des clés et liaison de port : les fonctions [SWS_CRYPT_50004] (
LoadKeySlot) et [SWS_CRYPT_50005] (LoadWriteableKeySlot) mettent en œuvre de manière contraignante l'interaction entre la modélisation des ports dans le manifeste et l'accès isolé à la mémoire physique dans le KSP (SWS Cryptography p. 87, AUTOSAR AP TPS ManifestSpecification p. 649). - Fabriques de primitives et de contextes : le groupe d'interfaces constitué de [SWS_CRYPT_20745] (
CreateAuthCipherCtx), [SWS_CRYPT_20756] (CreateSignerPrivateCtx) et [SWS_CRYPT_20757] (CreateVerifierPublicCtx) définit la génération dynamique de machines d'état standardisées pour les tâches cryptographiques (AUTOSAR AP EXP SWArchitecture p. 99, AUTOSAR AP TR SystemTests p. 164). - Validation X.509 et contrôle de révocation : avec [SWS_CRYPT_50125] (
CreateCertificateValidationCtx), [SWS_CRYPT_50122] (ValidateCertificate), [SWS_CRYPT_50183] (ImportCrl) et [SWS_CRYPT_50124] (AddOcspResponse), une chaîne complète de contrôle PKI adaptée à l'automobile est normalisée (AUTOSAR AP TR SystemTests p. 194, EXP SWArchitecture p. 116).
Ce guide de module a été généré par un assistant de curation IA sur la base de la spécification AUTOSAR Adaptive R25-11.
function: 261 type alias: 43 variable: 43 class: 34 enumeration: 5 struct: 1
Classes
AuthCipherCtxCertificateCertificateValidationCtxCertificateValidationResultCertSignRequestCryptoContextCryptoErrorDomainCryptoExceptionCryptoObjectCryptoProviderDecryptorPrivateCtxEncryptorPublicCtxFormatterHashFunctionCtxKeyAgreementPrivateCtxKeyDecapsulatorPrivateCtxKeyDerivationFunctionCtxKeyEncapsulatorPublicCtxKeySlotMessageAuthnCodeCtxOcspResponsePrivateKeyProtectedKeyImportCtxPublicKeyRandomGeneratorCtxSecureCounterSerializableSignerPrivateCtxSymmetricCipherCtxSymmetricKeySymmetricKeyWrapperCtxVerifierPublicCtxWriteableKeySlotX509DNX509ProviderFonctions
GetCryptoErrorDomainLoadCryptoProvider (ara::crypto)LoadFormatterLoadKeySlotLoadWriteableKeySlotLoadX509ProviderMakeErrorCodeTypes
AlgIdAlgIdStringAllowedUsageFlagsCertificateValidationOptionsFormatIdLoadCryptoProviderReadOnlyMemRegionReadWriteMemRegionTimestampX509ExtendedKeyUsageX509KeyUsageÉnumérations
CertificateValidationStatusCryptoErrcCryptoObjectTypeCryptoTransformOcspResponseStatusConstantes
kAllowDataDecryptionkAllowDataEncryptionkAllowDerivedPlaintextExportkAllowHashCalculationkAllowKeyAgreementkAllowKeyDerivationkAllowKeyUnwrappingkAllowKeyWrappingkAllowMackAllowPersistkAllowPlaintextExportkAllowRngInitkAllowSecuredExportkAllowSigGenerationkAllowSigVerificationkClientAuthkCodeSigningkConstrCrlSignkConstrDataEnciphermentkConstrDecipherOnlykConstrDigitalSignaturekConstrEncipherOnlykConstrKeyAgreementkConstrKeyCertSignkConstrKeyEnciphermentkConstrNonRepudiationkEmailProtectionkFormatDerEncodedkFormatPemEncodedkFormatRawValueOnlykIgnoreCrlkIgnoreNotAfterkIgnoreNotBeforekIgnoreUnknownCriticalExtensionskOcspOffkOcspResponseCompleteChainkOcspResponseTargetOnlykOCSPSigningkProprietaryFormatkServerAuthkTimeStampingCarte des thèmes
ara::crypto
42ara::crypto::cryp
23ara::crypto::x509
34Aucune donnée d'élément pour cette version
ara::crypto
Crypto Error Domain class that provides interfaces as defined by ara::core::ErrorDomain such as a name of the Crypto Error Domain or message
hérite de ara::core::ErrorDomain
Exception type thrown for CRYPTO errors.
hérite de ara::core::Exception
Formatter object interface.
128 bit secure counter made up of two uint64_t’s representing the most significant and least significant bits
Serializable object interface.
Return a reference to the global CryptoErrorDomain.
constexpr const ara::core::ErrorDomain & GetCryptoErrorDomain () noexcept;This factory method shall create or return the existing instance of a specific Crypto Provider.
ara::core::Result< cryp::CryptoProvider::Sptr > LoadCryptoProvider (const ara::core::InstanceSpecifier &iSpecify) noexcept;Factory that creates a Formatter.
ara::core::Result< Formatter::Sptr > LoadFormatter () noexcept;Load a read-only key slot. This factory method shall load the information associated with the specified KeySlot into a KeySlot object.
ara::core::Result< cryp::KeySlot::Sptr > LoadKeySlot (const ara::core::InstanceSpecifier &iSpecify) noexcept;Load a writeable key slot. This factory method shall load the information associated with the specified KeySlot into a WriteableKeySlot object.
ara::core::Result< cryp::WriteableKeySlot::Sptr > LoadWriteableKeySlot (const ara::core::InstanceSpecifier &iSpecify) noexcept;This factory method shall create or return the existing instance of the singleton X.509 Provider.
ara::core::Result< x509::X509Provider::Sptr > LoadX509Provider () noexcept;Makes Error Code instances from the Crypto Error Domain. The returned ErrorCode instance always references to CryptoErrorDomain.
constexpr ara::core::ErrorCode MakeErrorCode (CryptoErrorDomain::Errc code, ara::core::ErrorDomain::SupportDataType data) noexcept;Defines the error codes for the ara::crypto::CryptoErrorDomain
enum class CryptoErrc : ara::core::ErrorDomain::CodeType {...};Enumeration of all types of crypto objects, i.e. types of content that can be stored to a key slot.
enum class CryptoObjectType : std::uint8_t {...};Enumeration of cryptographic transformation directions.
enum class CryptoTransform : std::uint8_t {...};Type for holding StringView of algorithm according to standardized format described in the chapter ’Naming Convention’.
using AlgId = ara::core::StringView;Type for holding String of algorithm according to standardized format described in the chapter ’Naming Convention’.
using AlgIdString = ara::core::String;Type for holding bit-flags of allowed usages of a key.
using AllowedUsageFlags = std::uint32_t;A container type for the encoding format identifiers.
using FormatId = std::uint32_t;Type for holding StringView of algorithm according to standardized format described in the chapter ’Naming Convention’.
using AlgId = ara::core::StringView;Read-Only Memory Region (intended for [in] arguments)
using ReadOnlyMemRegion = ara::core::Span<const std::uint8_t>;Read-Write Memory Region (intended for [out] or [in/out] arguments)
using ReadWriteMemRegion = ara::core::Span<std::uint8_t>;Type for timestamps.
using Timestamp = std::chrono::time_point<std::chrono::system_clock, std::chrono::seconds>;The key can be used for data decryption.
constexpr AllowedUsageFlags kAllowDataDecryption {0x0002};The following constants define 1-bit values representing allowed usages. The key can be used for data encryption
constexpr AllowedUsageFlags kAllowDataEncryption {0x0001};The derived key can be exported in plaintext.
constexpr AllowedUsageFlags kAllowDerivedPlaintextExport {0x4000};The key can be used as input to a HashFunctionCtx.
constexpr AllowedUsageFlags kAllowHashCalculation {0x1000};The key can be used as private or public input to key agreement.
constexpr AllowedUsageFlags kAllowKeyAgreement {0x0020};The key can be used for key derivation.
constexpr AllowedUsageFlags kAllowKeyDerivation {0x0040};The key can be used as a key encryption key for key unwrapping or key decapsulation.
constexpr AllowedUsageFlags kAllowKeyUnwrapping {0x0100};The key can be used as a key encryption key for key wrapping or key encapsulation.
constexpr AllowedUsageFlags kAllowKeyWrapping {0x0080};The key can be used for MAC generation and verification.
constexpr AllowedUsageFlags kAllowMac {0x0004};The key can persisted.
constexpr AllowedUsageFlags kAllowPersist {0x0200};The key can be exported in plaintext.
constexpr AllowedUsageFlags kAllowPlaintextExport {0x2000};The symmetric key can be used for seeding of a RandomGeneratorCtx.
constexpr AllowedUsageFlags kAllowRngInit {0x0800};The key can be securely exported (protected export)
constexpr AllowedUsageFlags kAllowSecuredExport {0x0400};The key can be used for signature generation.
constexpr AllowedUsageFlags kAllowSigGeneration {0x0008};The key can be used for signature verification.
constexpr AllowedUsageFlags kAllowSigVerification {0x0010};Export DER-encoded value of an object.
constexpr FormatId kFormatDerEncoded {2};Export PEM-encoded value of an object.
constexpr FormatId kFormatPemEncoded {3};Export only raw value of an object, i.e., a plain byte array for symmetric keys and ISO/IEC 7816-8 / IEEE P1363 encoding for combined values.
constexpr FormatId kFormatRawValueOnly {1};Proprietary format that is only valid in the context of a CryptoProvider.
constexpr FormatId kProprietaryFormat {0};ara::crypto::cryp
Authenticated Cipher Context interface.
hérite de CryptoContext
A common interface of a mutable cryptographic context, i.e
base de AuthCipherCtx, DecryptorPrivateCtx, EncryptorPublicCtx, HashFunctionCtx, KeyAgreementPrivateCtx, KeyDecapsulatorPrivateCtx, KeyDerivationFunctionCtx, KeyEncapsulatorPublicCtx, MessageAuthnCodeCtx, ProtectedKeyImportCtx, RandomGeneratorCtx, SignerPrivateCtx, SymmetricCipherCtx, SymmetricKeyWrapperCtx, VerifierPublicCtx
A common interface for all cryptographic objects recognizable by the Crypto Provider.
hérite de ara::crypto::Serializable
base de PrivateKey, PublicKey, SymmetricKey
CryptoProviderInterface representing one implementation of a set of cryptographic primitives with a key storage.
Interface for asymmetric decryption.
hérite de CryptoContext
Interface for asymmetric encryption.
hérite de CryptoContext
Hash function interface.
hérite de CryptoContext
Key Agreement Private key Context interface.
hérite de CryptoContext
Asymmetric Key Encapsulation Mechanism (KEM) Private key Context interface.
hérite de CryptoContext
Key Derivation Function interface.
hérite de CryptoContext
Asymmetric Key Encapsulation Mechanism (KEM) Public key Context interface.
hérite de CryptoContext
KeySlot interface representing a storage location for a key in a CryptoProvider.
base de WriteableKeySlot
Keyed Message Authentication Code Context interface definition.
hérite de CryptoContext
Generalized Asymmetric Private Key interface.
hérite de CryptoObject
A contexts for importing secured data such as secret key-material.
hérite de CryptoContext
General Asymmetric Public Key interface.
hérite de CryptoObject
Interface of Random Number Generator Context.
hérite de CryptoContext
Signature Private key Context interface.
hérite de CryptoContext
Interface for Symmetric Cipher Operations.
hérite de CryptoContext
Symmetric Key interface.
hérite de CryptoObject
Context of a symmetric key wrap algorithm.
hérite de CryptoContext
Signature Verification Public key Context interface.
hérite de CryptoContext
WriteableKeySlot interface representing a writeable storage location for a key in a Crypto Provider.
hérite de KeySlot
ara::crypto::x509
X.509 Certificate interface.
hérite de ara::crypto::Serializable
Certificate Validation Context.
X.509 Certificate Validation Result.
Certificate Signing Request (CSR) object interface.
hérite de ara::crypto::Serializable
Interface of OcspResponse.
Interface of X.509 Distinguished Name (DN).
hérite de ara::crypto::Serializable
X.509 Provider interface.
Certificate Validation Status.
enum class CertificateValidationStatus : std::uint8_t {...};On-line Certificate Status Protocol (OCSP) Response Status.
enum class OcspResponseStatus : std::uint8_t {...};Type for holding bit-flags of certificate validation options.
using CertificateValidationOptions = std::uint32_t;X.509 v3 Extended Key Usage type definition.
using X509ExtendedKeyUsage = std::uint32_t;X.509 v3 Key Usage type definition.
using X509KeyUsage = std::uint32_t;TLS WWW client authentication.
constexpr X509ExtendedKeyUsage kClientAuth {0x4000};Signing of downloadable executable code.
constexpr X509ExtendedKeyUsage kCodeSigning {0x2000};The key can be used for Certificates Revokation Lists (CRL) signing.
constexpr X509KeyUsage kConstrCrlSign {0x0200};The key can be used for data encipherment.
constexpr X509KeyUsage kConstrDataEncipherment {0x1000};The enciphermet key can be used for deciphering only.
constexpr X509KeyUsage kConstrDecipherOnly {0x0080};The key can be used for digital signature production.
constexpr X509KeyUsage kConstrDigitalSignature {0x8000};The enciphermet key can be used for enciphering only.
constexpr X509KeyUsage kConstrEncipherOnly {0x0100};The key can be used for a key agreement protocol execution.
constexpr X509KeyUsage kConstrKeyAgreement {0x0800};The key can be used for certificates signing.
constexpr X509KeyUsage kConstrKeyCertSign {0x0400};The key can be used for key encipherment.
constexpr X509KeyUsage kConstrKeyEncipherment {0x2000};The key can be used in cases requiring the "non-repudiation" guarantee.
constexpr X509KeyUsage kConstrNonRepudiation {0x4000};Email protection.
constexpr X509ExtendedKeyUsage kEmailProtection {0x1000};ignore previously imported CRLs
constexpr CertificateValidationOptions kIgnoreCrl {0x0008};ignore the NotAfter field
constexpr CertificateValidationOptions kIgnoreNotAfter {0x0002};ignore the NotBefore field
constexpr CertificateValidationOptions kIgnoreNotBefore {0x0001};ignore all unknown critical extensions
constexpr CertificateValidationOptions kIgnoreUnknownCritical Extensions {0x0004};do not require OCSP response during certificate validation. This is the default behavior.
constexpr CertificateValidationOptions kOcspOff {0x0040};require OCSP response for all certificates of chain
constexpr CertificateValidationOptions kOcspResponseCompleteChain {0x0010};require OCSP response only for target certificate
constexpr CertificateValidationOptions kOcspResponseTargetOnly {0x0020};Signing OCSP responses.
constexpr X509ExtendedKeyUsage kOCSPSigning {0x0400};TLS WWW server authentication.
constexpr X509ExtendedKeyUsage kServerAuth {0x8000};Binding the hash of an object to a time.
constexpr X509ExtendedKeyUsage kTimeStamping {0x0800};Namespaces
- ara::crypto 5 Klassen, 7 freie Funktionen
- ara::crypto::cryp 23 Klassen, 0 freie Funktionen
- ara::crypto::x509 7 Klassen, 0 freie Funktionen
Diagramme de classes UML du module
Abgerundete Rahmen = Namespaces; hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); graue Boxen = modulfremde bzw. externe Basisklassen. Klicken öffnet die Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · Original allemand