_ossl_ed25519_keymgmt_functions

* ossl_##impl##to##kind##_##output##_encoder_functions

*/

#define MAKE_ENCODER(impl, type, evp_type, kind, output) \

static OSSL_FUNC_encoder_import_object_fn \

impl##to##kind##_##output##_import_object; \

static OSSL_FUNC_encoder_free_object_fn \

impl##to##kind##_##output##_free_object; \

static OSSL_FUNC_encoder_encode_fn \

impl##to##kind##_##output##_encode; \

\

static void * \

impl##to##kind##_##output##_import_object(void *vctx, int selection, \

const OSSL_PARAM params[]) \

{ \

struct key2any_ctx_st *ctx = vctx; \

\

return ossl_prov_import_key(ossl_##impl##_keymgmt_functions, \

ctx->provctx, selection, params); \

} \

static void impl##to##kind##_##output##_free_object(void *key) \

{ \

ossl_prov_free_key(ossl_##impl##_keymgmt_functions, key); \

} \

static int impl##to##kind##_##output##_does_selection(void *ctx, \

int selection) \

{ \

return key2any_check_selection(selection, \

DO_##kind##_selection_mask); \

} \

static int \

impl##to##kind##_##output##_encode(void *ctx, OSSL_CORE_BIO *cout, \

const void *key, \

const OSSL_PARAM key_abstract[], \

int selection, \

OSSL_PASSPHRASE_CALLBACK *cb, \

void *cbarg) \

{ \

/* We don't deal with abstract objects */ \

if (key_abstract != NULL) { \

ERR_raise(ERR_LIB_PROV, ERR_R_PASSED_INVALID_ARGUMENT); \

return 0; \

} \

DO_##kind(impl, type, output) \

\

ERR_raise(ERR_LIB_PROV, ERR_R_PASSED_INVALID_ARGUMENT); \

return 0; \

} \

const OSSL_DISPATCH \

ossl_##impl##to##kind##_##output##_encoder_functions[] = { \

{ OSSL_FUNC_ENCODER_NEWCTX, \

(void (*)(void))key2any_newctx }, \

{ OSSL_FUNC_ENCODER_FREECTX, \

(void (*)(void))key2any_freectx }, \

{ OSSL_FUNC_ENCODER_SETTABLE_CTX_PARAMS, \

(void (*)(void))key2any_settable_ctx_params }, \

{ OSSL_FUNC_ENCODER_SET_CTX_PARAMS, \

(void (*)(void))key2any_set_ctx_params }, \

{ OSSL_FUNC_ENCODER_DOES_SELECTION, \

(void (*)(void))impl##to##kind##_##output##_does_selection }, \

{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, \

(void (*)(void))impl##to##kind##_##output##_import_object }, \

{ OSSL_FUNC_ENCODER_FREE_OBJECT, \

(void (*)(void))impl##to##kind##_##output##_free_object }, \

{ OSSL_FUNC_ENCODER_ENCODE, \

(void (*)(void))impl##to##kind##_##output##_encode }, \

{ 0, NULL } \

}

相关推荐
Q741_14718 分钟前
每日一题 力扣 3655. 区间乘法查询后的异或 II 模拟 分治 乘法差分法 快速幂 C++ 题解
c++·算法·leetcode·模拟·快速幂·分治·差分法
The_Ticker19 分钟前
印度股票实时行情API(低成本方案)
python·websocket·算法·金融·区块链
夏乌_Wx23 分钟前
剑指offer | 2.4数据结构相关题目
数据结构·c++·算法·剑指offer·c/c++
开心码农1号26 分钟前
Java rabbitMQ如何发送、消费消息、全套可靠方案
java·rabbitmq·java-rabbitmq
EAIReport29 分钟前
国外网站数据批量采集技术实现路径
开发语言·python
超绝振刀怪30 分钟前
【C++可变模板参数】
开发语言·c++·可变模板参数
蜡台35 分钟前
JetBrains IDEA 安装 卸载相关总结
java·ide·intellij-idea·注册码
WJLSH12335 分钟前
TomCat
java·tomcat
Freak嵌入式40 分钟前
MicroPython LVGL基础知识和概念:时序与动态效果
开发语言·python·github·php·gui·lvgl·micropython