mirror of
https://github.com/ZoiteChat/zoitechat.git
synced 2026-03-20 04:30:18 +00:00
Updated the DH parameter initialization path to use legacy direct DH field assignment only on OpenSSL versions older than 1.1.0 (and non-LibreSSL), and otherwise always use DH_set0_pqg, which avoids opaque-struct access errors on OpenSSL 3.x.
Updated DH key extraction in dh1080_generate_key to use legacy direct member reads only for truly old OpenSSL, and DH_get0_key for modern OpenSSL, preventing dh->pub_key/dh->priv_key compile failures.
Updated private-key injection in dh1080_compute_key to use DH_set0_key(dh, NULL, priv_key_num) on modern OpenSSL, removing the prior unnecessary temporary public-key allocation and avoiding direct dh->priv_key access.
This commit is contained in:
@@ -75,7 +75,7 @@ dh1080_init (void)
|
|||||||
|
|
||||||
BN_set_word (g, 2);
|
BN_set_word (g, 2);
|
||||||
|
|
||||||
#ifndef HAVE_DH_SET0_PQG
|
#if OPENSSL_VERSION_NUMBER < 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
|
||||||
g_dh->p = p;
|
g_dh->p = p;
|
||||||
g_dh->g = g;
|
g_dh->g = g;
|
||||||
#else
|
#else
|
||||||
@@ -163,7 +163,7 @@ dh1080_generate_key (char **priv_key, char **pub_key)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef HAVE_DH_GET0_KEY
|
#if OPENSSL_VERSION_NUMBER < 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
|
||||||
dh_pub_key = dh->pub_key;
|
dh_pub_key = dh->pub_key;
|
||||||
dh_priv_key = dh->priv_key;
|
dh_priv_key = dh->priv_key;
|
||||||
#else
|
#else
|
||||||
@@ -190,9 +190,6 @@ dh1080_compute_key (const char *priv_key, const char *pub_key, char **secret_key
|
|||||||
gsize pub_key_len;
|
gsize pub_key_len;
|
||||||
BIGNUM *pk;
|
BIGNUM *pk;
|
||||||
DH *dh;
|
DH *dh;
|
||||||
#ifdef HAVE_DH_SET0_KEY
|
|
||||||
BIGNUM *temp_pub_key = BN_new();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
g_assert (secret_key != NULL);
|
g_assert (secret_key != NULL);
|
||||||
|
|
||||||
@@ -217,10 +214,10 @@ dh1080_compute_key (const char *priv_key, const char *pub_key, char **secret_key
|
|||||||
|
|
||||||
priv_key_data = dh1080_decode_b64 (priv_key, &priv_key_len);
|
priv_key_data = dh1080_decode_b64 (priv_key, &priv_key_len);
|
||||||
priv_key_num = BN_bin2bn(priv_key_data, priv_key_len, NULL);
|
priv_key_num = BN_bin2bn(priv_key_data, priv_key_len, NULL);
|
||||||
#ifndef HAVE_DH_SET0_KEY
|
#if OPENSSL_VERSION_NUMBER < 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
|
||||||
dh->priv_key = priv_key_num;
|
dh->priv_key = priv_key_num;
|
||||||
#else
|
#else
|
||||||
DH_set0_key (dh, temp_pub_key, priv_key_num);
|
DH_set0_key (dh, NULL, priv_key_num);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
shared_len = DH_compute_key (shared_key, pk, dh);
|
shared_len = DH_compute_key (shared_key, pk, dh);
|
||||||
|
|||||||
Reference in New Issue
Block a user