diff options
author | Damien Miller <djm@mindrot.org> | 2014-07-02 15:28:02 +1000 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2014-07-02 15:28:02 +1000 |
commit | 8668706d0f52654fe64c0ca41a96113aeab8d2b8 (patch) | |
tree | 73e78e1ea3d39206e39870bbe0af17d6c430fb51 /sshconnect1.c | |
parent | 2cd7929250cf9e9f658d70dcd452f529ba08c942 (diff) |
- djm@cvs.openbsd.org 2014/06/24 01:13:21
[Makefile.in auth-bsdauth.c auth-chall.c auth-options.c auth-rsa.c
[auth2-none.c auth2-pubkey.c authfile.c authfile.h cipher-3des1.c
[cipher-chachapoly.c cipher-chachapoly.h cipher.c cipher.h
[digest-libc.c digest-openssl.c digest.h dns.c entropy.c hmac.h
[hostfile.c key.c key.h krl.c monitor.c packet.c rsa.c rsa.h
[ssh-add.c ssh-agent.c ssh-dss.c ssh-ecdsa.c ssh-ed25519.c
[ssh-keygen.c ssh-pkcs11-client.c ssh-pkcs11-helper.c ssh-pkcs11.c
[ssh-rsa.c sshbuf-misc.c sshbuf.h sshconnect.c sshconnect1.c
[sshconnect2.c sshd.c sshkey.c sshkey.h
[openbsd-compat/openssl-compat.c openbsd-compat/openssl-compat.h]
New key API: refactor key-related functions to be more library-like,
existing API is offered as a set of wrappers.
with and ok markus@
Thanks also to Ben Hawkes, David Tomaschik, Ivan Fratric, Matthew
Dempsky and Ron Bowes for a detailed review a few months ago.
NB. This commit also removes portable OpenSSH support for OpenSSL
<0.9.8e.
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. */ |