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

}

相关推荐
云烟成雨TD4 分钟前
Spring AI 1.x 系列【33】RAG Advisor 组件与四大分层架构
java·人工智能·spring
郭涤生18 分钟前
C++ 高性能编程最佳实践清单
开发语言·c++
烛衔溟18 分钟前
TypeScript 类的静态成员与静态方法
开发语言·javascript·typescript
Nile18 分钟前
解密Palantir系列一:4. Ontology 不是哲学
开发语言·前端·javascript
用户9874092388723 分钟前
llamafactory 0.6.3 没有 llamafactory-cli
算法
计算机安禾26 分钟前
【算法分析与设计】第26篇:参数化算法与固定参数可解性理论
大数据·人工智能·算法·机器学习·剪枝
罗超驿1 小时前
15.JavaScript 函数与作用域完全指南:语法、参数、表达式与作用域链实战
开发语言·前端·javascript
江南十四行1 小时前
并发编程(七)
java
.千余1 小时前
【C++】C++类与对象2:C++构造函数、运算符重载与流输入输出全面解析
c语言·开发语言·前端·c++·经验分享
郭涤生1 小时前
C++ 高性能状态机
开发语言·c++