lib/hcrypto: dh-ltm update use of libtommath

warning: 'mp_read_unsigned_bin' is deprecated
(declared at ./libtommath/tommath.h:732): replaced by mp_from_ubin
[-Wdeprecated-declarations]

warning: 'mp_unsigned_bin_size' is deprecated
(declared at ./libtommath/tommath.h:731): replaced by mp_ubin_size
[-Wdeprecated-declarations]

warning: 'mp_to_unsigned_bin' is deprecated
(declared at ./libtommath/tommath.h:733): replaced by mp_to_ubin
[-Wdeprecated-declarations]

warning: 'mp_unsigned_bin_size' is deprecated
(declared at ./libtommath/tommath.h:731): replaced by mp_ubin_size
[-Wdeprecated-declarations]

warning: ignoring return value of 'mp_init_multi',
declared with attribute warn_unused_result [-Wunused-result]

warning: ignoring return value of 'mp_to_unsigned_bin',
declared with attribute warn_unused_result [-Wunused-result]

warning: ignoring return value of 'mp_read_unsigned_bin',
declared with attribute warn_unused_result [-Wunused-result]

Change-Id: I510fd7a57c9cd52b59086a85d13aa6204ebb9fd9
This commit is contained in:
Jeffrey Altman
2022-01-17 20:41:54 -05:00
parent 00dd104b96
commit 5c7a4436e3

View File

@@ -40,7 +40,7 @@
#include "tommath.h"
static void
static int
BN2mpz(mp_int *s, const BIGNUM *bn)
{
size_t len;
@@ -49,8 +49,12 @@ BN2mpz(mp_int *s, const BIGNUM *bn)
len = BN_num_bytes(bn);
p = malloc(len);
BN_bn2bin(bn, p);
mp_read_unsigned_bin(s, p, len);
if (mp_from_ubin(s, p, len) != MP_OKAY) {
free(p);
return -1;
}
free(p);
return 0;
}
@@ -61,11 +65,14 @@ mpz2BN(mp_int *s)
BIGNUM *bn;
void *p;
size = mp_unsigned_bin_size(s);
size = mp_ubin_size(s);
p = malloc(size);
if (p == NULL && size != 0)
return NULL;
mp_to_unsigned_bin(s, p);
if (mp_to_ubin(s, p, SIZE_MAX, NULL) != MP_OKAY) {
free(p);
return NULL;
};
bn = BN_bin2bn(p, size, NULL);
free(p);
@@ -110,11 +117,17 @@ ltm_dh_generate_key(DH *dh)
dh->pub_key = NULL;
}
mp_init_multi(&pub, &priv_key, &g, &p, NULL);
if (mp_init_multi(&pub, &priv_key, &g, &p, NULL) != MP_OKAY)
continue;
BN2mpz(&priv_key, dh->priv_key);
BN2mpz(&g, dh->g);
BN2mpz(&p, dh->p);
if (BN2mpz(&priv_key, dh->priv_key) != 0)
continue;
if (BN2mpz(&g, dh->g) != 0)
continue;
if (BN2mpz(&p, dh->p) != 0)
continue;
res = mp_exptmod(&g, &priv_key, &p, &pub);
@@ -157,9 +170,18 @@ ltm_dh_compute_key(unsigned char *shared, const BIGNUM * pub, DH *dh)
if (dh->pub_key == NULL || dh->g == NULL || dh->priv_key == NULL)
return -1;
mp_init_multi(&s, &priv_key, &p, &peer_pub, NULL);
BN2mpz(&p, dh->p);
BN2mpz(&peer_pub, pub);
if (mp_init_multi(&s, &priv_key, &p, &peer_pub, NULL) != MP_OKAY)
return -1;
if (BN2mpz(&p, dh->p) != 0) {
ret = -1;
goto out;
}
if (BN2mpz(&peer_pub, pub) != 0) {
ret = 1;
goto out;
}
/* check if peers pubkey is reasonable */
if (mp_isneg(&peer_pub)
@@ -170,17 +192,20 @@ ltm_dh_compute_key(unsigned char *shared, const BIGNUM * pub, DH *dh)
goto out;
}
BN2mpz(&priv_key, dh->priv_key);
if (BN2mpz(&priv_key, dh->priv_key) != 0) {
ret = -1;
goto out;
}
ret = mp_exptmod(&peer_pub, &priv_key, &p, &s);
if (ret != 0) {
ret = -1;
goto out;
}
ret = mp_unsigned_bin_size(&s);
mp_to_unsigned_bin(&s, shared);
ret = mp_ubin_size(&s);
if (mp_to_ubin(&s, shared, SIZE_MAX, NULL) != MP_OKAY)
ret = -1;
out:
mp_clear_multi(&s, &priv_key, &p, &peer_pub, NULL);