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 |
输出说明 |
无 |
返回值说明 |
无 |
使用说明 |
|
注意事项 |