summaryrefslogtreecommitdiff
path: root/kexgexs.c
diff options
context:
space:
mode:
Diffstat (limited to 'kexgexs.c')
-rw-r--r--kexgexs.c17
1 files changed, 6 insertions, 11 deletions
diff --git a/kexgexs.c b/kexgexs.c
index a5e3df7bc..4e473fc73 100644
--- a/kexgexs.c
+++ b/kexgexs.c
@@ -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