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

}

相关推荐
MZ_ZXD00114 分钟前
springboot汽车租赁服务管理系统-计算机毕业设计源码58196
java·c++·spring boot·python·django·flask·php
A 计算机毕业设计-小途1 小时前
大四零基础用Vue+ElementUI一周做完化妆品推荐系统?
java·大数据·hadoop·python·spark·毕业设计·毕设
快去睡觉~2 小时前
力扣73:矩阵置零
算法·leetcode·矩阵
岁忧3 小时前
(nice!!!)(LeetCode 每日一题) 679. 24 点游戏 (深度优先搜索)
java·c++·leetcode·游戏·go·深度优先
小欣加油3 小时前
leetcode 3 无重复字符的最长子串
c++·算法·leetcode
四维碎片5 小时前
【Qt】线程池与全局信号实现异步协作
开发语言·qt·ui·visual studio
IT码农-爱吃辣条5 小时前
Three.js 初级教程大全
开发语言·javascript·three.js
☺����5 小时前
实现自己的AI视频监控系统-第一章-视频拉流与解码2
开发语言·人工智能·python·音视频
猿究院--王升5 小时前
jvm三色标记
java·jvm·算法
染翰6 小时前
lua入门以及在Redis中的应用
开发语言·redis·lua