[BACK]Return to kexgex.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / ssh

Diff for /src/usr.bin/ssh/kexgex.c between version 1.5 and 1.5.2.1

version 1.5, 2001/04/05 10:42:50 version 1.5.2.1, 2001/09/27 19:03:54
Line 39 
Line 39 
 #include "ssh2.h"  #include "ssh2.h"
 #include "compat.h"  #include "compat.h"
   
 u_char *  static u_char *
 kexgex_hash(  kexgex_hash(
     char *client_version_string,      char *client_version_string,
     char *server_version_string,      char *server_version_string,
     char *ckexinit, int ckexinitlen,      char *ckexinit, int ckexinitlen,
     char *skexinit, int skexinitlen,      char *skexinit, int skexinitlen,
     char *serverhostkeyblob, int sbloblen,      u_char *serverhostkeyblob, int sbloblen,
     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,
Line 57 
Line 57 
         EVP_MD_CTX md;          EVP_MD_CTX md;
   
         buffer_init(&b);          buffer_init(&b);
         buffer_put_string(&b, client_version_string, strlen(client_version_string));          buffer_put_cstring(&b, client_version_string);
         buffer_put_string(&b, server_version_string, strlen(server_version_string));          buffer_put_cstring(&b, server_version_string);
   
         /* kexinit messages: fake header: len+SSH2_MSG_KEXINIT */          /* kexinit messages: fake header: len+SSH2_MSG_KEXINIT */
         buffer_put_int(&b, ckexinitlen+1);          buffer_put_int(&b, ckexinitlen+1);
Line 99 
Line 99 
   
 /* client */  /* client */
   
 void  static void
 kexgex_client(Kex *kex)  kexgex_client(Kex *kex)
 {  {
         BIGNUM *dh_server_pub = NULL, *shared_secret = NULL;          BIGNUM *dh_server_pub = NULL, *shared_secret = NULL;
Line 177 
Line 177 
         if (server_host_key == NULL)          if (server_host_key == NULL)
                 fatal("cannot decode server_host_key_blob");                  fatal("cannot decode server_host_key_blob");
   
         if (kex->check_host_key == NULL)          if (kex->verify_host_key == NULL)
                 fatal("cannot check server_host_key");                  fatal("cannot verify server_host_key");
         kex->check_host_key(server_host_key);          if (kex->verify_host_key(server_host_key) == -1)
                   fatal("server_host_key verification failed");
   
         /* DH paramter f, server public DH key */          /* DH paramter f, server public DH key */
         dh_server_pub = BN_new();          dh_server_pub = BN_new();
Line 233 
Line 234 
         xfree(server_host_key_blob);          xfree(server_host_key_blob);
         BN_free(dh_server_pub);          BN_free(dh_server_pub);
   
         if (key_verify(server_host_key, (u_char *)signature, slen, hash, 20) != 1)          if (key_verify(server_host_key, signature, slen, hash, 20) != 1)
                 fatal("key_verify failed for server_host_key");                  fatal("key_verify failed for server_host_key");
         key_free(server_host_key);          key_free(server_host_key);
         xfree(signature);          xfree(signature);
Line 252 
Line 253 
   
 /* server */  /* server */
   
 void  static void
 kexgex_server(Kex *kex)  kexgex_server(Kex *kex)
 {  {
         BIGNUM *shared_secret = NULL, *dh_client_pub = NULL;          BIGNUM *shared_secret = NULL, *dh_client_pub = NULL;
Line 357 
Line 358 
             kex->server_version_string,              kex->server_version_string,
             buffer_ptr(&kex->peer), buffer_len(&kex->peer),              buffer_ptr(&kex->peer), buffer_len(&kex->peer),
             buffer_ptr(&kex->my), buffer_len(&kex->my),              buffer_ptr(&kex->my), buffer_len(&kex->my),
             (char *)server_host_key_blob, sbloblen,              server_host_key_blob, sbloblen,
             min, nbits, max,              min, nbits, max,
             dh->p, dh->g,              dh->p, dh->g,
             dh_client_pub,              dh_client_pub,
Line 383 
Line 384 
         /* send server hostkey, DH pubkey 'f' and singed H */          /* send server hostkey, DH pubkey 'f' and singed H */
         debug("SSH2_MSG_KEX_DH_GEX_REPLY sent");          debug("SSH2_MSG_KEX_DH_GEX_REPLY sent");
         packet_start(SSH2_MSG_KEX_DH_GEX_REPLY);          packet_start(SSH2_MSG_KEX_DH_GEX_REPLY);
         packet_put_string((char *)server_host_key_blob, sbloblen);          packet_put_string(server_host_key_blob, sbloblen);
         packet_put_bignum2(dh->pub_key);        /* f */          packet_put_bignum2(dh->pub_key);        /* f */
         packet_put_string((char *)signature, slen);          packet_put_string(signature, slen);
         packet_send();          packet_send();
         xfree(signature);          xfree(signature);
         xfree(server_host_key_blob);          xfree(server_host_key_blob);

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.5.2.1