Autosar Crypto Driver学习笔记(二)

news2024/12/24 3:18:30

文章目录

    • 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

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:确定加密服务的功能

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

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

相关文章

Linux操作系统及进程(一)

一、操作系统的概念 概念 :任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括: 内核(进程管理,内存管理,文件管理,驱动管理) 其他程…

Redis淘汰策略,持久化和集群

Redis淘汰策略 Redis 的 OBJECT 命令提供了多个子命令&#xff0c;用于检查有关键的内部详细信息。以下是可用的子命令及其描述&#xff1a; ENCODING <key>&#xff1a;返回用于存储与键关联的值的内部表示类型。 FREQ <key>&#xff1a;返回键的访问频率索引。返…

并查集

数据结构、算法总述&#xff1a;数据结构/基础算法 C/C_禊月初三的博客-CSDN博客 并查集是一种用于管理元素所属集合的数据结构&#xff0c;实现为一个森林&#xff0c;其中每棵树表示一个集合&#xff0c;树中的节点表示对应集合中的元素。 基本操作&#xff1a; 初始化&…

Windows→Linux,本地同步到服务器

适用背景&#xff1a; 用自己电脑修改代码&#xff0c;使用实验室/公司的服务器炼丹的朋友 优势&#xff1a; 本地 <--> 服务器&#xff0c;实时同步&#xff0c;省去文件传输的步骤 本地改 -> 自动同步到服务器 -> 服务器跑代码 -> 一键同步回本地&#xff…

Elasticsearch:调整搜索速度

在我之前的文章 “Elasticsearch&#xff1a;如何提高查询性能” 及 “Elasticsearch&#xff1a;提升 Elasticsearch 性能” 里&#xff0c;我详细描述了如何提高搜索的性能。在今天的文章里&#xff0c;我从另外一个视角来描述如何调整搜索的速度。希望对大家有所帮助&#x…

Python之Web开发中级教程----搭建虚拟环境

Python之Web开发中级教程----搭建Web框架二 搭建虚拟环境 虚拟环境的作用 虚拟环境可以搭建独立的python运行环境, 使得单个项目的运行环境与其它项目互不影响. 搭建虚拟环境 &#xff08;1&#xff09;安装 sudo pip install virtualenv sudo pip install virtualenvwra…

【LabVIEW FPGA入门】定时

在本节学习使用循环计时器来设置FPGA循环速率&#xff0c;等待来添加事件之间的延迟&#xff0c;以及Tick Count来对FPGA代码进行基准测试。 1.定时快捷VI函数 在FPGA VI中放置的每个VI或函数都需要一定的时间来执行。您可以允许操作以数据流确定的速率发生&#xff0c;而无需额…

科研学习|论文解读——交替协同注意力网络下基于属性的情感分析 (IPM, 2019)

论文题目 Aspect-based sentiment analysis with alternating coattention networks 摘要 基于属性的情感分析&#xff08;ABSA&#xff09;旨在预测给定文本中特定目标的情感极性。近年来&#xff0c;为了获得情感分类任务中更有效的特征表示&#xff0c;人们对利用注意力网络…

使用kettle导入Elasticsearch数据库

资源文件&#xff1a; 操作步骤&#xff1a; 1、删除data-integration\lib 下 所有 jackson- 开头的jar包&#xff0c;然后把jackson-2.8.10-libs文件夹中的jar拷到lib目录下 2、替换data-integration\plugins\elasticsearch-bulk-insert-plugin文件夹 3、如果开启了ssl认证…

Spring6--IOC反转控制 / 基于XML管理bean

1. 容器IOC 先理解概念&#xff0c;再进行实际操作。概念比较偏术语化&#xff0c;第一次看可能看不懂&#xff0c;建议多看几遍&#xff0c;再尝试自己独立复述一遍&#xff0c;效果会好些 1.1. IOC容器 1.1.1. 控制反转&#xff08;IOC&#xff09; IOC (Inversion of Con…

27-Java MVC 模式

Java空对象模式 实现范例 MVC模式代表 Model-View-Controller&#xff08;模型-视图-控制器&#xff09; 模式MVC模式用于应用程序的分层开发 Model&#xff08;模型&#xff09; - 模型代表一个存取数据的对象或 JAVA POJO 它也可以带有逻辑&#xff0c;在数据变化时更新控制…

Sharding sphere分库分表

需要物理自己实现分表分库&#xff0c;然后通过配置文件配置。 配置文件&#xff1a; 需要配置多个数据源&#xff0c;主从表的关系【默认主表修改&#xff0c;从表读取】&#xff0c;定义分库的策略【比如User id】和分表【表Id】的策略 分库和分表策略&#xff1a;分库策略…

K8S之持久化存储

持久化存储 支持的持久化存储类型EmptyDirHostPathNFS 在K8S中部署的应用都是以pod容器的形式运行的&#xff0c;假如部署数据库服务 例如&#xff1a;MySQL、Redis等&#xff0c;需要对产生的数据做备份。如果pod不挂载数据卷&#xff0c;那pod被删除或重启后这些数据会随之消…

双指针 | 移动零 | 复写零

1.移动零 题目描述&#xff1a; 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 示例&#xff1a; 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0]解题思路&#xff1a; right指针一直往后移动&#xff0c;当…

LAMP架构部署--yum安装方式

这里写目录标题 LAMP架构部署web服务器工作流程web工作流程 yum安装方式安装软件包配置apache启用代理模块 配置虚拟主机配置php验证 LAMP架构部署 web服务器工作流程 web服务器的资源分为两种&#xff0c;静态资源和动态资源 静态资源就是指静态内容&#xff0c;客户端从服…

MATLAB环境下基于可调Q因子小波变换的滚动轴承故障诊断(MATLAB R2021B)

小波变换是一种时频局域化方法&#xff0c;它的窗口面积固定但形状可以发生改变&#xff08;时间窗与频率窗均可变化&#xff09;。小波变换在时间域与频率域都能够表示信号的局部特征&#xff0c;并具有多分辨率分析的特点&#xff0c;是机械故障诊断中常用的方法。小波变换故…

【机器学习系列】M3DM工业缺陷检测部署与训练

一.基础资料 1.Git 地址 地址 2.issues issues 3.参考 参考 csdn 二.服务器信息 1.GPU 服务器 GPU 服务器自带 CUDA 安装(前提是需要勾选上)CUDA 需要选择大于 11.3 的版本登录服务器后会自动安装 GPU 驱动 2.CUDA 安装 GPU 服务器自带 CUDA CUDA 版本查看 3.登录信…

deepseek-coder模型量化

1 简介 DeepSeek-Coder在多种编程语言和各种基准测试中取得了开源代码模型中最先进的性能。 为尝试在开发板进行部署&#xff0c;首先利用llama.cpp对其进行量化。 2 llama.cpp安装 git clone之后进入文件夹make即可&#xff0c;再将依赖补全pip install -r requirements.tx…

蓝桥杯2023年省A(一波三折的)【买瓜】折半搜索+剪枝+排序

题目&#xff1a;洛谷 P9234 [蓝桥杯 2023 省 A] 买瓜 折半搜索 一开始觉得像dp&#xff0c;试着写了&#xff0c;显然过不了&#xff0c;但我实在觉得搜索也过不了啊&#xff0c;去看题解&#xff0c;发现使用了折半搜索&#xff08;每天都觉得啥都不会捏 折半搜索就是先搜一…

Elasticsearch 主副分片切换过程中对业务写入有影响吗

&#x1f34a;&#x1f349;&#x1f34b; 先说下结论&#xff0c;只要集群中的工作节点过半&#xff0c;有候选的master节点&#xff0c;挂掉的节点中不同时包含索引的主分片和副分片&#xff0c;那么ES是可以做到让业务无感知的进行主副分片切换的。 蓝胖子会先讲解下ES集群写…