summaryrefslogtreecommitdiff
path: root/kexdhs.c
diff options
context:
space:
mode:
Diffstat (limited to 'kexdhs.c')
-rw-r--r--kexdhs.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/kexdhs.c b/kexdhs.c
index f56e88764..269d80900 100644
--- a/kexdhs.c
+++ b/kexdhs.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: kexdhs.c,v 1.12 2010/11/10 01:33:07 djm Exp $ */ 1/* $OpenBSD: kexdhs.c,v 1.14 2013/07/19 07:37:48 markus Exp $ */
2/* 2/*
3 * Copyright (c) 2001 Markus Friedl. All rights reserved. 3 * Copyright (c) 2001 Markus Friedl. All rights reserved.
4 * 4 *
@@ -80,9 +80,6 @@ kexdh_server(Kex *kex)
80 if (server_host_public == NULL) 80 if (server_host_public == NULL)
81 fatal("Unsupported hostkey type %d", kex->hostkey_type); 81 fatal("Unsupported hostkey type %d", kex->hostkey_type);
82 server_host_private = kex->load_host_private_key(kex->hostkey_type); 82 server_host_private = kex->load_host_private_key(kex->hostkey_type);
83 if (server_host_private == NULL)
84 fatal("Missing private key for hostkey type %d",
85 kex->hostkey_type);
86 83
87 /* key, cert */ 84 /* key, cert */
88 if ((dh_client_pub = BN_new()) == NULL) 85 if ((dh_client_pub = BN_new()) == NULL)
@@ -118,7 +115,7 @@ kexdh_server(Kex *kex)
118 if (BN_bin2bn(kbuf, kout, shared_secret) == NULL) 115 if (BN_bin2bn(kbuf, kout, shared_secret) == NULL)
119 fatal("kexdh_server: BN_bin2bn failed"); 116 fatal("kexdh_server: BN_bin2bn failed");
120 memset(kbuf, 0, klen); 117 memset(kbuf, 0, klen);
121 xfree(kbuf); 118 free(kbuf);
122 119
123 key_to_blob(server_host_public, &server_host_key_blob, &sbloblen); 120 key_to_blob(server_host_public, &server_host_key_blob, &sbloblen);
124 121
@@ -144,9 +141,8 @@ kexdh_server(Kex *kex)
144 } 141 }
145 142
146 /* sign H */ 143 /* sign H */
147 if (PRIVSEP(key_sign(server_host_private, &signature, &slen, hash, 144 kex->sign(server_host_private, server_host_public, &signature, &slen,
148 hashlen)) < 0) 145 hash, hashlen);
149 fatal("kexdh_server: key_sign failed");
150 146
151 /* destroy_sensitive_data(); */ 147 /* destroy_sensitive_data(); */
152 148
@@ -157,8 +153,8 @@ kexdh_server(Kex *kex)
157 packet_put_string(signature, slen); 153 packet_put_string(signature, slen);
158 packet_send(); 154 packet_send();
159 155
160 xfree(signature); 156 free(signature);
161 xfree(server_host_key_blob); 157 free(server_host_key_blob);
162 /* have keys, free DH */ 158 /* have keys, free DH */
163 DH_free(dh); 159 DH_free(dh);
164 160