version 1.64, 2003/05/15 03:08:29 |
version 1.65, 2003/05/17 04:27:52 |
|
|
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); |
|
extern const EVP_CIPHER *evp_aes_128_ctr(void); |
|
extern void ssh_aes_ctr_iv(EVP_CIPHER_CTX *, int, u_char *, u_int); |
|
|
struct Cipher { |
struct Cipher { |
char *name; |
char *name; |
|
|
{ "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 }, |
#endif |
#endif |
|
{ "aes128-ctr", SSH_CIPHER_SSH2, 16, 16, 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 }, |
|
|
{ NULL, SSH_CIPHER_ILLEGAL, 0, 0, NULL } |
{ NULL, SSH_CIPHER_ILLEGAL, 0, 0, NULL } |
}; |
}; |
|
|
ssh_rijndael_iv(&cc->evp, 0, iv, len); |
ssh_rijndael_iv(&cc->evp, 0, iv, len); |
else |
else |
#endif |
#endif |
|
if (c->evptype == evp_aes_128_ctr) |
|
ssh_aes_ctr_iv(&cc->evp, 0, iv, len); |
|
else |
memcpy(iv, cc->evp.iv, len); |
memcpy(iv, cc->evp.iv, len); |
break; |
break; |
case SSH_CIPHER_3DES: |
case SSH_CIPHER_3DES: |
|
|
ssh_rijndael_iv(&cc->evp, 1, iv, evplen); |
ssh_rijndael_iv(&cc->evp, 1, iv, evplen); |
else |
else |
#endif |
#endif |
|
if (c->evptype == evp_aes_128_ctr) |
|
ssh_aes_ctr_iv(&cc->evp, 1, iv, evplen); |
|
else |
memcpy(cc->evp.iv, iv, evplen); |
memcpy(cc->evp.iv, iv, evplen); |
break; |
break; |
case SSH_CIPHER_3DES: |
case SSH_CIPHER_3DES: |