version 1.18, 2001/04/03 19:53:29 |
version 1.19, 2001/04/03 23:32:12 |
|
|
DH_GEX_SHA1 |
DH_GEX_SHA1 |
}; |
}; |
|
|
|
#define KEX_INIT_SENT 0x0001 |
|
|
typedef struct Kex Kex; |
typedef struct Kex Kex; |
typedef struct Mac Mac; |
typedef struct Mac Mac; |
typedef struct Comp Comp; |
typedef struct Comp Comp; |
typedef struct Enc Enc; |
typedef struct Enc Enc; |
|
typedef struct Newkeys Newkeys; |
|
|
struct Enc { |
struct Enc { |
char *name; |
char *name; |
Cipher *cipher; |
Cipher *cipher; |
int enabled; |
int enabled; |
u_char *key; |
u_char *key; |
u_char *iv; |
u_char *iv; |
}; |
}; |
struct Mac { |
struct Mac { |
char *name; |
char *name; |
int enabled; |
int enabled; |
EVP_MD *md; |
EVP_MD *md; |
int mac_len; |
int mac_len; |
u_char *key; |
u_char *key; |
int key_len; |
int key_len; |
}; |
}; |
struct Comp { |
struct Comp { |
int type; |
int type; |
int enabled; |
int enabled; |
char *name; |
char *name; |
}; |
}; |
#define KEX_INIT_SENT 0x0001 |
struct Newkeys { |
|
Enc enc; |
|
Mac mac; |
|
Comp comp; |
|
}; |
struct Kex { |
struct Kex { |
Enc enc [MODE_MAX]; |
u_char *session_id; |
Mac mac [MODE_MAX]; |
int session_id_len; |
Comp comp[MODE_MAX]; |
Newkeys *keys[MODE_MAX]; |
int we_need; |
int we_need; |
int server; |
int server; |
char *name; |
char *name; |
int hostkey_type; |
int hostkey_type; |
int kex_type; |
int kex_type; |
|
Buffer my; |
/* used during kex */ |
Buffer peer; |
Buffer my; |
int newkeys; |
Buffer peer; |
int flags; |
int newkeys; |
char *client_version_string; |
int flags; |
char *server_version_string; |
void *state; |
int (*check_host_key)(Key *hostkey); |
char *client_version_string; |
Key *(*load_host_key)(int type); |
char *server_version_string; |
|
|
|
int (*check_host_key)(Key *hostkey); |
|
Key *(*load_host_key)(int type); |
|
}; |
}; |
|
|
void kex_derive_keys(Kex *k, u_char *hash, BIGNUM *shared_secret); |
|
void packet_set_kex(Kex *k); |
|
Kex *kex_start(char *proposal[PROPOSAL_MAX]); |
Kex *kex_start(char *proposal[PROPOSAL_MAX]); |
void kex_send_newkeys(void); |
void kex_send_newkeys(void); |
|
void kex_send_kexinit(Kex *kex); |
void kex_protocol_error(int type, int plen, void *ctxt); |
void kex_protocol_error(int type, int plen, void *ctxt); |
|
void kex_derive_keys(Kex *k, u_char *hash, BIGNUM *shared_secret); |
|
|
void kexdh(Kex *); |
void kexdh(Kex *); |
void kexgex(Kex *); |
void kexgex(Kex *); |
|
|
|
Newkeys *kex_get_newkeys(int mode); |
|
|
#if defined(DEBUG_KEX) || defined(DEBUG_KEXDH) |
#if defined(DEBUG_KEX) || defined(DEBUG_KEXDH) |
void dump_digest(char *msg, u_char *digest, int len); |
void dump_digest(char *msg, u_char *digest, int len); |