Commit 2dc5383a authored by Geoff Thorpe's avatar Geoff Thorpe
Browse files

This changes the existing hardware ENGINE implementations to dynamically

declare their own error strings so that they can be more easily compiled as
external shared-libraries if desired. Also, each implementation has been
given canonical "dynamic" support at the base of each file and is only
built if the ENGINE_DYNAMIC_SUPPORT symbol is defined.

Also, use "void" prototypes rather than empty prototypes in engine_int.h.

This does not yet;
  (i) remove error strings when unloading,
 (ii) remove the redundant ENGINE_R_*** codes (though ENGINE_F_*** codes
      have gone), or
(iii) provide any instructions on how to build shared-library ENGINEs or
      use them.

All are on their way.
parent 9391f977
Loading
Loading
Loading
Loading
+0 −39
Original line number Diff line number Diff line
@@ -561,9 +561,6 @@ typedef int (*dynamic_bind_engine)(ENGINE *e, const char *id,
		if(!fn(e,id)) return 0; \
		return 1; }

/* Obligatory error function. */
void ERR_load_ENGINE_strings(void);

/* BEGIN ERROR CODES */
/* The following lines are auto generated by the script mkerr.pl. Any changes
 * made after this point may be overwritten when the script is next run.
@@ -573,19 +570,6 @@ void ERR_load_ENGINE_strings(void);
/* Error codes for the ENGINE functions. */

/* Function codes. */
#define ENGINE_F_ATALLA_CTRL				 173
#define ENGINE_F_ATALLA_FINISH				 159
#define ENGINE_F_ATALLA_INIT				 160
#define ENGINE_F_ATALLA_MOD_EXP				 161
#define ENGINE_F_ATALLA_RSA_MOD_EXP			 162
#define ENGINE_F_CSWIFT_CTRL				 174
#define ENGINE_F_CSWIFT_DSA_SIGN			 133
#define ENGINE_F_CSWIFT_DSA_VERIFY			 134
#define ENGINE_F_CSWIFT_FINISH				 100
#define ENGINE_F_CSWIFT_INIT				 101
#define ENGINE_F_CSWIFT_MOD_EXP				 102
#define ENGINE_F_CSWIFT_MOD_EXP_CRT			 103
#define ENGINE_F_CSWIFT_RSA_MOD_EXP			 104
#define ENGINE_F_DYNAMIC_CTRL				 180
#define ENGINE_F_DYNAMIC_GET_DATA_CTX			 181
#define ENGINE_F_DYNAMIC_LOAD				 182
@@ -611,32 +595,9 @@ void ERR_load_ENGINE_strings(void);
#define ENGINE_F_ENGINE_SET_ID				 129
#define ENGINE_F_ENGINE_SET_NAME			 130
#define ENGINE_F_ENGINE_UNLOAD_KEY			 152
#define ENGINE_F_HWCRHK_CTRL				 143
#define ENGINE_F_HWCRHK_FINISH				 135
#define ENGINE_F_HWCRHK_GET_PASS			 155
#define ENGINE_F_HWCRHK_INIT				 136
#define ENGINE_F_HWCRHK_INSERT_CARD			 179
#define ENGINE_F_HWCRHK_LOAD_PRIVKEY			 153
#define ENGINE_F_HWCRHK_LOAD_PUBKEY			 154
#define ENGINE_F_HWCRHK_MOD_EXP				 137
#define ENGINE_F_HWCRHK_MOD_EXP_CRT			 138
#define ENGINE_F_HWCRHK_RAND_BYTES			 139
#define ENGINE_F_HWCRHK_RSA_MOD_EXP			 140
#define ENGINE_F_INT_CTRL_HELPER			 172
#define ENGINE_F_LOG_MESSAGE				 141
#define ENGINE_F_NURON_CTRL				 175
#define ENGINE_F_NURON_FINISH				 157
#define ENGINE_F_NURON_INIT				 156
#define ENGINE_F_NURON_MOD_EXP				 158
#define ENGINE_F_SET_DATA_CTX				 183
#define ENGINE_F_UBSEC_CTRL				 176
#define ENGINE_F_UBSEC_DSA_SIGN				 163
#define ENGINE_F_UBSEC_DSA_VERIFY			 164
#define ENGINE_F_UBSEC_FINISH				 165
#define ENGINE_F_UBSEC_INIT				 166
#define ENGINE_F_UBSEC_MOD_EXP				 167
#define ENGINE_F_UBSEC_RSA_MOD_EXP			 168
#define ENGINE_F_UBSEC_RSA_MOD_EXP_CRT			 169

/* Reason codes. */
#define ENGINE_R_ALREADY_LOADED				 100
+1 −1
Original line number Diff line number Diff line
@@ -238,7 +238,7 @@ static dynamic_data_ctx *dynamic_get_data_ctx(ENGINE *e)

/* As this is only ever called once, there's no need for locking
 * (indeed - the lock will already be held by our caller!!!) */
ENGINE *ENGINE_dynamic()
ENGINE *ENGINE_dynamic(void)
	{
	ENGINE *ret = ENGINE_new();
	if(!ret)
+0 −36
Original line number Diff line number Diff line
@@ -66,19 +66,6 @@
#ifndef OPENSSL_NO_ERR
static ERR_STRING_DATA ENGINE_str_functs[]=
	{
{ERR_PACK(0,ENGINE_F_ATALLA_CTRL,0),	"ATALLA_CTRL"},
{ERR_PACK(0,ENGINE_F_ATALLA_FINISH,0),	"ATALLA_FINISH"},
{ERR_PACK(0,ENGINE_F_ATALLA_INIT,0),	"ATALLA_INIT"},
{ERR_PACK(0,ENGINE_F_ATALLA_MOD_EXP,0),	"ATALLA_MOD_EXP"},
{ERR_PACK(0,ENGINE_F_ATALLA_RSA_MOD_EXP,0),	"ATALLA_RSA_MOD_EXP"},
{ERR_PACK(0,ENGINE_F_CSWIFT_CTRL,0),	"CSWIFT_CTRL"},
{ERR_PACK(0,ENGINE_F_CSWIFT_DSA_SIGN,0),	"CSWIFT_DSA_SIGN"},
{ERR_PACK(0,ENGINE_F_CSWIFT_DSA_VERIFY,0),	"CSWIFT_DSA_VERIFY"},
{ERR_PACK(0,ENGINE_F_CSWIFT_FINISH,0),	"CSWIFT_FINISH"},
{ERR_PACK(0,ENGINE_F_CSWIFT_INIT,0),	"CSWIFT_INIT"},
{ERR_PACK(0,ENGINE_F_CSWIFT_MOD_EXP,0),	"CSWIFT_MOD_EXP"},
{ERR_PACK(0,ENGINE_F_CSWIFT_MOD_EXP_CRT,0),	"CSWIFT_MOD_EXP_CRT"},
{ERR_PACK(0,ENGINE_F_CSWIFT_RSA_MOD_EXP,0),	"CSWIFT_RSA_MOD_EXP"},
{ERR_PACK(0,ENGINE_F_DYNAMIC_CTRL,0),	"DYNAMIC_CTRL"},
{ERR_PACK(0,ENGINE_F_DYNAMIC_GET_DATA_CTX,0),	"DYNAMIC_GET_DATA_CTX"},
{ERR_PACK(0,ENGINE_F_DYNAMIC_LOAD,0),	"DYNAMIC_LOAD"},
@@ -104,32 +91,9 @@ static ERR_STRING_DATA ENGINE_str_functs[]=
{ERR_PACK(0,ENGINE_F_ENGINE_SET_ID,0),	"ENGINE_set_id"},
{ERR_PACK(0,ENGINE_F_ENGINE_SET_NAME,0),	"ENGINE_set_name"},
{ERR_PACK(0,ENGINE_F_ENGINE_UNLOAD_KEY,0),	"ENGINE_UNLOAD_KEY"},
{ERR_PACK(0,ENGINE_F_HWCRHK_CTRL,0),	"HWCRHK_CTRL"},
{ERR_PACK(0,ENGINE_F_HWCRHK_FINISH,0),	"HWCRHK_FINISH"},
{ERR_PACK(0,ENGINE_F_HWCRHK_GET_PASS,0),	"HWCRHK_GET_PASS"},
{ERR_PACK(0,ENGINE_F_HWCRHK_INIT,0),	"HWCRHK_INIT"},
{ERR_PACK(0,ENGINE_F_HWCRHK_INSERT_CARD,0),	"HWCRHK_INSERT_CARD"},
{ERR_PACK(0,ENGINE_F_HWCRHK_LOAD_PRIVKEY,0),	"HWCRHK_LOAD_PRIVKEY"},
{ERR_PACK(0,ENGINE_F_HWCRHK_LOAD_PUBKEY,0),	"HWCRHK_LOAD_PUBKEY"},
{ERR_PACK(0,ENGINE_F_HWCRHK_MOD_EXP,0),	"HWCRHK_MOD_EXP"},
{ERR_PACK(0,ENGINE_F_HWCRHK_MOD_EXP_CRT,0),	"HWCRHK_MOD_EXP_CRT"},
{ERR_PACK(0,ENGINE_F_HWCRHK_RAND_BYTES,0),	"HWCRHK_RAND_BYTES"},
{ERR_PACK(0,ENGINE_F_HWCRHK_RSA_MOD_EXP,0),	"HWCRHK_RSA_MOD_EXP"},
{ERR_PACK(0,ENGINE_F_INT_CTRL_HELPER,0),	"INT_CTRL_HELPER"},
{ERR_PACK(0,ENGINE_F_LOG_MESSAGE,0),	"LOG_MESSAGE"},
{ERR_PACK(0,ENGINE_F_NURON_CTRL,0),	"NURON_CTRL"},
{ERR_PACK(0,ENGINE_F_NURON_FINISH,0),	"NURON_FINISH"},
{ERR_PACK(0,ENGINE_F_NURON_INIT,0),	"NURON_INIT"},
{ERR_PACK(0,ENGINE_F_NURON_MOD_EXP,0),	"NURON_MOD_EXP"},
{ERR_PACK(0,ENGINE_F_SET_DATA_CTX,0),	"SET_DATA_CTX"},
{ERR_PACK(0,ENGINE_F_UBSEC_CTRL,0),	"UBSEC_CTRL"},
{ERR_PACK(0,ENGINE_F_UBSEC_DSA_SIGN,0),	"UBSEC_DSA_SIGN"},
{ERR_PACK(0,ENGINE_F_UBSEC_DSA_VERIFY,0),	"UBSEC_DSA_VERIFY"},
{ERR_PACK(0,ENGINE_F_UBSEC_FINISH,0),	"UBSEC_FINISH"},
{ERR_PACK(0,ENGINE_F_UBSEC_INIT,0),	"UBSEC_INIT"},
{ERR_PACK(0,ENGINE_F_UBSEC_MOD_EXP,0),	"UBSEC_MOD_EXP"},
{ERR_PACK(0,ENGINE_F_UBSEC_RSA_MOD_EXP,0),	"UBSEC_RSA_MOD_EXP"},
{ERR_PACK(0,ENGINE_F_UBSEC_RSA_MOD_EXP_CRT,0),	"UBSEC_RSA_MOD_EXP_CRT"},
{0,NULL}
	};

+7 −7
Original line number Diff line number Diff line
@@ -141,11 +141,11 @@ struct engine_st
 * do not return references - they are purely for bootstrapping). */

/* Returns a structure of software only methods (the default). */
ENGINE *ENGINE_openssl();
ENGINE *ENGINE_openssl(void);

/* Returns the "dynamic" ENGINE for loading entire ENGINE implementations from
 * shared libraries. */
ENGINE *ENGINE_dynamic();
ENGINE *ENGINE_dynamic(void);

#ifndef OPENSSL_NO_HW

@@ -153,24 +153,24 @@ ENGINE *ENGINE_dynamic();
/* Returns a structure of cswift methods ... NB: This can exist and be
 * "used" even on non-cswift systems because the "init" will fail if the
 * card/library are not found. */
ENGINE *ENGINE_cswift();
ENGINE *ENGINE_cswift(void);
#endif /* !OPENSSL_NO_HW_CSWIFT */

#ifndef OPENSSL_NO_HW_NCIPHER
ENGINE *ENGINE_ncipher();
ENGINE *ENGINE_ncipher(void);
#endif /* !OPENSSL_NO_HW_NCIPHER */

#ifndef OPENSSL_NO_HW_ATALLA
/* Returns a structure of atalla methods. */
ENGINE *ENGINE_atalla();
ENGINE *ENGINE_atalla(void);
#endif /* !OPENSSL_NO_HW_ATALLA */

#ifndef OPENSSL_NO_HW_NURON
ENGINE *ENGINE_nuron();
ENGINE *ENGINE_nuron(void);
#endif /* !OPENSSL_NO_HW_NURON */

#ifndef OPENSSL_NO_HW_UBSEC
ENGINE *ENGINE_ubsec();
ENGINE *ENGINE_ubsec(void);
#endif /* !OPENSSL_NO_HW_UBSEC */

#ifdef OPENSSL_OPENBSD_DEV_CRYPTO
+1 −1
Original line number Diff line number Diff line
@@ -76,7 +76,7 @@ static const char *engine_openssl_name = "Software default engine support";

/* As this is only ever called once, there's no need for locking
 * (indeed - the lock will already be held by our caller!!!) */
ENGINE *ENGINE_openssl()
ENGINE *ENGINE_openssl(void)
	{
	ENGINE *ret = ENGINE_new();
	if(!ret)
Loading