version 1.23, 2003/02/16 17:09:57 |
version 1.23.10.1, 2006/02/03 02:53:44 |
|
|
#include "kex.h" |
#include "kex.h" |
#include "ssh2.h" |
#include "ssh2.h" |
|
|
u_char * |
void |
kexgex_hash( |
kexgex_hash( |
|
const EVP_MD *evp_md, |
char *client_version_string, |
char *client_version_string, |
char *server_version_string, |
char *server_version_string, |
char *ckexinit, int ckexinitlen, |
char *ckexinit, int ckexinitlen, |
|
|
int min, int wantbits, int max, BIGNUM *prime, BIGNUM *gen, |
int min, int wantbits, int max, BIGNUM *prime, BIGNUM *gen, |
BIGNUM *client_dh_pub, |
BIGNUM *client_dh_pub, |
BIGNUM *server_dh_pub, |
BIGNUM *server_dh_pub, |
BIGNUM *shared_secret) |
BIGNUM *shared_secret, |
|
u_char **hash, u_int *hashlen) |
{ |
{ |
Buffer b; |
Buffer b; |
static u_char digest[EVP_MAX_MD_SIZE]; |
static u_char digest[EVP_MAX_MD_SIZE]; |
const EVP_MD *evp_md = EVP_sha1(); |
|
EVP_MD_CTX md; |
EVP_MD_CTX md; |
|
|
buffer_init(&b); |
buffer_init(&b); |
|
|
#ifdef DEBUG_KEXDH |
#ifdef DEBUG_KEXDH |
buffer_dump(&b); |
buffer_dump(&b); |
#endif |
#endif |
|
|
EVP_DigestInit(&md, evp_md); |
EVP_DigestInit(&md, evp_md); |
EVP_DigestUpdate(&md, buffer_ptr(&b), buffer_len(&b)); |
EVP_DigestUpdate(&md, buffer_ptr(&b), buffer_len(&b)); |
EVP_DigestFinal(&md, digest, NULL); |
EVP_DigestFinal(&md, digest, NULL); |
|
|
buffer_free(&b); |
buffer_free(&b); |
|
*hash = digest; |
|
*hashlen = EVP_MD_size(evp_md); |
#ifdef DEBUG_KEXDH |
#ifdef DEBUG_KEXDH |
dump_digest("hash", digest, EVP_MD_size(evp_md)); |
dump_digest("hash", digest, *hashlen); |
#endif |
#endif |
return digest; |
|
} |
} |