RSA
简要说明
RSA公开密钥密码体制。所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。
接口描述
csi_rsa_initialize
rsa_handle_t csi_rsa_initialize(int32_t idx, rsa_event_cb_t cb_event)
功能描述:
通过传入设备数初始化对应的rsa实例,返回rsa实例的句柄。
参数:
idx
: 设备号。cb_event
:rsa实例的事件回调函数。回调函数原型定义见rsa_event_cb_t。回调函数类型rsa_event_cb_t定义如下:
typedef void (*rsa_event_cb_t)(int32_t idx, rsa_event_e event);
其中event 为传给回调函数的事件类型,rsa回调事件枚举见类型 rsa_event_e 定义。
返回值:
NULL: 初始化失败。
其它: 实例句柄。
rsa_event_e:
名字 | 定义 | 备注 |
---|---|---|
RSA_EVENT_ENCRYPT_COMPLETE | RSA加密完成事件 | |
RSA_EVENT_DECRYPT_COMPLETE | RSA解密完成事件 | |
RSA_EVENT_SIGN_COMPLETE | RSA签名完成事件 | |
RSA_EVENT_VERIFY_COMPLETE | RSA校验完成事件 |
csi_rsa_uninitialize
int32_t csi_rsa_uninitialize(rsa_handle_t handle)
功能描述:
rsa实例反初始化。该接口会停止rsa实例正在进行的工作(如果有),并且释放相关的软硬件资源。
参数:
handle
: 实例句柄。返回值:
错误码。
csi_rsa_power_control
int32_t csi_rsa_power_control(rsa_handle_t handle, csi_power_stat_e state)
功能描述:
配置设备实例的功耗模式。
参数:
handle
: 实例句柄。state
: 设备实例的功耗模式,参看csi_power_stat_e 的定义。返回值:
错误码。
csi_rsa_get_capabilities
rsa_capabilities_t csi_rsa_get_capabilities(int32_t idx)
功能描述:
获取rsa实例支持的能力。
参数:
idx
: 设备号。返回值:
描述rsa能力的结构体,rsa的能力定义见 rsa_capabilities_t 。
rsa_capabilities_t:
名字 | 定义 | 备注 |
---|---|---|
uint32_t bits_192 :1 | 支持192bits模式 | |
uint32_t bits_256 :1 | 支持256bits模式 | |
uint32_t bits_512 :1 | 支持512bits模式 | |
uint32_t bits_1024 :1 | 支持1024bits模式 | |
uint32_t bits_2048 :1 | 支持2048bits模式 | |
uint32_t bits_3072 :1 | 支持3072bits模式 |
csi_rsa_config
int32_t csi_rsa_config(rsa_handle_t handle,
rsa_data_bits_e data_bits,
rsa_endian_mode_e endian,
void *arg)
功能描述:
配置rsa实例的bit长度及大小端模式。
参数:
handle
: 实例句柄。data_bits
: rsa 数据长度,参看rsa_data_bits_e定义。
endian
: rsa 的大小端模式,参看rsa_endian_mode_e 的定义。
arg
: 传模值的地址。
返回值:
错误码。
rsa_data_bits_e:
名字 | 定义 | 备注 |
---|---|---|
RSA_DATA_BITS_192 | 192bits长度 | |
RSA_DATA_BITS_256 | 256bits长度 | |
RSA_DATA_BITS_512 | 512bits长度 | |
RSA_DATA_BITS_1024 | 1024bits长度 | |
RSA_DATA_BITS_2048 | 2048bits长度 | |
RSA_DATA_BITS_3072 | 3072bits长度 |
rsa_endian_mode_e:
名字 | 定义 | 备注 |
---|---|---|
RSA_ENDIAN_MODE_LITTLE | RSA 小端模式 | |
RSA_ENDIAN_MODE_BIG | RSA 大端模式 |
csi_rsa_encrypt
int32_t csi_rsa_encrypt(rsa_handle_t handle, void *n, void *e, void *src, uint32_t src_size,
void *out, uint32_t *out_size, rsa_padding_t padding)
功能描述:
rsa 加密。
参数:
handle
: 实例句柄。n
: rsa的模值的缓冲区地址。e
: rsa公钥的缓冲区地址。src
: 明文的缓冲区地址。src_size
: 明文的长度。out
: 加密结果的缓冲区地址。out_size
: 加密数据的长度缓冲区地址。padding
: padding 模式,参见 rsa_padding_t 。返回值:
错误码。
rsa_padding_t:
名字 | 定义 | 备注 |
---|---|---|
rsa_padding_type_e padding_type | Padding 类型 | |
rsa_hash_type_e hash_type | Padding 的哈希类型 |
rsa_padding_type_e:
名字 | 定义 | 备注 |
---|---|---|
RSA_PADDING_MODE_PKCS1 | PKCS1 PADDING 模式 | |
RSA_PADDING_MODE_NO | NO PADDING 模式 | |
RSA_PADDING_MODE_SSLV23 | SSLV23 PADDING 模式 | |
RSA_PADDING_MODE_PKCS1_OAEP | PKCS1_OAEP PADDING 模式 | |
RSA_PADDING_MODE_X931 | X931 PADDING 模式 | |
RSA_PADDING_MODE_PSS | PSS PADDING 模式 |
rsa_hash_type_e:
名字 | 定义 | 备注 |
---|---|---|
RSA_HASH_TYPE_MD5 | MD5类型 | |
RSA_HASH_TYPE_SHA1 | SHA1类型 | |
RSA_HASH_TYPE_SHA224 | SHA224类型 | |
RSA_HASH_TYPE_SHA256 | SHA256类型 | |
RSA_HASH_TYPE_SHA384 | SHA384类型 | |
RSA_HASH_TYPE_SHA512 | SHA512类型 |
csi_rsa_decrypt
int32_t csi_rsa_decrypt(rsa_handle_t handle, void *n, void *d, void *src, uint32_t src_size,
void *out, uint32_t *out_size, rsa_padding_t padding)
功能描述:
rsa 解密。
参数:
handle
: 实例句柄。n
: rsa的模值的缓冲区地址。d
: rsa私钥的缓冲区地址。src
: 密文的缓冲区地址。src_size
: 密文的长度。out
: 解密结果的缓冲区地址。out_size
: 解密数据的长度缓冲区地址。padding
: padding 模式,参见 rsa_padding_t 。返回值:
错误码。
csi_rsa_sign
int32_t csi_rsa_sign(rsa_handle_t handle, void *n, void *d, void *src, uint32_t src_size,
void *signature, uint32_t *sig_size, rsa_padding_t padding)
功能描述:
rsa 签名。
参数:
handle
: 实例句柄。n
: rsa的模值的缓冲区地址。d
: rsa私钥的缓冲区地址。src
: 输入数据的缓冲区地址。src_size
: 输入数据的长度。signature
: 签名结果的缓冲区地址。sig_size
: 签名结果的长度缓冲区地址。padding
: padding 模式,参见 rsa_padding_t 。返回值:
错误码。
csi_rsa_verify
int32_t csi_rsa_verify(rsa_handle_t handle, void *n, void *e, void *src, uint32_t src_size,
void *signature, uint32_t sig_size, void *result, rsa_padding_t padding)
功能描述:
rsa 验签。
参数:
handle
: 实例句柄。n
: rsa的模值的缓冲区地址。e
: rsa公钥的缓冲区地址。src
: 输入数据的缓冲区地址。src_size
: 输入数据的长度。signature
: 签名结果的缓冲区地址。sig_size
: 签名结果的长度。result
: 验签的结果。padding
: padding 模式,参见 rsa_padding_t 。返回值:
错误码。
csi_rsa_get_status
rsa_status_t csi_rsa_get_status(rsa_handle_t handle)
功能描述:
获取当前时刻rsa的状态。
参数:
handle
: 实例句柄。返回值:
rsa状态的结构体,rsa的状态定义见 rsa_status_t \<rsa_status_t\ 。
rsa_status_t:
名字 | 定义 | 备注 |
---|---|---|
uint32_t busy :1 | 计算忙 |