diff options
author | Andreas Schneider <asn@cryptomilk.org> | 2017-11-10 17:35:38 +0100 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2018-03-21 20:40:02 +0100 |
commit | 16217454d576511f37f39c3169963629f9d5082f (patch) | |
tree | 231faa6d8e19eeec23e0d591b8a8af0e3f675055 /src/packet_cb.c | |
parent | 7e1e0e5098beeaf926dc53e35f9e9f35915d5515 (diff) | |
download | libssh-16217454d576511f37f39c3169963629f9d5082f.tar.gz libssh-16217454d576511f37f39c3169963629f9d5082f.tar.xz libssh-16217454d576511f37f39c3169963629f9d5082f.zip |
crypto: Change the type of server_pubkey to ssh_key
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
Diffstat (limited to 'src/packet_cb.c')
-rw-r--r-- | src/packet_cb.c | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/src/packet_cb.c b/src/packet_cb.c index 106c5d9b..2b407416 100644 --- a/src/packet_cb.c +++ b/src/packet_cb.c @@ -154,7 +154,8 @@ SSH_PACKET_CALLBACK(ssh_packet_newkeys){ /* server things are done in server.c */ session->dh_handshake_state=DH_STATE_FINISHED; } else { - ssh_key key; + ssh_key server_key; + /* client */ rc = ssh_make_sessionid(session); if (rc != SSH_OK) { @@ -178,7 +179,7 @@ SSH_PACKET_CALLBACK(ssh_packet_newkeys){ session->next_crypto->dh_server_signature = NULL; /* get the server public key */ - rc = ssh_pki_import_pubkey_blob(session->next_crypto->server_pubkey, &key); + server_key = ssh_dh_get_next_server_publickey(session); if (rc < 0) { return SSH_ERROR; } @@ -186,27 +187,22 @@ SSH_PACKET_CALLBACK(ssh_packet_newkeys){ /* check if public key from server matches user preferences */ if (session->opts.wanted_methods[SSH_HOSTKEYS]) { if(!ssh_match_group(session->opts.wanted_methods[SSH_HOSTKEYS], - key->type_c)) { + server_key->type_c)) { ssh_set_error(session, SSH_FATAL, "Public key from server (%s) doesn't match user " "preference (%s)", - key->type_c, + server_key->type_c, session->opts.wanted_methods[SSH_HOSTKEYS]); - ssh_key_free(key); return -1; } } rc = ssh_pki_signature_verify_blob(session, sig_blob, - key, + server_key, session->next_crypto->secret_hash, session->next_crypto->digest_len); - /* Set the server public key type for known host checking */ - session->next_crypto->server_pubkey_type = key->type_c; - - ssh_key_free(key); ssh_string_burn(sig_blob); ssh_string_free(sig_blob); sig_blob = NULL; |