summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2019-08-19 08:55:53 +0200
committerRichard Levitte <levitte@openssl.org>2019-09-26 22:41:47 +0200
commit318e074e1f55c556d0ab4f9e3fbdca7c9b284847 (patch)
tree81f256ac53a6438e82cf54535e2cafacd00aab1b
parent03f30c552a07eb7686a9fc099b06653548afa941 (diff)
When building of modules is disabled, build the legacy provider into libcrypto
This makes the legacy provider available regardless of building conditions. Reviewed-by: Matt Caswell <matt@openssl.org> (Merged from https://github.com/openssl/openssl/pull/9637)
-rwxr-xr-xConfigure2
-rw-r--r--crypto/provider_predefined.c7
-rw-r--r--providers/build.info17
-rw-r--r--providers/legacy/build.info8
-rw-r--r--providers/legacy/digests/build.info16
-rw-r--r--providers/legacy/legacyprov.c5
6 files changed, 40 insertions, 15 deletions
diff --git a/Configure b/Configure
index 7e6091e633..3a29d90329 100755
--- a/Configure
+++ b/Configure
@@ -518,7 +518,7 @@ my @disable_cascades = (
# or modules.
"pic" => [ "shared", "module" ],
- "module" => [ "fips", "legacy" ],
+ "module" => [ "fips" ],
"engine" => [ grep /eng$/, @disablables ],
"hw" => [ "padlockeng" ],
diff --git a/crypto/provider_predefined.c b/crypto/provider_predefined.c
index d1423b1c6c..e65f461008 100644
--- a/crypto/provider_predefined.c
+++ b/crypto/provider_predefined.c
@@ -12,12 +12,17 @@
OSSL_provider_init_fn ossl_default_provider_init;
OSSL_provider_init_fn fips_intern_provider_init;
-
+#ifdef STATIC_LEGACY
+OSSL_provider_init_fn ossl_legacy_provider_init;
+#endif
const struct predefined_providers_st predefined_providers[] = {
#ifdef FIPS_MODE
{ "fips", fips_intern_provider_init, 1 },
#else
{ "default", ossl_default_provider_init, 1 },
+# ifdef STATIC_LEGACY
+ { "legacy", ossl_legacy_provider_init, 0 },
+# endif
#endif
{ NULL, NULL, 0 }
};
diff --git a/providers/build.info b/providers/build.info
index 192a5defcc..9642a3c153 100644
--- a/providers/build.info
+++ b/providers/build.info
@@ -15,11 +15,16 @@ ENDIF
IF[{- !$disabled{legacy} -}]
SUBDIRS=legacy
- MODULES=legacy
- IF[{- defined $target{shared_defflag} -}]
- SOURCE[legacy]=legacy.ld
- GENERATE[legacy.ld]=../util/providers.num
+ IF[{- $disabled{module} -}]
+ LIBS=../libcrypto
+ DEFINE[../libcrypto]=STATIC_LEGACY
+ ELSE
+ MODULES=legacy
+ IF[{- defined $target{shared_defflag} -}]
+ SOURCE[legacy]=legacy.ld
+ GENERATE[legacy.ld]=../util/providers.num
+ ENDIF
+ DEPEND[legacy]=../libcrypto
+ INCLUDE[legacy]=.. ../include ../crypto/include common/include
ENDIF
- INCLUDE[legacy]=.. ../include ../crypto/include common/include
- DEPEND[legacy]=../libcrypto
ENDIF
diff --git a/providers/legacy/build.info b/providers/legacy/build.info
index df7e9ac750..713c48dbe6 100644
--- a/providers/legacy/build.info
+++ b/providers/legacy/build.info
@@ -1,4 +1,8 @@
SUBDIRS=digests
+IF[{- $disabled{module} -}]
+ $GOAL=../../libcrypto
+ELSE
+ $GOAL=../legacy
+ENDIF
-SOURCE[../legacy]=\
- legacyprov.c
+SOURCE[$GOAL]=legacyprov.c
diff --git a/providers/legacy/digests/build.info b/providers/legacy/digests/build.info
index 538afd4c07..2c85970dde 100644
--- a/providers/legacy/digests/build.info
+++ b/providers/legacy/digests/build.info
@@ -1,24 +1,30 @@
+IF[{- $disabled{module} -}]
+ $GOAL=../../../libcrypto
+ELSE
+ $GOAL=../../legacy
+ENDIF
+
IF[{- !$disabled{md2} -}]
- SOURCE[../../legacy]=\
+ SOURCE[$GOAL]=\
md2_prov.c
ENDIF
IF[{- !$disabled{md4} -}]
- SOURCE[../../legacy]=\
+ SOURCE[$GOAL]=\
md4_prov.c
ENDIF
IF[{- !$disabled{mdc2} -}]
- SOURCE[../../legacy]=\
+ SOURCE[$GOAL]=\
mdc2_prov.c
ENDIF
IF[{- !$disabled{whirlpool} -}]
- SOURCE[../../legacy]=\
+ SOURCE[$GOAL]=\
wp_prov.c
ENDIF
IF[{- !$disabled{rmd160} -}]
- SOURCE[../../legacy]=\
+ SOURCE[$GOAL]=\
ripemd_prov.c
ENDIF \ No newline at end of file
diff --git a/providers/legacy/legacyprov.c b/providers/legacy/legacyprov.c
index 9b2df1e5e7..89587d632c 100644
--- a/providers/legacy/legacyprov.c
+++ b/providers/legacy/legacyprov.c
@@ -15,6 +15,11 @@
#include <openssl/params.h>
#include "internal/provider_algs.h"
+#ifdef STATIC_LEGACY
+OSSL_provider_init_fn ossl_legacy_provider_init;
+# define OSSL_provider_init ossl_legacy_provider_init
+#endif
+
/* Functions provided by the core */
static OSSL_core_gettable_params_fn *c_gettable_params = NULL;
static OSSL_core_get_params_fn *c_get_params = NULL;