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

Diff for /src/usr.bin/ssh/Attic/auth-rsa.c between version 1.32 and 1.32.2.4

version 1.32, 2000/10/14 12:19:45 version 1.32.2.4, 2001/05/07 21:09:25
Line 16 
Line 16 
 #include "includes.h"  #include "includes.h"
 RCSID("$OpenBSD$");  RCSID("$OpenBSD$");
   
   #include <openssl/rsa.h>
   #include <openssl/md5.h>
   
 #include "rsa.h"  #include "rsa.h"
 #include "packet.h"  #include "packet.h"
 #include "xmalloc.h"  #include "xmalloc.h"
 #include "ssh.h"  #include "ssh1.h"
 #include "mpaux.h"  #include "mpaux.h"
 #include "uidswap.h"  #include "uidswap.h"
 #include "match.h"  #include "match.h"
 #include "servconf.h"  
 #include "auth-options.h"  #include "auth-options.h"
   #include "pathnames.h"
   #include "log.h"
   #include "servconf.h"
   #include "auth.h"
   
 #include <openssl/rsa.h>  
 #include <openssl/md5.h>  
   
   
 /* import */  /* import */
 extern ServerOptions options;  extern ServerOptions options;
   
Line 37 
Line 39 
  * Session identifier that is used to bind key exchange and authentication   * Session identifier that is used to bind key exchange and authentication
  * responses to a particular session.   * responses to a particular session.
  */   */
 extern unsigned char session_id[16];  extern u_char session_id[16];
   
 /*  /*
  * The .ssh/authorized_keys file contains public keys, one per line, in the   * The .ssh/authorized_keys file contains public keys, one per line, in the
Line 60 
Line 62 
 {  {
         BIGNUM *challenge, *encrypted_challenge;          BIGNUM *challenge, *encrypted_challenge;
         BN_CTX *ctx;          BN_CTX *ctx;
         unsigned char buf[32], mdbuf[16], response[16];          u_char buf[32], mdbuf[16], response[16];
         MD5_CTX md;          MD5_CTX md;
         unsigned int i;          u_int i;
         int plen, len;          int plen, len;
   
         encrypted_challenge = BN_new();          encrypted_challenge = BN_new();
Line 120 
Line 122 
 int  int
 auth_rsa(struct passwd *pw, BIGNUM *client_n)  auth_rsa(struct passwd *pw, BIGNUM *client_n)
 {  {
         char line[8192], file[1024];          char line[8192], file[MAXPATHLEN];
         int authenticated;          int authenticated;
         unsigned int bits;          u_int bits;
         FILE *f;          FILE *f;
         unsigned long linenum = 0;          u_long linenum = 0;
         struct stat st;          struct stat st;
         RSA *pk;          RSA *pk;
   
Line 133 
Line 135 
                 return 0;                  return 0;
   
         /* Temporarily use the user's uid. */          /* Temporarily use the user's uid. */
         temporarily_use_uid(pw->pw_uid);          temporarily_use_uid(pw);
   
         /* The authorized keys. */          /* The authorized keys. */
         snprintf(file, sizeof file, "%.500s/%.100s", pw->pw_dir,          snprintf(file, sizeof file, "%.500s/%.100s", pw->pw_dir,
                  SSH_USER_PERMITTED_KEYS);                   _PATH_SSH_USER_PERMITTED_KEYS);
   
         /* Fail quietly if file does not exist */          /* Fail quietly if file does not exist */
         if (stat(file, &st) < 0) {          if (stat(file, &st) < 0) {
Line 165 
Line 167 
                                  "bad ownership or modes for '%s'.", pw->pw_name, file);                                   "bad ownership or modes for '%s'.", pw->pw_name, file);
                         fail = 1;                          fail = 1;
                 } else {                  } else {
                         /* Check path to SSH_USER_PERMITTED_KEYS */                          /* Check path to _PATH_SSH_USER_PERMITTED_KEYS */
                         int i;                          int i;
                         static const char *check[] = {                          static const char *check[] = {
                                 "", SSH_USER_DIR, NULL                                  "", _PATH_SSH_USER_DIR, NULL
                         };                          };
                         for (i = 0; check[i]; i++) {                          for (i = 0; check[i]; i++) {
                                 snprintf(line, sizeof line, "%.500s/%.100s", pw->pw_dir, check[i]);                                  snprintf(line, sizeof line, "%.500s/%.100s", pw->pw_dir, check[i]);
Line 184 
Line 186 
                 }                  }
                 if (fail) {                  if (fail) {
                         fclose(f);                          fclose(f);
                         log("%s",buf);                          log("%s", buf);
                         packet_send_debug("%s",buf);                          packet_send_debug("%s", buf);
                         restore_uid();                          restore_uid();
                         return 0;                          return 0;
                 }                  }
Line 231 
Line 233 
                         }                          }
                 } else                  } else
                         options = NULL;                          options = NULL;
                 /*  
                  * If our options do not allow this key to be used,  
                  * do not send challenge.  
                  */  
                 if (!auth_parse_options(pw, options, linenum))  
                         continue;  
   
                 /* Parse the key from the line. */                  /* Parse the key from the line. */
                 if (!auth_rsa_read_key(&cp, &bits, pk->e, pk->n)) {                  if (!auth_rsa_read_key(&cp, &bits, pk->e, pk->n)) {
                         debug("%.100s, line %lu: bad key syntax",                          debug("%.100s, line %lu: bad key syntax",
                               SSH_USER_PERMITTED_KEYS, linenum);                              file, linenum);
                         packet_send_debug("%.100s, line %lu: bad key syntax",                          packet_send_debug("%.100s, line %lu: bad key syntax",
                                           SSH_USER_PERMITTED_KEYS, linenum);                              file, linenum);
                         continue;                          continue;
                 }                  }
                 /* cp now points to the comment part. */                  /* cp now points to the comment part. */
Line 259 
Line 255 
                             file, linenum, BN_num_bits(pk->n), bits);                              file, linenum, BN_num_bits(pk->n), bits);
   
                 /* We have found the desired key. */                  /* We have found the desired key. */
                   /*
                    * If our options do not allow this key to be used,
                    * do not send challenge.
                    */
                   if (!auth_parse_options(pw, options, file, linenum))
                           continue;
   
                 /* Perform the challenge-response dialog for this key. */                  /* Perform the challenge-response dialog for this key. */
                 if (!auth_rsa_challenge_dialog(pk)) {                  if (!auth_rsa_challenge_dialog(pk)) {

Legend:
Removed from v.1.32  
changed lines
  Added in v.1.32.2.4