英飞凌HSM内核开发-CSM模块

embedded/2024/10/9 15:21:53/

CSM模块接口

在这里插入图片描述

初始化

  • Csm_Init():在使用CSM模块的其他功能之前,必须由BSWM调用初始化函数 Csm_Init()。这个函数负责设置CSM模块所需的初始状态和配置。
  • Csm_InitMemory():CSM还提供了一个用于手动将RAM变量初始化为null的函数 Csm_InitMemory()。这个函数可以在调用 Csm_Init() 之前调用,以确保所有RAM变量在模块启动前都被正确初始化。

主要功能

  • 主函数:CSM模块实现提供了一个主函数,当启用异步作业处理时,这个主函数需要在任务级别循环调用。这个主函数负责将新作业分派到底层的CRYIF或CRYPTO驱动程序。

错误处理

  • 开发错误报告
    • 默认行为:默认情况下,如果启用了开发错误报告(即预编译参数 CSM_DEV_ERROR_DETECT==STD_ON),则使用服务 Det_ReportError() 向DET报告开发错误,如[2]中指定。
    • 自定义错误报告:如果使用另一个模块进行开发错误报告,集成商可以配置报告错误的函数原型,但该函数必须具有与服务 Det_ReportError() 相同的签名。

数据类型

Crypto_OperationModeType
  • 类型uint8
  • 描述:指示要执行的模式/操作。
  • 枚举值
    • CRYPTO_OPERATIONMODE_START:执行开始操作。
    • CRYPTO_OPERATIONMODE_UPDATE:执行更新操作。
    • CRYPTO_OPERATIONMODE_FINISH:执行完成操作。
    • CRYPTO_OPERATIONMODE_STREAMSTART:执行开始和更新操作。
    • CRYPTO_OPERATIONMODE_SINGLECALL:执行开始、更新和完成操作。
    • CRYPTO_OPERATIONMODE_SAVE_CONTEXT:执行保存工作空间上下文。
    • CRYPTO_OPERATIONMODE_RESTORE_CONTEXT:执行恢复工作空间上下文。
Crypto_VerifyResultType
  • 类型uint8
  • 描述:枚举验证操作的结果类型。
  • 枚举值
    • CRYPTO_E_VER_OK:验证结果为“true”,即两个比较的元素是相同的。这个返回码应作为值“0”给出。
    • CRYPTO_E_VER_NOT_OK:验证结果为“false”,即两个比较的元素不相同。这个返回码应作为值“1”给出。

Services provided by CSM

名称功能简单介绍
Csm_Init初始化CSM模块。
Csm_InitMemory执行电源上电内存初始化。
Csm_MainFunction模块的主函数,循环调用以处理异步作业。
Csm_GetVersionInfo获取CSM模块的版本信息。
Csm_CancelJob取消给定作业。
Csm_KeyElementSet设置指定密钥ID的密钥元素字节。
Csm_KeySetValid将指定密钥ID的密钥状态设置为有效。
Csm_KeyElementGet检索指定密钥ID的特定密钥元素中的密钥元素字节。
Csm_KeyElementCopy从一个密钥复制密钥元素到目标密钥。
Csm_KeyElementCopyPartial部分复制一个密钥的元素到目标密钥。
Csm_KeyCopy复制所有密钥元素从源密钥到目标密钥。
Csm_RandomSeed为指定密钥ID的密钥元素提供随机种子。
Csm_KeyGenerate生成新密钥材料并存储在指定的密钥ID中。
Csm_KeyDerive通过使用给定密钥ID的密钥元素派生新密钥。
Csm_KeyExchangeCalcPubVal计算密钥交换的公钥值。
Csm_KeyExchangeCalcSecret计算密钥交换的共享秘密密钥。
Csm_CertificateParse解析证书。
Csm_CertificateVerify验证证书。
Csm_Hash计算给定数据的哈希值。
Csm_MacGenerate生成消息认证码(MAC)。
Csm_MacVerify验证消息认证码(MAC)。
Csm_Encrypt加密给定数据。
Csm_Decrypt解密给定数据。
Csm_AEADEncrypt执行AEAD加密。
Csm_AEADDecrypt执行AEAD解密。
Csm_SignatureGenerate生成签名。
Csm_SignatureVerify验证签名。
Csm_RandomGenerate生成随机数。
Csm_JobKeySetValid设置作业密钥为有效。
Csm_JobRandomSeed为作业设置随机种子。
Csm_JobKeyGenerate为作业生成新密钥材料。
Csm_JobKeyDerive为作业派生新密钥。
Csm_JobKeyExchangeCalcPubVal计算作业密钥交换的公钥值。
Csm_JobKeyExchangeCalcSecret计算作业密钥交换的共享秘密密钥。
Csm_SaveContextJob保存作业上下文。
Csm_RestoreContextJob恢复作业上下文。

Services used by CSM

Det_ReportError

Callback Functions Provided by CSM

CSM实现的回调函数

名称功能简单介绍
Csm_CallbackNotification当加密操作完成时,通知CSM模块操作的结果。

由CSM调用的其他模块实现的回调函数

名称功能简单介绍
void CallbackFunc ASR 4.3 (Crypto_JobType *job, Std_ReturnType result)ASR 4.3版本,当加密操作完成时,使用 Crypto_JobType *job, Std_ReturnType result 参数通知CSM模块操作的结果。
void CallbackFunc ASR 4.4 (const uint32 jobID, Csm_ResultType result)ASR 4.4版本,当加密操作完成时,使用 const uint32 jobID, Csm_ResultType result 参数通知CSM模块操作的结果。
void CallbackFunc ASR R19-11 (const Crypto_JobType *job, Crypto_ResultType result)ASR R19-11版本,当加密操作完成时,使用 const Crypto_JobType *job, Crypto_ResultType result 参数通知CSM模块操作的结果。

Configuration

在这里插入图片描述

加密栈的基本工作流程:

  1. 服务请求:软件组件(Swc)请求CSM提供加密服务,并提供必要的数据以及将执行操作的CsmJob的ID。
  2. CsmJob:包含所有执行加密操作所需的计算参数。
  3. 队列分配:在配置时,每个CsmJob被分配到一个CsmQueue,无论作业的处理类型(同步或异步)。
  4. 映射关系:每个CsmQueue映射到CryIfQueue,CryIfQueue映射到加密驱动对象(CryptoDriverObject)。
  5. 加密驱动:在加密层,可以共存多个加密驱动,它们之间不会相互干扰。
  6. 工作空间:CryptoDriverObject必须分配所需的工作空间并支持加密操作。Job在计算过程中占用加密服务的工作空间,因此在同一加密驱动对象中运行的Job以序列化方式处理,而在不同加密驱动对象中运行的Job或不同类型的加密Job可以并行运行。

支持的加密服务

服务类型描述
MacGenerate生成消息认证码(MAC)。
MacVerify验证消息认证码(MAC)。
SignatureGenerate生成数字签名。
SignatureVerify验证数字签名。
Encrypt对数据进行加密。
Decrypt对加密数据进行解密。
Hash计算数据的哈希值。
Random Generate生成随机数。
AEADEncrypt执行认证加密算法(AEAD)进行加密。
AEADDecrypt执行认证加密算法(AEAD)进行解密。
KeySetValid设置密钥状态为有效。
RandomSeed设置随机种子以用于密钥生成等。
KeyGenerate生成新的密钥材料。
KeyDerive从现有密钥派生新的密钥。
KeyExchangeCalcPubVal在密钥交换协议中计算公钥值。
KeyExchangeCalcSecret在密钥交换协议中计算共享秘密值。

http://www.ppmy.cn/embedded/104894.html

相关文章

微软云技术深度解析与代码使用案例

微软云技术深度解析与代码使用案例 随着云计算技术的飞速发展,微软云(Microsoft Azure)凭借其强大的技术实力和广泛的应用场景,成为了业界瞩目的焦点。本文将从微软云的技术特点、应用场景以及具体的代码使用案例三个方面进行深…

中锂天源锂电池:为卡车驻车空调提供高效、安全、持久的能源解决方案

随着我国运输行业的飞速发展,卡车司机对驾驶环境和行车舒适度的要求越来越高。在炎炎夏日或寒冷冬季,驻车空调已成为卡车司机的必需品。然而,传统驻车空调供电方式存在诸多问题,如电力不足、续航时间短等。为解决这一痛点&#xf…

ip命令的详解

一、ip命令介绍 1.1 ip命令简介 IP命令是一个非常强大的命令行工具,用于管理与配置网络接口和路由表。 1.2 ip命令的由来 IP命令的由来可以追溯到Unix操作系统,IP命令是一个网络工具,用于配置和管理网络接口和路由表。它是从早期的Unix系…

SDN架构详解

目录 1)经典的IP网络-分布式网络 2)经典网络面临的问题 3)SDN起源 4)OpenFlow基本概念 5)Flow Table简介 6)SDN的网络架构 7)华为SDN网络架构 8)传统网络 vs SDN 9&#xf…

【全志H616】【开源】 ARM-Linux 智能分拣项目:阿里云、网络编程、图像识别

【全志H616】【开源】 ARM-Linux 智能分拣项目:阿里云、网络编程、图像识 文章目录 【全志H616】【开源】 ARM-Linux 智能分拣项目:阿里云、网络编程、图像识1、实现功能2、软件及所需环境3、逻辑流程图及简述3.1 完整逻辑流程图3.2 硬件接线3.3 功能简述…

Django Admin对自定义的计算字段进行排序

通常,Django会为模型属性字段,自动添加排序功能。当你添加计算字段时,Django不知道如何执行order_by,因此它不会在该字段上添加排序功能。 如果要在计算字段上添加排序,则必须告诉Django需要排序的内容。你可以通过在…

Datawhale X 李宏毅苹果书 AI夏令营 Task 3

课程链接 / Kaggle github网站 一 术语解释 二 . 笔记整理 (一)综述 在应用机器学习算法时,实践方法论能够帮助我们更好地训练模型。如果发现训练数据在测试平台上的结果不太好,就要先根据测试结果来检查训练数据的损失。看看模…

k8s相关技术栈

文章目录 一、k8s技术栈核心组件常见工具和服务生态系统 二、k8s服务组件控制平面组件节点组件附加组件和服务 三、k8s 常见资源核心资源扩展资源 四、系列文档其他参考 一、k8s技术栈 Kubernetes(常被简称为 K8s,其中 “K” 代表 “Kubernetes” 的首字…