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

DH算法类相关接口

 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
struct wcrypto_dh_msg {
__u8 alg_type:3;/* Denoted by enum wcrypto_type */
__u8 op_type:2;/* Denoted by enum wcrypto_dh_op_type */
__u8 data_fmt:1; /* Data format, denoted by enum wd_buff_type */
__u8 is_g2:2;/* g2 mode of phase 1 */
__u8 result;/* Data format, denoted by WD error code */
__u16 key_bytes;/* Key size */
__u8 *x_p; /* This is Xa and p data in order. Should be DMA buffer */
__u8 *g; /* This is PV also at phase 2. Should be DMA buffer*/
__u8 *out; /* Result address, should be DMA buffer */
__u16 xbytes; /* parameter Xa size */
__u16 pbytes; /* parameter p size */
__u16 gbytes; /* parameter g size */
__u16 out_bytes; /* output parameter size */
__u64 usr_data; /* user identifier:struct wcrypto_cb_tag */
};

enum wcrypto_dh_op_type {
WCRYPTO_DH_INVALID, /* invalid DH operation */
WCRYPTO_DH_PHASE1,/* Phase1 DH key generate */
WCRYPTO_DH_PHASE2,/* Phase2 DH key compute */
};

struct wcrypto_dh_ctx_setup {
wcrypto_cb cb; /* call back function from user */
__u16 data_fmt; /* data format denoted by enum wd_buff_type */
__u16 key_bits;/* DH key bites */
bool is_g2; /* is g2 mode or not */
struct wd_mm_br br; /* memory operations from user */
};

struct wcrypto_dh_op_data {
void *x_p; /* x and p, should be DMA buffer */
void *pv;/* it is g, but it is PV at phase 2, should be DMA buffer */
void *pri;/* phase 1&&2 output, should be DMA buffer */
__u16 pri_bytes;/* output bytes */
__u16 pbytes; /* p bytes */
__u16 xbytes; /* x bytes */
__u16 pvbytes; /* pv bytes */
enum wcrypto_dh_op_type op_type; /* operational type */
__u32 status;/* output status  */
};

函数原型

bool wcrypto_dh_is_g2(void *ctx);

函数功能

DH context是否是G2模式判断

输入说明

ctx:DH算法context

输出说明

返回值说明

True:G2模式

False:非G2模式

使用说明

  

注意事项

  

函数原型

int wcrypto_dh_key_bits(void *ctx);

函数功能

DH context的密钥bits宽度

输入说明

ctx:DH算法context

输出说明

返回值说明

DH算法密钥宽度bits(768,1024,1536,2048,3072,4096)

使用说明

  

注意事项

  

函数原型

void * wcrypto_create_dh_ctx(struct wd_queue *q, struct wcrypto_dh_ctx_setup *setup);

函数功能

基于Warpdrive queue创建DH算法context

输入说明

q:warpdrive queue

setup:用户对于context的创建输入参数

输出说明

返回值说明

Context地址。

NULL:失败

非NULL:成功

使用说明

支持多线程

注意事项

  

函数原型

int wcrypto_do_dh(void *ctx, struct wcrypto_dh_op_data *opdata, void *tag);

函数功能

基于DH context的DH算法操作

输入说明

ctx:DH context

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

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

输出说明

无。

返回值说明

0:成功

否则失败(错误码含义请参考WD消息错误码接口定义

使用说明

同一个ctx仅支持单线程

注意事项

  

函数原型

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

函数功能

基于warpdrive queue的DH算法poll操作

输入说明

q:Warpdrive DHqueue

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

输出说明

无。

返回值说明

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

0:没有收到任何回应

负值:poll发生错误

使用说明

同一个q仅支持单线程

注意事项

  

函数原型

void wcrypto_del_dh_ctx(void *ctx);

函数功能

删除一个DH的context

输入说明

ctx:需要删除的DH context

输出说明

返回值说明

使用说明

  

注意事项

  

函数原型

int wcrypto_set_dh_g(void *ctx, struct wd_dtb *g);

函数功能

设置DH算法context的g参数

输入说明

ctx:DH算法context

g:DH g参数

输出说明

返回值说明

0:设置成功

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

使用说明

  

注意事项

  

函数原型

void wcrypto_get_dh_g(void *ctx, struct wd_dtb **g);

函数功能

由DH算法context获取g参数

输入说明

ctx:DH算法context

g:DH g参数地址

输出说明

返回值说明

使用说明

  

注意事项