Autosar Crypto Interface学习笔记

文章目录

    • 前言
    • Functional specification
      • Error classification
      • Error detection
    • API specification
    • Type Definitions
    • Function definitions
      • General API
        • CryIf_Init
        • CryIf_GetVersionInfo
      • Job Processing Interface
        • CryIf_ProcessJob
        • Dispatch Key IDs匹配KeyId
      • Job Cancellation Interface
        • CryIf_CancelJob
      • Key Management Interface
        • Key Setting Interface
        • Key Extraction Interface
        • Key Copying Interface
        • Key Generation Interface
        • Key Derivation Interface
        • Key Exchange Interface
    • Call-back notifications
      • CryIf_CallbackNotification
    • Containers and configuration parameters
      • CryIf
      • CryIfGeneral
      • CryIfChannel
      • CryIfKey

前言

之前介绍过Crypto Driver,本文接着学习Crypto上面一个模块,CryIf.

Functional specification

Crypto Interface位于Crypto Service Manager和底层Crypto drivers之间,是访问所有上层(BSW)加密操作的唯一接口。Crypto Interface也是Crypto drivers的唯一使用者,并提供独特的接口来管理不同的加密硬件和软件解决方案。抽象层封装了不同的硬件和软件访问机制,因此Crypto Interface的实现独立于底层的Crypto Drivers(可以在硬件或软件中实现)

它还确保了对crypto services的并发访问,从而使同时处理多个加密任务成为可能。
image

Error classification

image
image

Error detection

如果参数job->jobPrimitiveInfo->primitiveInfo->service被设置为CRYPTO_KEYSETVALID
Crypto_RANDOMSEED,CRYPTO_KEYGENERATE, CRYPTO_KEYDERIVECRYPTO_KEYEXCHANGECALCPUBVALCRYPTO_KEYEXCHANGECALCSECRET时,检查参数job->jobPrimitiveInputOutput->cryIfKeyId及job->jobPrimitiveInputOutput->targetCryIfKeyId(如果适用)是否在有效范围内。

如果调用一个作业,并且参数job->jobPrimitiveInfo->primitiveInfo->service被设置为
CRYPTO_MACGENERATE, CRYPTO_MACVERIFY, CRYPTO_ENCRYPT,CRYPTO_DECRYPT, CRYPTO_AEADENCRYPT, CRYPTO_AEADDECRYPT,CRYPTO_SIGNATUREGENERATE或CRYPTO_SIGNATUREVERIFY时,
检查job->jobPrimitiveInfo->cryIfKeyId参数是否在有效范围内。

如果Key超出范围,它将向开发模式中的DET报告CRYPTO_E_PARAM_HANDLE,否则返回E_NOT_OK。

API specification

注意:

CRYPTO_E_KEY_NOT_AVAILABLE表示该密钥之前已被编程,但目前无法访问(例如,它暂时不可访问,例如,当密钥由于调试器连接或参数错误而被禁用时)。
CRYPTO_E_KEY_EMPTY表示所引用的密钥内容到目前为止还没有被写入,并且没有默认值(例如,在SHE 1.1中,错误代码ERC_KEY_EMPTY将返回,“如果应用程序试图使用尚未初始化的密钥”)。

Type Definitions

Function definitions

General API

CryIf_Init

image
配置指针configPtr当前未使用,因此应设置为空指针。

如果CRYIF模块初始化失败,CRYIF将向DET报告CRYIF_E_INIT_FAILED

CryIf_Init()服务将初始化CRYIF的全局变量和数据结构,包括标志和缓冲区。

CryIf_GetVersionInfo

image
image
如果启用了CRYIF模块的开发错误检测:如果模块尚未初始化,则CryIf_GetVersionInfo函数将向DET报告CRYIF_E_UNINIT

如果启用了CRYIF模块的开发错误检测:如果参数versioninfo为空指针,则CryIf_GetVersionInfo函数将向DET报告CRYIF_E_PARAM_POINTER

Job Processing Interface

CryIf_ProcessJob

为了统一单个调用函数和加密服务的流方法,有一个接口CryIf_ProcessJob()。它的Crypto_JobType作业参数包含一个Crypto_OperationModeType标志字段(job->jobPrimitiveInputOutput.mode),可以设置为" START ", " UPDATE ",“FINISH”或它们的组合。它显式声明应该执行什么操作。这些操作模式可以混合,一次执行多个操作。

image
image
如果启用了CRYIF的开发错误检测:函数CryIf_ProcessJob将向DET报告CRYIF_E_UNINIT并返回
E_NOT_OK,如果模块尚未初始化。

如果启用了CRYIF的开发错误检测:函数CryIf_ProcessJob将向DET报告CRYIF_E_PARAM_HANDLE,如果参数channelId超出范围,则返回E_NOT_OK

如果启用了CRYIF的开发错误检测:函数CryIf_ProcessJob将向DET报告CRYIF_E_PARAM_POINTER,如果参数job是空指针,则返回E_NOT_OK。

如果CRYIF没有检测到错误,则服务
CryIf_ProcessJob()将为映射到服务的驱动配置调用Crypto_<vi>_<ai>_ProcessJob()并传递返回值

如果作业处理重定向用于作业,则crypto
interface需要将传入的crypto
interface密钥引用和密钥元素引用调整为加密驱动程序各自值的相应密钥引用和密钥元素引用。

Dispatch Key IDs匹配KeyId

CryIf应使用job->jobPrimitiveInputOutput->cryIfKeyId对应的加密驱动程序的密钥ID设置job->cryptoKeyId,如果适用,还应设置 job->targetCryptoKeyId为 job->jobPrimitiveInputOutput->targetCryIfKeyId

如果 job->jobPrimitiveInfo->primitiveInfo->service配置为CRYPTO_KEYSETVALID,CRYPTO_RANDOMSEED, CRYPTO_KEYGENERATE, CRYPTO_KEYDERIVE, CRYPTO_KEYEXCHANGECALCPUBVAL or CRYPTO_KEYEXCHANGECALCSECRET,则job->cryIfKeyId必须在范围内,否则 CryIf_ProcessJob函数报告CRYPTO_E_PARAM_HANDLE给DET并返回E_NOT_OK

如果参数job->jobPrimitiveInfo->primitiveInfo->service设置为CRYPTO_KEYDERIVE,参数job->cryIfTargetKeyId必须在范围内;否则函数CryIf_ProcessJob将报告
CRYPTO_E_PARAM_HANDLE给DET并返回E_NOT_OK

CryIf使用job->jobPrimitiveInfo->cryIfKeyId对应的crypto driver的密钥ID设置job->cryptoKeyId

Job Cancellation Interface

CryIf_CancelJob

image
如果启用了CRYIF的开发错误检测:函数CryIf_CancelJob将向DET报告CRYIF_E_UNINIT并返回
E_NOT_OK,如果模块尚未初始化

如果启用了CRYIF的开发错误检测:函数CryIf_CancelJob将向DET报告CRYIF_E_PARAM_HANDLE,如果参数channelId超出或超出范围,则返回E_NOT_OK

如果启用了CRYIF的开发错误检测:函数CryIf_CancelJob将向DET报告CRYIF_E_PARAM_POINTER,如果参数job是空指针,则返回E_NOT_OK。

如果CRYIF没有检测到错误,则服务
CryIf_CancelJob()将为映射到服务的驱动配置调用Crypto_<vi>_<ai>_CancelJob(),并传递返回值

Key Management Interface

Key Setting Interface

cryIfKeyId对应Crypto Driver中的Keyid
image
CryIf_KeyElementSet:该函数用来将指定cryIfKeyId及keyElementId的密钥值和长度

image
CryIf_KeySetValid:该函数用来将指定KeyIfId的密钥设置为有效

Key Extraction Interface

image
image
CryIf_KeyElementGet:提取指定cryIfKeyId及keyElementId的密钥值和长度

Key Copying Interface

image
CryIf_KeyElementCopy:将指定的keyElement的密钥复制到目标keyElement中

image
image
image
CryIf_KeyElementCopyPartial:将一个key element复制到另一个key element。keyElementOffsets和keyElementCopyLength允许将源key element的部分复制到目标key element中

image
image
CryIf_KeyCopy:将cryIfKeyId中的所有密钥拷贝到targetCryIfKeyId中

Key Generation Interface

image
CryIf_RandomSeed:该函数输入随机数生成的种子。

image
image
CryIf_KeyGenerate:该函数用来生成cryIfKeyId中的密钥。

Key Derivation Interface

image
image
CryIf_KeyDerive:将cryIfKeyId中的密钥派生给targetCryIfKeyId(密钥派生服务需要salt和password来派生新密钥)

Key Exchange Interface

image
image
CryIf_KeyExchangeCalcPubVal:计算密钥交换的public value

image
CryIf_KeyExchangeCalcSecret:计算密钥交换的共享密钥

Call-back notifications

CryIf_CallbackNotification

image
image
CryIf_CallbackNotification:Crypto Driver通知CryIf,该函数中会调用Csm_CallbackNotification并传递结果

Containers and configuration parameters

CryIf

image
CryIf需要配置CryIfGeneral,CryIfChannel,CryIfKey

CryIfGeneral

image
CryIfDevErrorDetect:是否启用开发错误检测

image
CryIfVersionInfoApi:是否使用CryIf_GetVersionInfo()函数

CryIfChannel

image
CryIfChannelId:crypto channel的ID

image
CryIfDriverObjectRef:配置关联的Crypto Driver Object

CryIfKey

image
CryIfKeyId:CryIf key的ID

image
CryIfKeyRef:配置关联的crypto driver key

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/483164.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

springcloud-Nacos 更强大的注册中心组件

Nacos 实际上从设计思想来说 Eureka 和 nacos 是一样的。 后者是Alibaba推出的 一款更强大 功能更丰富的注册中心 你可以理解为Eureka的高配版 技多不压身既然了解了 Eureka, nacos也来学习一下吧&#xff01; 安装 首先nacos不像eureka 直接pom里面引个依赖就搞定了&#…

odoo17开发教程(17):美化UI界面

从业务角度来看&#xff0c;我们的房地产模块现在很有意义。我们创建了特定的视图&#xff0c;添加了几个操作按钮和约束条件。不过&#xff0c;我们的用户界面还有些粗糙。我们希望在列表视图中添加一些颜色&#xff0c;并使一些字段和按钮有条件地消失。例如&#xff0c;&quo…

Webman全局异常捕获处理

最近在使用webman这个框架做项目开发&#xff0c;涉及到需要统一处理异常捕获。由于官网给的并不详细&#xff0c;于是自己实现了一下全局异常处理类。 一、配置效果 例如&#xff1a;我要在项目中统一返回json 格式数据&#xff0c;并不想在业务层写try,catch逻辑。 或者在业务…

从产品组装和维护/维修的角度来看,基于增强现实的指导:关于挑战和机遇的最新综述

作者&#xff1a; 1. M. Eswaran 2. Anil Kumar Gulivindala 3. M.V.A.Raju Bahubalendruni 关于本文 •分析了增强现实在装配和维护/维修中的作用。 •讨论了AR辅助制造系统的软件和硬件元素。 •讨论了AR跟踪和配准技术面临的挑战。 •讨论了AR辅助制造系统的未来…

使用插件将swagger文档转html或pdf

github上有maven开源插件swagger2markup将swagger文档转为.adoc格式的文档&#xff0c;另外一个maven开源插件asciidoctorj-pdf则可以将.adoc格式的文档转为html和pdf。由于GitHub访问不稳定&#xff0c;在gitee上有镜像项目。所以我就贴gitee上的项目地址了。 实现从swagger文…

【聊一聊】三种工厂模式的创建

三种工厂模式的创建 今天终于星期五了,最近由于碰上一个需求,中间涉及Oracle改国产数据库的改造,好家伙,差点没把我忙坏了 不过今天终于有空啦!~哈哈哈 这篇本应该是上周就结束的,但是拖到今天,我们就今天进行结束 (还有一件快乐的事情,就是我遇见自己喜欢的人啦!嘻嘻) 好啦!~话…

【数字图像处理matlab系列】数组索引

【数字图像处理matlab系列】数组索引 【先赞后看养成习惯】【求点赞+关注+收藏】 MATLAB 支持大量功能强大的索引方案,这些索引方案不仅简化了数组操作,而且提高了程序的运行效率。 1. 向量索引 维数为1xN的数组称为行向量。行向量中元素的存取是使用一维索引进行的。因此…

如何解决Layui后台接口返回数据,但是table.render不渲染表格数据的问题

我这边进行了pareData数据格式转换&#xff0c;response重新定义了layui的参数格式规范 接口正常返回了数据 但是就是不渲染&#xff0c;我这个郁闷啊&#xff01;&#xff01; 忽然&#xff0c;我把后台重新定义的layui规定的格式参数&#xff0c;有个参数名叫data&#xff0…

037—pandas 按指定列堆叠数据

前言 在数据分析中&#xff0c;我们经常需要对数据进行堆叠操作&#xff0c;但 Pandas 提供的 df.stack() 只能按默认索引进行操作&#xff0c;同时堆叠后的列名无法指定&#xff0c;本列我们就来解决这些问题。 读入数据 代码如下&#xff08;示例&#xff09;&#xff1a;…

关于php foreach函数和变量覆盖

foreach函数是PHP中用于遍历数组或对象的函数&#xff08;且仅用于数组的遍历&#xff09;。它允许循环遍历数组中的每个元素&#xff0c;并对每个元素执行相同的操作。foreach语句的基本语法如下&#xff1a; foreach ($array as $value) {//执行的操作 }在这个语法中&#x…

政安晨:【深度学习部署】—— TensorFlow Extended(TFX)介绍

政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras实战演绎机器学习 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff01; 前言 TensorFlow Extended&#xff08;TFX&a…

Orbit 使用指南 10|在机器人上安装传感器 | Isaac Sim | Omniverse

如是我闻&#xff1a; 资产类&#xff08;asset classes&#xff09;允许我们创建和模拟机器人&#xff0c;而传感器 (sensors) 则帮助我们获取关于环境的信息&#xff0c;获取不同的本体感知和外界感知信息。例如&#xff0c;摄像头传感器可用于获取环境的视觉信息&#xff0c…

5.windows Ubuntu 子系统,测序数据质量检测。

我们在得到一组或几组测序数据后&#xff0c;比如从测序公司拿到的测序数据为fastq.gz格式&#xff0c;首先我们需要对它们进行MD5检验&#xff0c;确保数据没有问题后才可进入以后的程序。&#xff08;MD5可以进行测序数据完整性验证&#xff1a;MD5可以用于验证数据在传输或存…

IPMI开源库pyghmi基本使用

简介&#xff1a;Pyghmi是一个纯Python&#xff08;主要是IPMI&#xff09;服务器管理库。IPMI&#xff08;Intelligent Platform Management Interface&#xff0c;智能平台管理接口&#xff09;是一种开放的标准&#xff0c;旨在帮助系统管理员在本地和远程管理服务器系统。而…

第十届蓝桥杯大赛个人赛省赛(软件类)真题- CC++ 研究生组-最短路

6 肉眼观察&#xff0c; 看起来短的几条路对比下来是6~ #include <iostream> using namespace std; int main() {printf("6");return 0; }

AcWing 2060. 奶牛选美(每日一题)

目录 题目&#xff1a; 解题思路&#xff1a; 总结&#xff1a; 原题链接&#xff1a;2060. 奶牛选美 - AcWing题库 题目&#xff1a; 听说最近两斑点的奶牛最受欢迎&#xff0c;约翰立即购进了一批两斑点牛。 不幸的是&#xff0c;时尚潮流往往变化很快&#xff0c;当前…

[C语言]结构体、位段、枚举常量、联合体

目录 结构体 结构体的使用方法 结构体所占用的大小 位段 位段的使用方法 位段所占用的大小 枚举常量 枚举常量的使用方法 枚举常量的优势 联合体 联合体的使用方法 结构体 结构体的使用方法 结构体是一些值的集合&#xff0c;我们可以定义一个结构体&#xff0c;里…

实例:NX二次开发使用链表进行拉伸功能(链表相关功能练习)

一、概述 在进行批量操作时经常会利用链表进行存放相应特征的TAG值&#xff0c;以便后续操作&#xff0c;最常见的就是拉伸功能。这里我们以拉伸功能为例子进行说明。 二、常用链表相关函数 UF_MODL_create_list 创建一个链表&#xff0c;并返回链表的头指针。…

STM32---DHT11温湿度传感器与BH1750FVI光照传感器(HAL库、含源码)

写在前面&#xff1a;本节我们学习使用两个常见的传感器模块&#xff0c;分别为DHT11温湿度传感器以及BH1750FVI光照传感器,这两种传感器在对于环境监测中具有十分重要的作用&#xff0c;因为其使用简单方便&#xff0c;所以经常被用于STM32的项目之中。今天将使用分享给大家&a…

Digital WooCommerce Stores: 创建数字WordPress商店的详细教程- US Domain Center主机

第一步&#xff1a;了解数字 WooCommerce 商店 数字 WooCommerce 商店是一种电子商务模式&#xff0c;其中您可以销售虚拟产品&#xff0c;如在线课程、电子书、PDF、图像和视频。您可以使用 WooCommerce 插件在您的 WordPress 网站上设置数字产品&#xff0c;并通过在线交易提…