version 1.5, 1999/11/11 23:46:09 |
version 1.6, 1999/11/15 20:53:24 |
|
|
void |
void |
compute_session_id(unsigned char session_id[16], |
compute_session_id(unsigned char session_id[16], |
unsigned char cookie[8], |
unsigned char cookie[8], |
unsigned int host_key_bits, |
|
BIGNUM *host_key_n, |
BIGNUM *host_key_n, |
unsigned int session_key_bits, |
|
BIGNUM *session_key_n) |
BIGNUM *session_key_n) |
{ |
{ |
|
unsigned int host_key_bits = BN_num_bits(host_key_n); |
|
unsigned int session_key_bits = BN_num_bits(session_key_n); |
unsigned int bytes = (host_key_bits + 7) / 8 + (session_key_bits + 7) / 8 + 8; |
unsigned int bytes = (host_key_bits + 7) / 8 + (session_key_bits + 7) / 8 + 8; |
unsigned char *buf = xmalloc(bytes); |
unsigned char *buf = xmalloc(bytes); |
MD5_CTX md; |
MD5_CTX md; |
|
|
BN_bn2bin(host_key_n, buf); |
BN_bn2bin(host_key_n, buf); |
BN_bn2bin(session_key_n, buf + (host_key_bits + 7 ) / 8); |
BN_bn2bin(session_key_n, buf + (host_key_bits + 7 ) / 8); |
memcpy(buf + (host_key_bits + 7) / 8 + (session_key_bits + 7) / 8, |
memcpy(buf + (host_key_bits + 7) / 8 + (session_key_bits + 7) / 8, |