SHA
简要说明
SHA(Secure Hash Algorithm)安全哈希算法是一个种散列算法,接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码,并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。可用于实现数字签名。
接口描述
csi_sha_initialize
sha_handle_t csi_sha_initialize(int32_t idx, void *context, sha_event_cb_t cb_event)
功能描述:
- 通过传入设备数初始化对应的sha实例,返回sha实例的句柄。
参数:
idx
: 设别号。context
: 保存sha context。cb_event
: sha实例的事件回调函数。回调函数原型定义见sha_event_cb_t。回调函数类型sha_event_cb_t定义如下:
typedef void (*sha_event_cb_t)(int32_t idx, sha_event_e event);
其中idx为设备号,event 为传给回调函数的事件类型,sha回调事件枚举类型见 sha_event_e定义。
返回值:
NULL: 初始化失败。
其它: 实例句柄。
sha_event_e:
名字 | 定义 | 备注 |
---|---|---|
SHA_EVENT_COMPLETE | 计算完成事件 |
csi_sha_uninitialize
int32_t csi_sha_uninitialize(sha_handle_t handle)
功能描述:
- sha实例反初始化。该接口会停止sha实例正在进行的工作(如果有),并且释放相关的软硬件资源。
参数:
handle
: 实例句柄。
返回值:
- 错误码。
csi_sha_power_control
int32_t csi_sha_power_control(sha_handle_t handle, csi_power_stat_e state)
功能描述:
- 配置设备实例的功耗模式。
参数:
handle
: 实例句柄。state
: 设备实例的功耗模式,参看 csi_power_stat_e 的定义。
返回值:
- 错误码。
csi_power_stat_e:
名字 | 定义 | 备注 |
---|---|---|
DRV_POWER_OFF | 关电源状态 | |
DRV_POWER_LOW | 低电平状态 | |
DRV_POWER_FULL | 全电源状态 | |
DRV_POWER_SUSPEND | 挂起电源状态 |
csi_sha_get_capabilities
sha_capabilities_t csi_sha_get_capabilities(int32_t idx)
功能描述:
- 获取sha实例支持的能力。
参数:
idx
: 设备号。
返回值:
- 描述sha能力的结构体,sha的能力定义见 sha_capabilities_t。
sha_capabilities_t:
名字 | 定义 | 备注 |
---|---|---|
uint32_t sha1 :1 | 支持sha1模式 | |
uint32_t sha224 :1 | 支持sha224模式 | |
uint32_t sha256 :1 | 支持sha256模式 | |
uint32_t sha384 :1 | 支持sha384模式 | |
uint32_t sha512 :1 | 支持sha512模式 | |
uint32_t sha512_224 :1 | 支持sha512_224模式 | |
uint32_t sha512_256 :1 | 支持sha512_256模式 | |
uint32_t endianmode :1 | 大小端模式 | |
uint32_t interruptmode :1 | 中断模式 |
csi_sha_config
int32_t csi_sha_config(sha_handle_t handle,
sha_mode_e mode,
sha_endian_mode_e endian)
功能描述:
- 配置sha实例的工作模式及大小端模式。
参数:
handle
: 实例句柄。mode
: sha 模式,参看 sha_mode_e 定义。endian
: sha 大小端模式,参看 sha_endian_mode_e的定义。
返回值:
- 错误码。
sha_mode_e:
名字 | 定义 | 备注 |
---|---|---|
SHA_MODE_1 | SHA1模式 | |
SHA_MODE_224 | SHA224模式 | |
SHA_MODE_256 | SHA256模式 | |
SHA_MODE_512 | SHA512模式 | |
SHA_MODE_384 | SHA384模式 | |
SHA_MODE_512_224 | SHA512_224模式 | |
SHA_MODE_512_256 | SHA512_256模式 |
sha_endian_mode_e:
名字 | 定义 | 备注 |
---|---|---|
SHA_ENDIAN_MODE_BIG | SHA 大端模式 | |
SHA_ENDIAN_MODE_LITTLE | SHA 小端模式 |
csi_sha_start
int32_t csi_sha_start(sha_handle_t handle, void *context)
功能描述:
- 开始sha计算。
参数:
handle
: 实例句柄。context
: sha的context的缓冲区地址。
返回值:
- 错误码。
csi_sha_update
int32_t csi_sha_update(sha_handle_t handle, void *context, const void *input, uint32_t len)
功能描述:
- 更新sha的计算。
参数:
handle
: 实例句柄。context
: sha的context的缓冲区。input
: 待输入数据的缓冲区地址。len
: 待输入的数据的长度。
返回值:
- 错误码。
csi_sha_finish
int32_t csi_sha_finish(sha_handle_t handle, void *context, void *output)
功能描述:
- 计算sha的最后一次hash。
参数:
handle
: 实例句柄。context
: sha的context的缓冲区地址。output
: 待接收的hash结果的缓冲区地址。
返回值:
- 错误码。
csi_sha_get_status
sha_status_t csi_sha_get_status(sha_handle_t handle)
功能描述:
- 获取当前时刻sha的状态。
参数:
handle
: 实例句柄。
返回值:
- sha状态的结构体,sha的状态定义见 sha_status_t。
sha_status_t:
名字 | 定义 | 备注 |
---|---|---|
uint32_t busy :1 | 计算忙 |