Autosar Crypto Driver学习笔记(二)

Crypto Driver

Function definitions

介绍了Autosar标准定义的函数

General API
Crypto_Init

image-20240304212832258
初始化Crypto Driver

Crypto_GetVersionInfo

image-20240304213041820
读取Crypto Driver版本

Job Processing Interface
Crypto_ProcessJob

image-20240304213128507
image-20240304213138021
如果模块未初始化,并且启用了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。

image-20240305204549451
*:服务名称来源于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指定:

image-20240305205104737
*:服务名称来源于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

image-20240305210213652
该接口从队列中删除提供的作业,并在可能的情况下取消对该作业的处理。

Key Management Interface

注意:如果要修改的实际key element直接映射到flash,那么在调用key管理函数时可能会有更大的延迟(同步操作)

如果底层加密硬件不允许在处理作业的同时执行密钥管理功能,则密钥管理功能应等待当前作业执行,然后开始处理密钥管理功能

注意:必须确保作业的处理速度足够快,以避免密钥管理功能必须等待很长时间。

还建议对作业使用CRYPTO_OPERATIONMODE_SINGLECALL

Key Setting Interface密钥设置接口
Crypto_KeyElementSet

加密驱动程序仅在以下情况下执行此操作

CryptoKeyElement/CryptoKeyElementWriteAccess设置为

CRYPTO_WA_ALLOWEDCRYPTO_WA_ENCRYPTED

注意:如果key元素引用了SHE-key,建议设置

CryptoKeyElementWriteAccess to CRYPTO_WA_ENCRYPTED。密钥本身必须以M1M2M3格式的she密钥提供。

image-20240305210847839
image-20240305210856004
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

image-20240305211606904
将由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_ALLOWEDCRYPTO_RA_ENCRYPTED

注意:从SHE硬件读取密钥是不可能的,除非它是SHE RAMKey。在本例中,读取SHEKey将提供M1M2M3。在本例中,密钥元素应该设置为CRYPTO_RA_ENCRYPTED

image-20240305211956526
image-20240305212004511
如果函数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

image-20240305212508005
image-20240305212516932
将key element复制到同一加密驱动程序中的另一个key element。注意:如果实际的key element直接映射到flash,调用此函数(同步操作)时可能会有更大的延迟。

Crypto_KeyElementCopyPartial

image-20240305212710083
image-20240305213640477
将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

image-20240306205801436
image-20240306205809671

将密钥及其所有元素复制到同一加密驱动程序中的另一个密钥。注意:如果实际的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

image-20240306212029922
如果加密驱动程序尚未初始化,并且加密驱动程序的开发错误检测已启用,则该函数

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

image-20240306212806508
如果模块尚未初始化,并且启用了加密驱动程序的开发错误检测,则函数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

image-20240307205143041
如果模块尚未初始化,并且启用了加密驱动程序的开发错误检测,则函数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

image-20240307205411144
如果模块尚未初始化,并且启用了加密驱动程序的开发错误检测,则函数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

image-20240307205928327
image-20240307205935898
如果模块尚未初始化并且启用了加密驱动程序的开发错误检测:函数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

image-20240307210447405
image-20240307211014799

如果模块尚未初始化,并且启用了加密驱动程序的开发错误检测,则该函数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函数是可选的
image-20240307211354743

Containers and configuration parameters

以下章节总结了所有配置参数。

注意:配置容器中的id必须是连续的,无间隙的,且必须从零开始

Crypto

image-20240307213529960
Crypto配置至少包括CryptoGeneralCryptoDriverObjects。一般还包括CryptoKeyElements(配置key中的参数),CryptoKeyTypes(关联一个或多个KeyElement),CryptoKeys(包含KeyType和KeyId),CryptoPrimitives(配置具体的安全算法)

CryptoGeneral

image-20240309204214414
CryptoDevErrorDetect:启用开发错误检测
image-20240309204523692

CryptoInstanceId:crypto driver的实例ID。此ID用于识别多个crypto driver,以防在同一ECU中使用多个driver。
image-20240309204657110
image-20240309204707612

CryptoMainFunctionPeriod:配置Crypto_MainFunction周期
image-20240309204805485

CryptoVersionInfoApi:配置是否使用版本读取函数Crypto_GetVersionInfo().
image-20240309204913985
CryptoEcucPartitionRef:将 Crypto driver映射到零或多个ECUC分区,以使该分区中的模块API可用。该模块将作为每个分区中的独立实例运行
image-20240309205014337

CryptoDriverObjects

image-20240309205221099
配置一个或多个CRYPTO Object
image-20240309205244348

CryptoDriverObject

image-20240309205341301
image-20240309205349515
CryptoDriverObjectId:配置Crypto Driver Object的ID,Crypto Driver Object关联不同的crypto primitives
image-20240309205631008
CryptoQueueSize:Crypto Driver中队列的大小。定义Crypto Driver Object队列中的最大作业数。如果设置为0,则在Crypto Driver Object中禁用排队
image-20240309205730962
CryptoDefaultRandomKeyRef:通过关联CryptoDefaultRandomPrimitiveRef实现对CryptoKey的引用。该key包含为随机数生成器提供种子所需的key elements。只有当被CryptoDefaultRandomPrimitiveRef引用的原语需要一个种子值时,才需要设置该元素。
image-20240309210321444
image-20240309210329226
CryptoDefaultRandomPrimitiveRef:这是对配置默认随机数生成器的原语的引用。如果crypto driver object需要执行需要随机数生成器的加密原语,但该原语的配置没有为随机数生成器提供参数,则应使用此默认随机数生成器

示例:加密驱动程序需要基于椭圆曲线生成签名,但是生成签名的原语缺少随机数生成器的信息。
image-20240309210638103
CryptoDriverObjectEcucPartitionRef:将crypto driver object映射到零个或多个ECUC分区。引用的ECUC分区是 Crypto driver映射到的ECUC分区的子集

注意:像HSM这样的CryptoDriverObjects只能映射到一个分区
image-20240309210737233
CryptoPrimitiveRef:crypto driver object关联的CryptoPrimitive,也就是对应的安全算法

CryptoKeys

image-20240309210934434
CryptoKeys包含多个CryptoKey

CryptoKey

image-20240309211031286
CryptoKeyId:CRYPTO Key的id
image-20240309211055314
CryptoKeyTypeRef:关联CryptoKeyType。CryptoKeyType将关联key elements

CryptoKeyElements

image-20240309211506141
CryptoKeyElements包含一个或多个CryptoKeyElement
image-20240309211956244

CryptoKeyElement

image-20240309212020606
CryptoKeyElementAllowPartialAccess:启用或禁用数据小于元素大小的 key element的写入和读取。
image-20240309212600549
CryptoKeyElementFormat:定义key element的格式。这是用于从驱动程序中提供或提取key data的格式。
image-20240309212759808
image-20240309212808858
CryptoKeyElementId:配置CRYPTO key element的id
image-20240309212837156
CryptoKeyElementInitValue:该值将用于在启动期间填充key element
(i)对于所有非持久性关键元素,以及

(ii)对于那些从未被写入的持久性关键元素
image-20240309213120692
CryptoKeyElementPersist:启用或禁用在非易失性存储中持久化关键元素。

True:启用关键元素的持久化。

False:禁用key元素的持久化。
image-20240309213218185
image-20240309213224525
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导出。
image-20240309213556238
CryptoKeyElementSize:配置KeyElement的大小,byte为单位
image-20240309213628310
image-20240309213636037
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

image-20240309213835930
CryptoKeyTypes包含一个或多个CryptoKeyType

CryptoKeyType

image-20240309213920659
CryptoKeyElementRef:CryptoKeyType关联Key Element,可以关联一个或多个KeyElement

CryptoPrimitives

image-20240309214447330
CryptoPrimitives包含CryptoPrimitive
image-20240309214458322

CryptoPrimitive

image-20240309214554872
image-20240309215333043
CryptoPrimitiveAlgorithmFamily:确定用于加密服务的算法Family
image-20240309215534328
image-20240309215542292
CryptoPrimitiveAlgorithmMode:配置加密算法的模式
image-20240309220120148
image-20240309220128780
CryptoPrimitiveAlgorithmSecondaryFamily:确定用于加密服务的第二算法Family

CryptoPrimitiveService

image-20240309220209667
CryptoPrimitiveService:确定加密服务的功能

  • 16
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赞哥哥s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值