文章目录
- Crypto Driver
- Function definitions
- General API
- Crypto_Init
- Crypto_GetVersionInfo
- Job Processing Interface
- Crypto_ProcessJob
- Job Cancellation Interface
- Key Management Interface
- Key Setting Interface密钥设置接口
- Crypto_KeyElementSet
- Crypto_KeySetValid
- Key Extraction Interface密钥提取接口
- Crypto_KeyElementGet
- Key Copying Interface密钥拷贝接口
- Crypto_KeyElementCopy
- Crypto_KeyElementCopyPartial
- Crypto_KeyCopy
- Crypto_KeyElementIdsGet
- Key Generation Interface密钥生成接口
- Crypto_RandomSeed
- Crypto_KeyGenerate
- Key Derivation Interface密钥派生接口
- Crypto_KeyDerive
- Key Exchange Interface密钥交换接口
- Crypto_KeyExchangeCalcPubVal
- Crypto_KeyExchangeCalcSecret
- Scheduled functions
- Crypto_MainFunction
- Containers and configuration parameters
- Crypto
- CryptoGeneral
- CryptoDriverObjects
- CryptoDriverObject
- CryptoKeys
- CryptoKey
- CryptoKeyElements
- CryptoKeyElement
- CryptoKeyTypes
- CryptoKeyType
- CryptoPrimitives
- CryptoPrimitive
- CryptoPrimitiveService
Crypto Driver
Function definitions
介绍了Autosar标准定义的函数
General API
Crypto_Init
初始化Crypto Driver
Crypto_GetVersionInfo
读取Crypto Driver版本
Job Processing Interface
Crypto_ProcessJob
如果模块未初始化,并且启用了Crypto Driver的开发错误检测,则函数Crypto_ProcessJob将向DET报告CRYPTO_E_UNINIT并返回E_NOT_OK
如果参数objectId超出范围,并且启用了Crypto Driver的开发错误检测,则该函数Crypto_ProcessJob将向DET报告CRYPTO_E_PARAM_HANDLE并返回E_NOT_OK。
如果参数job是空指针,并且启用了Crypto Driver的开发错误检测,则函数Crypto_ProcessJob将向DET报告CRYPTO_E_PARAM_POINTER并返回E_NOT_OK。
如果加密驱动对象不支持参数job->jobPrimitiveInfo->primitiveInfo-service,并且启用了Crypto Driver的开发错误检测,则函数Crypto_ProcessJob将向DET报告CRYPTO_E_PARAM_HANDLE并返回E_NOT_OK
如果参数job->jobPrimitiveInfo->primitiveInfo->service is set to CRYPTO_KEYSETVALID, CRYPTO_RANDOMSEED, CRYPTO_KEYGENERATE, CRYPTO_KEYDERIVE, CRYPTO_KEYEXCHANGECALCPUBVAL or CRYPTO_KEYEXCHANGECALCSECRET,则参数 job->cryptoKeyId必须在范围内,否则 Crypto_ProcessJob报告CRYPTO_E_PARAM_HANDLE to DET并返回E_NOT_OK
如果参数r job->jobPrimitiveInfo->primitiveInfo->service is set to CRYPTO_KEYDERIVE,则参数job->cryptoTargetKeyId必须在范围内,否则 Crypto_ProcessJob报告CRYPTO_E_PARAM_HANDLE to DET并返回E_NOT_OK
如果 job->jobPrimitiveInfo->primitiveInfo- >service is set to CRYPTO_HASH or CRYPTO_MACGENERATE,则需要输入参数job->jobPrimitiveInfo->primitiveInfo->resultLength,如果job的result length小于所选算法的result length,则将结果的最高有效位截断为配置的result length
如果参数job->jobPrimitiveInfo->primitiveInfo->algorithm不被Crypto Driver支持,且开启了开发错误检测,则Crypto_ProcessJob需要报告CRYPTO_E_PARAM_HANDLE to the DET且返回 E_NOT_OK.
根据job->jobPrimitiveInfo-> primitiveInfo->service中配置的加密服务,需要将job->jobPrimitiveInput的不同参数设置为有效值。SWS_Crypto_00071中的表指定了服务在不同模式下需要或可选的参数
如果需要一个指向缓冲区的指针作为参数,但它是一个空指针,如果启用了加密驱动程序的开发错误检测,则Crypto_ProcessJob()函数将向DET报告CRYPTO_E_PARAM_POINTER且返回E_NOT_OK
如果处理服务请求需要长度信息(作为变量或指针),但指示的长度值为零,并且如果启用了Crypto Driver的开发错误检测,则Crypto_ProcessJob()函数会报告CRYPTO_E_PARAM_VALUE给DET并返回E_NOT_OK。
*:服务名称来源于Crypto_ServiceInfoType (job struct的一部分)
**:在输入重定向的情况下,使用相应的 key element作为输入,而不是使用inputBuffer。
***:在输出重定向的情况下,使用相应的 key element作为输出,而不是outputBuffer
S:Start模式下需要的成员。
U: Update模式下需要的成员。
F:Finish模式所需成员。
G:Finish模式下的可选成员。
除CRYPTO_HASH和CRYPTO_RANDOMGENERATE外,在Crypto_ServiceInfoType中列出的所有加密服务都需要一个密钥表示为密钥标识符
在下表中列出了作业的不同输入和输出缓冲区的内容。jobPrimitiveInputOutputType指定:
*:服务名称来源于Crypto_ServiceInfoType。
**:在输入重定向的情况下,使用相应的 key element作为输入,而不是使用inputBuffer。
***:在输出重定向的情况下,使用相应的 key element作为输出,而不是 outputbuffer
如果crypto primitive需要输入数据,则其内存位置由指针job->jobPrimitiveInput.inputPtr引用。在调用Crypto_ProcessJob时,该数据的长度存储在job-> jobPrimitiveInput.inputLength中。
如果输入被重定向到一个key element,则必须使用相应key element的输入缓冲区。
如果 crypto primitive需要为结果提供缓冲区,则其内存位置由指针job->jobPrimitiveInput.outputPtr引用。在调用这个函数时,job->jobPrimitiveInput.outputLengthPtr应该包含相关缓冲区的大小。当请求完成时,将存储返回值的实际长度
如果输出被重定向到一个key element,则必须使用相应key element的输出缓冲区。
如果选择了随机生成器服务和对应的熵,则函数返回CRYPTO_E_ENTROPY_EXHAUSTED。函数Crypto_ProcessJob应该另外报告运行时错误CRYPTO_E_RE_ENTROPY_EXHAUSTED。
Job Cancellation Interface
该接口从队列中删除提供的作业,并在可能的情况下取消对该作业的处理。
Key Management Interface
注意:如果要修改的实际key element直接映射到flash,那么在调用key管理函数时可能会有更大的延迟(同步操作)
如果底层加密硬件不允许在处理作业的同时执行密钥管理功能,则密钥管理功能应等待当前作业执行,然后开始处理密钥管理功能
注意:必须确保作业的处理速度足够快,以避免密钥管理功能必须等待很长时间。
还建议对作业使用CRYPTO_OPERATIONMODE_SINGLECALL。
Key Setting Interface密钥设置接口
Crypto_KeyElementSet
加密驱动程序仅在以下情况下执行此操作
CryptoKeyElement/CryptoKeyElementWriteAccess设置为
CRYPTO_WA_ALLOWED或CRYPTO_WA_ENCRYPTED。
注意:如果key元素引用了SHE-key,建议设置
CryptoKeyElementWriteAccess to CRYPTO_WA_ENCRYPTED。密钥本身必须以M1M2M3格式的she密钥提供。
cryptoKeyId:保存要设置key id(包含对应的key element)
keyElement Id :保存要设置的key element的id
keyPtr:key数据指针
keyLength:key element长度
注意:此服务以同步方式工作。然而,key material 有可能驻留在 flash memory中。因此,执行这个函数可能需要一些时间
如果尚未初始化Crypto Driver,并且启用了加密驱动程序的开发错误检测,则该函数
Crypto_KeyElementSet将向DET报告CRYPTO_E_UNINIT并返回
E_NOT_OK。
如果cryptoKeyId超出范围,并且启用了加密驱动程序的开发错误检测,则Crypto_KeyElementSet函数将向DET报告CRYPTO_E_PARAM_HANDLE并返回E_NOT_OK
如果参数keyElementId超出范围,并且启用了加密驱动程序的开发错误检测,则该函数Crypto_KeyElementSet将向DET报告CRYPTO_E_PARAM_HANDLE并返回E_NOT_OK。
如果参数keyPtr是空指针,并且启用了加密驱动程序的开发错误检测,则该函数
Crypto_KeyElementSet将向DET报告CRYPTO_E_PARAM_POINTER并返回E_NOT_OK。
如果keyLength为零,并且启用了加密驱动程序的开发错误检测,则函数Crypto_KeyElementSet将向DET报告CRYPTO_E_PARAM_VALUE并返回E_NOT_OK。
Crypto_KeySetValid
将由cryptoKeyId标识的密钥的密钥状态设置为有效
如果模块尚未初始化并且启用了加密驱动程序的开发错误检测,则函数Crypto_KeySetValid将向DET报告CRYPTO_E_UNINIT并返回E_NOT_OK。
如果cryptoKeyId超出范围,并且启用了加密驱动程序的开发错误检测,则Crypto_KeyElementSet函数将向DET报告CRYPTO_E_PARAM_HANDLE并返回E_NOT_OK
如果Crypto Driver没有检测到错误,服务Crypto_KeySetValid()将密钥cryptoKeyId设置为“valid”
Key Extraction Interface密钥提取接口
Crypto_KeyElementGet
加密驱动程序仅在以下情况下执行此操作
CryptoKeyElement/CryptoKeyElementReadAccess设置为
CRYPTO_RA_ALLOWED或CRYPTO_RA_ENCRYPTED。
注意:从SHE硬件读取密钥是不可能的,除非它是SHE RAMKey。在本例中,读取SHEKey将提供M1M2M3。在本例中,密钥元素应该设置为CRYPTO_RA_ENCRYPTED。
如果函数Crypto_KeyElementGet返回CRYPTO_E_KEY_NOT_AVAILABLE,则该函数应另外报告运行时错误CRYPTO_E_RE_KEY_NOT_AVAILABLE。
如果函数Crypto_KeyElementGet返回CRYPTO_E_KEY_READ_FAIL,函数将额外报告运行时错误CRYPTO_E_RE_KEY_READ_FAIL
如果模块尚未初始化,并且启用了加密驱动程序的开发错误检测,则函数Crypto_KeyElementGet将向DET报告CRYPTO_E_UNINIT并返回E_NOT_OK
如果cryptoKeyId超出范围,并且启用了加密驱动程序的开发错误检测,则Crypto_KeyElementGet函数将向DET报告CRYPTO_E_PARAM_HANDLE并返回E_NOT_OK
如果参数keyElementId超出范围,并且启用了加密驱动程序的开发错误检测,则该函数Crypto_KeyElementGet将向DET报告CRYPTO_E_PARAM_HANDLE并返回E_NOT_OK。
如果resultPtr参数为空指针,并且启用了加密驱动程序的开发错误检测,则该函数
Crypto_KeyElementGet将向DET报告CRYPTO_E_PARAM_POINTER并返回E_NOT_OK。
如果参数resultLengthPtr为空指针,并且启用了加密驱动程序的开发错误检测,则该函数Crypto_KeyElementGet将向DET报告CRYPTO_E_PARAM_POINTER并返回E_NOT_OK
如果该值(由resultLengthPtr指向)为零,并且启用了加密驱动程序的开发错误检测,则该函数Crypto_KeyElementGet将向DET报告CRYPTO_E_PARAM_VALUE并返回E_NOT_OK
如果Crypto Driver没有检测到错误,服务Crypto_KeyElementGet()将检索key element的值并将其存储在由resultPtr指向的缓冲区中。
指针resultPtr保存着存放键元素数据的内存位置。在调用这个函数时,resultLengthPtr应该包含resultPtr提供的缓冲区的大小。当请求完成时,将存储返回值的实际长度。
Key Copying Interface密钥拷贝接口
Crypto_KeyElementCopy
将key element复制到同一加密驱动程序中的另一个key element。注意:如果实际的key element直接映射到flash,调用此函数(同步操作)时可能会有更大的延迟。
Crypto_KeyElementCopyPartial
将key element复制到同一加密驱动程序中的另一个key element.
keyElementSourceOffset和keyElementCopyLength允许将源key element的一部分复制到目标中。目标key的偏移量也可以用这个函数指定
注意:如果实际的key element直接映射到闪存,调用此函数(同步操作)时可能会有更大的延迟。
如果尚未初始化加密驱动程序,并且启用了加密驱动程序的开发错误检测,则该函数
Crypto_KeyElementCopyPartial将向DET报告CRYPTO_E_UNINIT并返回E_NOT_OK。
如果cryptoKeyId, keyElementId, targetKeyElementId或targetCryptoKeyId超出范围,并且如果启用了加密驱动程序的开发错误检测,则该函数将Crypto_KeyElementCopyPartial报告CRYPTO_E_PARAM_HANDLE给DET并返回E_NOT_OK。
如果使用keyElementId指定的密钥元素的总长度小于keyElementSourceOffset + keyElementCopyLength,则Crypto_KeyElementCopyPartial将返回
CRYPTO_E_KEY_SIZE_MISMATCH。
如果targetCryptoKeyId引用的key的targetKeyElementId指定的key element的最大可用缓冲区小于keyElementTargetOffset + keyElementCopyLength,则函数Crypto_KeyElementCopyPartial返回
CRYPTO_E_KEY_SIZE_MISMATCH。
如果加密驱动程序未检测到错误,则函数
Crypto_KeyElementCopyPartial将keyElementSourceOffset偏移量和keyElementCopyLength指定长度的keyelemententid所引用的key element的一部分复制到targetCryptoKeyId所引用的key的targetKeyElementId所引用的key element。
如果目标key element的当前长度大于或等于(keyElementTargetOffset + keyElementCopyLength),则key element的长度保持不变
如果目标key element的当前长度小于
(keyElementTargetOffset + keyElementCopyLength)且key element的最大长度大于或等于(keyElementTargetOffset + keyElementCopyLength),则将源数据复制到目标key element中,并将长度设置为(keyElementTargetOffset + keyElementCopyLength)。
Crypto_KeyCopy
将密钥及其所有元素复制到同一加密驱动程序中的另一个密钥。注意:如果实际的key element直接映射到闪存,调用此函数(同步操作)时可能会有更大的延迟。
如果尚未初始化加密驱动程序,并且启用了加密驱动程序的开发错误检测,则函数Crypto_KeyCopy将向DET报告CRYPTO_E_UNINIT并返回E_NOT_OK
如果cryptoKeyId超出范围,并且启用了加密驱动程序的开发错误检测,则Crypto_KeyCopy函数将向DET报告CRYPTO_E_PARAM_HANDLE并返回E_NOT_OK
如果targetCryptoKeyId超出范围,并且启用了加密驱动程序的开发错误检测,则函数Crypto_KeyCopy应向DET报告CRYPTO_E_PARAM_HANDLE并返回E_NOT_OK
如果 Crypto Driver没有检测到错误,则该函数应将cryptoKeyId引用的密钥中的所有key elements复制到targetCryptoKeyId引用的密钥中。
Crypto_KeyElementIdsGet
如果加密驱动程序尚未初始化,并且加密驱动程序的开发错误检测已启用,则该函数
Crypto_KeyElementIdsGet将向DET报告CRYPTO_E_UNINIT并返回E_NOT_OK
如果cryptoKeyId超出范围,并且如果启用了加密驱动程序的开发错误检测,则该功能
Crypto_KeyElementIdsGet将向DET报告CRYPTO_E_PARAM_HANDLE并返回E_NOT_OK。
如果加密驱动程序没有检测到错误,则该函数将由cryptoKeyId标识的密钥中可用的 key elements的所有id存储到keyElementIdsPtr提供的数组中。它还将elements的数量存储到由keyElementIdsLengthPtr指向的值
注意:当CRYIF应该将整个密钥从一个Crypto Driver复制到另一个Crypto Driver时,CRYIF需要此函数。
Key Generation Interface密钥生成接口
Crypto_RandomSeed
如果模块尚未初始化,并且启用了加密驱动程序的开发错误检测,则函数Crypto_RandomSeed将向DET报告CRYPTO_E_UNINIT并返回E_NOT_OK。
如果参数cryptoKeyId超出范围,并且如果启用了加密驱动程序的开发错误检测,则该函数Crypto_RandomSeed将向DET报告CRYPTO_E_PARAM_HANDLE并返回E_NOT_OK。
如果参数seedPtr为空指针,并且启用了加密驱动程序的开发错误检测,则该函数
Crypto_RandomSeed将向DET报告CRYPTO_E_PARAM_POINTER并返回E_NOT_OK。
如果seedLength为零,并且启用了加密驱动程序的开发错误检测,则将报告Crypto_RandomSeed函数将CRYPTO_E_PARAM_VALUE转换为DET并返回E_NOT_OK
如果Crypto Driver没有检测到错误,服务Crypto_RandomSeed()将使用从熵源派生的种子状态提供给定的密钥。随机数生成器的内部状态存储在key元素中
CRYPTO_KE_RANDOM_SEED
Crypto_KeyGenerate
如果模块尚未初始化,并且启用了加密驱动程序的开发错误检测,则函数Crypto_KeyGenerate将向DET报告CRYPTO_E_UNINIT并返回E_NOT_OK
如果参数cryptoKeyId超出范围,并且启用了加密驱动程序的开发错误检测,则返回该函数Crypto_KeyGenerate将向DET报告CRYPTO_E_PARAM_HANDLE并返回E_NOT_OK。
如果加密驱动程序未检测到错误,则该服务Crypto_KeyGenerate()生成相应的密钥。
Key Derivation Interface密钥派生接口
Crypto_KeyDerive
如果模块尚未初始化,并且启用了加密驱动程序的开发错误检测,则函数crypto_keyderived应向DET报告CRYPTO_E_UNINIT并返回E_NOT_OK。
如果参数cryptoKeyId超出范围,并且如果启用了加密驱动程序的开发错误检测,则该函数crypto_keyderived将向DET报告CRYPTO_E_PARAM_HANDLE并返回E_NOT_OK。
如果参数targetCryptoKeyId超出范围,并且启用了加密驱动程序的开发错误检测,则该函数crypto_keyderived将向DET报告CRYPTO_E_PARAM_HANDLE并返回E_NOT_OK
如果加密驱动程序未检测到任何错误,则服务crypto_keyderived()通过salt和password派生一个 key element
密钥派生服务需要salt和password来派生新密钥。因此,salt和password作为key element在由cryptoKeyId引用的密钥中。
Key Exchange Interface密钥交换接口
Crypto_KeyExchangeCalcPubVal
如果模块尚未初始化并且启用了加密驱动程序的开发错误检测:函数Crypto_KeyExchangeCalcPubVal将向DET报告CRYPTO_E_UNINIT并返回E_NOT_OK。
如果参数cryptoKeyId超出范围,并且如果启用了加密驱动程序的开发错误检测,则该函数Crypto_KeyExchangeCalcPubVal将向DET报告CRYPTO_E_PARAM_HANDLE并返回E_NOT_OK
如果参数publicValuePtr是空指针,并且启用了加密驱动程序的开发错误检测,则该函数Crypto_KeyExchangeCalcPubVal将向DET报告CRYPTO_E_PARAM_POINTER并返回E_NOT_OK
如果参数pubValueLengthPtr是空指针,并且如果启用了加密驱动程序的开发错误检测,则该函数Crypto_KeyExchangeCalcPubVal将向DET报告CRYPTO_E_PARAM_POINTER并返回E_NOT_OK。
如果由pubValueLengthPtr指向的值为零,并且如果启用了加密驱动程序的开发错误检测,则该函数将Crypto_KeyExchangeCalcPubVal报告CRYPTO_E_PARAM_VALUE给DET并返回E_NOT_OK
如果Crypto Driver没有检测到错误,服务Crypto_KeyExchangeCalcPubVal()计算当前作业的密钥交换的公共值
指针publicValuePtr保存着存放公共值数据的内存位置。在调用这个函数时,publicValueLengthPtr应该包含由publicValuePtr提供的缓冲区的大小。当请求完成时,将存储返回值的实际长度。
Crypto_KeyExchangeCalcSecret
如果模块尚未初始化,并且启用了加密驱动程序的开发错误检测,则该函数Crypto_KeyExchangeCalcSecret将向DET报告CRYPTO_E_UNINIT并返回E_NOT_OK
如果参数cryptoKeyId超出范围,并且启用了加密驱动程序的开发错误检测,则返回该函数将Crypto_KeyExchangeCalcSecret报告CRYPTO_E_PARAM_HANDLE给DET并返回E_NOT_OK
如果参数partnerPublicValuePtr是空指针,并且如果启用了加密驱动程序的开发错误检测,则该函数Crypto_KeyExchangeCalcSecret将向DET报告CRYPTO_E_PARAM_POINTER并返回E_NOT_OK。。
如果partnerPublicValueLength为零,并且启用了加密驱动程序的开发错误检测,则该函数Crypto_KeyExchangeCalcSecret将向DET报告CRYPTO_E_PARAM_VALUE并返回E_NOT_OK。
如果Crypto未检测到错误,则服务Crypto_KeyExchangeCalcSecret()计算密钥交换的共享密钥,并将其作为密钥元素存储在cryptoKeyId中
Scheduled functions
Crypto_MainFunction
Crypto_MainFunction()对于异步作业处理是必需的。对于同步作业处理,提供main函数是可选的
Containers and configuration parameters
以下章节总结了所有配置参数。
注意:配置容器中的id必须是连续的,无间隙的,且必须从零开始。
Crypto
Crypto配置至少包括CryptoGeneral,CryptoDriverObjects。一般还包括CryptoKeyElements(配置key中的参数),CryptoKeyTypes(关联一个或多个KeyElement),CryptoKeys(包含KeyType和KeyId),CryptoPrimitives(配置具体的安全算法)
CryptoGeneral
CryptoDevErrorDetect:启用开发错误检测
CryptoInstanceId:crypto driver的实例ID。此ID用于识别多个crypto driver,以防在同一ECU中使用多个driver。
CryptoMainFunctionPeriod:配置Crypto_MainFunction周期
CryptoVersionInfoApi:配置是否使用版本读取函数Crypto_GetVersionInfo().
CryptoEcucPartitionRef:将 Crypto driver映射到零或多个ECUC分区,以使该分区中的模块API可用。该模块将作为每个分区中的独立实例运行
CryptoDriverObjects
配置一个或多个CRYPTO Object
CryptoDriverObject
CryptoDriverObjectId:配置Crypto Driver Object的ID,Crypto Driver Object关联不同的crypto primitives
CryptoQueueSize:Crypto Driver中队列的大小。定义Crypto Driver Object队列中的最大作业数。如果设置为0,则在Crypto Driver Object中禁用排队
CryptoDefaultRandomKeyRef:通过关联CryptoDefaultRandomPrimitiveRef实现对CryptoKey的引用。该key包含为随机数生成器提供种子所需的key elements。只有当被CryptoDefaultRandomPrimitiveRef引用的原语需要一个种子值时,才需要设置该元素。
CryptoDefaultRandomPrimitiveRef:这是对配置默认随机数生成器的原语的引用。如果crypto driver object需要执行需要随机数生成器的加密原语,但该原语的配置没有为随机数生成器提供参数,则应使用此默认随机数生成器
示例:加密驱动程序需要基于椭圆曲线生成签名,但是生成签名的原语缺少随机数生成器的信息。
CryptoDriverObjectEcucPartitionRef:将crypto driver object映射到零个或多个ECUC分区。引用的ECUC分区是 Crypto driver映射到的ECUC分区的子集
注意:像HSM这样的CryptoDriverObjects只能映射到一个分区
CryptoPrimitiveRef:crypto driver object关联的CryptoPrimitive,也就是对应的安全算法
CryptoKeys
CryptoKeys包含多个CryptoKey
CryptoKey
CryptoKeyId:CRYPTO Key的id
CryptoKeyTypeRef:关联CryptoKeyType。CryptoKeyType将关联key elements
CryptoKeyElements
CryptoKeyElements包含一个或多个CryptoKeyElement
CryptoKeyElement
CryptoKeyElementAllowPartialAccess:启用或禁用数据小于元素大小的 key element的写入和读取。
CryptoKeyElementFormat:定义key element的格式。这是用于从驱动程序中提供或提取key data的格式。
CryptoKeyElementId:配置CRYPTO key element的id
CryptoKeyElementInitValue:该值将用于在启动期间填充key element
(i)对于所有非持久性关键元素,以及
(ii)对于那些从未被写入的持久性关键元素
CryptoKeyElementPersist:启用或禁用在非易失性存储中持久化关键元素。
True:启用关键元素的持久化。
False:禁用key元素的持久化。
CryptoKeyElementReadAccess:配置KeyElement的Read权限
CRYPTO_RA_DENIED = key element不能从Crypto Driver外部读取
CRYPTO_RA INTERNAL_COPY = key element可以复制到同一Crypto Driver中的另一个key element。
CRYPTO_RA_ALLOWED = key element可以作为明文读取
CRYPTO_RA_ENCRYPTED = key element可以被加密读取。例如:SHE Ram-Key导出。
CryptoKeyElementSize:配置KeyElement的大小,byte为单位
CryptoKeyElementWriteAccess:配置KeyElement的写入访问权限
CRYPTO_WA_DENIED = key element不能从Crypto Driver外部写入
CRYPTO_WA INTERNAL_COPY = key element可以用同一Crypto Driver中的另一个key element填充。
CRYPTO_WA_ALLOWED = key element可以重写为明文
CRYPTO_WA_ENCRYPTED = key element可以加密写入。例如:SHE载入钥匙
CryptoKeyTypes
CryptoKeyTypes包含一个或多个CryptoKeyType
CryptoKeyType
CryptoKeyElementRef:CryptoKeyType关联Key Element,可以关联一个或多个KeyElement
CryptoPrimitives
CryptoPrimitives包含CryptoPrimitive
CryptoPrimitive
CryptoPrimitiveAlgorithmFamily:确定用于加密服务的算法Family
CryptoPrimitiveAlgorithmMode:配置加密算法的模式
CryptoPrimitiveAlgorithmSecondaryFamily:确定用于加密服务的第二算法Family
CryptoPrimitiveService
CryptoPrimitiveService:确定加密服务的功能