diff options
Diffstat (limited to 'sshconnect1.c')
-rw-r--r-- | sshconnect1.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/sshconnect1.c b/sshconnect1.c index 921408ec1..62a7bd17f 100644 --- a/sshconnect1.c +++ b/sshconnect1.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: sshconnect1.c,v 1.74 2014/02/02 03:44:32 djm Exp $ */ | 1 | /* $OpenBSD: sshconnect1.c,v 1.75 2014/06/24 01:13:21 djm Exp $ */ |
2 | /* | 2 | /* |
3 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | 3 | * Author: Tatu Ylonen <ylo@cs.hut.fi> |
4 | * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland | 4 | * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland |
@@ -166,7 +166,7 @@ respond_to_rsa_challenge(BIGNUM * challenge, RSA * prv) | |||
166 | 166 | ||
167 | /* Decrypt the challenge using the private key. */ | 167 | /* Decrypt the challenge using the private key. */ |
168 | /* XXX think about Bleichenbacher, too */ | 168 | /* XXX think about Bleichenbacher, too */ |
169 | if (rsa_private_decrypt(challenge, challenge, prv) <= 0) | 169 | if (rsa_private_decrypt(challenge, challenge, prv) != 0) |
170 | packet_disconnect( | 170 | packet_disconnect( |
171 | "respond_to_rsa_challenge: rsa_private_decrypt failed"); | 171 | "respond_to_rsa_challenge: rsa_private_decrypt failed"); |
172 | 172 | ||
@@ -253,7 +253,7 @@ try_rsa_authentication(int idx) | |||
253 | * load the private key. Try first with empty passphrase; if it | 253 | * load the private key. Try first with empty passphrase; if it |
254 | * fails, ask for a passphrase. | 254 | * fails, ask for a passphrase. |
255 | */ | 255 | */ |
256 | if (public->flags & KEY_FLAG_EXT) | 256 | if (public->flags & SSHKEY_FLAG_EXT) |
257 | private = public; | 257 | private = public; |
258 | else | 258 | else |
259 | private = key_load_private_type(KEY_RSA1, authfile, "", NULL, | 259 | private = key_load_private_type(KEY_RSA1, authfile, "", NULL, |
@@ -302,7 +302,7 @@ try_rsa_authentication(int idx) | |||
302 | respond_to_rsa_challenge(challenge, private->rsa); | 302 | respond_to_rsa_challenge(challenge, private->rsa); |
303 | 303 | ||
304 | /* Destroy the private key unless it in external hardware. */ | 304 | /* Destroy the private key unless it in external hardware. */ |
305 | if (!(private->flags & KEY_FLAG_EXT)) | 305 | if (!(private->flags & SSHKEY_FLAG_EXT)) |
306 | key_free(private); | 306 | key_free(private); |
307 | 307 | ||
308 | /* We no longer need the challenge. */ | 308 | /* We no longer need the challenge. */ |
@@ -592,8 +592,9 @@ ssh_kex(char *host, struct sockaddr *hostaddr) | |||
592 | BN_num_bits(server_key->rsa->n), | 592 | BN_num_bits(server_key->rsa->n), |
593 | SSH_KEY_BITS_RESERVED); | 593 | SSH_KEY_BITS_RESERVED); |
594 | } | 594 | } |
595 | rsa_public_encrypt(key, key, server_key->rsa); | 595 | if (rsa_public_encrypt(key, key, server_key->rsa) != 0 || |
596 | rsa_public_encrypt(key, key, host_key->rsa); | 596 | rsa_public_encrypt(key, key, host_key->rsa) != 0) |
597 | fatal("%s: rsa_public_encrypt failed", __func__); | ||
597 | } else { | 598 | } else { |
598 | /* Host key has smaller modulus (or they are equal). */ | 599 | /* Host key has smaller modulus (or they are equal). */ |
599 | if (BN_num_bits(server_key->rsa->n) < | 600 | if (BN_num_bits(server_key->rsa->n) < |
@@ -604,8 +605,9 @@ ssh_kex(char *host, struct sockaddr *hostaddr) | |||
604 | BN_num_bits(host_key->rsa->n), | 605 | BN_num_bits(host_key->rsa->n), |
605 | SSH_KEY_BITS_RESERVED); | 606 | SSH_KEY_BITS_RESERVED); |
606 | } | 607 | } |
607 | rsa_public_encrypt(key, key, host_key->rsa); | 608 | if (rsa_public_encrypt(key, key, host_key->rsa) != 0 || |
608 | rsa_public_encrypt(key, key, server_key->rsa); | 609 | rsa_public_encrypt(key, key, server_key->rsa) != 0) |
610 | fatal("%s: rsa_public_encrypt failed", __func__); | ||
609 | } | 611 | } |
610 | 612 | ||
611 | /* Destroy the public keys since we no longer need them. */ | 613 | /* Destroy the public keys since we no longer need them. */ |