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:
@@ -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);
|
||||
|
Reference in New Issue
Block a user