DEENESPTFRRUARHIKOZHNL

модуль ara::crypto — Cryptography

Spezifikation: AUTOSAR_AP_SWS_Cryptography.pdf (R25-11) · 387 API-Records

Руководство по модулюСОЗДАНО ИИ

Предоставляет изолированные криптографические операции, управление ключами и сервисы сертификатов X.509 для приложений.
СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: b84ff51de547 Происхождение Открытые вопросы (1)
Причинный якорь: R25-11 Действует с R25-11 Заново синтезировано для этой версии спецификации.
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Предоставляет изолированные криптографические операции, управление ключами и сервисы сертификатов X.509 для приложений.

Функциональный кластер Cryptography предоставляет стандартизированные сервисы безопасности для симметричного и асимметричного шифрования, проверки подписи, а также безопасного управления ключами и сертификатами (PlatformDesign с. 71). Доступ к криптографическим операциям и постоянным слотам ключей строго изолирован через платформозависимые провайдеры и декларативно зафиксированные в манифесте спецификаторы экземпляров (SWS Cryptography с. 39). Обеспечение соблюдения ограничений на использование предотвращает компрометацию конфиденциального ключевого материала ([SWS_CRYPT_50092]).

Функциональный кластер Cryptography (ara::crypto) предоставляет комплексную архитектуру безопасности для AUTOSAR Adaptive Platform (PlatformDesign с. 71). Для защиты от скомпрометированных пользовательских приложений хранение ключей и криптографическое выполнение обычно инкапсулированы в изолированном демоне платформы или аппаратном модуле безопасности (HSM) (AUTOSAR AP EXP SWArchitecture с. 97, SWS Cryptography с. 87). Общая функциональность подразделяется на специализированные CryptoProvider для вычислительных примитивов, область Key Storage для постоянных слотов ключей (KeySlots), а также общемашинный X509Provider для управления сертификатами PKI (SWS Cryptography с. 39).

diag_crypto_arch App Adaptive Application Daemon Cryptography Daemon (ara::crypto) App->Daemon IPC / C++ API CryptoProvider CryptoProvider (HSM / Driver / Software) Daemon->CryptoProvider Primitive Execution KeyStorage Key Storage Provider (KeySlots) Daemon->KeyStorage Key Lifecycle X509Prov X.509 Provider (Certificates / CRL) Daemon->X509Prov PKI Services KeyStorage->CryptoProvider Key Deployment

Контекстная диаграмма: архитектурные связи и взаимосвязи компонентов функционального кластера Cryptography между приложением, демоном и провайдерами. Источники: SWS Cryptography с. 39, PlatformDesign с. 71, AUTOSAR AP EXP SWArchitecture с. 97.

Приложения создают криптографические контексты, такие как симметричные шифры ([SWS_CRYPT_20742]), аутентифицированные шифры ([SWS_CRYPT_20745]), хеш-функции ([SWS_CRYPT_20747]) или экземпляры Signer и Verifier ([SWS_CRYPT_20756], [SWS_CRYPT_20757]), через свой провайдер (AUTOSAR AP EXP SWArchitecture с. 99). Обработка следует детерминированному жизненному циклу: после привязки ключа (SetKey) трансформация инициируется через Start(), передается потоком через Update() и завершается с помощью Finish() (AUTOSAR AP TR SystemTests с. 206, EXP SWArchitecture с. 104). Неизменяемые AllowedUsageFlags эффективно предотвращают несанкционированное использование ключей ([SWS_CRYPT_50092], AUTOSAR AP TR SystemTests с. 177).

diag_context_state Uninit Uninitialized Ready Ready (Key Deployed) Uninit->Ready SetKey() Ready->Uninit Reset() Streaming Processing (Started / Update) Ready->Streaming Start() Streaming->Uninit Cancel() / Reset() Streaming->Streaming Update() / UpdateConfidentialData() Finished Finished / Digest Available Streaming->Finished Finish() / FinishEncrypt() Finished->Uninit Reset() Finished->Ready Start() (Re-use)

Диаграмма состояний: жизненный цикл контекстов криптографической трансформации от выделения памяти до сброса. Источники: [SWS_CRYPT_20742], [SWS_CRYPT_23911], [SWS_CRYPT_23625], [SWS_CRYPT_50046], [SWS_CRYPT_50212].

Сертификаты и CSR управляются через X509Provider ([SWS_CRYPT_40099], [SWS_CRYPT_40640]), в то время как контексты валидации проверяют цепочки сертификатов с учетом списков отзыва CRL ([SWS_CRYPT_50183]) и ответов OCSP ([SWS_CRYPT_50124]) (AUTOSAR AP TR SystemTests с. 194). Назначение KeySlots и сертификатов приложениям выполняется на основе модели в манифесте через InstanceSpecifier (AUTOSAR AP TPS ManifestSpecification с. 245, AUTOSAR AP TPS ManifestSpecification с. 649). Все интерфейсы работают с возвращаемыми значениями ara::core::Result без исключений и сигнализируют об ошибках через CryptoErrorDomain ([SWS_CRYPT_19902], SWS Cryptography с. 208).

Архитектура, домены безопасности и изоляция демона

Функциональный кластер Cryptography (ara::crypto) формирует центральную основу безопасности AUTOSAR Adaptive Platform и предоставляет базовые криптографические механизмы, управление ключами, а также сервисы сертификатов (PlatformDesign с. 71). Согласно модели доверия платформы, функциональные кластеры платформы относятся к доверенному фундаменту, тогда как Adaptive Applications выполняются в непривилегированном пользовательском пространстве (SWS Cryptography с. 37). Чтобы эффективно защитить ключевой материал и криптографические операции даже при потенциальной компрометации приложения, архитектура обычно построена на основе демона; само выполнение и хранение ключей остаются в изолированном процессе платформы или в доверенной среде выполнения (AUTOSAR AP EXP SWArchitecture с. 97, SWS Cryptography с. 87).

Архитектура разделяет криптографическую функциональность на три основных домена: CryptoProvider для вычислительных примитивов и преобразований ключей, область Key Storage (ara::crypto::keys) для постоянного хранения объектов, а также X509Provider (ara::crypto::x509) для управления сертификатами (SWS Cryptography с. 39, SWS Cryptography с. 87). На одном электронном блоке управления (ECU) могут параллельно существовать несколько специализированных экземпляров CryptoProvider, например, для подключения различных аппаратных модулей безопасности (HSM, TPM) или программных драйверов (SWS Cryptography с. 39). Однако между различными провайдерами намеренно отсутствует интероперабельность: криптографический объект или ключ принадлежит строго одному провайдеру и не может обрабатываться другим провайдером (SWS Cryptography с. 39). Эта строгая инкапсуляция, вероятно, обусловлена главным образом тем, что аппаратные домены безопасности физически принудительно устанавливают границы своих ключей, и дескрипторы ключей недействительны между доменами. Вопрос Q-63efe107cf111983 (открытый)

diag_crypto_arch App Adaptive Application Daemon Cryptography Daemon (ara::crypto) App->Daemon IPC / C++ API CryptoProvider CryptoProvider (HSM / Driver / Software) Daemon->CryptoProvider Primitive Execution KeyStorage Key Storage Provider (KeySlots) Daemon->KeyStorage Key Lifecycle X509Prov X.509 Provider (Certificates / CRL) Daemon->X509Prov PKI Services KeyStorage->CryptoProvider Key Deployment

Контекстная диаграмма: архитектурные связи и взаимосвязи компонентов функционального кластера Cryptography между приложением, демоном и провайдерами. Источники: SWS Cryptography с. 39, PlatformDesign с. 71, AUTOSAR AP EXP SWArchitecture с. 97.

Точки входа и инициализация криптографических провайдеров

Вход в модуль осуществляется через глобальные функции входа, которые служат фабриками для центральных интерфейсов абстракции (SWArchitecture с. 71). Приложения создают или загружают экземпляр CryptoProvider через функцию [SWS_CRYPT_20099] с указанием смоделированного ara::core::InstanceSpecifier. Для управления сертификатами во всей системе существует ровно один глобальный провайдер сертификатов, который загружается через [SWS_CRYPT_40099] (SWS Cryptography с. 39). Дополнительно доступны глобальные вспомогательные службы, включая прямое создание случайных данных через [SWS_CRYPT_30098], а также запрос аппаратного счетчика безопасности через [SWS_CRYPT_20098] (SWArchitecture с. 71).

Постоянные ключевые ресурсы не инстанцируются напрямую, а загружаются через логические слоты ключей (KeySlots). Для этого среда выполнения предоставляет функции [SWS_CRYPT_50004] для доступа только на чтение и [SWS_CRYPT_50005] для слотов ключей с возможностью записи, которые валидируют переданный идентификатор экземпляра на соответствие конфигурации полномочий (SWS Cryptography с. 87, AUTOSAR AP TPS ManifestSpecification с. 649). Через полученный экземпляр KeySlot можно запросить связанный экземпляр провайдера с помощью [SWS_CRYPT_30403], благодаря чему сохраняется строгая привязка между местом хранения и средой выполнения (SWS Cryptography с. 39).

Как только экземпляр CryptoProvider становится доступен, он функционирует как центральная фабрика для инстанцирования конкретных криптографических рабочих контекстов (AUTOSAR AP EXP SWArchitecture с. 99). К создаваемым контекстам относятся, в частности, контексты для генераторов случайных чисел ([SWS_CRYPT_20741]), симметричных блочных и потоковых шифров ([SWS_CRYPT_20742]), аутентифицированного шифрования ([SWS_CRYPT_20745]), кодов аутентификации сообщений ([SWS_CRYPT_20746]), криптографических хеш-функций ([SWS_CRYPT_20747]), асимметричного шифрования или расшифрования ([SWS_CRYPT_20750], [SWS_CRYPT_20751]), а также контексты подписи и верификации ([SWS_CRYPT_20756], [SWS_CRYPT_20757]) (EXP SWArchitecture с. 99).

Криптографические контексты трансформации и обработка данных

Обработка криптографических данных в ara::crypto следует строго основанному на состояниях жизненному циклу, который обеспечивает развязку конфигурации алгоритма, привязки ключа и потоковой обработки (AUTOSAR AP TR SystemTests с. 211). После выделения контекста через провайдер он изначально находится в неинициализированном состоянии. Только после передачи совместимого ключа через типоспецифичные перегрузки SetKey() — например, для симметричных ключей ([SWS_CRYPT_23911]), закрытых ключей ([SWS_CRYPT_23515]) или непосредственно из KeySlot ([SWS_CRYPT_50043]) — контекст переходит в готовое состояние (AUTOSAR AP TR SystemTests с. 206).

Для потоковой обработки трансформация инициируется с помощью Start(), опционально с передачей вектора инициализации или контекста ([SWS_CRYPT_22110], [SWS_CRYPT_23625], [SWS_CRYPT_50020]). Затем блоки данных могут поэтапно подаваться через Update() ([SWS_CRYPT_21113], [SWS_CRYPT_22113], [SWS_CRYPT_50139]). При аутентифицированном шифровании (AEAD) интерфейс строго разделяет ассоциированные данные, обрабатываемые через [SWS_CRYPT_20313], и конфиденциальные полезные данные, передаваемые через [SWS_CRYPT_50074] (EXP SWArchitecture с. 104). Завершение трансформации выполняется через Finish() или FinishEncrypt() ([SWS_CRYPT_21115], [SWS_CRYPT_23618], [SWS_CRYPT_50075]), после чего теги аутентификации или контрольные суммы могут быть считаны через GetDigest() ([SWS_CRYPT_21116], [SWS_CRYPT_22116]).

Помимо потокового режима, такие классы контекстов, как симметричные шифры и аутентифицированные шифры, поддерживают компактные однократные вызовы через [SWS_CRYPT_50047] или [SWS_CRYPT_50078], благодаря чему короткие полезные нагрузки могут эффективно шифроваться или расшифровываться без многоэтапного вызова протокола (SWS Cryptography с. 58). Если текущую операцию требуется прервать, вызов Cancel() ([SWS_CRYPT_50023], [SWS_CRYPT_50046]) или Reset() ([SWS_CRYPT_50212]) детерминированно возвращает контекст в очищенное исходное состояние (EXP SWArchitecture с. 100).

diag_context_state Uninit Uninitialized Ready Ready (Key Deployed) Uninit->Ready SetKey() Ready->Uninit Reset() Streaming Processing (Started / Update) Ready->Streaming Start() Streaming->Uninit Cancel() / Reset() Streaming->Streaming Update() / UpdateConfidentialData() Finished Finished / Digest Available Streaming->Finished Finish() / FinishEncrypt() Finished->Uninit Reset() Finished->Ready Start() (Re-use)

Диаграмма состояний: жизненный цикл контекстов криптографической трансформации от выделения памяти до сброса. Источники: [SWS_CRYPT_20742], [SWS_CRYPT_23911], [SWS_CRYPT_23625], [SWS_CRYPT_50046], [SWS_CRYPT_50212].

Управление ключами, инкапсуляция и обеспечение соблюдения полномочий

Криптографические ключи типизируются в объектной модели как CryptoObject или RestrictedUseObject (AUTOSAR AP EXP SWArchitecture с. 111, EXP SWArchitecture с. 111). Стандарт платформы различает симметричные ключи (SymmetricKey), закрытые асимметричные ключи (PrivateKey) и открытые ключи (PublicKey) (SWS Cryptography с. 291). Ключевой материал может генерироваться напрямую через CryptoProvider ([SWS_CRYPT_20721], [SWS_CRYPT_20722]) или выводиться из существующего ключевого материала путем параметризации KeyDerivationFunctionCtx ([SWS_CRYPT_20748]) базовым ключом и его выполнения через [SWS_CRYPT_21515] (EXP SWArchitecture с. 108).

Для обеспечения соблюдения принципа наименьших привилегий каждый объект ключа содержит неизменяемые ограничения на использование (AllowedUsageFlags), которые могут быть запрошены через [SWS_CRYPT_50092] (AUTOSAR AP TR SystemTests с. 177). Криптографический стек при каждой попытке привязки (SetKey) проверяет, авторизована ли операция целевого контекста (например, шифрование, подписание, вывод или экспорт) флагами ключа, и строго отклоняет недопустимые варианты использования (AUTOSAR AP TR SystemTests с. 177, SWArchitecture с. 95). Стандартное назначение для алгоритма можно определить через [SWS_CRYPT_20955].

Для безопасного обмена ключами модуль реализует несколько стандартизированных процедур: при асимметричном согласовании ключей (Диффи — Хеллман / ECDH) через [SWS_CRYPT_20758] создается KeyAgreementPrivateCtx, к которому привязывается закрытый ключ ([SWS_CRYPT_21313]); затем метод [SWS_CRYPT_21312] с привлечением открытого ключа противоположной стороны вычисляет общий симметричный целевой ключ (AUTOSAR AP TR SystemTests с. 179). В механизме инкапсуляции ключей (KEM) KeyEncapsulatorPublicCtx ([SWS_CRYPT_20752]) инкапсулирует симметричный ключ с помощью [SWS_CRYPT_21813], в то время как противоположная сторона выполняет декапсуляцию через KeyDecapsulatorPrivateCtx ([SWS_CRYPT_20753]) посредством [SWS_CRYPT_21412] (AUTOSAR AP TR SystemTests с. 173, AUTOSAR TR AdaptivePlatformSystemTests с. 188). Для защищенной транспортировки ключей доступны упаковка ключей (Key Wrapping) ([SWS_CRYPT_24014], [SWS_CRYPT_24016]) и защищенный экспорт ([SWS_CRYPT_20728]) (AUTOSAR AP TR SystemTests с. 174, AUTOSAR AP TR SystemTests с. 182).

Асимметричное согласование ключей (ECDH) и симметричная деривацияApp (CRYPTOApp01)CryptoProviderKeyAgreementPrivateCtxSymmetricKeyCreateKeyAgreementPrivateCtx(algId)Result<KeyAgreementPrivateCtx::Sptr>SetKey(privKey)Result<void>AgreeKey(otherSidePublicKey, targetAlgId, allowedUsage)Создать объект симметричного ключаResult<SymmetricKey::Sptr>

Диаграмма последовательности: асимметричное согласование ключей через Диффи — Хеллмана и формирование симметричных рабочих ключей. Источники: [SWS_CRYPT_20758], [SWS_CRYPT_21313], [SWS_CRYPT_21312], AUTOSAR AP TR SystemTests с. 179.

Асимметричные подписи обрабатываются через раздельные контексты: подписание выполняется через SignerPrivateCtx ([SWS_CRYPT_20756]) и метод [SWS_CRYPT_23512], тогда как верификация осуществляется через VerifierPublicCtx ([SWS_CRYPT_20757]) и метод [SWS_CRYPT_24112] (AUTOSAR AP TR SystemTests с. 164, SWArchitecture с. 84). Если KeySlot обновляется в фоновом режиме привилегированными службами управления (например, при смене ключей OTA), использующие библиотеки могут быть уведомлены через наблюдатель обновлений (Update-Observer) посредством [SWS_CRYPT_30404] для синхронной подгрузки своего ключевого материала (AUTOSAR AP SWS Cryptography с. 36).

Формирование и верификация подписи через SignerPrivateCtx и VerifierPublicCtxApplikationCryptoProviderSignerPrivateCtxVerifierPublicCtxCreateSignerPrivateCtx(algId)Result<SignerPrivateCtx::Sptr>SetKey(privKey)Result<void>Sign(message, signatureBuffer, format)Result<std::size_t> (размер подписи)Use Case: Верификация подписиCreateVerifierPublicCtx(algId)Result<VerifierPublicCtx::Sptr>SetKey(pubKey)Result<void>Verify(message, signature, format)Result<bool> (действительна / недействительна)

Диаграмма последовательности: процесс формирования и верификации подписи с использованием раздельных закрытых и открытых контекстов. Источники: [SWS_CRYPT_20756], [SWS_CRYPT_23515], [SWS_CRYPT_23512], [SWS_CRYPT_20757], [SWS_CRYPT_24115], [SWS_CRYPT_24112], AUTOSAR AP TR SystemTests с. 164.

Управление сертификатами X.509, валидация и группы

Подсистема ara::crypto::x509 предоставляет стандартизированные функции для инфраструктур открытых ключей (PKI) (EXP SWArchitecture с. 116). Центральный X509Provider ([SWS_CRYPT_40099]) поддерживает как энергонезависимое сессионное хранилище, так и персистентные хранилища (SWS Cryptography с. 39). Сертификаты и цепочки разбираются из байтовых буферов с помощью [SWS_CRYPT_40614] или [SWS_CRYPT_40616]. Для запроса новых идентификационных сертификатов приложения могут генерировать криптографически подписанные запросы на подпись сертификата (CSR) через [SWS_CRYPT_40640], при этом контекст подписывающей стороны (Signer) и различающееся имя (DN) передаются через [SWS_CRYPT_50186] (AUTOSAR AP TR SystemTests с. 189).

Для проверки соответствия и срока действия приложение инстанцирует CertificateValidationCtx через [SWS_CRYPT_50125]. В этот контекст добавляются якоря доверия (Trust Anchors) через [SWS_CRYPT_50117], параметры валидации определяются через [SWS_CRYPT_50120], а эталонные метки времени сохраняются через [SWS_CRYPT_50121]. Иерархическая проверка цепочки по отношению к цепочке доверия выполняется с помощью [SWS_CRYPT_50122] или [SWS_CRYPT_50123] (AUTOSAR AP TR SystemTests с. 194). Для учета отзывов сертификатов могут импортироваться списки отзыва сертификатов (CRL) ([SWS_CRYPT_50183]) либо в статус валидации могут включаться онлайн-запросы статуса сертификатов (OCSP согласно RFC 6960) через [SWS_CRYPT_40626], [SWS_CRYPT_50185] и [SWS_CRYPT_50124] (AUTOSAR AP TR SystemTests с. 194).

Чтобы отвязать потребителей сертификатов от отдельных экземпляров сертификатов при смене ключей, манифест поддерживает концепцию CryptoCertificateGroup (AUTOSAR AP TPS ManifestSpecification с. 657). Потребляющие приложения загружают всю группу логически связанных сертификатов через [SWS_CRYPT_50126], тогда как привилегированные службы администрирования могут динамически заменять или очищать сертификаты через [SWS_CRYPT_50127] и [SWS_CRYPT_50128] (AUTOSAR AP TPS ManifestSpecification с. 657).

Валидация сертификатов X.509 с цепочкой сертификатов, CRL и OCSPApplikationX509ProviderValidationCtxCreateCertificateValidationCtx()Result<CertificateValidationCtx::Sptr>AddTrustedCertificate(rootCert)Result<void>ImportCrl(instanceSpecifier, crlBytes, format)Result<CertificateValidationStatus>AddOcspResponse(ocspResponse, issuerCert)Result<CertificateValidationStatus>ValidateCertificate(targetCert)Result<CertificateValidationResult::Sptrc>

Диаграмма последовательности: валидация сертификатов X.509 с цепочкой сертификатов, импортом CRL и онлайн-проверкой статуса OCSP. Источники: [SWS_CRYPT_40099], [SWS_CRYPT_50125], [SWS_CRYPT_50122], [SWS_CRYPT_50183], [SWS_CRYPT_50124], AUTOSAR AP TR SystemTests с. 194.

Моделирование манифеста, портовые интерфейсы и развертывание

Интеграция криптографических ресурсов в общую архитектуру транспортного средства осуществляется декларативно через метамодель AUTOSAR в манифесте ARXML (AUTOSAR AP TPS ManifestSpecification с. 244). Программные компоненты моделируют свои требования безопасности на уровне проектирования через порты (RPortPrototype), типизируемые специализациями CryptoInterface: CryptoKeySlotInterface для ключевых слотов, CryptoCertificateInterface для ресурсов сертификатов и CryptoProviderInterface для доступа к провайдерам выполнения (TPS ManifestSpecification с. 167, AUTOSAR AP TPS ManifestSpecification с. 245). Атрибуты интерфейсов неизменно определяют, предоставляются ли права на чтение или запись (writeAccess), и какие типы объектов являются допустимыми (TPS ManifestSpecification с. 168, TPS ManifestSpecification с. 438).

В манифесте развертывания целевая конфигурация (Target Configuration) связывает абстрактные прототипы портов с конкретными физическими ресурсами платформы (AUTOSAR AP TPS ManifestSpecification с. 649). Элемент метамодели CryptoKeySlotToPortPrototypeMapping сопоставляет порт процесса с CryptoKeySlot, объявленным в CryptoModuleInstantiation машины (TPS ManifestSpecification с. 614, TPS ManifestSpecification с. 646). Аналогичным образом CryptoCertificateToPortPrototypeMapping сопоставляет сертификаты (TPS ManifestSpecification с. 655). Во время выполнения путь порта в манифесте представляет собой ara::core::InstanceSpecifier, который код приложения передает в функции загрузки, такие как [SWS_CRYPT_50004] (ManifestSpecification с. 154).

Для платформенных взаимодействий между функциональными кластерами — например, между Communication Management (SecOC, IPsec, TLS) и криптографическим стеком — классические прототипы портов отсутствуют (TPS ManifestSpecification с. 861). Здесь InstanceSpecifier вместо этого формируется элементами, производными от FunctionalClusterInteractsWithFunctionalClusterMapping, например ComKeyToCryptoKeySlotMapping или SecOcJobMapping (TPS ManifestSpecification с. 861, TPS ManifestSpecification с. 864, ManifestSpecification с. 411). Защита персистентности (Persistency Deployment) и контрольные суммы программных кластеров также подключают свои ключи и провайдеры через эти стандартизированные сопоставления манифеста (TPS ManifestSpecification с. 867, TPS ManifestSpecification с. 896).

Поведение при ошибке

Концепция обработки ошибок криптографического модуля следует строгим предписаниям Adaptive Platform для отказоустойчивого кода без исключений (noexcept) (SWS Cryptography с. 145). Все синхронные операции возвращают ошибочные ситуации через обобщенный тип результата ara::core::Result<T, ara::core::ErrorCode> (SWS Cryptography с. 208). Коды ошибок закреплены в отдельном домене ошибок, представляемом через [SWS_CRYPT_19902]; его имя можно запросить через [SWS_CRYPT_19950], а текстовое описание ошибки — через [SWS_CRYPT_19953]. Для приложений, явно использующих обработку исключений, стек предоставляет тип исключения CryptoException ([SWS_CRYPT_19906]) и вспомогательную функцию [SWS_CRYPT_19954].

Типичные функциональные коды ошибок включают нарушения контекста, такие как CryptoErrc::kUninitializedContext, если криптографические операции инициируются до вызова SetKey(), или CryptoErrc::kInvalidInputSize, если переданные входные буферы данных не соответствуют требуемому растру блоков (SWS Cryptography с. 208). При операциях сериализации и преобразования CryptoErrc::kUnknownIdentifier сигнализирует о неподдерживаемых значениях аргументов, а CryptoErrc::kIncompatibleArguments — о несовместимых комбинациях параметров (SWS Cryptography с. 145). При доступе к ключевым ресурсам стек предотвращает несанкционированный доступ возвратом kAccessViolation (SWS Cryptography с. 87). При синтаксическом анализе некорректных пользовательских расширений сертификатов X.509 парсер аварийно прерывает работу с ошибкой CryptoErrc::kRuntimeFault (SWS Cryptography с. 280, SWS Cryptography с. 356).

Чтобы восстановить определенное состояние в контексте после возникшей ошибки и избежать утечек памяти или зависших потоковых буферов в демоне, вызывающая сторона должна очистить контекст. Это происходит либо целенаправленно путем вызова Cancel() ([SWS_CRYPT_50046], [SWS_CRYPT_50089]), в результате чего незавершенные преобразования отбрасываются, либо через Reset() ([SWS_CRYPT_50212]), что полностью возвращает контекст в состояние, предшествующее привязке ключа (EXP SWArchitecture с. 100).

Дальнейшие подробные доказательства

Спецификация модуля Cryptography опирается на ряд ключевых требований и архитектурных документов, которые классифицируются ниже:

Настоящее руководство по модулю было сформировано ИИ-ассистентом курации на основе спецификации AUTOSAR Adaptive R25-11.

function: 261 type alias: 43 variable: 43 class: 34 enumeration: 5 struct: 1

Карта тем

Подробный вид

Выберите элемент в оглавлении.

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

наследует от ara::core::ErrorDomain

CryptoException класс

Exception type thrown for CRYPTO errors.

наследует от ara::core::Exception

Formatter класс

Formatter object interface.

SecureCounter класс

128 bit secure counter made up of two uint64_t’s representing the most significant and least significant bits

Serializable класс

Serializable object interface.

GetCryptoErrorDomain функция

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;
LoadFormatter функция

Factory that creates a Formatter.

ara::core::Result< Formatter::Sptr > LoadFormatter () noexcept;
LoadKeySlot функция

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;
LoadWriteableKeySlot функция

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;
LoadX509Provider функция

This factory method shall create or return the existing instance of the singleton X.509 Provider.

ara::core::Result< x509::X509Provider::Sptr > LoadX509Provider () noexcept;
MakeErrorCode функция

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;
CryptoErrc перечисление

Defines the error codes for the ara::crypto::CryptoErrorDomain

enum class CryptoErrc : ara::core::ErrorDomain::CodeType {...};
CryptoObjectType перечисление

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 {...};
CryptoTransform перечисление

Enumeration of cryptographic transformation directions.

enum class CryptoTransform : std::uint8_t {...};
AlgId псевдоним типа

Type for holding StringView of algorithm according to standardized format described in the chapter ’Naming Convention’.

using AlgId = ara::core::StringView;
AlgIdString псевдоним типа

Type for holding String of algorithm according to standardized format described in the chapter ’Naming Convention’.

using AlgIdString = ara::core::String;
AllowedUsageFlags псевдоним типа

Type for holding bit-flags of allowed usages of a key.

using AllowedUsageFlags = std::uint32_t;
FormatId псевдоним типа

A container type for the encoding format identifiers.

using FormatId = std::uint32_t;
LoadCryptoProvider псевдоним типа

Type for holding StringView of algorithm according to standardized format described in the chapter ’Naming Convention’.

ReadOnlyMemRegion псевдоним типа

Read-Only Memory Region (intended for [in] arguments)

using ReadOnlyMemRegion = ara::core::Span<const std::uint8_t>;
ReadWriteMemRegion псевдоним типа

Read-Write Memory Region (intended for [out] or [in/out] arguments)

using ReadWriteMemRegion = ara::core::Span<std::uint8_t>;
Timestamp псевдоним типа
kAllowDataDecryption переменная

The key can be used for data decryption.

constexpr AllowedUsageFlags kAllowDataDecryption {0x0002};
kAllowDataEncryption переменная

The following constants define 1-bit values representing allowed usages. The key can be used for data encryption

constexpr AllowedUsageFlags kAllowDataEncryption {0x0001};
kAllowDerivedPlaintextExport переменная

The derived key can be exported in plaintext.

constexpr AllowedUsageFlags kAllowDerivedPlaintextExport {0x4000};
kAllowHashCalculation переменная

The key can be used as input to a HashFunctionCtx.

constexpr AllowedUsageFlags kAllowHashCalculation {0x1000};
kAllowKeyAgreement переменная

The key can be used as private or public input to key agreement.

constexpr AllowedUsageFlags kAllowKeyAgreement {0x0020};
kAllowKeyDerivation переменная

The key can be used for key derivation.

constexpr AllowedUsageFlags kAllowKeyDerivation {0x0040};
kAllowKeyUnwrapping переменная

The key can be used as a key encryption key for key unwrapping or key decapsulation.

constexpr AllowedUsageFlags kAllowKeyUnwrapping {0x0100};
kAllowKeyWrapping переменная

The key can be used as a key encryption key for key wrapping or key encapsulation.

constexpr AllowedUsageFlags kAllowKeyWrapping {0x0080};
kAllowMac переменная

The key can be used for MAC generation and verification.

constexpr AllowedUsageFlags kAllowMac {0x0004};
kAllowPersist переменная

The key can persisted.

constexpr AllowedUsageFlags kAllowPersist {0x0200};
kAllowPlaintextExport переменная

The key can be exported in plaintext.

constexpr AllowedUsageFlags kAllowPlaintextExport {0x2000};
kAllowRngInit переменная

The symmetric key can be used for seeding of a RandomGeneratorCtx.

constexpr AllowedUsageFlags kAllowRngInit {0x0800};
kAllowSecuredExport переменная

The key can be securely exported (protected export)

constexpr AllowedUsageFlags kAllowSecuredExport {0x0400};
kAllowSigGeneration переменная

The key can be used for signature generation.

constexpr AllowedUsageFlags kAllowSigGeneration {0x0008};
kAllowSigVerification переменная

The key can be used for signature verification.

constexpr AllowedUsageFlags kAllowSigVerification {0x0010};
kFormatDerEncoded переменная

Export DER-encoded value of an object.

constexpr FormatId kFormatDerEncoded {2};
kFormatPemEncoded переменная

Export PEM-encoded value of an object.

constexpr FormatId kFormatPemEncoded {3};
kFormatRawValueOnly переменная

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};
kProprietaryFormat переменная

Proprietary format that is only valid in the context of a CryptoProvider.

constexpr FormatId kProprietaryFormat {0};

ara::crypto::cryp

AuthCipherCtx класс

Authenticated Cipher Context interface.

наследует от CryptoContext

CryptoObject класс

A common interface for all cryptographic objects recognizable by the Crypto Provider.

наследует от ara::crypto::Serializable

база для PrivateKey, PublicKey, SymmetricKey

CryptoProvider класс

CryptoProviderInterface representing one implementation of a set of cryptographic primitives with a key storage.

Interface for asymmetric decryption.

наследует от CryptoContext

Interface for asymmetric encryption.

наследует от CryptoContext

HashFunctionCtx класс

Hash function interface.

наследует от CryptoContext

Key Agreement Private key Context interface.

наследует от CryptoContext

Asymmetric Key Encapsulation Mechanism (KEM) Private key Context interface.

наследует от CryptoContext

Key Derivation Function interface.

наследует от CryptoContext

Asymmetric Key Encapsulation Mechanism (KEM) Public key Context interface.

наследует от CryptoContext

KeySlot класс

KeySlot interface representing a storage location for a key in a CryptoProvider.

база для WriteableKeySlot

Keyed Message Authentication Code Context interface definition.

наследует от CryptoContext

PrivateKey класс

Generalized Asymmetric Private Key interface.

наследует от CryptoObject

A contexts for importing secured data such as secret key-material.

наследует от CryptoContext

PublicKey класс

General Asymmetric Public Key interface.

наследует от CryptoObject

Interface of Random Number Generator Context.

наследует от CryptoContext

SignerPrivateCtx класс

Signature Private key Context interface.

наследует от CryptoContext

Interface for Symmetric Cipher Operations.

наследует от CryptoContext

SymmetricKey класс

Symmetric Key interface.

наследует от CryptoObject

Context of a symmetric key wrap algorithm.

наследует от CryptoContext

Signature Verification Public key Context interface.

наследует от CryptoContext

WriteableKeySlot класс

WriteableKeySlot interface representing a writeable storage location for a key in a Crypto Provider.

наследует от KeySlot

ara::crypto::x509

Certificate класс

X.509 Certificate interface.

наследует от ara::crypto::Serializable

Certificate Validation Context.

X.509 Certificate Validation Result.

CertSignRequest класс

Certificate Signing Request (CSR) object interface.

наследует от ara::crypto::Serializable

OcspResponse класс

Interface of OcspResponse.

X509DN класс

Interface of X.509 Distinguished Name (DN).

наследует от ara::crypto::Serializable

X509Provider класс

X.509 Provider interface.

CertificateValidationStatus перечисление

Certificate Validation Status.

enum class CertificateValidationStatus : std::uint8_t {...};
OcspResponseStatus перечисление

On-line Certificate Status Protocol (OCSP) Response Status.

enum class OcspResponseStatus : std::uint8_t {...};
CertificateValidationOptions псевдоним типа

Type for holding bit-flags of certificate validation options.

using CertificateValidationOptions = std::uint32_t;
X509ExtendedKeyUsage псевдоним типа

X.509 v3 Extended Key Usage type definition.

using X509ExtendedKeyUsage = std::uint32_t;
X509KeyUsage псевдоним типа

X.509 v3 Key Usage type definition.

using X509KeyUsage = std::uint32_t;
kClientAuth переменная

TLS WWW client authentication.

constexpr X509ExtendedKeyUsage kClientAuth {0x4000};
kCodeSigning переменная

Signing of downloadable executable code.

constexpr X509ExtendedKeyUsage kCodeSigning {0x2000};
kConstrCrlSign переменная

The key can be used for Certificates Revokation Lists (CRL) signing.

constexpr X509KeyUsage kConstrCrlSign {0x0200};
kConstrDataEncipherment переменная

The key can be used for data encipherment.

constexpr X509KeyUsage kConstrDataEncipherment {0x1000};
kConstrDecipherOnly переменная

The enciphermet key can be used for deciphering only.

constexpr X509KeyUsage kConstrDecipherOnly {0x0080};
kConstrDigitalSignature переменная

The key can be used for digital signature production.

constexpr X509KeyUsage kConstrDigitalSignature {0x8000};
kConstrEncipherOnly переменная

The enciphermet key can be used for enciphering only.

constexpr X509KeyUsage kConstrEncipherOnly {0x0100};
kConstrKeyAgreement переменная

The key can be used for a key agreement protocol execution.

constexpr X509KeyUsage kConstrKeyAgreement {0x0800};
kConstrKeyCertSign переменная

The key can be used for certificates signing.

constexpr X509KeyUsage kConstrKeyCertSign {0x0400};
kConstrKeyEncipherment переменная

The key can be used for key encipherment.

constexpr X509KeyUsage kConstrKeyEncipherment {0x2000};
kConstrNonRepudiation переменная

The key can be used in cases requiring the "non-repudiation" guarantee.

constexpr X509KeyUsage kConstrNonRepudiation {0x4000};
kEmailProtection переменная

Email protection.

constexpr X509ExtendedKeyUsage kEmailProtection {0x1000};
kIgnoreCrl переменная

ignore previously imported CRLs

constexpr CertificateValidationOptions kIgnoreCrl {0x0008};
kIgnoreNotAfter переменная

ignore the NotAfter field

constexpr CertificateValidationOptions kIgnoreNotAfter {0x0002};
kIgnoreNotBefore переменная

ignore the NotBefore field

constexpr CertificateValidationOptions kIgnoreNotBefore {0x0001};

ignore all unknown critical extensions

constexpr CertificateValidationOptions kIgnoreUnknownCritical Extensions {0x0004};
kOcspOff переменная

do not require OCSP response during certificate validation. This is the default behavior.

constexpr CertificateValidationOptions kOcspOff {0x0040};
kOcspResponseCompleteChain переменная

require OCSP response for all certificates of chain

constexpr CertificateValidationOptions kOcspResponseCompleteChain {0x0010};
kOcspResponseTargetOnly переменная

require OCSP response only for target certificate

constexpr CertificateValidationOptions kOcspResponseTargetOnly {0x0020};
kOCSPSigning переменная

Signing OCSP responses.

constexpr X509ExtendedKeyUsage kOCSPSigning {0x0400};
kServerAuth переменная

TLS WWW server authentication.

constexpr X509ExtendedKeyUsage kServerAuth {0x8000};
kTimeStamping переменная

Binding the hash of an object to a time.

constexpr X509ExtendedKeyUsage kTimeStamping {0x0800};

Пространства имён

UML-диаграмма классов модуля

Abgerundete Rahmen = Namespaces; hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); graue Boxen = modulfremde bzw. externe Basisklassen. Klicken öffnet die Klassenseite.

G cluster_1 ara::crypto cluster_2 ara::crypto::cryp cluster_3 ara::crypto::x509 nara__crypto__Serializable855 Serializable nara__crypto__CryptoErrorDomain690 CryptoErrorDomain nara__core__ErrorDomain335 ara::core::ErrorDomain nara__crypto__CryptoErrorDomain690->nara__core__ErrorDomain335 nara__crypto__CryptoException764 CryptoException nara__core__Exception792 ara::core::Exception nara__crypto__CryptoException764->nara__core__Exception792 nara__crypto__Formatter631 Formatter nara__crypto__SecureCounter126 «struct» SecureCounter nara__crypto__cryp__AuthCipherCtx142 AuthCipherCtx nara__crypto__cryp__CryptoContext85 CryptoContext nara__crypto__cryp__AuthCipherCtx142->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__CryptoObject679 CryptoObject nara__crypto__cryp__CryptoObject679->nara__crypto__Serializable855 nara__crypto__cryp__DecryptorPrivateCtx616 DecryptorPrivateCtx nara__crypto__cryp__DecryptorPrivateCtx616->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__EncryptorPublicCtx829 EncryptorPublicCtx nara__crypto__cryp__EncryptorPublicCtx829->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__HashFunctionCtx412 HashFunctionCtx nara__crypto__cryp__HashFunctionCtx412->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__KeyAgreementPrivateCtx203 KeyAgreementPrivateCtx nara__crypto__cryp__KeyAgreementPrivateCtx203->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__KeyDecapsulatorPrivateCtx748 KeyDecapsulatorPrivateCtx nara__crypto__cryp__KeyDecapsulatorPrivateCtx748->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__KeyDerivationFunctionCtx485 KeyDerivationFunctionCtx nara__crypto__cryp__KeyDerivationFunctionCtx485->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__KeyEncapsulatorPublicCtx699 KeyEncapsulatorPublicCtx nara__crypto__cryp__KeyEncapsulatorPublicCtx699->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__KeySlot637 KeySlot nara__crypto__cryp__MessageAuthnCodeCtx845 MessageAuthnCodeCtx nara__crypto__cryp__MessageAuthnCodeCtx845->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__PrivateKey762 PrivateKey nara__crypto__cryp__PrivateKey762->nara__crypto__cryp__CryptoObject679 nara__crypto__cryp__ProtectedKeyImportCtx279 ProtectedKeyImportCtx nara__crypto__cryp__ProtectedKeyImportCtx279->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__PublicKey940 PublicKey nara__crypto__cryp__PublicKey940->nara__crypto__cryp__CryptoObject679 nara__crypto__cryp__RandomGeneratorCtx512 RandomGeneratorCtx nara__crypto__cryp__RandomGeneratorCtx512->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__SignerPrivateCtx943 SignerPrivateCtx nara__crypto__cryp__SignerPrivateCtx943->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__SymmetricCipherCtx167 SymmetricCipherCtx nara__crypto__cryp__SymmetricCipherCtx167->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__SymmetricKey111 SymmetricKey nara__crypto__cryp__SymmetricKey111->nara__crypto__cryp__CryptoObject679 nara__crypto__cryp__SymmetricKeyWrapperCtx465 SymmetricKeyWrapperCtx nara__crypto__cryp__SymmetricKeyWrapperCtx465->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__VerifierPublicCtx35 VerifierPublicCtx nara__crypto__cryp__VerifierPublicCtx35->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__WriteableKeySlot529 WriteableKeySlot nara__crypto__cryp__WriteableKeySlot529->nara__crypto__cryp__KeySlot637 nara__crypto__cryp__CryptoProvider844 CryptoProvider nara__crypto__x509__Certificate240 Certificate nara__crypto__x509__Certificate240->nara__crypto__Serializable855 nara__crypto__x509__CertSignRequest934 CertSignRequest nara__crypto__x509__CertSignRequest934->nara__crypto__Serializable855 nara__crypto__x509__X509DN930 X509DN nara__crypto__x509__X509DN930->nara__crypto__Serializable855 nara__crypto__x509__CertificateValidationCtx565 CertificateValidationCtx nara__crypto__x509__CertificateValidationResult372 CertificateValidationResult nara__crypto__x509__OcspResponse358 OcspResponse nara__crypto__x509__X509Provider937 X509Provider