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

}

相关推荐
CoovallyAIHub13 分钟前
CVPR 2026 | MixerCSeg:仅2.05 GFLOPs刷新四大裂缝分割基准!解耦Mamba隐式注意力,CNN+Transformer+Mamba三
深度学习·算法·计算机视觉
NE_STOP26 分钟前
MyBatis-plus进阶之映射与条件构造器
java
CoovallyAIHub43 分钟前
YOLO26-Pose 深度解读:端到端架构重新设计,姿态估计凭什么跨代领先?
深度学习·算法·计算机视觉
CoovallyAIHub1 小时前
化工厂气体泄漏怎么用AI检测?30张图3D重建气体泄漏场景——美国国家实验室NeRF新研究
深度学习·算法·计算机视觉
Seven973 小时前
NIO的零拷贝如何实现高效数据传输?
java
颜酱13 小时前
图的数据结构:从「多叉树」到存储与遍历
javascript·后端·算法
架构师沉默17 小时前
别又牛逼了!AI 写 Java 代码真的行吗?
java·后端·架构
zone773918 小时前
006:RAG 入门-面试官问你,RAG 为什么要切块?
后端·算法·面试
CoovallyAIHub21 小时前
OpenClaw 近 2000 个 Skills,为什么没有一个好用的视觉检测工具?
深度学习·算法·计算机视觉
CoovallyAIHub21 小时前
CVPR 2026 | 用一句话告诉 AI 分割什么——MedCLIPSeg 让医学图像分割不再需要海量标注
深度学习·算法·计算机视觉