]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Use the special shims file for DH shims
authorAram Sargsyan <aram@isc.org>
Mon, 4 Oct 2021 16:51:02 +0000 (16:51 +0000)
committerAram Sargsyan <aram@isc.org>
Thu, 28 Oct 2021 07:39:37 +0000 (07:39 +0000)
Since we now have a separate `openssl_shim.{c,h}` files in the `dns`
library, we can place the exisintg shims there.

lib/dns/openssl_shim.c
lib/dns/openssl_shim.h
lib/dns/openssldh_link.c

index 43264b8383e0d456eac805cc629f3086735287d1..1bbc10b89e639a82f84b2af0abcdf2cf2e0bf4bb 100644 (file)
@@ -162,6 +162,80 @@ ECDSA_SIG_set0(ECDSA_SIG *sig, BIGNUM *r, BIGNUM *s) {
 }
 #endif /* !HAVE_ECDSA_SIG_GET0 */
 
+#if !HAVE_DH_GET0_KEY && OPENSSL_VERSION_NUMBER < 0x30000000L
+/*
+ * DH_get0_key, DH_set0_key, DH_get0_pqg and DH_set0_pqg
+ * are from OpenSSL 1.1.0.
+ */
+void
+DH_get0_key(const DH *dh, const BIGNUM **pub_key, const BIGNUM **priv_key) {
+       if (pub_key != NULL) {
+               *pub_key = dh->pub_key;
+       }
+       if (priv_key != NULL) {
+               *priv_key = dh->priv_key;
+       }
+}
+
+int
+DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key) {
+       if (pub_key != NULL) {
+               BN_free(dh->pub_key);
+               dh->pub_key = pub_key;
+       }
+
+       if (priv_key != NULL) {
+               BN_free(dh->priv_key);
+               dh->priv_key = priv_key;
+       }
+
+       return (1);
+}
+
+void
+DH_get0_pqg(const DH *dh, const BIGNUM **p, const BIGNUM **q,
+           const BIGNUM **g) {
+       if (p != NULL) {
+               *p = dh->p;
+       }
+       if (q != NULL) {
+               *q = dh->q;
+       }
+       if (g != NULL) {
+               *g = dh->g;
+       }
+}
+
+int
+DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g) {
+       /* If the fields p and g in d are NULL, the corresponding input
+        * parameters MUST be non-NULL.  q may remain NULL.
+        */
+       if ((dh->p == NULL && p == NULL) || (dh->g == NULL && g == NULL)) {
+               return (0);
+       }
+
+       if (p != NULL) {
+               BN_free(dh->p);
+               dh->p = p;
+       }
+       if (q != NULL) {
+               BN_free(dh->q);
+               dh->q = q;
+       }
+       if (g != NULL) {
+               BN_free(dh->g);
+               dh->g = g;
+       }
+
+       if (q != NULL) {
+               dh->length = BN_num_bits(q);
+       }
+
+       return (1);
+}
+#endif /* !HAVE_DH_GET0_KEY && OPENSSL_VERSION_NUMBER < 0x30000000L */
+
 #if !HAVE_ERR_GET_ERROR_ALL
 static const char err_empty_string = '\0';
 
index e386cf858aac2a6be39aba78b2f8d367b7d6bc20..2e87ac66ba6f181075852cf7c979fa12015f8432 100644 (file)
@@ -12,6 +12,7 @@
 #pragma once
 
 #include <openssl/bn.h>
+#include <openssl/dh.h>
 #include <openssl/ecdsa.h>
 #include <openssl/err.h>
 #include <openssl/opensslv.h>
@@ -57,6 +58,22 @@ int
 ECDSA_SIG_set0(ECDSA_SIG *sig, BIGNUM *r, BIGNUM *s);
 #endif /* !HAVE_ECDSA_SIG_GET0 */
 
+#if !HAVE_DH_GET0_KEY
+void
+DH_get0_key(const DH *dh, const BIGNUM **pub_key, const BIGNUM **priv_key);
+
+int
+DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key);
+
+void
+DH_get0_pqg(const DH *dh, const BIGNUM **p, const BIGNUM **q, const BIGNUM **g);
+
+int
+DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g);
+
+#define DH_clear_flags(d, f) ((d)->flags &= ~(f))
+#endif /* !HAVE_DH_GET0_KEY */
+
 #if !HAVE_ERR_GET_ERROR_ALL
 unsigned long
 ERR_get_error_all(const char **file, int *line, const char **func,
index 5bee2fc6f16bcac98db174d0f668342f88e36723..5d2f8b22d79a3d252a2052327daa4a132e9be57b 100644 (file)
@@ -40,6 +40,7 @@
 #include "dst_internal.h"
 #include "dst_openssl.h"
 #include "dst_parse.h"
+#include "openssl_shim.h"
 
 #define PRIME2 "02"
 
 
 static BIGNUM *bn2 = NULL, *bn768 = NULL, *bn1024 = NULL, *bn1536 = NULL;
 
-#if !HAVE_DH_GET0_KEY
-/*
- * DH_get0_key, DH_set0_key, DH_get0_pqg and DH_set0_pqg
- * are from OpenSSL 1.1.0.
- */
-static void
-DH_get0_key(const DH *dh, const BIGNUM **pub_key, const BIGNUM **priv_key) {
-       if (pub_key != NULL) {
-               *pub_key = dh->pub_key;
-       }
-       if (priv_key != NULL) {
-               *priv_key = dh->priv_key;
-       }
-}
-
-static int
-DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key) {
-       if (pub_key != NULL) {
-               BN_free(dh->pub_key);
-               dh->pub_key = pub_key;
-       }
-
-       if (priv_key != NULL) {
-               BN_free(dh->priv_key);
-               dh->priv_key = priv_key;
-       }
-
-       return (1);
-}
-
-static void
-DH_get0_pqg(const DH *dh, const BIGNUM **p, const BIGNUM **q,
-           const BIGNUM **g) {
-       if (p != NULL) {
-               *p = dh->p;
-       }
-       if (q != NULL) {
-               *q = dh->q;
-       }
-       if (g != NULL) {
-               *g = dh->g;
-       }
-}
-
-static int
-DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g) {
-       /* If the fields p and g in d are NULL, the corresponding input
-        * parameters MUST be non-NULL.  q may remain NULL.
-        */
-       if ((dh->p == NULL && p == NULL) || (dh->g == NULL && g == NULL)) {
-               return (0);
-       }
-
-       if (p != NULL) {
-               BN_free(dh->p);
-               dh->p = p;
-       }
-       if (q != NULL) {
-               BN_free(dh->q);
-               dh->q = q;
-       }
-       if (g != NULL) {
-               BN_free(dh->g);
-               dh->g = g;
-       }
-
-       if (q != NULL) {
-               dh->length = BN_num_bits(q);
-       }
-
-       return (1);
-}
-
-#define DH_clear_flags(d, f) (d)->flags &= ~(f)
-
-#endif /* !HAVE_DH_GET0_KEY */
-
 static isc_result_t
 openssldh_computesecret(const dst_key_t *pub, const dst_key_t *priv,
                        isc_buffer_t *secret) {