mirror of
https://git.libssh.org/projects/libssh.git
synced 2026-02-04 12:20:42 +09:00
ecdh: Use bignum_bin2bn.
This commit is contained in:
@@ -90,7 +90,7 @@ static int ssh_curve25519_build_k(ssh_session session) {
|
||||
crypto_scalarmult(k, session->next_crypto->curve25519_privkey,
|
||||
session->next_crypto->curve25519_server_pubkey);
|
||||
|
||||
BN_bin2bn(k, CURVE25519_PUBKEY_SIZE, session->next_crypto->k);
|
||||
bignum_bin2bn(k, CURVE25519_PUBKEY_SIZE, session->next_crypto->k);
|
||||
|
||||
#ifdef DEBUG_CRYPTO
|
||||
ssh_print_hexa("Session server cookie",
|
||||
|
||||
21
src/ecdh.c
21
src/ecdh.c
@@ -100,6 +100,7 @@ static int ecdh_build_k(ssh_session session) {
|
||||
EC_POINT *pubkey;
|
||||
void *buffer;
|
||||
int len = (EC_GROUP_get_degree(group) + 7) / 8;
|
||||
int rc;
|
||||
bignum_CTX ctx = bignum_ctx_new();
|
||||
if (ctx == NULL) {
|
||||
return -1;
|
||||
@@ -124,9 +125,23 @@ static int ecdh_build_k(ssh_session session) {
|
||||
EC_POINT_oct2point(group,pubkey,ssh_string_data(session->next_crypto->ecdh_server_pubkey),
|
||||
ssh_string_len(session->next_crypto->ecdh_server_pubkey),ctx);
|
||||
buffer = malloc(len);
|
||||
ECDH_compute_key(buffer,len,pubkey,session->next_crypto->ecdh_privkey,NULL);
|
||||
EC_POINT_free(pubkey);
|
||||
BN_bin2bn(buffer,len,session->next_crypto->k);
|
||||
if (buffer == NULL) {
|
||||
EC_POINT_clear_free(pubkey);
|
||||
return -1;
|
||||
}
|
||||
|
||||
rc = ECDH_compute_key(buffer,
|
||||
len,
|
||||
pubkey,
|
||||
session->next_crypto->ecdh_privkey,
|
||||
NULL);
|
||||
EC_POINT_clear_free(pubkey);
|
||||
if (rc <= 0) {
|
||||
free(buffer);
|
||||
return -1;
|
||||
}
|
||||
|
||||
bignum_bin2bn(buffer, len, session->next_crypto->k);
|
||||
free(buffer);
|
||||
EC_KEY_free(session->next_crypto->ecdh_privkey);
|
||||
session->next_crypto->ecdh_privkey=NULL;
|
||||
|
||||
Reference in New Issue
Block a user