Lines Matching refs:engine
1 /* $NetBSD: engine.c,v 1.5 2023/06/19 21:41:43 christos Exp $ */
39 #include <engine.h>
52 void (*destroy)(ENGINE *);
58 ENGINE *
61 ENGINE *engine;
63 engine = calloc(1, sizeof(*engine));
64 engine->references = 1;
66 return engine;
70 ENGINE_free(ENGINE *engine)
72 return ENGINE_finish(engine);
76 ENGINE_finish(ENGINE *engine)
78 if (engine->references-- <= 0)
80 if (engine->references > 0)
83 if (engine->name)
84 free(engine->name);
85 if (engine->id)
86 free(engine->id);
87 if(engine->destroy)
88 (*engine->destroy)(engine);
90 memset(engine, 0, sizeof(*engine));
91 engine->references = -1;
94 free(engine);
99 ENGINE_up_ref(ENGINE *engine)
101 if (engine->references < 0)
103 engine->references++;
108 ENGINE_set_id(ENGINE *engine, const char *id)
110 engine->id = strdup(id);
111 return (engine->id == NULL) ? 0 : 1;
115 ENGINE_set_name(ENGINE *engine, const char *name)
117 engine->name = strdup(name);
118 return (engine->name == NULL) ? 0 : 1;
122 ENGINE_set_RSA(ENGINE *engine, const RSA_METHOD *method)
124 engine->rsa = method;
129 ENGINE_set_DH(ENGINE *engine, const DH_METHOD *method)
131 engine->dh = method;
136 ENGINE_set_destroy_function(ENGINE *e, void (*destroy)(ENGINE *))
143 ENGINE_get_id(const ENGINE *engine)
145 return engine->id;
149 ENGINE_get_name(const ENGINE *engine)
151 return engine->name;
155 ENGINE_get_RSA(const ENGINE *engine)
157 return engine->rsa;
161 ENGINE_get_DH(const ENGINE *engine)
163 return engine->dh;
167 ENGINE_get_RAND(const ENGINE *engine)
169 return engine->rand;
177 static ENGINE *type##_engine; \
179 ENGINE_set_default_##type(ENGINE *engine) \
183 type##_engine = engine; \
188 ENGINE * \
205 static ENGINE **engines;
209 add_engine(ENGINE *engine)
211 ENGINE **d, *dup;
213 dup = ENGINE_by_id(engine->id);
221 engines[num_engines++] = engine;
229 ENGINE *engine;
232 engine = ENGINE_new();
233 if (engine == NULL)
236 ENGINE_set_id(engine, "builtin");
237 ENGINE_set_name(engine,
238 "Heimdal crypto builtin (ltm) engine version " PACKAGE_VERSION);
239 ENGINE_set_RSA(engine, RSA_ltm_method());
240 ENGINE_set_DH(engine, DH_ltm_method());
242 ret = add_engine(engine);
244 ENGINE_finish(engine);
251 engine = ENGINE_new();
252 if (engine == NULL)
255 ENGINE_set_id(engine, "tfm");
256 ENGINE_set_name(engine,
257 "Heimdal crypto tfm engine version " PACKAGE_VERSION);
258 ENGINE_set_RSA(engine, RSA_tfm_method());
259 ENGINE_set_DH(engine, DH_tfm_method());
261 ret = add_engine(engine);
263 ENGINE_finish(engine);
271 engine = ENGINE_new();
272 if (engine == NULL)
275 ENGINE_set_id(engine, "ltm");
276 ENGINE_set_name(engine,
277 "Heimdal crypto ltm engine version " PACKAGE_VERSION);
278 ENGINE_set_RSA(engine, RSA_ltm_method());
279 ENGINE_set_DH(engine, DH_ltm_method());
281 ret = add_engine(engine);
283 ENGINE_finish(engine);
291 engine = ENGINE_new();
292 if (engine == NULL)
295 ENGINE_set_id(engine, "gmp");
296 ENGINE_set_name(engine,
297 "Heimdal crypto gmp engine version " PACKAGE_VERSION);
298 ENGINE_set_RSA(engine, RSA_gmp_method());
300 ret = add_engine(engine);
302 ENGINE_finish(engine);
306 ENGINE *
310 ENGINE *engine;
314 engine = calloc(1, sizeof(*engine));
315 if (engine == NULL)
321 free(engine);
332 free(engine);
339 free(engine);
350 free(engine);
354 ret = (*bind_engine)(engine, id, NULL); /* XXX fix third arg */
357 free(engine);
362 ENGINE_up_ref(engine);
364 ret = add_engine(engine);
367 ENGINE_finish(engine);
371 return engine;
377 ENGINE *