version 1.7, 2000/10/12 14:21:12 |
version 1.7.2.3, 2001/03/21 19:46:25 |
|
|
|
/* $OpenBSD$ */ |
|
|
/* |
/* |
* Copyright (c) 2000 Markus Friedl. All rights reserved. |
* Copyright (c) 2000 Markus Friedl. All rights reserved. |
* |
* |
|
|
#ifndef KEX_H |
#ifndef KEX_H |
#define KEX_H |
#define KEX_H |
|
|
|
#include <openssl/evp.h> |
|
#include "buffer.h" |
|
|
#define KEX_DH1 "diffie-hellman-group1-sha1" |
#define KEX_DH1 "diffie-hellman-group1-sha1" |
#define KEX_DHGEX "diffie-hellman-group-exchange-sha1" |
#define KEX_DHGEX "diffie-hellman-group-exchange-sha1" |
#define KEX_DSS "ssh-dss" |
|
|
|
enum kex_init_proposals { |
enum kex_init_proposals { |
PROPOSAL_KEX_ALGS, |
PROPOSAL_KEX_ALGS, |
|
|
DH_GRP1_SHA1, |
DH_GRP1_SHA1, |
DH_GEX_SHA1 |
DH_GEX_SHA1 |
}; |
}; |
|
|
typedef struct Kex Kex; |
typedef struct Kex Kex; |
typedef struct Mac Mac; |
typedef struct Mac Mac; |
typedef struct Comp Comp; |
typedef struct Comp Comp; |
|
|
char *name; |
char *name; |
Cipher *cipher; |
Cipher *cipher; |
int enabled; |
int enabled; |
unsigned char *key; |
u_char *key; |
unsigned 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; |
unsigned char *key; |
u_char *key; |
int key_len; |
int key_len; |
}; |
}; |
struct Comp { |
struct Comp { |
|
|
int we_need; |
int we_need; |
int server; |
int server; |
char *name; |
char *name; |
char *hostkeyalg; |
int hostkey_type; |
int kex_type; |
int kex_type; |
}; |
}; |
|
|
|
|
Kex * |
Kex * |
kex_choose_conf(char *cprop[PROPOSAL_MAX], |
kex_choose_conf(char *cprop[PROPOSAL_MAX], |
char *sprop[PROPOSAL_MAX], int server); |
char *sprop[PROPOSAL_MAX], int server); |
int kex_derive_keys(Kex *k, unsigned char *hash, BIGNUM *shared_secret); |
int kex_derive_keys(Kex *k, u_char *hash, BIGNUM *shared_secret); |
void packet_set_kex(Kex *k); |
void packet_set_kex(Kex *k); |
int dh_pub_is_valid(DH *dh, BIGNUM *dh_pub); |
int dh_pub_is_valid(DH *dh, BIGNUM *dh_pub); |
DH *dh_new_group_asc(const char *, const char *); |
DH *dh_new_group_asc(const char *, const char *); |
DH *dh_new_group(BIGNUM *, BIGNUM *); |
DH *dh_new_group(BIGNUM *, BIGNUM *); |
DH *dh_new_group1(); |
void dh_gen_key(DH *, int); |
|
DH *dh_new_group1(void); |
|
|
unsigned char * |
u_char * |
kex_hash( |
kex_hash( |
char *client_version_string, |
char *client_version_string, |
char *server_version_string, |
char *server_version_string, |
|
|
BIGNUM *server_dh_pub, |
BIGNUM *server_dh_pub, |
BIGNUM *shared_secret); |
BIGNUM *shared_secret); |
|
|
unsigned char * |
u_char * |
kex_hash_gex( |
kex_hash_gex( |
char *client_version_string, |
char *client_version_string, |
char *server_version_string, |
char *server_version_string, |