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

Diff for /src/usr.bin/ssh/cipher.c between version 1.68.2.2 and 1.69

version 1.68.2.2, 2005/03/10 17:15:04 version 1.69, 2004/06/21 17:36:31
Line 43 
Line 43 
   
 #include <openssl/md5.h>  #include <openssl/md5.h>
   
   #if OPENSSL_VERSION_NUMBER < 0x00907000L
   extern const EVP_CIPHER *evp_rijndael(void);
   extern void ssh_rijndael_iv(EVP_CIPHER_CTX *, int, u_char *, u_int);
   #endif
 extern const EVP_CIPHER *evp_ssh1_bf(void);  extern const EVP_CIPHER *evp_ssh1_bf(void);
 extern const EVP_CIPHER *evp_ssh1_3des(void);  extern const EVP_CIPHER *evp_ssh1_3des(void);
 extern void ssh1_3des_iv(EVP_CIPHER_CTX *, int, u_char *, int);  extern void ssh1_3des_iv(EVP_CIPHER_CTX *, int, u_char *, int);
Line 56 
Line 60 
         u_int   key_len;          u_int   key_len;
         const EVP_CIPHER        *(*evptype)(void);          const EVP_CIPHER        *(*evptype)(void);
 } ciphers[] = {  } ciphers[] = {
         { "none",               SSH_CIPHER_NONE, 8, 0, EVP_enc_null },          { "none",               SSH_CIPHER_NONE, 8, 0, EVP_enc_null },
         { "des",                SSH_CIPHER_DES, 8, 8, EVP_des_cbc },          { "des",                SSH_CIPHER_DES, 8, 8, EVP_des_cbc },
         { "3des",               SSH_CIPHER_3DES, 8, 16, evp_ssh1_3des },          { "3des",               SSH_CIPHER_3DES, 8, 16, evp_ssh1_3des },
         { "blowfish",           SSH_CIPHER_BLOWFISH, 8, 32, evp_ssh1_bf },          { "blowfish",           SSH_CIPHER_BLOWFISH, 8, 32, evp_ssh1_bf },
   
         { "3des-cbc",           SSH_CIPHER_SSH2, 8, 24, EVP_des_ede3_cbc },          { "3des-cbc",           SSH_CIPHER_SSH2, 8, 24, EVP_des_ede3_cbc },
         { "blowfish-cbc",       SSH_CIPHER_SSH2, 8, 16, EVP_bf_cbc },          { "blowfish-cbc",       SSH_CIPHER_SSH2, 8, 16, EVP_bf_cbc },
         { "cast128-cbc",        SSH_CIPHER_SSH2, 8, 16, EVP_cast5_cbc },          { "cast128-cbc",        SSH_CIPHER_SSH2, 8, 16, EVP_cast5_cbc },
         { "arcfour",            SSH_CIPHER_SSH2, 8, 16, EVP_rc4 },          { "arcfour",            SSH_CIPHER_SSH2, 8, 16, EVP_rc4 },
   #if OPENSSL_VERSION_NUMBER < 0x00907000L
           { "aes128-cbc",         SSH_CIPHER_SSH2, 16, 16, evp_rijndael },
           { "aes192-cbc",         SSH_CIPHER_SSH2, 16, 24, evp_rijndael },
           { "aes256-cbc",         SSH_CIPHER_SSH2, 16, 32, evp_rijndael },
           { "rijndael-cbc@lysator.liu.se",
                                   SSH_CIPHER_SSH2, 16, 32, evp_rijndael },
   #else
         { "aes128-cbc",         SSH_CIPHER_SSH2, 16, 16, EVP_aes_128_cbc },          { "aes128-cbc",         SSH_CIPHER_SSH2, 16, 16, EVP_aes_128_cbc },
         { "aes192-cbc",         SSH_CIPHER_SSH2, 16, 24, EVP_aes_192_cbc },          { "aes192-cbc",         SSH_CIPHER_SSH2, 16, 24, EVP_aes_192_cbc },
         { "aes256-cbc",         SSH_CIPHER_SSH2, 16, 32, EVP_aes_256_cbc },          { "aes256-cbc",         SSH_CIPHER_SSH2, 16, 32, EVP_aes_256_cbc },
         { "rijndael-cbc@lysator.liu.se",          { "rijndael-cbc@lysator.liu.se",
                                 SSH_CIPHER_SSH2, 16, 32, EVP_aes_256_cbc },                                  SSH_CIPHER_SSH2, 16, 32, EVP_aes_256_cbc },
         { "aes128-ctr",         SSH_CIPHER_SSH2, 16, 16, evp_aes_128_ctr },  #endif
         { "aes192-ctr",         SSH_CIPHER_SSH2, 16, 24, evp_aes_128_ctr },          { "aes128-ctr",         SSH_CIPHER_SSH2, 16, 16, evp_aes_128_ctr },
         { "aes256-ctr",         SSH_CIPHER_SSH2, 16, 32, evp_aes_128_ctr },          { "aes192-ctr",         SSH_CIPHER_SSH2, 16, 24, evp_aes_128_ctr },
           { "aes256-ctr",         SSH_CIPHER_SSH2, 16, 32, evp_aes_128_ctr },
         { "acss@openssh.org",   SSH_CIPHER_SSH2, 16, 5, EVP_acss },          { "acss@openssh.org",   SSH_CIPHER_SSH2, 16, 5, EVP_acss },
   
         { NULL,                 SSH_CIPHER_INVALID, 0, 0, NULL }          { NULL,                 SSH_CIPHER_ILLEGAL, 0, 0, NULL }
 };  };
   
 /*--*/  /*--*/
Line 115 
Line 127 
 {  {
         Cipher *c;          Cipher *c;
         for (c = ciphers; c->name != NULL; c++)          for (c = ciphers; c->name != NULL; c++)
                 if (strcmp(c->name, name) == 0)                  if (strcasecmp(c->name, name) == 0)
                         return c;                          return c;
         return NULL;          return NULL;
 }  }
Line 168 
Line 180 
         Cipher *c;          Cipher *c;
         if (name == NULL)          if (name == NULL)
                 return -1;                  return -1;
         for (c = ciphers; c->name != NULL; c++)          c = cipher_by_name(name);
                 if (strcasecmp(c->name, name) == 0)          return (c==NULL) ? -1 : c->number;
                         return c->number;  
         return -1;  
 }  }
   
 char *  char *
Line 301 
Line 311 
                 if (evplen != len)                  if (evplen != len)
                         fatal("%s: wrong iv length %d != %d", __func__,                          fatal("%s: wrong iv length %d != %d", __func__,
                             evplen, len);                              evplen, len);
   #if OPENSSL_VERSION_NUMBER < 0x00907000L
                   if (c->evptype == evp_rijndael)
                           ssh_rijndael_iv(&cc->evp, 0, iv, len);
                   else
   #endif
                 if (c->evptype == evp_aes_128_ctr)                  if (c->evptype == evp_aes_128_ctr)
                         ssh_aes_ctr_iv(&cc->evp, 0, iv, len);                          ssh_aes_ctr_iv(&cc->evp, 0, iv, len);
                 else                  else
Line 327 
Line 342 
                 evplen = EVP_CIPHER_CTX_iv_length(&cc->evp);                  evplen = EVP_CIPHER_CTX_iv_length(&cc->evp);
                 if (evplen == 0)                  if (evplen == 0)
                         return;                          return;
   #if OPENSSL_VERSION_NUMBER < 0x00907000L
                   if (c->evptype == evp_rijndael)
                           ssh_rijndael_iv(&cc->evp, 1, iv, evplen);
                   else
   #endif
                 if (c->evptype == evp_aes_128_ctr)                  if (c->evptype == evp_aes_128_ctr)
                         ssh_aes_ctr_iv(&cc->evp, 1, iv, evplen);                          ssh_aes_ctr_iv(&cc->evp, 1, iv, evplen);
                 else                  else
Line 340 
Line 360 
         }          }
 }  }
   
   #if OPENSSL_VERSION_NUMBER < 0x00907000L
   #define EVP_X_STATE(evp)        &(evp).c
   #define EVP_X_STATE_LEN(evp)    sizeof((evp).c)
   #else
 #define EVP_X_STATE(evp)        (evp).cipher_data  #define EVP_X_STATE(evp)        (evp).cipher_data
 #define EVP_X_STATE_LEN(evp)    (evp).cipher->ctx_size  #define EVP_X_STATE_LEN(evp)    (evp).cipher->ctx_size
   #endif
   
 int  int
 cipher_get_keycontext(const CipherContext *cc, u_char *dat)  cipher_get_keycontext(const CipherContext *cc, u_char *dat)

Legend:
Removed from v.1.68.2.2  
changed lines
  Added in v.1.69