_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 } \

}

相关推荐
大鹏说大话2 分钟前
和小鹅通相近的知识付费小程序平台有哪些
开发语言
程序员梅雨5 分钟前
【从零开始学习数据仓库 | 第三篇】: Flume——数据采集基石
java·大数据·数据仓库·后端·学习·flume
Dovis(誓平步青云)5 分钟前
启元 T1 Pro 视觉伺服实践:基于 HSV 阈值与针孔测距的启元机器人寻物实现
开发语言·人工智能·机器学习·二次开发
acd1200913 分钟前
域名解析缓存带来的隐性故障,很多排查都漏掉了这一层
java·运维·nginx
wuminyu15 分钟前
JVM执行引擎学习总结:热点字节码编译成本地机器码
java·linux·c语言·jvm·c++
真上帝的左手15 分钟前
2. 编程语言-Java-Spring Boot-JAR
java·spring boot·jar
Ryan-Zhong17 分钟前
数字人口播视频 API 实战:Python 跑通模板合成、异步轮询与批量出片
开发语言·python·音视频
努力努力再努力wz20 分钟前
【Lua 入门系列】模块与包(一):从多文件组织到require 运行时加载机制、模块缓存、预加载搜索与 Lua 文件搜索机制
开发语言·junit·lua
Jack_hsfs22 分钟前
第6章Spring 管理的是对象,还是对象的说明书?
java·后端·spring