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

RNG随机数获取接口

 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
struct wcrypto_rng_msg {
__u8 alg_type; /* Denoted by enum wcrypto_type */
__u8 op_type;/* Denoted by enum wcrypto_rng_op_type */
__u8 data_fmt; /* Data format, denoted by enum wd_buff_type */
__u8 result;/* Data format, denoted by WD error code */
__u8 *out; /* Result address */
__u8 *in; /* Input address */
__u32 out_bytes; /* output bytes */
__u32 in_bytes; /* input bytes */
__u64 usr_tag; /* user identifier */
};

enum wcrypto_rng_op_type {
WCRYPTO_RNG_INVALID,/* Invalid RNG operational type */
WCRYPTO_DRBG_RESEED,/* seed operation */
WCRYPTO_DRBG_GEN,/* deterministic random number generation */
WCRYPTO_TRNG_GEN, /* true random number generation */
};

struct wcrypto_rng_ctx_setup {
wcrypto_cb cb;
__u16 data_fmt; /* Data format, denoted by enum wd_buff_type */
enum wcrypto_type type;/* Please refer to the definition of enum */
enum wcrypto_cipher_alg calg;/* DRBG cipher algorithm */
enum wcrypto_cipher_mode cmode; /* DRBG cipher mode */
enum wcrypto_digest_alg dalg; /* DRBG digest algorithm */
enum wcrypto_digest_mode dmode; /* DRBG digest mode */
};

struct wcrypto_rng_op_data {
enum wcrypto_rng_op_type op_type;
__u32 status; /* Operation result status */
void *in;/* input */
void *out; /* output */
__u32 in_bytes; /* input bytes */
__u32 out_bytes; /* output bytes */
};

函数原型

void * wcrypto_create_rng_ctx(struct wd_queue *q, struct wcrypto_rng_ctx_setup *setup);

函数功能

基于Warpdrive queue创建RNG算法context

输入说明

q:warpdrive queue

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

输出说明

返回值说明

Context地址

NULL:失败

非NULL:成功

使用说明

支持多线程

注意事项

  

函数原型

int wcrypto_do_rng(void *ctx, struct wcrypto_rng_op_data *opdata, void *tag);

函数功能

基于RNG context的RNG算法操作

输入说明

ctx:RNG context

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

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

输出说明

无。

返回值说明

0:成功

否则失败

使用说明

同一个ctx仅支持单线程

注意事项

  

函数原型

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

函数功能

基于warpdrive queue的RNG算法poll操作

输入说明

q:Warpdrive RNG queue

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

输出说明

无。

返回值说明

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

0:没有收到任何回应

负值:poll发生错误

使用说明

同一个q仅支持单线程

注意事项

  

函数原型

void wcrypto_del_rng_ctx(void *ctx);

函数功能

删除一个RNG的context

输入说明

ctx:需要删除的RNG context

输出说明

返回值说明

使用说明

  

注意事项