diff options
Diffstat (limited to 'kex.h')
-rw-r--r-- | kex.h | 16 |
1 files changed, 14 insertions, 2 deletions
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: kex.h,v 1.49 2010/02/26 20:29:54 djm Exp $ */ | 1 | /* $OpenBSD: kex.h,v 1.50 2010/08/31 11:54:45 djm Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. | 4 | * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. |
@@ -29,6 +29,7 @@ | |||
29 | #include <signal.h> | 29 | #include <signal.h> |
30 | #include <openssl/evp.h> | 30 | #include <openssl/evp.h> |
31 | #include <openssl/hmac.h> | 31 | #include <openssl/hmac.h> |
32 | #include <openssl/ec.h> | ||
32 | 33 | ||
33 | #define KEX_COOKIE_LEN 16 | 34 | #define KEX_COOKIE_LEN 16 |
34 | 35 | ||
@@ -37,6 +38,8 @@ | |||
37 | #define KEX_DHGEX_SHA1 "diffie-hellman-group-exchange-sha1" | 38 | #define KEX_DHGEX_SHA1 "diffie-hellman-group-exchange-sha1" |
38 | #define KEX_DHGEX_SHA256 "diffie-hellman-group-exchange-sha256" | 39 | #define KEX_DHGEX_SHA256 "diffie-hellman-group-exchange-sha256" |
39 | #define KEX_RESUME "resume@appgate.com" | 40 | #define KEX_RESUME "resume@appgate.com" |
41 | /* The following represents the family of ECDH methods */ | ||
42 | #define KEX_ECDH_SHA256 "ecdh-sha2-" | ||
40 | 43 | ||
41 | #define COMP_NONE 0 | 44 | #define COMP_NONE 0 |
42 | #define COMP_ZLIB 1 | 45 | #define COMP_ZLIB 1 |
@@ -67,6 +70,7 @@ enum kex_exchange { | |||
67 | KEX_DH_GRP14_SHA1, | 70 | KEX_DH_GRP14_SHA1, |
68 | KEX_DH_GEX_SHA1, | 71 | KEX_DH_GEX_SHA1, |
69 | KEX_DH_GEX_SHA256, | 72 | KEX_DH_GEX_SHA256, |
73 | KEX_ECDH_SHA2, | ||
70 | KEX_MAX | 74 | KEX_MAX |
71 | }; | 75 | }; |
72 | 76 | ||
@@ -145,6 +149,8 @@ void kexdh_client(Kex *); | |||
145 | void kexdh_server(Kex *); | 149 | void kexdh_server(Kex *); |
146 | void kexgex_client(Kex *); | 150 | void kexgex_client(Kex *); |
147 | void kexgex_server(Kex *); | 151 | void kexgex_server(Kex *); |
152 | void kexecdh_client(Kex *); | ||
153 | void kexecdh_server(Kex *); | ||
148 | 154 | ||
149 | void | 155 | void |
150 | kex_dh_hash(char *, char *, char *, int, char *, int, u_char *, int, | 156 | kex_dh_hash(char *, char *, char *, int, char *, int, u_char *, int, |
@@ -153,11 +159,17 @@ void | |||
153 | kexgex_hash(const EVP_MD *, char *, char *, char *, int, char *, | 159 | kexgex_hash(const EVP_MD *, char *, char *, char *, int, char *, |
154 | int, u_char *, int, int, int, int, BIGNUM *, BIGNUM *, BIGNUM *, | 160 | int, u_char *, int, int, int, int, BIGNUM *, BIGNUM *, BIGNUM *, |
155 | BIGNUM *, BIGNUM *, u_char **, u_int *); | 161 | BIGNUM *, BIGNUM *, u_char **, u_int *); |
162 | void | ||
163 | kex_ecdh_hash(const EVP_MD *, const EC_GROUP *, char *, char *, char *, int, | ||
164 | char *, int, u_char *, int, const EC_POINT *, const EC_POINT *, | ||
165 | const BIGNUM *, u_char **, u_int *); | ||
166 | |||
167 | int kex_ecdh_name_to_nid(const char *); | ||
156 | 168 | ||
157 | void | 169 | void |
158 | derive_ssh1_session_id(BIGNUM *, BIGNUM *, u_int8_t[8], u_int8_t[16]); | 170 | derive_ssh1_session_id(BIGNUM *, BIGNUM *, u_int8_t[8], u_int8_t[16]); |
159 | 171 | ||
160 | #if defined(DEBUG_KEX) || defined(DEBUG_KEXDH) | 172 | #if defined(DEBUG_KEX) || defined(DEBUG_KEXDH) || defined(DEBUG_KEXECDH) |
161 | void dump_digest(char *, u_char *, int); | 173 | void dump_digest(char *, u_char *, int); |
162 | #endif | 174 | #endif |
163 | 175 | ||