鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

RSA算法类相关接口

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/* RSA message format of Warpdrive */
struct wcrypto_rsa_msg {
__u8 alg_type:3;/* Denoted by enum wcrypto_type */
__u8 op_type:2;/* Denoted by enum wcrypto_rsa_op_type */
__u8 key_type:2;/* Denoted by enum wcrypto_rsa_key_type */
__u8 data_fmt:1; /* Data format, denoted by enum wd_buff_type */
__u8 result;/* Data format, denoted by WD error code */
__u16 in_bytes;/* Input data bytes */
__u16 out_bytes;/* Output data bytes */
__u16 key_bytes;/* Input key bytes */
__u8 *in;/* Input data VA, buf should be DMA buffer. */
__u8 *out;/* Output data VA pointer, should be DMA buffer */
__u8 *key;/* Input key VA pointer, should be DMA buffer */
__u64 usr_data;/* Input user tag, used for indentify data stream/user: struct wcrypto_cb_tag */
};

/* RSA operational types */
enum wcrypto_rsa_op_type {
WCRYPTO_RSA_INVALID,/* invalid rsa operation */
WCRYPTO_RSA_SIGN,/* RSA sign */
WCRYPTO_RSA_VERIFY,/* RSA verify */
WCRYPTO_RSA_GENKEY,/* RSA key generation */
};

/* RSA key types */
enum wcrypto_rsa_key_type {
WCRYPTO_RSA_INVALID_KEY, /* invalid rsa key type */
WCRYPTO_RSA_PUBKEY,/* rsa publick key type */
WCRYPTO_RSA_PRIKEY1,/* invalid rsa private common key type */
WCRYPTO_RSA_PRIKEY2, /* invalid rsa private CRT key type */
};

struct wcrypto_rsa_kg_in; /* rsa key generation input parameters */
struct wcrypto_rsa_kg_out;/* rsa key generation output parameters */
struct wcrypto_rsa_pubkey;/* rsa public key */
struct wcrypto_rsa_prikey;/* rsa private key */

/* RSA context setting up input parameters from user */
struct wcrypto_rsa_ctx_setup {
wcrypto_cb cb;/* call back function from user */
__u16 data_fmt;/* data format denoted by enum wd_buff_type */
__u16 key_bits;/* RSA key bits */
bool is_crt;/* CRT mode or not */
struct wd_mm_br br;/* memory operations from user */
};

struct wcrypto_rsa_op_data {
enum wcrypto_rsa_op_type op_type; /* rsa operation type */
int status; /* rsa operation status */
void *in; /* rsa operation input address, should be DMA-able */
void *out; /* rsa operation output address, should be DMA-able */
__u32 in_bytes;/* rsa operation input bytes */
__u32 out_bytes; /* rsa operation output bytes */
};

函数原型

bool wcrypto_rsa_is_crt(void *ctx);

函数功能

RSA context是否是CRT模式判断

输入说明

ctx:RSA算法context

输出说明

返回值说明

True:CRT模式

False:非CRT模式

使用说明

  

注意事项

  

函数原型

int wcrypto_rsa_key_bits(void *ctx);

函数功能

RSA context的密钥bits宽度

输入说明

ctx:RSA算法context

输出说明

返回值说明

RSA算法密钥宽度bits

使用说明

  

注意事项

  

函数原型

void wcrypto_get_rsa_pubkey(void *ctx, struct wcrypto_rsa_pubkey **pubkey);

函数功能

获取RSA算法context的公钥

输入说明

ctx:RSA算法context

pubkey:RSA算法公钥指针地址

输出说明

pubkey:RSA算法公钥地址

返回值说明

使用说明

  

注意事项

  

函数原型

void wcrypto_get_rsa_prikey(void *ctx, struct wcrypto_rsa_prikey **prikey);

函数功能

获取RSA算法context的私钥

输入说明

ctx:RSA算法context

prikey:RSA算法私钥指针地址

输出说明

prikey:RSA算法私钥地址

返回值说明

使用说明

  

注意事项

  

函数原型

int wcrypto_set_rsa_pubkey_params(void *ctx, struct wd_dtb *e, struct wd_dtb *n);

函数功能

设置RSA算法context的公钥参数

输入说明

ctx:RSA算法context

e:RSA e参数

n:RSA n参数

输出说明

返回值说明

0:设置成功

非0:设置失败(错误码含义请参考WD消息错误码接口定义

使用说明

  

注意事项

  

函数原型

void wcrypto_get_rsa_pubkey_params(struct wcrypto_rsa_pubkey *pbk, struct wd_dtb **e, struct wd_dtb **n);

函数功能

由RSA算法公钥获取公钥参数

输入说明

pbk:RSA算法公钥

e:RSA e参数地址指针

n:RSA n参数地址指针

输出说明

e:RSA e参数地址

n:RSA n参数地址

返回值说明

使用说明

  

注意事项

  

函数原型

int wcrypto_set_rsa_prikey_params(void *ctx, struct wd_dtb *d, struct wd_dtb *n);

函数功能

设置RSA算法context的密钥参数

输入说明

ctx:RSA算法context

d:RSA d参数

n:RSA n参数

输出说明

返回值说明

0:设置成功

-WD_EINVAL:设置失败(错误码含义请参考WD消息错误码接口定义

使用说明

  

注意事项

  

函数原型

void wcrypto_get_rsa_prikey_params(struct wcrypto_rsa_prikey *pvk, struct wd_dtb **d,struct wd_dtb **n);

函数功能

由RSA算法密钥获取密钥参数

输入说明

pvk:RSA算法私钥

d:RSA d参数地址指针

n:RSA n参数地址指针

输出说明

d:RSA d参数地址

n:RSA n参数地址

返回值说明

使用说明

  

注意事项

  

函数原型

int wcrypto_set_rsa_crt_prikey_params(void *ctx, struct wd_dtb *dq, struct wd_dtb *dp,struct wd_dtb *qinv, struct wd_dtb *q, struct wd_dtb *p);

函数功能

设置RSA算法context的密钥CRT参数

输入说明

ctx:RSA算法context

dq:RSA dq参数

dp:RSA dp参数

qinv:RSA qinv参数

q:RSA q参数

p:RSA p参数

输出说明

返回值说明

0:设置成功

非0:设置失败(错误码含义请参考WD消息错误码接口定义

使用说明

  

注意事项

  

函数原型

void wcrypto_get_rsa_crt_prikey_params(struct wcrypto_rsa_prikey *pvk, struct wd_dtb **dq, struct wd_dtb **dp, struct wd_dtb **qinv, struct wd_dtb **q, struct wd_dtb **p);

函数功能

由RSA算法密钥获取CRT参数

输入说明

pvk:RSA算法私钥

dq:RSA dq参数地址指针

dp:RSA dp参数地址指针

qinv:RSA qinv参数地址指针

q:RSA q参数地址指针

p:RSA p参数地址指针

输出说明

dq:RSA dq参数地址

dp:RSA dp参数地址

qinv:RSA qinv参数地址

q:RSA q参数地址

p:RSA p参数地址

返回值说明

使用说明

  

注意事项

  

函数原型

struct wcrypto_rsa_kg_in *wcrypto_new_kg_in(void *ctx, struct wd_dtb *e,

struct wd_dtb *p, struct wd_dtb *q);

函数功能

新创建基于指定ctx的RSA算法密钥生成输入参数集

输入说明

ctx:RSA算法context

e:RSA e参数

q:RSA q参数

p:RSA p参数

输出说明

返回值说明

非NULL:成功

NULL:失败

使用说明

  

注意事项

  

函数原型

void wcrypto_del_kg_in(void *ctx, struct wcrypto_rsa_kg_in *ki);

函数功能

基于RSA算法context删除密钥生成输入参数集

输入说明

ctx:RSA算法context

ki:RSA算法密钥生成的输入参数集

输出说明

返回值说明

使用说明

  

注意事项

  

函数原型

void wcrypto_get_rsa_kg_in_params(struct wcrypto_rsa_kg_in *kin, struct wd_dtb *e, struct wd_dtb *q, struct wd_dtb *p);

函数功能

基于RSA算法密钥生成输入参数集,获取输入参数

输入说明

kin:RSA算法密钥生成的输入参数集

e:RSA e参数获取地址

q:RSA q参数获取地址

p:RSA p参数获取地址

输出说明

e:RSA e参数

q:RSA q参数

p:RSA p参数

返回值说明

使用说明

南向接口

注意事项

  

函数原型

struct wcrypto_rsa_kg_out * wcrypto_new_kg_out(void *ctx);

函数功能

新创建基于指定ctx的RSA算法密钥生成输出参数集

输入说明

ctx:RSA算法context

输出说明

返回值说明

非NULL:成功

NULL:失败

使用说明

  

注意事项

  

函数原型

void wcrypto_del_kg_out(void *ctx, struct wcrypto_rsa_kg_out *kout);

函数功能

删除基于指定ctx的RSA算法密钥生成输出参数集

输入说明

ctx:RSA算法context

kout:RSA算法密钥生成输出参数集

输出说明

返回值说明

使用说明

  

注意事项

  

函数原型

void wcrypto_get_rsa_kg_out_params(struct wcrypto_rsa_kg_out *kout, struct wd_dtb *d, struct wd_dtb *n);

函数功能

基于RSA算法密钥生成输出参数集,获取输出参数

输入说明

kout:RSA算法密钥生成的输出参数集

d:RSA d参数获取地址

n:RSA n参数获取地址

输出说明

d:RSA d参数

n:RSA n参数

返回值说明

使用说明

  

注意事项

  

函数原型

void wcrypto_get_rsa_kg_out_crt_params(struct wcrypto_rsa_kg_out *kout,

struct wd_dtb *qinv,

struct wd_dtb *dq, struct wd_dtb *dp);

函数功能

基于RSA算法CRT模式密钥生成输出参数集,获取输出参数

输入说明

kout:RSA算法密钥生成的输出参数集

qinv:RSA CRT模式qinv参数获取地址

dq:RSA CRT模式dq参数获取地址

dp:RSA CRT模式dp参数获取地址

输出说明

qinv:RSA CRT模式qinv参数

dq:RSA CRT模式dq参数

dp:RSA CRT模式dp参数

返回值说明

使用说明

  

注意事项

  

函数原型

int wcrypto_rsa_kg_in_data(struct wcrypto_rsa_kg_in *ki, char **data);

函数功能

基于RSA算法密钥生成输入参数集,获取输入参数的数据域

输入说明

ki:RSA算法密钥生成的输入参数集

输出说明

data:输入参数集的数据域地址

返回值说明

0:成功

非0:失败(错误码含义请参考WD消息错误码接口定义

使用说明

南向接口

注意事项

  

函数原型

int wcrypto_rsa_kg_out_data(struct wcrypto_rsa_kg_out *ko, char **data);

函数功能

基于RSA算法密钥生成输出,获取输出参数的数据域

输入说明

ko:RSA算法密钥生成的输出参数集

输出说明

data:输出参数集的数据域地址

返回值说明

0:成功

非0:失败(错误码含义请参考WD消息错误码接口定义

使用说明

南向接口

注意事项

  

函数原型

void * wcrypto_create_rsa_ctx(struct wd_queue *q, struct wcrypto_rsa_ctx_setup *setup);

函数功能

基于支持RSA算法的warpdrive queue创建context

输入说明

q:warpdrive queue

setup:用户指定的context参数集

输出说明

无。

返回值说明

非NULL:成功

否则失败

使用说明

支持多线程

注意事项

  

函数原型

int wcrypto_do_rsa(void *ctx, struct wcrypto_rsa_op_data *opdata, void *tag);

函数功能

基于RSA context的RSA算法操作

输入说明

ctx:RSA context

opdata:RSA操作参数,包括输入输出以及操作类型等

tag:用户回调表示,为NULL时,为同步接口,否则为异步接口

输出说明

无。

返回值说明

0:成功

其他负值:失败(RSA verify失败,-WD_VERIFY_ERR;用户输入与硬件要求的数据长度、格式与对齐方式等不匹配,-WD_HWDT_MISMATCH;用户输入SGL错误,-WD_SGL_ERR;硬件不可用(硬件复位等情况),-WD_HW_EACCESS;其他错误-WD_EINVAL)

使用说明

同一个ctx仅支持单线程

注意事项

  

函数原型

int wcrypto_rsa_poll(struct wd_queue *q, unsigned int num);

函数功能

基于warpdrive queue的RSA算法poll操作

输入说明

q:Warpdrive RSA queue

num:0---表示将队列q中所有回应消息全部收上来,非0---表示将队列中num个回应消息收上来。

输出说明

无。

返回值说明

大于0:成功收到对应个数的回应消息

0:没有收到任何回应

负值:poll发生错误(硬件不可用(硬件复位等情况),-WD_HW_EACCESS;其他错误-WD_EINVAL)

使用说明

同一个q仅支持单线程

注意事项

回应消息中status错误码的含义请参考WD消息错误码接口定义

函数原型

void wcrypto_del_rsa_ctx(void *ctx);

函数功能

删除一个RSA的context

输入说明

ctx:需要删除的RSA context

输出说明

返回值说明

使用说明

  

注意事项