OpenSSL
1.0.1c
Main Page
Classes
Files
File List
File Members
All
Classes
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
include
openssl
engine.h
Go to the documentation of this file.
1
/* openssl/engine.h */
2
/* Written by Geoff Thorpe (
[email protected]
) for the OpenSSL
3
* project 2000.
4
*/
5
/* ====================================================================
6
* Copyright (c) 1999-2004 The OpenSSL Project. All rights reserved.
7
*
8
* Redistribution and use in source and binary forms, with or without
9
* modification, are permitted provided that the following conditions
10
* are met:
11
*
12
* 1. Redistributions of source code must retain the above copyright
13
* notice, this list of conditions and the following disclaimer.
14
*
15
* 2. Redistributions in binary form must reproduce the above copyright
16
* notice, this list of conditions and the following disclaimer in
17
* the documentation and/or other materials provided with the
18
* distribution.
19
*
20
* 3. All advertising materials mentioning features or use of this
21
* software must display the following acknowledgment:
22
* "This product includes software developed by the OpenSSL Project
23
* for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
24
*
25
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
26
* endorse or promote products derived from this software without
27
* prior written permission. For written permission, please contact
28
*
[email protected]
.
29
*
30
* 5. Products derived from this software may not be called "OpenSSL"
31
* nor may "OpenSSL" appear in their names without prior written
32
* permission of the OpenSSL Project.
33
*
34
* 6. Redistributions of any form whatsoever must retain the following
35
* acknowledgment:
36
* "This product includes software developed by the OpenSSL Project
37
* for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
38
*
39
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
40
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
41
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
42
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
43
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
44
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
45
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
46
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
47
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
48
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
49
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
50
* OF THE POSSIBILITY OF SUCH DAMAGE.
51
* ====================================================================
52
*
53
* This product includes cryptographic software written by Eric Young
54
* (
[email protected]
). This product includes software written by Tim
55
* Hudson (
[email protected]
).
56
*
57
*/
58
/* ====================================================================
59
* Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
60
* ECDH support in OpenSSL originally developed by
61
* SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
62
*/
63
64
#ifndef HEADER_ENGINE_H
65
#define HEADER_ENGINE_H
66
67
#include <
openssl/opensslconf.h
>
68
69
#ifdef OPENSSL_NO_ENGINE
70
#error ENGINE is disabled.
71
#endif
72
73
#ifndef OPENSSL_NO_DEPRECATED
74
#include <
openssl/bn.h
>
75
#ifndef OPENSSL_NO_RSA
76
#include <
openssl/rsa.h
>
77
#endif
78
#ifndef OPENSSL_NO_DSA
79
#include <
openssl/dsa.h
>
80
#endif
81
#ifndef OPENSSL_NO_DH
82
#include <
openssl/dh.h
>
83
#endif
84
#ifndef OPENSSL_NO_ECDH
85
#include <
openssl/ecdh.h
>
86
#endif
87
#ifndef OPENSSL_NO_ECDSA
88
#include <
openssl/ecdsa.h
>
89
#endif
90
#include <
openssl/rand.h
>
91
#include <
openssl/ui.h
>
92
#include <
openssl/err.h
>
93
#endif
94
95
#include <
openssl/ossl_typ.h
>
96
#include <
openssl/symhacks.h
>
97
98
#include <
openssl/x509.h
>
99
100
#ifdef __cplusplus
101
extern
"C"
{
102
#endif
103
104
/* These flags are used to control combinations of algorithm (methods)
105
* by bitwise "OR"ing. */
106
#define ENGINE_METHOD_RSA (unsigned int)0x0001
107
#define ENGINE_METHOD_DSA (unsigned int)0x0002
108
#define ENGINE_METHOD_DH (unsigned int)0x0004
109
#define ENGINE_METHOD_RAND (unsigned int)0x0008
110
#define ENGINE_METHOD_ECDH (unsigned int)0x0010
111
#define ENGINE_METHOD_ECDSA (unsigned int)0x0020
112
#define ENGINE_METHOD_CIPHERS (unsigned int)0x0040
113
#define ENGINE_METHOD_DIGESTS (unsigned int)0x0080
114
#define ENGINE_METHOD_STORE (unsigned int)0x0100
115
#define ENGINE_METHOD_PKEY_METHS (unsigned int)0x0200
116
#define ENGINE_METHOD_PKEY_ASN1_METHS (unsigned int)0x0400
117
/* Obvious all-or-nothing cases. */
118
#define ENGINE_METHOD_ALL (unsigned int)0xFFFF
119
#define ENGINE_METHOD_NONE (unsigned int)0x0000
120
121
/* This(ese) flag(s) controls behaviour of the ENGINE_TABLE mechanism used
122
* internally to control registration of ENGINE implementations, and can be set
123
* by ENGINE_set_table_flags(). The "NOINIT" flag prevents attempts to
124
* initialise registered ENGINEs if they are not already initialised. */
125
#define ENGINE_TABLE_FLAG_NOINIT (unsigned int)0x0001
126
127
/* ENGINE flags that can be set by ENGINE_set_flags(). */
128
/* #define ENGINE_FLAGS_MALLOCED 0x0001 */
/* Not used */
129
130
/* This flag is for ENGINEs that wish to handle the various 'CMD'-related
131
* control commands on their own. Without this flag, ENGINE_ctrl() handles these
132
* control commands on behalf of the ENGINE using their "cmd_defns" data. */
133
#define ENGINE_FLAGS_MANUAL_CMD_CTRL (int)0x0002
134
135
/* This flag is for ENGINEs who return new duplicate structures when found via
136
* "ENGINE_by_id()". When an ENGINE must store state (eg. if ENGINE_ctrl()
137
* commands are called in sequence as part of some stateful process like
138
* key-generation setup and execution), it can set this flag - then each attempt
139
* to obtain the ENGINE will result in it being copied into a new structure.
140
* Normally, ENGINEs don't declare this flag so ENGINE_by_id() just increments
141
* the existing ENGINE's structural reference count. */
142
#define ENGINE_FLAGS_BY_ID_COPY (int)0x0004
143
144
/* This flag if for an ENGINE that does not want its methods registered as
145
* part of ENGINE_register_all_complete() for example if the methods are
146
* not usable as default methods.
147
*/
148
149
#define ENGINE_FLAGS_NO_REGISTER_ALL (int)0x0008
150
151
/* ENGINEs can support their own command types, and these flags are used in
152
* ENGINE_CTRL_GET_CMD_FLAGS to indicate to the caller what kind of input each
153
* command expects. Currently only numeric and string input is supported. If a
154
* control command supports none of the _NUMERIC, _STRING, or _NO_INPUT options,
155
* then it is regarded as an "internal" control command - and not for use in
156
* config setting situations. As such, they're not available to the
157
* ENGINE_ctrl_cmd_string() function, only raw ENGINE_ctrl() access. Changes to
158
* this list of 'command types' should be reflected carefully in
159
* ENGINE_cmd_is_executable() and ENGINE_ctrl_cmd_string(). */
160
161
/* accepts a 'long' input value (3rd parameter to ENGINE_ctrl) */
162
#define ENGINE_CMD_FLAG_NUMERIC (unsigned int)0x0001
163
/* accepts string input (cast from 'void*' to 'const char *', 4th parameter to
164
* ENGINE_ctrl) */
165
#define ENGINE_CMD_FLAG_STRING (unsigned int)0x0002
166
/* Indicates that the control command takes *no* input. Ie. the control command
167
* is unparameterised. */
168
#define ENGINE_CMD_FLAG_NO_INPUT (unsigned int)0x0004
169
/* Indicates that the control command is internal. This control command won't
170
* be shown in any output, and is only usable through the ENGINE_ctrl_cmd()
171
* function. */
172
#define ENGINE_CMD_FLAG_INTERNAL (unsigned int)0x0008
173
174
/* NB: These 3 control commands are deprecated and should not be used. ENGINEs
175
* relying on these commands should compile conditional support for
176
* compatibility (eg. if these symbols are defined) but should also migrate the
177
* same functionality to their own ENGINE-specific control functions that can be
178
* "discovered" by calling applications. The fact these control commands
179
* wouldn't be "executable" (ie. usable by text-based config) doesn't change the
180
* fact that application code can find and use them without requiring per-ENGINE
181
* hacking. */
182
183
/* These flags are used to tell the ctrl function what should be done.
184
* All command numbers are shared between all engines, even if some don't
185
* make sense to some engines. In such a case, they do nothing but return
186
* the error ENGINE_R_CTRL_COMMAND_NOT_IMPLEMENTED. */
187
#define ENGINE_CTRL_SET_LOGSTREAM 1
188
#define ENGINE_CTRL_SET_PASSWORD_CALLBACK 2
189
#define ENGINE_CTRL_HUP 3
/* Close and reinitialise any
190
handles/connections etc. */
191
#define ENGINE_CTRL_SET_USER_INTERFACE 4
/* Alternative to callback */
192
#define ENGINE_CTRL_SET_CALLBACK_DATA 5
/* User-specific data, used
193
when calling the password
194
callback and the user
195
interface */
196
#define ENGINE_CTRL_LOAD_CONFIGURATION 6
/* Load a configuration, given
197
a string that represents a
198
file name or so */
199
#define ENGINE_CTRL_LOAD_SECTION 7
/* Load data from a given
200
section in the already loaded
201
configuration */
202
203
/* These control commands allow an application to deal with an arbitrary engine
204
* in a dynamic way. Warn: Negative return values indicate errors FOR THESE
205
* COMMANDS because zero is used to indicate 'end-of-list'. Other commands,
206
* including ENGINE-specific command types, return zero for an error.
207
*
208
* An ENGINE can choose to implement these ctrl functions, and can internally
209
* manage things however it chooses - it does so by setting the
210
* ENGINE_FLAGS_MANUAL_CMD_CTRL flag (using ENGINE_set_flags()). Otherwise the
211
* ENGINE_ctrl() code handles this on the ENGINE's behalf using the cmd_defns
212
* data (set using ENGINE_set_cmd_defns()). This means an ENGINE's ctrl()
213
* handler need only implement its own commands - the above "meta" commands will
214
* be taken care of. */
215
216
/* Returns non-zero if the supplied ENGINE has a ctrl() handler. If "not", then
217
* all the remaining control commands will return failure, so it is worth
218
* checking this first if the caller is trying to "discover" the engine's
219
* capabilities and doesn't want errors generated unnecessarily. */
220
#define ENGINE_CTRL_HAS_CTRL_FUNCTION 10
221
/* Returns a positive command number for the first command supported by the
222
* engine. Returns zero if no ctrl commands are supported. */
223
#define ENGINE_CTRL_GET_FIRST_CMD_TYPE 11
224
/* The 'long' argument specifies a command implemented by the engine, and the
225
* return value is the next command supported, or zero if there are no more. */
226
#define ENGINE_CTRL_GET_NEXT_CMD_TYPE 12
227
/* The 'void*' argument is a command name (cast from 'const char *'), and the
228
* return value is the command that corresponds to it. */
229
#define ENGINE_CTRL_GET_CMD_FROM_NAME 13
230
/* The next two allow a command to be converted into its corresponding string
231
* form. In each case, the 'long' argument supplies the command. In the NAME_LEN
232
* case, the return value is the length of the command name (not counting a
233
* trailing EOL). In the NAME case, the 'void*' argument must be a string buffer
234
* large enough, and it will be populated with the name of the command (WITH a
235
* trailing EOL). */
236
#define ENGINE_CTRL_GET_NAME_LEN_FROM_CMD 14
237
#define ENGINE_CTRL_GET_NAME_FROM_CMD 15
238
/* The next two are similar but give a "short description" of a command. */
239
#define ENGINE_CTRL_GET_DESC_LEN_FROM_CMD 16
240
#define ENGINE_CTRL_GET_DESC_FROM_CMD 17
241
/* With this command, the return value is the OR'd combination of
242
* ENGINE_CMD_FLAG_*** values that indicate what kind of input a given
243
* engine-specific ctrl command expects. */
244
#define ENGINE_CTRL_GET_CMD_FLAGS 18
245
246
/* ENGINE implementations should start the numbering of their own control
247
* commands from this value. (ie. ENGINE_CMD_BASE, ENGINE_CMD_BASE + 1, etc). */
248
#define ENGINE_CMD_BASE 200
249
250
/* NB: These 2 nCipher "chil" control commands are deprecated, and their
251
* functionality is now available through ENGINE-specific control commands
252
* (exposed through the above-mentioned 'CMD'-handling). Code using these 2
253
* commands should be migrated to the more general command handling before these
254
* are removed. */
255
256
/* Flags specific to the nCipher "chil" engine */
257
#define ENGINE_CTRL_CHIL_SET_FORKCHECK 100
258
/* Depending on the value of the (long)i argument, this sets or
259
* unsets the SimpleForkCheck flag in the CHIL API to enable or
260
* disable checking and workarounds for applications that fork().
261
*/
262
#define ENGINE_CTRL_CHIL_NO_LOCKING 101
263
/* This prevents the initialisation function from providing mutex
264
* callbacks to the nCipher library. */
265
266
/* If an ENGINE supports its own specific control commands and wishes the
267
* framework to handle the above 'ENGINE_CMD_***'-manipulation commands on its
268
* behalf, it should supply a null-terminated array of ENGINE_CMD_DEFN entries
269
* to ENGINE_set_cmd_defns(). It should also implement a ctrl() handler that
270
* supports the stated commands (ie. the "cmd_num" entries as described by the
271
* array). NB: The array must be ordered in increasing order of cmd_num.
272
* "null-terminated" means that the last ENGINE_CMD_DEFN element has cmd_num set
273
* to zero and/or cmd_name set to NULL. */
274
typedef
struct
ENGINE_CMD_DEFN_st
275
{
276
unsigned
int
cmd_num
;
/* The command number */
277
const
char
*
cmd_name
;
/* The command name itself */
278
const
char
*
cmd_desc
;
/* A short description of the command */
279
unsigned
int
cmd_flags
;
/* The input the command expects */
280
}
ENGINE_CMD_DEFN
;
281
282
/* Generic function pointer */
283
typedef
int (*
ENGINE_GEN_FUNC_PTR
)(
void
);
284
/* Generic function pointer taking no arguments */
285
typedef
int (*
ENGINE_GEN_INT_FUNC_PTR
)(
ENGINE
*);
286
/* Specific control function pointer */
287
typedef
int (*
ENGINE_CTRL_FUNC_PTR
)(
ENGINE
*, int, long,
void
*,
void
(*
f
)(
void
));
288
/* Generic load_key function pointer */
289
typedef
EVP_PKEY
* (*ENGINE_LOAD_KEY_PTR)(ENGINE *,
const
char
*,
290
UI_METHOD
*ui_method,
void
*callback_data);
291
typedef
int (*
ENGINE_SSL_CLIENT_CERT_PTR
)(ENGINE *,
SSL
*ssl,
292
STACK_OF
(
X509_NAME
) *ca_dn,
X509
**pcert,
EVP_PKEY
**pkey,
293
STACK_OF
(
X509
) **pother,
UI_METHOD
*ui_method,
void
*callback_data);
294
/* These callback types are for an ENGINE's handler for cipher and digest logic.
295
* These handlers have these prototypes;
296
* int foo(ENGINE *e, const EVP_CIPHER **cipher, const int **nids, int nid);
297
* int foo(ENGINE *e, const EVP_MD **digest, const int **nids, int nid);
298
* Looking at how to implement these handlers in the case of cipher support, if
299
* the framework wants the EVP_CIPHER for 'nid', it will call;
300
* foo(e, &p_evp_cipher, NULL, nid); (return zero for failure)
301
* If the framework wants a list of supported 'nid's, it will call;
302
* foo(e, NULL, &p_nids, 0); (returns number of 'nids' or -1 for error)
303
*/
304
/* Returns to a pointer to the array of supported cipher 'nid's. If the second
305
* parameter is non-NULL it is set to the size of the returned array. */
306
typedef
int (*
ENGINE_CIPHERS_PTR
)(ENGINE *,
const
EVP_CIPHER
**,
const
int
**, int);
307
typedef
int (*
ENGINE_DIGESTS_PTR
)(ENGINE *,
const
EVP_MD
**,
const
int
**, int);
308
typedef
int (*
ENGINE_PKEY_METHS_PTR
)(ENGINE *,
EVP_PKEY_METHOD
**,
const
int
**, int);
309
typedef
int (*
ENGINE_PKEY_ASN1_METHS_PTR
)(ENGINE *,
EVP_PKEY_ASN1_METHOD
**,
const
int
**, int);
310
/* STRUCTURE functions ... all of these functions deal with pointers to ENGINE
311
* structures where the pointers have a "structural reference". This means that
312
* their reference is to allowed access to the structure but it does not imply
313
* that the structure is functional. To simply increment or decrement the
314
* structural reference count, use ENGINE_by_id and ENGINE_free. NB: This is not
315
* required when iterating using ENGINE_get_next as it will automatically
316
* decrement the structural reference count of the "current" ENGINE and
317
* increment the structural reference count of the ENGINE it returns (unless it
318
* is NULL). */
319
320
/* Get the first/last "ENGINE" type available. */
321
ENGINE *
ENGINE_get_first
(
void
);
322
ENGINE *
ENGINE_get_last
(
void
);
323
/* Iterate to the next/previous "ENGINE" type (NULL = end of the list). */
324
ENGINE *
ENGINE_get_next
(ENGINE *
e
);
325
ENGINE *
ENGINE_get_prev
(ENGINE *
e
);
326
/* Add another "ENGINE" type into the array. */
327
int
ENGINE_add
(ENGINE *
e
);
328
/* Remove an existing "ENGINE" type from the array. */
329
int
ENGINE_remove
(ENGINE *
e
);
330
/* Retrieve an engine from the list by its unique "id" value. */
331
ENGINE *
ENGINE_by_id
(
const
char
*
id
);
332
/* Add all the built-in engines. */
333
void
ENGINE_load_openssl
(
void
);
334
void
ENGINE_load_dynamic
(
void
);
335
#ifndef OPENSSL_NO_STATIC_ENGINE
336
void
ENGINE_load_4758cca
(
void
);
337
void
ENGINE_load_aep
(
void
);
338
void
ENGINE_load_atalla
(
void
);
339
void
ENGINE_load_chil
(
void
);
340
void
ENGINE_load_cswift
(
void
);
341
void
ENGINE_load_nuron
(
void
);
342
void
ENGINE_load_sureware
(
void
);
343
void
ENGINE_load_ubsec
(
void
);
344
void
ENGINE_load_padlock
(
void
);
345
void
ENGINE_load_capi
(
void
);
346
#ifndef OPENSSL_NO_GMP
347
void
ENGINE_load_gmp
(
void
);
348
#endif
349
#ifndef OPENSSL_NO_GOST
350
void
ENGINE_load_gost
(
void
);
351
#endif
352
#endif
353
void
ENGINE_load_cryptodev
(
void
);
354
void
ENGINE_load_rsax
(
void
);
355
void
ENGINE_load_rdrand
(
void
);
356
void
ENGINE_load_builtin_engines
(
void
);
357
358
/* Get and set global flags (ENGINE_TABLE_FLAG_***) for the implementation
359
* "registry" handling. */
360
unsigned
int
ENGINE_get_table_flags
(
void
);
361
void
ENGINE_set_table_flags
(
unsigned
int
flags
);
362
363
/* Manage registration of ENGINEs per "table". For each type, there are 3
364
* functions;
365
* ENGINE_register_***(e) - registers the implementation from 'e' (if it has one)
366
* ENGINE_unregister_***(e) - unregister the implementation from 'e'
367
* ENGINE_register_all_***() - call ENGINE_register_***() for each 'e' in the list
368
* Cleanup is automatically registered from each table when required, so
369
* ENGINE_cleanup() will reverse any "register" operations. */
370
371
int
ENGINE_register_RSA
(ENGINE *
e
);
372
void
ENGINE_unregister_RSA
(ENGINE *
e
);
373
void
ENGINE_register_all_RSA
(
void
);
374
375
int
ENGINE_register_DSA
(ENGINE *
e
);
376
void
ENGINE_unregister_DSA
(ENGINE *
e
);
377
void
ENGINE_register_all_DSA
(
void
);
378
379
int
ENGINE_register_ECDH
(ENGINE *
e
);
380
void
ENGINE_unregister_ECDH
(ENGINE *
e
);
381
void
ENGINE_register_all_ECDH
(
void
);
382
383
int
ENGINE_register_ECDSA
(ENGINE *
e
);
384
void
ENGINE_unregister_ECDSA
(ENGINE *
e
);
385
void
ENGINE_register_all_ECDSA
(
void
);
386
387
int
ENGINE_register_DH
(ENGINE *
e
);
388
void
ENGINE_unregister_DH
(ENGINE *
e
);
389
void
ENGINE_register_all_DH
(
void
);
390
391
int
ENGINE_register_RAND
(ENGINE *
e
);
392
void
ENGINE_unregister_RAND
(ENGINE *
e
);
393
void
ENGINE_register_all_RAND
(
void
);
394
395
int
ENGINE_register_STORE
(ENGINE *
e
);
396
void
ENGINE_unregister_STORE
(ENGINE *
e
);
397
void
ENGINE_register_all_STORE
(
void
);
398
399
int
ENGINE_register_ciphers
(ENGINE *
e
);
400
void
ENGINE_unregister_ciphers
(ENGINE *
e
);
401
void
ENGINE_register_all_ciphers
(
void
);
402
403
int
ENGINE_register_digests
(ENGINE *
e
);
404
void
ENGINE_unregister_digests
(ENGINE *
e
);
405
void
ENGINE_register_all_digests
(
void
);
406
407
int
ENGINE_register_pkey_meths
(ENGINE *
e
);
408
void
ENGINE_unregister_pkey_meths
(ENGINE *
e
);
409
void
ENGINE_register_all_pkey_meths
(
void
);
410
411
int
ENGINE_register_pkey_asn1_meths
(ENGINE *
e
);
412
void
ENGINE_unregister_pkey_asn1_meths
(ENGINE *
e
);
413
void
ENGINE_register_all_pkey_asn1_meths
(
void
);
414
415
/* These functions register all support from the above categories. Note, use of
416
* these functions can result in static linkage of code your application may not
417
* need. If you only need a subset of functionality, consider using more
418
* selective initialisation. */
419
int
ENGINE_register_complete
(ENGINE *
e
);
420
int
ENGINE_register_all_complete
(
void
);
421
422
/* Send parametrised control commands to the engine. The possibilities to send
423
* down an integer, a pointer to data or a function pointer are provided. Any of
424
* the parameters may or may not be NULL, depending on the command number. In
425
* actuality, this function only requires a structural (rather than functional)
426
* reference to an engine, but many control commands may require the engine be
427
* functional. The caller should be aware of trying commands that require an
428
* operational ENGINE, and only use functional references in such situations. */
429
int
ENGINE_ctrl
(ENGINE *
e
,
int
cmd,
long
i,
void
*
p
,
void
(*
f
)(
void
));
430
431
/* This function tests if an ENGINE-specific command is usable as a "setting".
432
* Eg. in an application's config file that gets processed through
433
* ENGINE_ctrl_cmd_string(). If this returns zero, it is not available to
434
* ENGINE_ctrl_cmd_string(), only ENGINE_ctrl(). */
435
int
ENGINE_cmd_is_executable
(ENGINE *e,
int
cmd);
436
437
/* This function works like ENGINE_ctrl() with the exception of taking a
438
* command name instead of a command number, and can handle optional commands.
439
* See the comment on ENGINE_ctrl_cmd_string() for an explanation on how to
440
* use the cmd_name and cmd_optional. */
441
int
ENGINE_ctrl_cmd
(ENGINE *e,
const
char
*cmd_name,
442
long
i,
void
*p,
void
(*
f
)(
void
),
int
cmd_optional);
443
444
/* This function passes a command-name and argument to an ENGINE. The cmd_name
445
* is converted to a command number and the control command is called using
446
* 'arg' as an argument (unless the ENGINE doesn't support such a command, in
447
* which case no control command is called). The command is checked for input
448
* flags, and if necessary the argument will be converted to a numeric value. If
449
* cmd_optional is non-zero, then if the ENGINE doesn't support the given
450
* cmd_name the return value will be success anyway. This function is intended
451
* for applications to use so that users (or config files) can supply
452
* engine-specific config data to the ENGINE at run-time to control behaviour of
453
* specific engines. As such, it shouldn't be used for calling ENGINE_ctrl()
454
* functions that return data, deal with binary data, or that are otherwise
455
* supposed to be used directly through ENGINE_ctrl() in application code. Any
456
* "return" data from an ENGINE_ctrl() operation in this function will be lost -
457
* the return value is interpreted as failure if the return value is zero,
458
* success otherwise, and this function returns a boolean value as a result. In
459
* other words, vendors of 'ENGINE'-enabled devices should write ENGINE
460
* implementations with parameterisations that work in this scheme, so that
461
* compliant ENGINE-based applications can work consistently with the same
462
* configuration for the same ENGINE-enabled devices, across applications. */
463
int
ENGINE_ctrl_cmd_string
(ENGINE *e,
const
char
*cmd_name,
const
char
*
arg
,
464
int
cmd_optional);
465
466
/* These functions are useful for manufacturing new ENGINE structures. They
467
* don't address reference counting at all - one uses them to populate an ENGINE
468
* structure with personalised implementations of things prior to using it
469
* directly or adding it to the builtin ENGINE list in OpenSSL. These are also
470
* here so that the ENGINE structure doesn't have to be exposed and break binary
471
* compatibility! */
472
ENGINE *
ENGINE_new
(
void
);
473
int
ENGINE_free
(ENGINE *e);
474
int
ENGINE_up_ref
(ENGINE *e);
475
int
ENGINE_set_id
(ENGINE *e,
const
char
*
id
);
476
int
ENGINE_set_name
(ENGINE *e,
const
char
*name);
477
int
ENGINE_set_RSA
(ENGINE *e,
const
RSA_METHOD
*rsa_meth);
478
int
ENGINE_set_DSA
(ENGINE *e,
const
DSA_METHOD
*dsa_meth);
479
int
ENGINE_set_ECDH
(ENGINE *e,
const
ECDH_METHOD
*ecdh_meth);
480
int
ENGINE_set_ECDSA
(ENGINE *e,
const
ECDSA_METHOD
*ecdsa_meth);
481
int
ENGINE_set_DH
(ENGINE *e,
const
DH_METHOD
*dh_meth);
482
int
ENGINE_set_RAND
(ENGINE *e,
const
RAND_METHOD
*rand_meth);
483
int
ENGINE_set_STORE
(ENGINE *e,
const
STORE_METHOD
*store_meth);
484
int
ENGINE_set_destroy_function
(ENGINE *e,
ENGINE_GEN_INT_FUNC_PTR
destroy_f);
485
int
ENGINE_set_init_function
(ENGINE *e,
ENGINE_GEN_INT_FUNC_PTR
init_f);
486
int
ENGINE_set_finish_function
(ENGINE *e,
ENGINE_GEN_INT_FUNC_PTR
finish_f);
487
int
ENGINE_set_ctrl_function
(ENGINE *e,
ENGINE_CTRL_FUNC_PTR
ctrl_f);
488
int
ENGINE_set_load_privkey_function
(ENGINE *e,
ENGINE_LOAD_KEY_PTR
loadpriv_f);
489
int
ENGINE_set_load_pubkey_function
(ENGINE *e,
ENGINE_LOAD_KEY_PTR
loadpub_f);
490
int
ENGINE_set_load_ssl_client_cert_function
(ENGINE *e,
491
ENGINE_SSL_CLIENT_CERT_PTR
loadssl_f);
492
int
ENGINE_set_ciphers
(ENGINE *e,
ENGINE_CIPHERS_PTR
f
);
493
int
ENGINE_set_digests
(ENGINE *e,
ENGINE_DIGESTS_PTR
f
);
494
int
ENGINE_set_pkey_meths
(ENGINE *e,
ENGINE_PKEY_METHS_PTR
f
);
495
int
ENGINE_set_pkey_asn1_meths
(ENGINE *e,
ENGINE_PKEY_ASN1_METHS_PTR
f
);
496
int
ENGINE_set_flags
(ENGINE *e,
int
flags
);
497
int
ENGINE_set_cmd_defns
(ENGINE *e,
const
ENGINE_CMD_DEFN
*defns);
498
/* These functions allow control over any per-structure ENGINE data. */
499
int
ENGINE_get_ex_new_index
(
long
argl,
void
*argp,
CRYPTO_EX_new
*new_func,
500
CRYPTO_EX_dup
*dup_func,
CRYPTO_EX_free
*
free_func
);
501
int
ENGINE_set_ex_data
(ENGINE *e,
int
idx,
void
*
arg
);
502
void
*
ENGINE_get_ex_data
(
const
ENGINE *e,
int
idx);
503
504
/* This function cleans up anything that needs it. Eg. the ENGINE_add() function
505
* automatically ensures the list cleanup function is registered to be called
506
* from ENGINE_cleanup(). Similarly, all ENGINE_register_*** functions ensure
507
* ENGINE_cleanup() will clean up after them. */
508
void
ENGINE_cleanup
(
void
);
509
510
/* These return values from within the ENGINE structure. These can be useful
511
* with functional references as well as structural references - it depends
512
* which you obtained. Using the result for functional purposes if you only
513
* obtained a structural reference may be problematic! */
514
const
char
*
ENGINE_get_id
(
const
ENGINE *e);
515
const
char
*
ENGINE_get_name
(
const
ENGINE *e);
516
const
RSA_METHOD
*
ENGINE_get_RSA
(
const
ENGINE *e);
517
const
DSA_METHOD
*
ENGINE_get_DSA
(
const
ENGINE *e);
518
const
ECDH_METHOD
*
ENGINE_get_ECDH
(
const
ENGINE *e);
519
const
ECDSA_METHOD
*
ENGINE_get_ECDSA
(
const
ENGINE *e);
520
const
DH_METHOD
*
ENGINE_get_DH
(
const
ENGINE *e);
521
const
RAND_METHOD
*
ENGINE_get_RAND
(
const
ENGINE *e);
522
const
STORE_METHOD
*
ENGINE_get_STORE
(
const
ENGINE *e);
523
ENGINE_GEN_INT_FUNC_PTR
ENGINE_get_destroy_function
(
const
ENGINE *e);
524
ENGINE_GEN_INT_FUNC_PTR
ENGINE_get_init_function
(
const
ENGINE *e);
525
ENGINE_GEN_INT_FUNC_PTR
ENGINE_get_finish_function
(
const
ENGINE *e);
526
ENGINE_CTRL_FUNC_PTR
ENGINE_get_ctrl_function
(
const
ENGINE *e);
527
ENGINE_LOAD_KEY_PTR
ENGINE_get_load_privkey_function
(
const
ENGINE *e);
528
ENGINE_LOAD_KEY_PTR
ENGINE_get_load_pubkey_function
(
const
ENGINE *e);
529
ENGINE_SSL_CLIENT_CERT_PTR
ENGINE_get_ssl_client_cert_function
(
const
ENGINE *e);
530
ENGINE_CIPHERS_PTR
ENGINE_get_ciphers
(
const
ENGINE *e);
531
ENGINE_DIGESTS_PTR
ENGINE_get_digests
(
const
ENGINE *e);
532
ENGINE_PKEY_METHS_PTR
ENGINE_get_pkey_meths
(
const
ENGINE *e);
533
ENGINE_PKEY_ASN1_METHS_PTR
ENGINE_get_pkey_asn1_meths
(
const
ENGINE *e);
534
const
EVP_CIPHER *
ENGINE_get_cipher
(ENGINE *e,
int
nid
);
535
const
EVP_MD *
ENGINE_get_digest
(ENGINE *e,
int
nid
);
536
const
EVP_PKEY_METHOD *
ENGINE_get_pkey_meth
(ENGINE *e,
int
nid
);
537
const
EVP_PKEY_ASN1_METHOD *
ENGINE_get_pkey_asn1_meth
(ENGINE *e,
int
nid
);
538
const
EVP_PKEY_ASN1_METHOD *
ENGINE_get_pkey_asn1_meth_str
(ENGINE *e,
539
const
char
*str,
int
len
);
540
const
EVP_PKEY_ASN1_METHOD *
ENGINE_pkey_asn1_find_str
(ENGINE **pe,
541
const
char
*str,
int
len
);
542
const
ENGINE_CMD_DEFN
*
ENGINE_get_cmd_defns
(
const
ENGINE *e);
543
int
ENGINE_get_flags
(
const
ENGINE *e);
544
545
/* FUNCTIONAL functions. These functions deal with ENGINE structures
546
* that have (or will) be initialised for use. Broadly speaking, the
547
* structural functions are useful for iterating the list of available
548
* engine types, creating new engine types, and other "list" operations.
549
* These functions actually deal with ENGINEs that are to be used. As
550
* such these functions can fail (if applicable) when particular
551
* engines are unavailable - eg. if a hardware accelerator is not
552
* attached or not functioning correctly. Each ENGINE has 2 reference
553
* counts; structural and functional. Every time a functional reference
554
* is obtained or released, a corresponding structural reference is
555
* automatically obtained or released too. */
556
557
/* Initialise a engine type for use (or up its reference count if it's
558
* already in use). This will fail if the engine is not currently
559
* operational and cannot initialise. */
560
int
ENGINE_init
(ENGINE *e);
561
/* Free a functional reference to a engine type. This does not require
562
* a corresponding call to ENGINE_free as it also releases a structural
563
* reference. */
564
int
ENGINE_finish
(ENGINE *e);
565
566
/* The following functions handle keys that are stored in some secondary
567
* location, handled by the engine. The storage may be on a card or
568
* whatever. */
569
EVP_PKEY
*
ENGINE_load_private_key
(ENGINE *e,
const
char
*key_id,
570
UI_METHOD
*ui_method,
void
*callback_data);
571
EVP_PKEY
*
ENGINE_load_public_key
(ENGINE *e,
const
char
*key_id,
572
UI_METHOD
*ui_method,
void
*callback_data);
573
int
ENGINE_load_ssl_client_cert
(ENGINE *e,
SSL
*s,
574
STACK_OF
(
X509_NAME
) *ca_dn,
X509
**pcert,
EVP_PKEY
**ppkey,
575
STACK_OF
(
X509
) **pother,
576
UI_METHOD
*ui_method,
void
*callback_data);
577
578
/* This returns a pointer for the current ENGINE structure that
579
* is (by default) performing any RSA operations. The value returned
580
* is an incremented reference, so it should be free'd (ENGINE_finish)
581
* before it is discarded. */
582
ENGINE *
ENGINE_get_default_RSA
(
void
);
583
/* Same for the other "methods" */
584
ENGINE *
ENGINE_get_default_DSA
(
void
);
585
ENGINE *
ENGINE_get_default_ECDH
(
void
);
586
ENGINE *
ENGINE_get_default_ECDSA
(
void
);
587
ENGINE *
ENGINE_get_default_DH
(
void
);
588
ENGINE *
ENGINE_get_default_RAND
(
void
);
589
/* These functions can be used to get a functional reference to perform
590
* ciphering or digesting corresponding to "nid". */
591
ENGINE *
ENGINE_get_cipher_engine
(
int
nid
);
592
ENGINE *
ENGINE_get_digest_engine
(
int
nid
);
593
ENGINE *
ENGINE_get_pkey_meth_engine
(
int
nid
);
594
ENGINE *
ENGINE_get_pkey_asn1_meth_engine
(
int
nid
);
595
596
/* This sets a new default ENGINE structure for performing RSA
597
* operations. If the result is non-zero (success) then the ENGINE
598
* structure will have had its reference count up'd so the caller
599
* should still free their own reference 'e'. */
600
int
ENGINE_set_default_RSA
(ENGINE *e);
601
int
ENGINE_set_default_string
(ENGINE *e,
const
char
*def_list);
602
/* Same for the other "methods" */
603
int
ENGINE_set_default_DSA
(ENGINE *e);
604
int
ENGINE_set_default_ECDH
(ENGINE *e);
605
int
ENGINE_set_default_ECDSA
(ENGINE *e);
606
int
ENGINE_set_default_DH
(ENGINE *e);
607
int
ENGINE_set_default_RAND
(ENGINE *e);
608
int
ENGINE_set_default_ciphers
(ENGINE *e);
609
int
ENGINE_set_default_digests
(ENGINE *e);
610
int
ENGINE_set_default_pkey_meths
(ENGINE *e);
611
int
ENGINE_set_default_pkey_asn1_meths
(ENGINE *e);
612
613
/* The combination "set" - the flags are bitwise "OR"d from the
614
* ENGINE_METHOD_*** defines above. As with the "ENGINE_register_complete()"
615
* function, this function can result in unnecessary static linkage. If your
616
* application requires only specific functionality, consider using more
617
* selective functions. */
618
int
ENGINE_set_default
(ENGINE *e,
unsigned
int
flags
);
619
620
void
ENGINE_add_conf_module
(
void
);
621
622
/* Deprecated functions ... */
623
/* int ENGINE_clear_defaults(void); */
624
625
/**************************/
626
/* DYNAMIC ENGINE SUPPORT */
627
/**************************/
628
629
/* Binary/behaviour compatibility levels */
630
#define OSSL_DYNAMIC_VERSION (unsigned long)0x00020000
631
/* Binary versions older than this are too old for us (whether we're a loader or
632
* a loadee) */
633
#define OSSL_DYNAMIC_OLDEST (unsigned long)0x00020000
634
635
/* When compiling an ENGINE entirely as an external shared library, loadable by
636
* the "dynamic" ENGINE, these types are needed. The 'dynamic_fns' structure
637
* type provides the calling application's (or library's) error functionality
638
* and memory management function pointers to the loaded library. These should
639
* be used/set in the loaded library code so that the loading application's
640
* 'state' will be used/changed in all operations. The 'static_state' pointer
641
* allows the loaded library to know if it shares the same static data as the
642
* calling application (or library), and thus whether these callbacks need to be
643
* set or not. */
644
typedef
void
*(*dyn_MEM_malloc_cb)(size_t);
645
typedef
void
*(*dyn_MEM_realloc_cb)(
void
*, size_t);
646
typedef
void
(*
dyn_MEM_free_cb
)(
void
*);
647
typedef
struct
st_dynamic_MEM_fns
{
648
dyn_MEM_malloc_cb
malloc_cb
;
649
dyn_MEM_realloc_cb
realloc_cb
;
650
dyn_MEM_free_cb
free_cb
;
651
}
dynamic_MEM_fns
;
652
/* FIXME: Perhaps the memory and locking code (crypto.h) should declare and use
653
* these types so we (and any other dependant code) can simplify a bit?? */
654
typedef
void
(*
dyn_lock_locking_cb
)(int,int,
const
char
*,int);
655
typedef
int (*
dyn_lock_add_lock_cb
)(
int
*,int,int,
const
char
*,int);
656
typedef
struct
CRYPTO_dynlock_value *(*dyn_dynlock_create_cb)(
657
const
char
*,int);
658
typedef
void
(*
dyn_dynlock_lock_cb
)(int,
struct
CRYPTO_dynlock_value *,
659
const
char
*,int);
660
typedef
void
(*
dyn_dynlock_destroy_cb
)(
struct
CRYPTO_dynlock_value *,
661
const
char
*,int);
662
typedef
struct
st_dynamic_LOCK_fns
{
663
dyn_lock_locking_cb
lock_locking_cb
;
664
dyn_lock_add_lock_cb
lock_add_lock_cb
;
665
dyn_dynlock_create_cb
dynlock_create_cb
;
666
dyn_dynlock_lock_cb
dynlock_lock_cb
;
667
dyn_dynlock_destroy_cb
dynlock_destroy_cb
;
668
}
dynamic_LOCK_fns
;
669
/* The top-level structure */
670
typedef
struct
st_dynamic_fns
{
671
void
*
static_state
;
672
const
ERR_FNS
*
err_fns
;
673
const
CRYPTO_EX_DATA_IMPL
*
ex_data_fns
;
674
dynamic_MEM_fns
mem_fns
;
675
dynamic_LOCK_fns
lock_fns
;
676
}
dynamic_fns
;
677
678
/* The version checking function should be of this prototype. NB: The
679
* ossl_version value passed in is the OSSL_DYNAMIC_VERSION of the loading code.
680
* If this function returns zero, it indicates a (potential) version
681
* incompatibility and the loaded library doesn't believe it can proceed.
682
* Otherwise, the returned value is the (latest) version supported by the
683
* loading library. The loader may still decide that the loaded code's version
684
* is unsatisfactory and could veto the load. The function is expected to
685
* be implemented with the symbol name "v_check", and a default implementation
686
* can be fully instantiated with IMPLEMENT_DYNAMIC_CHECK_FN(). */
687
typedef
unsigned
long (*
dynamic_v_check_fn
)(
unsigned
long
ossl_version);
688
#define IMPLEMENT_DYNAMIC_CHECK_FN() \
689
OPENSSL_EXPORT unsigned long v_check(unsigned long v); \
690
OPENSSL_EXPORT unsigned long v_check(unsigned long v) { \
691
if(v >= OSSL_DYNAMIC_OLDEST) return OSSL_DYNAMIC_VERSION; \
692
return 0; }
693
694
/* This function is passed the ENGINE structure to initialise with its own
695
* function and command settings. It should not adjust the structural or
696
* functional reference counts. If this function returns zero, (a) the load will
697
* be aborted, (b) the previous ENGINE state will be memcpy'd back onto the
698
* structure, and (c) the shared library will be unloaded. So implementations
699
* should do their own internal cleanup in failure circumstances otherwise they
700
* could leak. The 'id' parameter, if non-NULL, represents the ENGINE id that
701
* the loader is looking for. If this is NULL, the shared library can choose to
702
* return failure or to initialise a 'default' ENGINE. If non-NULL, the shared
703
* library must initialise only an ENGINE matching the passed 'id'. The function
704
* is expected to be implemented with the symbol name "bind_engine". A standard
705
* implementation can be instantiated with IMPLEMENT_DYNAMIC_BIND_FN(fn) where
706
* the parameter 'fn' is a callback function that populates the ENGINE structure
707
* and returns an int value (zero for failure). 'fn' should have prototype;
708
* [static] int fn(ENGINE *e, const char *id); */
709
typedef
int (*
dynamic_bind_engine
)(ENGINE *
e
,
const
char
*id,
710
const
dynamic_fns
*fns);
711
#define IMPLEMENT_DYNAMIC_BIND_FN(fn) \
712
OPENSSL_EXPORT \
713
int bind_engine(ENGINE *e, const char *id, const dynamic_fns *fns); \
714
OPENSSL_EXPORT \
715
int bind_engine(ENGINE *e, const char *id, const dynamic_fns *fns) { \
716
if(ENGINE_get_static_state() == fns->static_state) goto skip_cbs; \
717
if(!CRYPTO_set_mem_functions(fns->mem_fns.malloc_cb, \
718
fns->mem_fns.realloc_cb, fns->mem_fns.free_cb)) \
719
return 0; \
720
CRYPTO_set_locking_callback(fns->lock_fns.lock_locking_cb); \
721
CRYPTO_set_add_lock_callback(fns->lock_fns.lock_add_lock_cb); \
722
CRYPTO_set_dynlock_create_callback(fns->lock_fns.dynlock_create_cb); \
723
CRYPTO_set_dynlock_lock_callback(fns->lock_fns.dynlock_lock_cb); \
724
CRYPTO_set_dynlock_destroy_callback(fns->lock_fns.dynlock_destroy_cb); \
725
if(!CRYPTO_set_ex_data_implementation(fns->ex_data_fns)) \
726
return 0; \
727
if(!ERR_set_implementation(fns->err_fns)) return 0; \
728
skip_cbs: \
729
if(!fn(e,id)) return 0; \
730
return 1; }
731
732
/* If the loading application (or library) and the loaded ENGINE library share
733
* the same static data (eg. they're both dynamically linked to the same
734
* libcrypto.so) we need a way to avoid trying to set system callbacks - this
735
* would fail, and for the same reason that it's unnecessary to try. If the
736
* loaded ENGINE has (or gets from through the loader) its own copy of the
737
* libcrypto static data, we will need to set the callbacks. The easiest way to
738
* detect this is to have a function that returns a pointer to some static data
739
* and let the loading application and loaded ENGINE compare their respective
740
* values. */
741
void
*
ENGINE_get_static_state
(
void
);
742
743
#if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(HAVE_CRYPTODEV)
744
void
ENGINE_setup_bsd_cryptodev(
void
);
745
#endif
746
747
/* BEGIN ERROR CODES */
748
/* The following lines are auto generated by the script mkerr.pl. Any changes
749
* made after this point may be overwritten when the script is next run.
750
*/
751
void
ERR_load_ENGINE_strings
(
void
);
752
753
/* Error codes for the ENGINE functions. */
754
755
/* Function codes. */
756
#define ENGINE_F_DYNAMIC_CTRL 180
757
#define ENGINE_F_DYNAMIC_GET_DATA_CTX 181
758
#define ENGINE_F_DYNAMIC_LOAD 182
759
#define ENGINE_F_DYNAMIC_SET_DATA_CTX 183
760
#define ENGINE_F_ENGINE_ADD 105
761
#define ENGINE_F_ENGINE_BY_ID 106
762
#define ENGINE_F_ENGINE_CMD_IS_EXECUTABLE 170
763
#define ENGINE_F_ENGINE_CTRL 142
764
#define ENGINE_F_ENGINE_CTRL_CMD 178
765
#define ENGINE_F_ENGINE_CTRL_CMD_STRING 171
766
#define ENGINE_F_ENGINE_FINISH 107
767
#define ENGINE_F_ENGINE_FREE_UTIL 108
768
#define ENGINE_F_ENGINE_GET_CIPHER 185
769
#define ENGINE_F_ENGINE_GET_DEFAULT_TYPE 177
770
#define ENGINE_F_ENGINE_GET_DIGEST 186
771
#define ENGINE_F_ENGINE_GET_NEXT 115
772
#define ENGINE_F_ENGINE_GET_PKEY_ASN1_METH 193
773
#define ENGINE_F_ENGINE_GET_PKEY_METH 192
774
#define ENGINE_F_ENGINE_GET_PREV 116
775
#define ENGINE_F_ENGINE_INIT 119
776
#define ENGINE_F_ENGINE_LIST_ADD 120
777
#define ENGINE_F_ENGINE_LIST_REMOVE 121
778
#define ENGINE_F_ENGINE_LOAD_PRIVATE_KEY 150
779
#define ENGINE_F_ENGINE_LOAD_PUBLIC_KEY 151
780
#define ENGINE_F_ENGINE_LOAD_SSL_CLIENT_CERT 194
781
#define ENGINE_F_ENGINE_NEW 122
782
#define ENGINE_F_ENGINE_REMOVE 123
783
#define ENGINE_F_ENGINE_SET_DEFAULT_STRING 189
784
#define ENGINE_F_ENGINE_SET_DEFAULT_TYPE 126
785
#define ENGINE_F_ENGINE_SET_ID 129
786
#define ENGINE_F_ENGINE_SET_NAME 130
787
#define ENGINE_F_ENGINE_TABLE_REGISTER 184
788
#define ENGINE_F_ENGINE_UNLOAD_KEY 152
789
#define ENGINE_F_ENGINE_UNLOCKED_FINISH 191
790
#define ENGINE_F_ENGINE_UP_REF 190
791
#define ENGINE_F_INT_CTRL_HELPER 172
792
#define ENGINE_F_INT_ENGINE_CONFIGURE 188
793
#define ENGINE_F_INT_ENGINE_MODULE_INIT 187
794
#define ENGINE_F_LOG_MESSAGE 141
795
796
/* Reason codes. */
797
#define ENGINE_R_ALREADY_LOADED 100
798
#define ENGINE_R_ARGUMENT_IS_NOT_A_NUMBER 133
799
#define ENGINE_R_CMD_NOT_EXECUTABLE 134
800
#define ENGINE_R_COMMAND_TAKES_INPUT 135
801
#define ENGINE_R_COMMAND_TAKES_NO_INPUT 136
802
#define ENGINE_R_CONFLICTING_ENGINE_ID 103
803
#define ENGINE_R_CTRL_COMMAND_NOT_IMPLEMENTED 119
804
#define ENGINE_R_DH_NOT_IMPLEMENTED 139
805
#define ENGINE_R_DSA_NOT_IMPLEMENTED 140
806
#define ENGINE_R_DSO_FAILURE 104
807
#define ENGINE_R_DSO_NOT_FOUND 132
808
#define ENGINE_R_ENGINES_SECTION_ERROR 148
809
#define ENGINE_R_ENGINE_CONFIGURATION_ERROR 102
810
#define ENGINE_R_ENGINE_IS_NOT_IN_LIST 105
811
#define ENGINE_R_ENGINE_SECTION_ERROR 149
812
#define ENGINE_R_FAILED_LOADING_PRIVATE_KEY 128
813
#define ENGINE_R_FAILED_LOADING_PUBLIC_KEY 129
814
#define ENGINE_R_FINISH_FAILED 106
815
#define ENGINE_R_GET_HANDLE_FAILED 107
816
#define ENGINE_R_ID_OR_NAME_MISSING 108
817
#define ENGINE_R_INIT_FAILED 109
818
#define ENGINE_R_INTERNAL_LIST_ERROR 110
819
#define ENGINE_R_INVALID_ARGUMENT 143
820
#define ENGINE_R_INVALID_CMD_NAME 137
821
#define ENGINE_R_INVALID_CMD_NUMBER 138
822
#define ENGINE_R_INVALID_INIT_VALUE 151
823
#define ENGINE_R_INVALID_STRING 150
824
#define ENGINE_R_NOT_INITIALISED 117
825
#define ENGINE_R_NOT_LOADED 112
826
#define ENGINE_R_NO_CONTROL_FUNCTION 120
827
#define ENGINE_R_NO_INDEX 144
828
#define ENGINE_R_NO_LOAD_FUNCTION 125
829
#define ENGINE_R_NO_REFERENCE 130
830
#define ENGINE_R_NO_SUCH_ENGINE 116
831
#define ENGINE_R_NO_UNLOAD_FUNCTION 126
832
#define ENGINE_R_PROVIDE_PARAMETERS 113
833
#define ENGINE_R_RSA_NOT_IMPLEMENTED 141
834
#define ENGINE_R_UNIMPLEMENTED_CIPHER 146
835
#define ENGINE_R_UNIMPLEMENTED_DIGEST 147
836
#define ENGINE_R_UNIMPLEMENTED_PUBLIC_KEY_METHOD 101
837
#define ENGINE_R_VERSION_INCOMPATIBILITY 145
838
839
#ifdef __cplusplus
840
}
841
#endif
842
#endif
Generated on Thu Jan 10 2013 09:53:36 for OpenSSL by
1.8.2