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,