Autosar Crypto Interface学习笔记

news2024/11/18 17:39:52

文章目录

    • 前言
    • 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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vmware,linux,centos7,NAT模式下的网络配置

centos7的NAT网络配置 NAT模式说明虚拟机网络配置工具本机配置net8网络&#xff08;NAT的网域&#xff09;本机的IP配置(用于net8局域网内解析主机IP和域名对应关系使用)&#xff08;可选&#xff09;虚拟机内的网络配置虚拟机ping不通www.baidu.com的情况下虚拟机ping可以ping…

【双指针】Leetcode 三数之和

题目解析 15. 三数之和 这道题有两个需要注意的地方&#xff1a;1. 三个数字也不可以是同一个位置上的 2. 最终结果里面的三元组不可以是重复的 所以这道题就需要对结果实现去重这一个逻辑&#xff0c;遇到相同的数字就需要往后面移动&#xff0c;忽略 算法讲解 1. 首先对数…

2024蓝桥杯每日一题(状压DP)

备战2024年蓝桥杯 -- 每日一题 Python大学A组 试题一&#xff1a;毕业旅行问题 试题二&#xff1a;蒙德里安的梦想 试题三&#xff1a;最短Hamilton路径 试题四&#xff1a;国际象棋 试题一&#xff1a;毕业旅行问题 【题目描述】 小明目前在做一份毕…

集合系列(十六) -集合知识回顾整理

一、摘要 在 Java 中&#xff0c;集合大致可以分为两大体系&#xff0c;一个是 Collection&#xff0c;另一个是 Map&#xff0c;都位于java.util包下。 Collection &#xff1a;主要由 List、Set、Queue 接口组成&#xff0c;List 代表有序、重复的集合&#xff1b;其中 Set…

一文读懂Cache一致性原理

1. 为何需要cache一致性 访问memory数据的速度相比core的运行速度来说&#xff0c;要花费更多的时钟周期&#xff0c;为了减轻这个差异引进了存储器层次结构&#xff0c;如图1所示。在层次结构中&#xff0c;越往上&#xff0c;读写速度越快&#xff0c;价格更贵&#xff0c;存…

Prometheus(六):Blackbox监控安装配置

目录 1 Blackbox Exporter安装配置1.1 Blackbox Exporter简介1.2 安装1、安装-使用源码包安装下载安装blackbox.yml文件配置快速启动文件 2、安装-使用docker 1.3 Prometheus配置1、http监控2、ping探测-ip3、https probe-DNS解析4、metrics配置5、TCP监控-探测端口 总结 1 Bla…

Element UI中日期选择日(date-picker)等其他选择器下拉显示错位、位置错误解决

省流版 给选择器加上唯一key&#xff08;下面的想看就看&#xff09; 问题复现 需求是用一个下拉切换时间维度的选择&#xff0c;分别为年度、季度、月度&#xff0c;但是开发的时候发现&#xff0c;当切换的时候&#xff0c;视图可正常切换&#xff0c;但点击选择时却发现选…

InfoNCE loss

InfoNCE loss是一种用于自监督学习的损失函数&#xff0c;通常用于训练对比学习模型&#xff0c;如自编码器或神经网络。全称是"InfoNCE: Contrastive Estimation of Neural Entropy"&#xff0c;基于对比学习的思想&#xff0c;旨在最大化正样本的相似性&#xff0c…

关于 C/C++ 1Z(17)开源项目 openppp2 协同程式切换工作流

下述为开源项目 openppp2&#xff08;github&#xff09;构建工作在 C/C 17 的 stackful 有栈协同程式的工作流切换示意图&#xff1a; 在 openppp2 之中采用人工手动方式管理协同程式之间的切换&#xff0c;每个中断过程只是保存线程栈信息&#xff08;如寄存器、当前#PC EIP&…

利用idea创建一个maven web工程

1.创建Maven项目 2.选择不使用Web项目骨架&#xff08;即普通maven项目&#xff09; 3.创建成功后在pom.xml设置打包方式为war&#xff0c;并重构maven项目 <packaging>war</packaging> 4.补齐Maven Web项目缺失webapp的目录结构 右键项目名打开模块设置&#xf…

【STM32+HAL】I2C+DMA读取AS5600编码器

一、DMA的应用 有关更多DMA的应用&#xff0c;详见【STM32HAL】DMA应用 二、HAL库配置 1、开启I2C 开启对应DMA及中断 2、开启串口通信 至此&#xff0c;HAL库配置完毕 三、DMA版&#xff08;高效但不稳定&#xff09; 1、as5600.c #include "AS5600.h" #includ…

Javascript本地存储的方式,区别及应用场景

文章目录 一、方式cookielocalStorage特点sessionStorage扩展的前端存储方式优点&#xff1a;缺点&#xff1a; 二、区别三、应用场景相关连接 一、方式 javaScript本地缓存的方法我们主要讲述以下四种&#xff1a; cookiesessionStoragelocalStorageindexedDB cookie Cook…

【Python】python编程初探2---字符编码,输入和输出,初识数据类型

欢迎来CILMY23的博客 本篇主题为【Python】python编程初探2---字符编码&#xff0c;输入和输出&#xff0c;初识数据类型 个人主页&#xff1a;CILMY23-CSDN博客 Python系列专栏&#xff1a;​​​​​​​http://t.csdnimg.cn/rAsEH 上一篇博客&#xff1a;http://t.csdni…

网络层协议之IP协议

网络层主要做两方面事情&#xff1a; 1.地址管理&#xff1a;制定一系列规则&#xff0c;通过地址描述出网络上的一个设备的位置 2.路由选择&#xff1a;网络环境复杂&#xff0c;从一个节点到另一个节点之间有很多条路径&#xff0c;这就需要通过路由选择来筛选/规划出更合适…

Day18:LeedCode 513.找树左下角的值 112. 路径总和 106.从中序与后序遍历序列构造二叉树

513. 找树左下角的值 给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1 思路:出该二叉树的 最底层 最左边 节点的值找出深度最大的第一个结点(左结点先遍历) 方法一…

数据库与缓存一致性如何保证

最近建了一个技术交流群&#xff0c;欢迎志同道合的同学加入&#xff0c;群里主要讨论&#xff1a;分享业务解决方案、深度分析面试题并解答工作中遇到的问题&#xff0c;同时也能为我提供写作的素材。 欢迎加Q&#xff1a;312519302&#xff0c;进群讨论 前言 在工作中&#…

LangChain使用实例——RAG

Q&A with RAG Overview LLMs支持的最强大的应用程序之一是复杂的问答 (Q&A) 聊天机器人&#xff0c;这些应用程序可以回答有关特定源信息的问题&#xff0c;使用一种称为检索增强生成&#xff08;RAG&#xff09;的技术。 RAG RAG 是一种利用额外数据增强 LLM 知识…

linux 网卡配置 vlan/bond/bridge/macvlan/ipvlan 模式

linux 网卡模式 linux网卡支持非vlan模式、vlan模式、bond模式、bridge模式&#xff0c;macvlan模式、ipvlan模式等&#xff0c;下面介绍交换机端及服务器端配置示例。 前置要求&#xff1a; 准备一台物理交换机&#xff0c;以 H3C S5130 三层交换机为例准备一台物理服务器&…

如何用智能AI绘一幅世界地图?

今天我们分享一下&#xff0c;用智能AI绘一幅世界地图的方法&#xff01; 为了方便你极速体验&#xff0c;特意在文末为你准备了登录帐号&#xff0c;省去你注册的烦恼。 认准AI绘画官网 如果你在百度搜索“AI绘画”或“Midjourney”&#xff0c;找出来的基本全是广告&#…

matplotlib画图:子图中坐标轴与标题重合...

如下图 只要在代码最后加入 plt.tight_layout() 就可以自动调节