]> granicus.if.org Git - apache/commitdiff
add modssl_dh_configure() function to fold some duplication in
authorDoug MacEachern <dougm@apache.org>
Wed, 27 Mar 2002 18:19:44 +0000 (18:19 +0000)
committerDoug MacEachern <dougm@apache.org>
Wed, 27 Mar 2002 18:19:44 +0000 (18:19 +0000)
get_dh{512,1024} and provide toolkit compat for sslc 2.x

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94225 13f79535-47bb-0310-9956-ffa450edef68

modules/ssl/ssl_engine_dh.c
modules/ssl/ssl_util_ssl.c
modules/ssl/ssl_util_ssl.h

index 4eaae84c43070b95485283c7e64471081ca3347d..e6440839cddac4bfb71a855f70711cccb0827da6 100644 (file)
@@ -103,16 +103,10 @@ static unsigned char dh512_g[] =
 
 static DH *get_dh512(void)
 {
-    DH *dh;
-
-    if ((dh = DH_new()) == NULL)
-        return (NULL);
-    dh->p = BN_bin2bn(dh512_p, sizeof(dh512_p), NULL);
-    dh->g = BN_bin2bn(dh512_g, sizeof(dh512_g), NULL);
-    if ((dh->p == NULL) || (dh->g == NULL))
-        return (NULL);
-    return (dh);
+    return modssl_dh_configure(dh512_p, sizeof(dh512_p),
+                               dh512_g, sizeof(dh512_g));
 }
+
 static unsigned char dh1024_p[] =
 {
     0xE6, 0x96, 0x9D, 0x3D, 0x49, 0x5B, 0xE3, 0x2C, 0x7C, 0xF1, 0x80, 0xC3,
@@ -134,15 +128,8 @@ static unsigned char dh1024_g[] =
 
 static DH *get_dh1024(void)
 {
-    DH *dh;
-
-    if ((dh = DH_new()) == NULL)
-        return (NULL);
-    dh->p = BN_bin2bn(dh1024_p, sizeof(dh1024_p), NULL);
-    dh->g = BN_bin2bn(dh1024_g, sizeof(dh1024_g), NULL);
-    if ((dh->p == NULL) || (dh->g == NULL))
-        return (NULL);
-    return (dh);
+    return modssl_dh_configure(dh1024_p, sizeof(dh1024_p),
+                               dh1024_g, sizeof(dh1024_g));
 }
 /* ----END GENERATED SECTION---------- */
 
index 750e3a2316f0c083acb02edb70c70b87628013b6..c2a0ca235086c2da39898b31febb8db45efaf812 100644 (file)
@@ -566,3 +566,31 @@ int modssl_session_get_time(SSL_SESSION *session)
     return CRYPTO_time_to_int(&ct);
 #endif
 }
+
+#ifndef SSLC_VERSION_NUMBER
+#define SSLC_VERSION_NUMBER 0x0000
+#endif
+
+DH *modssl_dh_configure(unsigned char *p, int plen,
+                        unsigned char *g, int glen)
+{
+    DH *dh;
+
+    if (!(dh = DH_new())) {
+        return NULL;
+    }
+
+#if defined(OPENSSL_VERSION_NUMBER) || (SSLC_VERSION_NUMBER < 0x2000)
+    dh->p = BN_bin2bn(p, plen, NULL);
+    dh->g = BN_bin2bn(g, glen, NULL);
+    if (!(dh->p && dh->g)) {
+        DH_free(dh);
+        return NULL;
+    }
+#else
+    R_EITEMS_add(dh->data, PK_TYPE_DH, PK_DH_P, 0, p, plen, R_EITEMS_PF_COPY);
+    R_EITEMS_add(dh->data, PK_TYPE_DH, PK_DH_G, 0, g, glen, R_EITEMS_PF_COPY);
+#endif
+
+    return dh;
+}
index 6cf7fccb8591685ce2b420644b68b43eacf0d96c..cb5208b7aeea2f5bb9da93559873aa443d4fc6bf 100644 (file)
@@ -106,4 +106,7 @@ BOOL        SSL_load_CrtAndKeyInfo_path(apr_pool_t *, STACK_OF(X509_INFO) *, cha
 int         SSL_CTX_use_certificate_chain(SSL_CTX *, char *, int, int (*)(char*,int,int,void*));
 char       *SSL_SESSION_id2sz(unsigned char *, int, char *, int);
 
+DH *modssl_dh_configure(unsigned char *p, int plen,
+                        unsigned char *g, int glen);
+
 #endif /* __SSL_UTIL_SSL_H__ */