2021SC@SDUSC libqs主要数据结构及头文件分析

本文档分析了libqs中的关键封装机制(KEM),特别是src/kem/kem.h中的API使用。它包含两个示例,一个是直接使用单个方案且不依赖动态内存,另一个则利用OQS_KEM对象实现运行时算法选择,涉及动态内存分配。此外,还介绍了获取可用KEM算法标识符和数量的函数,以及检查算法是否启用的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

src / kem /kem. h
关键封装机制。

该文件包含两个有关使用OQS_KEM API 示例。src/kem/example_kem.c

第一个示例直接使用单个方案的算法,不使用动态内存分配 - 所有缓冲都分配在堆栈上,使用预处理器宏指示大小。由于算法可以在编译时间禁用,程序员应将代码包裹在#ifdefs中。

第二个示例使用OQS_KEM对象来使用运行时间指定的算法。因此,它使用动态内存分配 - 所有缓冲器必须由程序员进行 malloc’ed,使用相关 OQS_KEM对象的相应长度成员指示大小。由于算法可以在编译时间禁用,程序员应检查OQS_KEM对象是否禁用。NULL

#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <oqs/oqs.h>

类型
[src]
typedef struct OQS_KEM OQS_KEM

关键封装机制对象

功能

OQS_API const char *	OQS_KEM_alg_identifier(size_t i)
OQS_API int	OQS_KEM_alg_count(void)
OQS_API int	OQS_KEM_alg_is_enabled(const char *method_name)
OQS_API OQS_KEM *	OQS_KEM_new(const char *method_name)
OQS_API OQS_STATUS	OQS_KEM_keypair(const OQS_KEM *kem, uint8_t *public_key, uint8_t *secret_key)
OQS_API OQS_STATUS	OQS_KEM_encaps(const OQS_KEM *kem, uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key)
OQS_API OQS_STATUS	OQS_KEM_decaps(const OQS_KEM *kem, uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key)
OQS_API void	OQS_KEM_free(OQS_KEM *kem)

[src]

OQS_KEM_alg_identifier
OQS_API const char * OQS_KEM_alg_identifier(size_t i)

返回 liboq 中可用的关键封装机制的标识符。与OQS_KEM_new一起使用。

即使算法在编译时间被禁用,该列表中也存在算法标识符。

参数
size_t i
返回算法标识符的索引,0 <= i < OQS_KEM_algs_length

返回
算法标识符为字符串或 NULL。

[src]

OQS_KEM_alg_count
OQS_API int OQS_KEM_alg_count(void)

返回 liboqs 中的关键封装机制的数量。它们可以用OQS_KEM_alg_identifier列举。

请注意,某些机制可能会在编译时间禁用。

返回
关键封装机制的数量。

[src]

OQS_KEM_alg_is_enabled
OQS_API int OQS_KEM_alg_is_enabled(const char *method_name)

指示指定算法是否在编译时间启用。

参数
const char * method_name
所需算法的名称;其中一个名字在。OQS_KEM_algs

返回
1 如果启用,0 如果已禁用或未找到

[src]
OQS_KEM_new
OQS_API OQS_KEM * OQS_KEM_new(const char *method_name)
为特定算法构建OQS_KEM对象。

呼叫者应始终检查返回值是否表示是否比提供的无效算法名称,或者请求的算法在编译时间被禁用。NULL

参数
const char *	method_name	
所需算法的名称;其中一个名字在。OQS_KEM_algs

返回
特定算法的OQS_KEM,或者算法在编译时间被禁用。NULL


[src]
OQS_KEM_keypair
OQS_API OQS_STATUS OQS_KEM_keypair(const OQS_KEM *kem, uint8_t *public_key,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值