Crypto驱动产品参考手册
缩写词注解
缩写词 |
英文全称 |
中文解释 |
HSM |
Hardware Security Module |
硬件安全模块 |
SHA |
Secure Hash Algorithm |
安全哈希算法 |
AES |
Advanced Encrytion Standard |
高级加密标准 |
RSA |
Rivest-Shamir-Adleman |
RSA加密算法 |
简介
图1-1 Crypto Driver协议栈架构图
在AUTOSAR加密协议栈中,Crypto Driver处于最底层,为加密功能的最终处理模块。Crypto Driver会执行上层下发的算法任务,计算完成后把结果通过回调函数的方式通知到上层模块。加密算法可通过软件或者硬件HSM模块实现。在本文档中Crypto Driver主要指为软件方式实现的加密算法。
Crypto Driver能够向上层提供多种加密算法,如散列算法SHA、对称加密AES、非对称加密RSA以及随机数生成等。
参考资料
[1] AUTOSAR_SWS_CryptoDriver.pdf,R19-11
[2] AUTOSAR_SWS_CryptoServiceManager.pdf,R19-11
功能描述
秘钥功能
秘钥功能介绍
加密算法包含了对称加密与非对称加密。
对称加密,即使用A秘钥进行加密得出的密文,一样可以通过A秘钥进行解密,如果截获秘钥和算法,即可通过密文计算出明文。
非对称加密指双方用不同的秘钥加密和解密明文,通信双方都要有自己公钥和私钥。
秘钥功能主要就是涉及到秘钥的保存与获取,包括公钥和私钥的生成等。
秘钥功能实现
秘钥通过Crypto_KeyElementSet把Key Element设置到内部Ram中,然后通过调用Crypto_KeySetValid把指定的key设置为有效。
秘钥功能首先需要在Crypto中配置CryptoKeys,然后配置CryptoKeys->CryptoKeyTypes->CryptoKeyElements,不同的算法所需要的的Key Elements是不一样的,可参考[SWS_Csm_01022]规范,如下图:
图2-1 MAC算法所需Key Elements示意图
如MAC所示,使用时就可以配置3个KeyElement,分别为CRYPTO_KE_MAC_KEY(1),CRYPTO_KE_MAC_PROOF(2)以及CRYPTO_KE_KEYGENERATE_SEED(16)。
加密算法
算法介绍
HASH算法
HASH(哈希)算法为不需要秘钥的算法,哈希算法又称杂凑算法,能将一定长度的消息计算出固定长度的字符串(又称消息摘要)。SHA包含5个算法,分别是SHA-1、SHA-224、SHA-256、SHA-384和SHA-512,后四者并称为SHA-2。SHA-1最大计算明文长度为2^64bit,属于分组算法,分组长度为512bit,产生的信息摘要长度为160bit,也就是20个字节。
AES对称加密算法
AES的处理单位是字节,128位的输入明文分组P和输入密钥K都被分成16个字节,分别记为P = P0 P1 … P15 和 K = K0 K1 … K15。如,明文分组为P = abcdefghijklmnop,其中的字符a对应P0,p对应P15。一般地,明文分组用字节为单位的正方形矩阵描述,称为状态矩阵。在算法的每一轮中,状态矩阵的内容不断发生变化,最后的结果作为密文输出。
RSA非对称加密算法
非对称加密指双方用不同的KEY加密和解密明文,通信双方都要有自己公共密钥和私有密钥。举个例子比较容易理解,我们们假设通信双方分别是A,B。 A拥有KEY_A1(私钥),KEY_A2(公钥)。 B拥有KEY_B1(私钥),KEY_B2(公钥)。公钥和私钥的特点是,经过其中任何一把加密过的明文,只能用另外一把才能够解开。也就是说经过KEY_A1加密过的明文,只有KEY_A2才能够解密,反之亦然。
MAC算法
MAC算法, SecOc比较常使用的算法,即带秘密密钥的Hash算法。消息的散列值由只有通信双方知道的秘钥K来控制。此时Hash值称作MAC。 先对报文第一个64bit加密,得到64bit的加密后数据data1,接着再拿加密后的data1与报文第二个64bit数据进行按位异或,得到同样长64bit的数据data2,再用Key对data2加密,得到加密后的数据data3,再拿data3与报文第三个64bit数据进行按位异或,同样的处理依次类推,直到最后会得到一个64bit的数据,这个算法就叫做MAC算法。
算法实现
加密算法均是参考开源库算法,此处对于细节不多加介绍。唯一需要注意的是对称加密与非对称加密的实现。对称加密与非对称加密在crypto driver中均是通过Encrypt和Decrypt实现,在CSM中配置CsmPrimitives时的CsmEncryptAlgorithmFamily需要配置为CRYPTO_ALGOFAM_AES和CRYPTO_ALGOFAM_RSA的区别。
当配置CRYPTO_ALGOFAM_RSA时,调用Csm_Encrypt传入的resultLengthPtr长度必须为128,且必须先调用Csm_KeyGenerate生成执行算法所需的公钥和私钥。
队列功能
队列介绍
由于软件加密算法可能比较耗时,所以个别的算法可以配置为异步模式,即把内容传给下层后,下层不会直接运算,而是会根据下层的功能机制,在后续的mainfunction中对加密任务进行计算,并通过回调函数返回给上层。
由于异步加密任务可能存在延迟,例如未完成一次计算,又传入了很多其它的加密任务,这时可以启用队列功能。队列功能打开后,便可以同时缓存多个加密任务,每次在Crypto_Mainfunction中去依次执行缓存队列中的加密任务。
队列实现
通过配置项CryptoQueueSize定义队列大小。CSM和Crypto Driver中均可定义队列,两者的功能大体一致,一般情况下是两者选其一即可。
源文件描述
表3-1 Crypto组件文件描述
文件 |
说明 |
Crypto_Cfg.h |
定义Crypto Driver模块预编译时用到的配置参数。 |
Crypto_Cfg.c |
定义Crypto Driver模块中PC配置参数。 |
Crypto.h |
Crypto模块头文 件,包含了API函数的扩展声明并定义了端口的数据结构。 |
Crypto.c |
Crypto模块源文件,包含了外部API函数的实现。 |
Cry pto_internal.c |
定义内部函数的实现,如查找配置,缓存拷贝等 |
Cry pto_internal.h |
定义内部数据结构,内部函数声明等 |
Crypto_Types.h |
定义规范中定义的数据结构等 |
C rypto_MemMap.h |
定义数据、代码所用的Memmap段 |
AES、dh 、Hash等文件夹 |
开源加密库算法的实现文件 |
图3-1 Crypto组件头文件交互图
API接口
类型定义
Crypto_ConfigType类型定义
名称 |
Crypto_ConfigType |
类型 |
structure |
范围 |
无 |
描述 |
加密驱动的配置pb配置数据类型 |
输入函数描述
输入模块 |
API |
Det |
Det_ReportError |
Nvm |
NvM_SetRamBlockStatus |
NvM_WriteBlock |
静态接口函数定义
Crypto_Init函数定义
函 数名称: |
Crypto_Init |
||
函 数原型: |
void Crypto_Init ( const Crypto_ConfigType* configPtr ) |
||
服 务编号: |
0x00 |
||
同 步/异步: |
同步 |
||
是否 可重入: |
否 |
||
输 入参数: |
config Ptr:传入的PB配置数据 |
值 域: |
无 |
输入输 出参数: |
无 |
||
输 出参数: |
无 |
||
返回值: |
无 |
||
功 能概述: |
Crypto模块初始化 |
Crypto_GetVersionInfo函数定义
函 数名称: |
Crypto_Init |
||
函 数原型: |
void Crypto_GetVersionInfo ( Std_VersionInfoType* versioninfo ) |
||
服 务编号: |
0x01 |
||
同 步/异步: |
同步 |
||
是否 可重入: |
是 |
||
输 入参数: |
versioninfor:用 于储存版本信息的变量 |
值 域: |
无 |
输入输 出参数: |
无 |
||
输 出参数: |
无 |
||
返回值: |
无 |
||
功 能概述: |
获 取Crypto模块版本信息 |
Crypto_ProcessJob函数定义
函 数名称: |
Crypto_ProcessJob |
||
函 数原型: |
Std_ReturnType Crypto_ProcessJob ( uint32 objectId, Crypto_JobType* job ) |
||
服 务编号: |
0x03 |
||
同 步/异步: |
依赖于Job的配置 |
||
是否 可重入: |
是 |
||
输 入参数: |
objectId |
值 域: |
依赖于配置 |
job |
|||
输入输 出参数: |
无 |
||
输 出参数: |
无 |
||
返回值: |
|||
E_OK |
|||
E_NOT_OK |
|||
CRYPTO_E_BUSY |
|||
C RYPTO_E_KEY_NOT_VALID |
|||
CRYPT O_E_KEY_SIZE_MISMATCH |
|||
C RYPTO_E_KEY_READ_FAIL |
|||
CR YPTO_E_KEY_WRITE_FAIL |
|||
CRYPT O_E_KEY_NOT_AVAILABLE |
|||
CRYPT O_E_ENTROPY_EXHAUSTED |
|||
CRYPTO_E_JOB_CANCELED |
|||
CRYPTO_E_KEY_EMPTY |
|||
功 能概述: |
依赖于Jo b配置参数,处理crypto primitive(进行 实际的算法调用、处理 ,如果是同步任务,还 会得到加密后的结果) |
Crypto_CancelJob函数定义
函 数名称: |
Crypto_CancelJob |
||
函 数原型: |
Std_ReturnType Crypto_CancelJob ( uint32 objectId, Crypto_JobType* job ) |
||
服 务编号: |
0x0e |
||
同 步/异步: |
同步 |
||
是否 可重入: |
否 |
||
输 入参数: |
objectId |
值 域: |
依赖于配置 |
job |
|||
输入输 出参数: |
无 |
||
输 出参数: |
无 |
||
返回值: |
E_OK |
||
E_NOT_OK |
|||
CRYPTO_E_JOB_CANCELED |
|||
功 能概述: |
移除 队列里面所有的异步Job ,并且 撤销当前正在处理的Job |
Crypto_KeyElementSet函数定义
函 数名称: |
Crypto_KeyElementSet |
||
函 数原型: |
Std_ReturnType Crypto_KeyElementSet ( uint32 cryptoKeyId, uint32 keyElementId, const uint8* keyPtr, uint32 keyLength ) |
||
服 务编号: |
0x04 |
||
同 步/异步: |
同步 |
||
是否 可重入: |
否 |
||
输 入参数: |
cryptoKeyId |
值 域: |
cryptoKeyId依赖于配置 |
keyElementId |
|||
keyPtr |
|||
keyLength |
|||
输入输 出参数: |
无 |
||
输 出参数: |
无 |
||
返回值: |
E_OK |
||
E_NOT_OK |
|||
CRYPTO_E_BUSY |
|||
CR YPTO_E_KEY_WRITE_FAIL |
|||
CRYPT O_E_KEY_NOT_AVAILABLE |
|||
CRYPT O_E_KEY_SIZE_MISMATCH |
|||
功 能概述: |
把 keyPtr指定的秘钥写入 cryptoKeyId对应的Key Element中 |
Crypto_KeySetValid函数定义
函 数名称: |
Crypto_KeySetValid |
||
函 数原型: |
Std_ReturnType Crypto_KeySetValid ( uint32 cryptoKeyId ) |
||
服 务编号: |
0x05 |
||
同 步/异步: |
同步 |
||
是否 可重入: |
否 |
||
输 入参数: |
cryptoKeyId |
值 域: |
cryptoKeyId依赖于配置 |
输入输 出参数: |
无 |
||
输 出参数: |
无 |
||
返回值: |
E_OK |
||
E_NOT_OK |
|||
CRYPTO_E_BUSY |
|||
功 能概述: |
设置cryptoKey Id指定的Key状态为有效 |
Crypto_KeySetInvalid函数定义
函 数名称: |
Crypto_KeySetInvalid |
||
函 数原型: |
Std_ReturnType Crypto_KeySetInvalid ( uint32 cryptoKeyId ) |
||
服 务编号: |
0x15 |
||
同 步/异步: |
同步 |
||
是否 可重入: |
否 |
||
输 入参数: |
cryptoKeyId |
值 域: |
cryptoKeyId依赖于配置 |
输入输 出参数: |
无 |
||
输 出参数: |
无 |
||
返回值: |
E_OK |
||
E_NOT_OK |
|||
CRYPTO_E_BUSY |
|||
功 能概述: |
设置cryptoKey Id指定的Key状态为无效 |
Crypto_KeyElementGet函数定义
函 数名称: |
Crypto_KeyElementGet |
||
函 数原型: |
Std_ReturnType Crypto_KeyElementGet ( uint32 cryptoKeyId, uint32 keyElementId, uint8* resultPtr, uint32* resultLengthPtr ) |
||
服 务编号: |
0x06 |
||
同 步/异步: |
同步 |
||
是否 可重入: |
是 |
||
输 入参数: |
cryptoKeyId |
值 域: |
cryptoKeyId依赖于配置 |
keyElementId |
|||
输入输 出参数: |
resultLengthPtr |
||
输 出参数: |
resultPtr |
||
返回值: |
E_OK |
||
E_NOT_OK |
|||
CRYPTO_E_BUSY |
|||
CRYPT O_E_KEY_NOT_AVAILABLE |
|||
C RYPTO_E_KEY_READ_FAIL |
|||
CRYPTO_E_KEY_EMPTY |
|||
功 能概述: |
获取cryptoKeyId-> k eyElementId的秘钥信息 |
Crypto_KeyGetStatus函数定义
函 数名称: |
Crypto_KeyGetStatus |
||
函 数原型: |
Std_ReturnType Crypto_KeyGetStatus ( uint32 cryptoKeyId, C rypto_KeyStatusType* keyStatusPtr ) |
||
服 务编号: |
0x14 |
||
同 步/异步: |
同步 |
||
是否 可重入: |
否 |
||
输 入参数: |
cryptoKeyId |
值 域: |
cryptoKeyId依赖于配置 |
输入输 出参数: |
无 |
||
输 出参数: |
keyStatusPtr |
||
返回值: |
E_OK |
||
E_NOT_OK |
|||
功 能概述: |
返回cryp toKeyId对应秘钥的状态 |
Crypto_KeyElementCopy函数定义
函 数名称: |
Crypto_KeyElementCopy |
||
函 数原型: |
Std_ReturnType Crypto_KeyElementCopy ( uint32 cryptoKeyId, uint32 keyElementId, uint32 targetCryptoKeyId, uint32 targetKeyElementId ) |
||
服 务编号: |
0x0f |
||
同 步/异步: |
同步 |
||
是否 可重入: |
是(同一个cryp toKeyId是不可重入的) |
||
输 入参数: |
cryptoKeyId |
值 域: |
cryptoKeyId/ targe tCryptoKeyId依赖于配置 |
keyElementId |
|||
targetCryptoKeyId |
|||
targetKeyElementId |
|||
输入输 出参数: |
无 |
||
输 出参数: |
无 |
||
返回值: |
E_OK |
||
E_NOT_OK |
|||
CRYPTO_E_BUSY |
|||
CRYPT O_E_KEY_NOT_AVAILABLE |
|||
C RYPTO_E_KEY_READ_FAIL |
|||
CR YPTO_E_KEY_WRITE_FAIL |
|||
CRYPT O_E_KEY_SIZE_MISMATCH |
|||
CRYPTO_E_KEY_EMPTY |
|||
功 能概述: |
拷贝cryptoKeyId-> k eyElementId中的秘钥值 到targetCryptoKeyId-> t argetKeyElementId中去 |
Crypto_KeyElementCopyPartial函数定义
函 数名称: |
Crypto_ KeyElementCopyPartial |
||
函 数原型: |
Std_ReturnType Crypto_ KeyElementCopyPartial ( uint32 cryptoKeyId, uint32 keyElementId, uint32 ke yElementSourceOffset, uint32 ke yElementTargetOffset, uint32 keyElementCopyLength, uint32 targetCryptoKeyId, uint32 targetKeyElementId ) |
||
服 务编号: |
0x13 |
||
同 步/异步: |
同步 |
||
是否 可重入: |
是(同一个cryp toKeyId是不可重入的) |
||
输 入参数: |
cryptoKeyId |
值 域: |
cryptoKeyId/ targe tCryptoKeyId依赖于配置 |
keyElementId |
|||
k eyElementSourceOffset |
|||
k eyElementTargetOffset |
|||
keyElementCopyLength |
|||
targetCryptoKeyId |
|||
targetKeyElementId |
|||
输入输 出参数: |
无 |
||
输 出参数: |
无 |
||
返回值: |
E_OK |
||
E_NOT_OK |
|||
CRYPTO_E_BUSY |
|||
CRYPT O_E_KEY_NOT_AVAILABLE |
|||
C RYPTO_E_KEY_READ_FAIL |
|||
CR YPTO_E_KEY_WRITE_FAIL |
|||
CRYPT O_E_KEY_SIZE_MISMATCH |
|||
CRYPTO_E_KEY_EMPTY |
|||
功 能概述: |
拷贝cryptoKeyId-> keyElementId中的部分 秘钥值(由keyElementS ourceOffset、keyEleme ntTargetOffset和keyEl ementCopyLength确定) 到targetCryptoKeyId-> t argetKeyElementId中去 |
Crypto_KeyCopy函数定义
函 数名称: |
Crypto_KeyCopy |
||
函 数原型: |
Std_ReturnType Crypto_KeyCopy ( uint32 cryptoKeyId, uint32 targetCryptoKeyId ) |
||
服 务编号: |
0x10 |
||
同 步/异步: |
同步 |
||
是否 可重入: |
否 |
||
输 入参数: |
cryptoKeyId |
值 域: |
cryptoKeyId/ targe tCryptoKeyId依赖于配置 |
targetCryptoKeyId |
|||
输入输 出参数: |
无 |
||
输 出参数: |
无 |
||
返回值: |
E_OK |
||
E_NOT_OK |
|||
CRYPTO_E_BUSY |
|||
CRYPT O_E_KEY_NOT_AVAILABLE |
|||
C RYPTO_E_KEY_READ_FAIL |
|||
CR YPTO_E_KEY_WRITE_FAIL |
|||
CRYPT O_E_KEY_SIZE_MISMATCH |
|||
CRYPTO_E_KEY_EMPTY |
|||
功 能概述: |
拷贝 cryptoKeyId中所有Key element到 targetCryptoKeyId中去 |
Crypto_KeyElementIdsGet函数定义
函 数名称: |
Cr ypto_KeyElementIdsGet |
||
函 数原型: |
Std_ReturnType Cr ypto_KeyElementIdsGet ( uint32 cryptoKeyId, uint32* keyElementIdsPtr, uint32* k eyElementIdsLengthPtr ) |
||
服 务编号: |
0x11 |
||
同 步/异步: |
同步 |
||
是否 可重入: |
否 |
||
输 入参数: |
cryptoKeyId |
值 域: |
依赖于配置 |
输入输 出参数: |
k eyElementIdsLengthPtr |
||
输 出参数: |
keyElementIdsPtr |
||
返回值: |
E_OK |
||
E_NOT_OK |
|||
CRYPTO_E_BUSY |
|||
功 能概述: |
用于 检索给定key中哪些Key element可用的信息 |
Crypto_RandomSeed函数定义
函 数名称: |
Crypto_RandomSeed |
||
函 数原型: |
Std_ReturnType Crypto_RandomSeed ( uint32 cryptoKeyId, const uint8* seedPtr, uint32 seedLength ) |
||
服 务编号: |
0x0d |
||
同 步/异步: |
同步 |
||
是否 可重入: |
是(同一个cryp toKeyId是不可重入的) |
||
输 入参数: |
cryptoKeyId |
值 域: |
cryptoKeyId依赖于配置 |
seedPtr |
|||
seedLength |
|||
输入输 出参数: |
无 |
||
输 出参数: |
无 |
||
返回值: |
E_OK |
||
E_NOT_OK |
|||
C RYPTO_E_KEY_NOT_VALID |
|||
功 能概述: |
生成内部种子,用于 cryptoKeyId指定的秘钥 |
Crypto_KeyGenerate函数定义
函 数名称: |
Crypto_KeyGenerate |
||
函 数原型: |
Std_ReturnType Crypto_KeyGenerate ( uint32 cryptoKeyId ) |
||
服 务编号: |
0x07 |
||
同 步/异步: |
同步 |
||
是否 可重入: |
是(同一个cryp toKeyId是不可重入的) |
||
输 入参数: |
cryptoKeyId |
值 域: |
依赖于配置 |
输入输 出参数: |
无 |
||
输 出参数: |
无 |
||
返回值: |
E_OK |
||
E_NOT_OK |
|||
C RYPTO_E_KEY_NOT_VALID |
|||
CRYPTO_E_BUSY |
|||
CRYPTO_E_KEY_EMPTY |
|||
功 能概述: |
生成key material,并存储到 cryptoKeyId指定的Key |
Crypto_KeyDerive函数定义
函 数名称: |
Crypto_KeyDerive |
||
函 数原型: |
Std_ReturnType Crypto_KeyDerive ( uint32 cryptoKeyId, uint32 targetCryptoKeyId ) |
||
服 务编号: |
0x08 |
||
同 步/异步: |
同步 |
||
是否 可重入: |
是(同一个cryp toKeyId是不可重入的) |
||
输 入参数: |
cryptoKeyId |
值 域: |
依赖于配置 |
targetCryptoKeyId |
|||
输入输 出参数: |
无 |
||
输 出参数: |
无 |
||
返回值: |
E_OK |
||
E_NOT_OK |
|||
C RYPTO_E_KEY_NOT_VALID |
|||
CRYPTO_E_BUSY |
|||
CRYPTO_E_KEY_EMPTY |
|||
功 能概述: |
通过使用由加密 cryp toKeyId标识的给定targ etCryptoKeyId密钥中的 密钥元素来派生新密钥 |
Crypto_KeyExchangeCalcPubVal函数定义
函 数名称: |
Crypto_ KeyExchangeCalcPubVal |
||
函 数原型: |
Std_ReturnType Crypto_ KeyExchangeCalcPubVal ( uint32 cryptoKeyId, uint8* publicValuePtr, uint32* publicValueLengthPtr ) |
||
服 务编号: |
0x09 |
||
同 步/异步: |
同步 |
||
是否 可重入: |
是(同一个cryp toKeyId是不可重入的) |
||
输 入参数: |
cryptoKeyId |
值 域: |
依赖于配置 |
输入输 出参数: |
publicValueLengthPtr |
||
输 出参数: |
publicValuePtr |
||
返回值: |
E_OK |
||
E_NOT_OK |
|||
C RYPTO_E_KEY_NOT_VALID |
|||
CRYPTO_E_BUSY |
|||
CRYPTO_E_KEY_EMPTY |
|||
功 能概述: |
计算公钥交换的公钥值 ,并将公钥存储在公钥 值指针指向的内存位置 |
Crypto_KeyExchangeCalcPubVal函数定义
函 数名称: |
Crypto_ KeyExchangeCalcSecret |
||
函 数原型: |
Std_ReturnType Crypto_ KeyExchangeCalcSecret ( uint32 cryptoKeyId, const uint8* p artnerPublicValuePtr, uint32 par tnerPublicValueLength ) |
||
服 务编号: |
0x0a |
||
同 步/异步: |
同步 |
||
是否 可重入: |
是(同一个cryp toKeyId是不可重入的) |
||
输 入参数: |
cryptoKeyId |
值 域: |
依赖于配置 |
输入输 出参数: |
par tnerPublicValueLength |
||
输 出参数: |
partnerPublicValuePtr |
||
返回值: |
E_OK |
||
E_NOT_OK |
|||
C RYPTO_E_KEY_NOT_VALID |
|||
CRYPTO_E_BUSY |
|||
CRYPTO_E_KEY_EMPTY |
|||
功 能概述: |
使用由cryptoKeyId 和partner公钥标识的密 钥的密钥材料计算用于 密钥交换的共享密钥。 共享密钥作为密钥 元素存储在同一密钥中 |
Crypto_KeyExchangeCalcPubVal函数定义
函 数名称: |
Crypto_MainFunction |
||
函 数原型: |
void Crypto_MainFunction ( void ) |
||
服 务编号: |
0x0c |
||
同 步/异步: |
同步 |
||
是否 可重入: |
是(同一个cryp toKeyId是不可重入的) |
||
输 入参数: |
无 |
值 域: |
无 |
输入输 出参数: |
无 |
||
输 出参数: |
无 |
||
返回值: |
无 |
||
功 能概述: |
Crypto的调度函数, 主要用于处理异步任务 |
可配置函数定义
无。
配置
CryptoGeneral
图5-1 CryptoGeneral容器配置图
表5‑1 CryptoGeneral属性描述
UI名称 |
描述 |
|||
CryptoDev ErrorDetect |
取值范围 |
TRUE/FALSE |
默认取值 |
FALSE |
参数描述 |
是否 使能开发错误检查 |
|||
依赖关系 |
无 |
|||
Crypt oInstanceId |
取值范围 |
0..255 |
默认取值 |
无 |
参数描述 |
加密驱动 程序的实例ID,此 ID 用于 识别多个加密驱动 程序,以防在同一 ECU 中 使用多个加密驱动 |
|||
依赖关系 |
无 |
|||
Cr yptoMainFun ctionPeriod |
取值范围 |
0..INF |
默认取值 |
无 |
参数描述 |
表 示调用Crypto_Ma inFunction的周期 |
|||
依赖关系 |
无 |
|||
CryptoVer sionInfoApi |
取值范围 |
TRUE/FALSE |
默认取值 |
FALSE |
参数描述 |
表示是否 使能版本获取API |
|||
依赖关系 |
无 |
|||
CryptoEcucP artitionRef |
取值范围 |
引用 到EcucPartition |
默认取值 |
无 |
参数描述 |
映射Crypt o驱动到partition |
|||
依赖关系 |
仅存在于 多核多分区系统中 |
CryptoDriverObject
图5-2 CryptoDriverObjec容器配置图
表5‑2 CryptoDriverObject属性描述
UI名称 |
描述 |
|||
CryptoDri verObjectId |
取值范围 |
Uint32 |
默认取值 |
无 |
参数描述 |
加密驱动对象ID |
|||
依赖关系 |
无 |
|||
Cryp toQueueSize |
取值范围 |
Uint32 |
默认取值 |
无 |
参数描述 |
定义队列的长度 |
|||
依赖关系 |
无 |
|||
Cry ptoDefaultR andomKeyRef |
取值范围 |
引用[CryptoKey][ |
默认取值 |
无 |
参数描述 |
密钥包含为随机 数生成器提供种子 所必需的关键元素 |
|||
依赖关系 |
无 |
|||
CryptoDef aultRandomP rimitiveRef |
取值范围 |
引用[ CryptoPrimitive] |
默认取值 |
无 |
参数描述 |
对 配置默认随机数生 成器的原语的引用 |
|||
依赖关系 |
无 |
|||
C ryptoDriver ObjectEcucP artitionRef |
取值范围 |
引用[ EcucPartition ] |
默认取值 |
无 |
参数描述 |
表示此Cr yptoDriverObject 处于哪一个分区中 |
|||
依赖关系 |
仅 在多核系统中配置 |
|||
CryptoP rimitiveRef |
取值范围 |
引用[ CryptoPrimitive ] |
默认取值 |
无 |
参数描述 |
加密服务的预配置 |
|||
依赖关系 |
无 |
CryptoKeyElement
图5-3 CryptoKeyElement容器配置图
表5‑3 CryptoKeyElement属性描述
UI名称 |
描述 |
|||
C ryptoKeyEle mentAllowPa rtialAccess |
取值范围 |
TRUE/FALSE |
默认取值 |
无FALSE |
参数描述 |
表示此KeyElement 是否允许被局部访 问,访问的长度小 于CryptoKeyEleme ntSize配置的长度 |
|||
依赖关系 |
无 |
|||
CryptoKeyEl ementFormat |
取值范围 |
无 |
默认取值 |
无 |
参数描述 |
定义 KeyElement的格式 |
|||
依赖关系 |
无 |
|||
CryptoK eyElementId |
取值范围 |
Uint32 |
默认取值 |
无 |
参数描述 |
定义 KeyElement的索引 |
|||
依赖关系 |
ID值依赖于算法 ,如MAC算法可配 置ID分别为1,2,16 参考 [SWS_Csm_01022] |
|||
Cry ptoKeyEleme ntInitValue |
取值范围 |
无 |
默认取值 |
无 |
参数描述 |
用于 startup时填充key element初始值 |
|||
依赖关系 |
仅适用于RAM Key,ROM key存 在NVRAM中,无法 被修改(CryptoK eyElementPersist = FALSE) |
|||
C ryptoKeyEle mentPersist |
取值范围 |
TRUE/FALSE |
默认取值 |
FALSE |
参数描述 |
表示 是否需要将此key el ement存储到NVRAM |
|||
依赖关系 |
无 |
|||
Cryp toKeyElemen tReadAccess |
取值范围 |
C RYPTO_RA_ALLOWED |
默认取值 |
无 |
CRYPTO_RA_DENIED |
||||
CRY PTO_RA_ENCRYPTED |
||||
CRYPTO_ RA_INTERNAL_COPY |
||||
参数描述 |
定义此Key e lement的访问权限 |
|||
依赖关系 |
无 |
|||
CryptoKey ElementSize |
取值范围 |
Uint32 |
默认取值 |
无 |
参数描述 |
定义此key element的长度 |
|||
依赖关系 |
无 |
|||
Crypt oKeyElement WriteAccess |
取值范围 |
C RYPTO_WA_ALLOWED |
默认取值 |
无 |
CRYPTO_WA_DENIED |
||||
CRY PTO_WA_ENCRYPTED |
||||
CRYPTO_ WA_INTERNAL_COPY |
||||
参数描述 |
定义此Key element的写权限 |
|||
依赖关系 |
无 |
CryptoKeyType
图5-4 CryptoKeyType容器配置图
表5‑4 CryptoKeyType属性描述
UI名称 |
描述 |
|||
CryptoKe yElementRef |
取值范围 |
引用[ CryptoKeyElement ] |
默认取值 |
无 |
参数描述 |
表示此CryptoKe yType包含哪些Key element |
|||
依赖关系 |
无 |
CryptoKey
图5-5 CryptoKey容器配置图
表5‑5 CryptoKey属性描述
UI名称 |
描述 |
|||
CryptoKeyId |
取值范围 |
Uint32 |
默认取值 |
无 |
参数描述 |
Crypto 秘钥索引 |
|||
依赖关系 |
无 |
|||
Crypt oKeyTypeRef |
取值范围 |
引用[ CryptoKeyType ] |
默认取值 |
无 |
参数描述 |
表示此Crypto Key包含哪 些CryptoKeyType |
|||
依赖关系 |
无 |
CryptoPrimitive
图5-6 CryptoPrimitive容器配置图
表5‑6 CryptoPrimitive属性描述
UI名称 |
描述 |
|||
CryptoPr imitiveAlgo rithmFamily |
取值范围 |
Enumeration |
默认取值 |
无 |
参数描述 |
确定用于加 密服务的算法系列 |
|||
依赖关系 |
无 |
|||
Crypto PrimitiveAl gorithmMode |
取值范围 |
Enumeration |
默认取值 |
无 |
参数描述 |
确定用于加 密服务的算法模式 |
|||
依赖关系 |
无 |
|||
Crypto PrimitiveAl gorithmSeco ndaryFamily |
取值范围 |
Enumeration |
默认取值 |
无 |
参数描述 |
确定用于加密服 务的算法二级系列 |
|||
依赖关系 |
无 |
|||
CryptoPrimi tiveService |
取值范围 |
Enumeration |
默认取值 |
无 |
参数描述 |
确定用于定 义功能的加密服务 |
|||
依赖关系 |
无 |