diff options
Diffstat (limited to 'kexgexs.c')
-rw-r--r-- | kexgexs.c | 17 |
1 files changed, 6 insertions, 11 deletions
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: kexgexs.c,v 1.14 2010/11/10 01:33:07 djm Exp $ */ | 1 | /* $OpenBSD: kexgexs.c,v 1.16 2013/07/19 07:37:48 markus Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2000 Niels Provos. All rights reserved. | 3 | * Copyright (c) 2000 Niels Provos. All rights reserved. |
4 | * Copyright (c) 2001 Markus Friedl. All rights reserved. | 4 | * Copyright (c) 2001 Markus Friedl. All rights reserved. |
@@ -68,10 +68,6 @@ kexgex_server(Kex *kex) | |||
68 | if (server_host_public == NULL) | 68 | if (server_host_public == NULL) |
69 | fatal("Unsupported hostkey type %d", kex->hostkey_type); | 69 | fatal("Unsupported hostkey type %d", kex->hostkey_type); |
70 | server_host_private = kex->load_host_private_key(kex->hostkey_type); | 70 | server_host_private = kex->load_host_private_key(kex->hostkey_type); |
71 | if (server_host_private == NULL) | ||
72 | fatal("Missing private key for hostkey type %d", | ||
73 | kex->hostkey_type); | ||
74 | |||
75 | 71 | ||
76 | type = packet_read(); | 72 | type = packet_read(); |
77 | switch (type) { | 73 | switch (type) { |
@@ -155,7 +151,7 @@ kexgex_server(Kex *kex) | |||
155 | if (BN_bin2bn(kbuf, kout, shared_secret) == NULL) | 151 | if (BN_bin2bn(kbuf, kout, shared_secret) == NULL) |
156 | fatal("kexgex_server: BN_bin2bn failed"); | 152 | fatal("kexgex_server: BN_bin2bn failed"); |
157 | memset(kbuf, 0, klen); | 153 | memset(kbuf, 0, klen); |
158 | xfree(kbuf); | 154 | free(kbuf); |
159 | 155 | ||
160 | key_to_blob(server_host_public, &server_host_key_blob, &sbloblen); | 156 | key_to_blob(server_host_public, &server_host_key_blob, &sbloblen); |
161 | 157 | ||
@@ -187,9 +183,8 @@ kexgex_server(Kex *kex) | |||
187 | } | 183 | } |
188 | 184 | ||
189 | /* sign H */ | 185 | /* sign H */ |
190 | if (PRIVSEP(key_sign(server_host_private, &signature, &slen, hash, | 186 | kex->sign(server_host_private, server_host_public, &signature, &slen, |
191 | hashlen)) < 0) | 187 | hash, hashlen); |
192 | fatal("kexgex_server: key_sign failed"); | ||
193 | 188 | ||
194 | /* destroy_sensitive_data(); */ | 189 | /* destroy_sensitive_data(); */ |
195 | 190 | ||
@@ -201,8 +196,8 @@ kexgex_server(Kex *kex) | |||
201 | packet_put_string(signature, slen); | 196 | packet_put_string(signature, slen); |
202 | packet_send(); | 197 | packet_send(); |
203 | 198 | ||
204 | xfree(signature); | 199 | free(signature); |
205 | xfree(server_host_key_blob); | 200 | free(server_host_key_blob); |
206 | /* have keys, free DH */ | 201 | /* have keys, free DH */ |
207 | DH_free(dh); | 202 | DH_free(dh); |
208 | 203 | ||