version 1.29, 2018/12/27 03:25:25 |
version 1.30, 2019/01/21 09:54:11 |
|
|
|
|
debug("got SSH2_MSG_KEX_DH_GEX_GROUP"); |
debug("got SSH2_MSG_KEX_DH_GEX_GROUP"); |
|
|
if ((p = BN_new()) == NULL || |
if ((r = sshpkt_get_bignum2(ssh, &p)) != 0 || |
(g = BN_new()) == NULL) { |
(r = sshpkt_get_bignum2(ssh, &g)) != 0 || |
r = SSH_ERR_ALLOC_FAIL; |
|
goto out; |
|
} |
|
if ((r = sshpkt_get_bignum2(ssh, p)) != 0 || |
|
(r = sshpkt_get_bignum2(ssh, g)) != 0 || |
|
(r = sshpkt_get_end(ssh)) != 0) |
(r = sshpkt_get_end(ssh)) != 0) |
goto out; |
goto out; |
if ((bits = BN_num_bits(p)) < 0 || |
if ((bits = BN_num_bits(p)) < 0 || |
|
|
r = SSH_ERR_SIGNATURE_INVALID; |
r = SSH_ERR_SIGNATURE_INVALID; |
goto out; |
goto out; |
} |
} |
/* DH parameter f, server public DH key */ |
/* DH parameter f, server public DH key, signed H */ |
if ((dh_server_pub = BN_new()) == NULL) { |
if ((r = sshpkt_get_bignum2(ssh, &dh_server_pub)) != 0 || |
r = SSH_ERR_ALLOC_FAIL; |
|
goto out; |
|
} |
|
/* signed H */ |
|
if ((r = sshpkt_get_bignum2(ssh, dh_server_pub)) != 0 || |
|
(r = sshpkt_get_string(ssh, &signature, &slen)) != 0 || |
(r = sshpkt_get_string(ssh, &signature, &slen)) != 0 || |
(r = sshpkt_get_end(ssh)) != 0) |
(r = sshpkt_get_end(ssh)) != 0) |
goto out; |
goto out; |