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

Diff for /src/usr.bin/ssh/sshconnect2.c between version 1.15 and 1.16

version 1.15, 2000/06/21 16:46:10 version 1.16, 2000/07/16 08:27:22
Line 286 
Line 286 
         return 1;          return 1;
 }  }
   
 int  typedef int sign_fn(
 ssh2_try_pubkey(char *filename,      Key *key,
       unsigned char **sigp, int *lenp,
       unsigned char *data, int datalen);
   
   void
   ssh2_sign_and_send_pubkey(Key *k, sign_fn *do_sign,
     const char *server_user, const char *host, const char *service)      const char *server_user, const char *host, const char *service)
 {  {
         Buffer b;          Buffer b;
         Key *k;  
         unsigned char *blob, *signature;          unsigned char *blob, *signature;
         int bloblen, slen;          int bloblen, slen;
         struct stat st;  
         int skip = 0;          int skip = 0;
   
         if (stat(filename, &st) != 0) {  
                 debug("key does not exist: %s", filename);  
                 return 0;  
         }  
         debug("try pubkey: %s", filename);  
   
         k = key_new(KEY_DSA);  
         if (!load_private_key(filename, "", k, NULL)) {  
                 int success = 0;  
                 char *passphrase;  
                 char prompt[300];  
                 snprintf(prompt, sizeof prompt,  
                      "Enter passphrase for DSA key '%.100s': ",  
                      filename);  
                 passphrase = read_passphrase(prompt, 0);  
                 success = load_private_key(filename, passphrase, k, NULL);  
                 memset(passphrase, 0, strlen(passphrase));  
                 xfree(passphrase);  
                 if (!success) {  
                         key_free(k);  
                         return 0;  
                 }  
         }  
         dsa_make_key_blob(k, &blob, &bloblen);          dsa_make_key_blob(k, &blob, &bloblen);
   
         /* data to be signed */          /* data to be signed */
Line 343 
Line 323 
         buffer_put_string(&b, blob, bloblen);          buffer_put_string(&b, blob, bloblen);
   
         /* generate signature */          /* generate signature */
         dsa_sign(k, &signature, &slen, buffer_ptr(&b), buffer_len(&b));          do_sign(k, &signature, &slen, buffer_ptr(&b), buffer_len(&b));
         key_free(k);          key_free(k); /* XXX */
 #ifdef DEBUG_DSS  #ifdef DEBUG_DSS
         buffer_dump(&b);          buffer_dump(&b);
 #endif  #endif
Line 377 
Line 357 
         /* send */          /* send */
         packet_send();          packet_send();
         packet_write_wait();          packet_write_wait();
   }
   
   int
   ssh2_try_pubkey(char *filename,
       const char *server_user, const char *host, const char *service)
   {
           Key *k;
           struct stat st;
   
           if (stat(filename, &st) != 0) {
                   debug("key does not exist: %s", filename);
                   return 0;
           }
           debug("try pubkey: %s", filename);
   
           k = key_new(KEY_DSA);
           if (!load_private_key(filename, "", k, NULL)) {
                   int success = 0;
                   char *passphrase;
                   char prompt[300];
                   snprintf(prompt, sizeof prompt,
                        "Enter passphrase for DSA key '%.100s': ",
                        filename);
                   passphrase = read_passphrase(prompt, 0);
                   success = load_private_key(filename, passphrase, k, NULL);
                   memset(passphrase, 0, strlen(passphrase));
                   xfree(passphrase);
                   if (!success) {
                           key_free(k);
                           return 0;
                   }
           }
           ssh2_sign_and_send_pubkey(k, dsa_sign, server_user, host, service);
         return 1;          return 1;
 }  }
   

Legend:
Removed from v.1.15  
changed lines
  Added in v.1.16