diff options
Diffstat (limited to 'cipher.c')
-rw-r--r-- | cipher.c | 49 |
1 files changed, 28 insertions, 21 deletions
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: cipher.c,v 1.81 2006/08/03 03:34:42 deraadt Exp $ */ | 1 | /* $OpenBSD: cipher.c,v 1.82 2009/01/26 09:58:15 markus Exp $ */ |
2 | /* | 2 | /* |
3 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | 3 | * Author: Tatu Ylonen <ylo@cs.hut.fi> |
4 | * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland | 4 | * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland |
@@ -63,31 +63,32 @@ struct Cipher { | |||
63 | u_int block_size; | 63 | u_int block_size; |
64 | u_int key_len; | 64 | u_int key_len; |
65 | u_int discard_len; | 65 | u_int discard_len; |
66 | u_int cbc_mode; | ||
66 | const EVP_CIPHER *(*evptype)(void); | 67 | const EVP_CIPHER *(*evptype)(void); |
67 | } ciphers[] = { | 68 | } ciphers[] = { |
68 | { "none", SSH_CIPHER_NONE, 8, 0, 0, EVP_enc_null }, | 69 | { "none", SSH_CIPHER_NONE, 8, 0, 0, 0, EVP_enc_null }, |
69 | { "des", SSH_CIPHER_DES, 8, 8, 0, EVP_des_cbc }, | 70 | { "des", SSH_CIPHER_DES, 8, 8, 0, 1, EVP_des_cbc }, |
70 | { "3des", SSH_CIPHER_3DES, 8, 16, 0, evp_ssh1_3des }, | 71 | { "3des", SSH_CIPHER_3DES, 8, 16, 0, 1, evp_ssh1_3des }, |
71 | { "blowfish", SSH_CIPHER_BLOWFISH, 8, 32, 0, evp_ssh1_bf }, | 72 | { "blowfish", SSH_CIPHER_BLOWFISH, 8, 32, 0, 1, evp_ssh1_bf }, |
72 | 73 | ||
73 | { "3des-cbc", SSH_CIPHER_SSH2, 8, 24, 0, EVP_des_ede3_cbc }, | 74 | { "3des-cbc", SSH_CIPHER_SSH2, 8, 24, 0, 1, EVP_des_ede3_cbc }, |
74 | { "blowfish-cbc", SSH_CIPHER_SSH2, 8, 16, 0, EVP_bf_cbc }, | 75 | { "blowfish-cbc", SSH_CIPHER_SSH2, 8, 16, 0, 1, EVP_bf_cbc }, |
75 | { "cast128-cbc", SSH_CIPHER_SSH2, 8, 16, 0, EVP_cast5_cbc }, | 76 | { "cast128-cbc", SSH_CIPHER_SSH2, 8, 16, 0, 1, EVP_cast5_cbc }, |
76 | { "arcfour", SSH_CIPHER_SSH2, 8, 16, 0, EVP_rc4 }, | 77 | { "arcfour", SSH_CIPHER_SSH2, 8, 16, 0, 0, EVP_rc4 }, |
77 | { "arcfour128", SSH_CIPHER_SSH2, 8, 16, 1536, EVP_rc4 }, | 78 | { "arcfour128", SSH_CIPHER_SSH2, 8, 16, 1536, 0, EVP_rc4 }, |
78 | { "arcfour256", SSH_CIPHER_SSH2, 8, 32, 1536, EVP_rc4 }, | 79 | { "arcfour256", SSH_CIPHER_SSH2, 8, 32, 1536, 0, EVP_rc4 }, |
79 | { "aes128-cbc", SSH_CIPHER_SSH2, 16, 16, 0, EVP_aes_128_cbc }, | 80 | { "aes128-cbc", SSH_CIPHER_SSH2, 16, 16, 0, 1, EVP_aes_128_cbc }, |
80 | { "aes192-cbc", SSH_CIPHER_SSH2, 16, 24, 0, EVP_aes_192_cbc }, | 81 | { "aes192-cbc", SSH_CIPHER_SSH2, 16, 24, 0, 1, EVP_aes_192_cbc }, |
81 | { "aes256-cbc", SSH_CIPHER_SSH2, 16, 32, 0, EVP_aes_256_cbc }, | 82 | { "aes256-cbc", SSH_CIPHER_SSH2, 16, 32, 0, 1, EVP_aes_256_cbc }, |
82 | { "rijndael-cbc@lysator.liu.se", | 83 | { "rijndael-cbc@lysator.liu.se", |
83 | SSH_CIPHER_SSH2, 16, 32, 0, EVP_aes_256_cbc }, | 84 | SSH_CIPHER_SSH2, 16, 32, 0, 1, EVP_aes_256_cbc }, |
84 | { "aes128-ctr", SSH_CIPHER_SSH2, 16, 16, 0, evp_aes_128_ctr }, | 85 | { "aes128-ctr", SSH_CIPHER_SSH2, 16, 16, 0, 0, evp_aes_128_ctr }, |
85 | { "aes192-ctr", SSH_CIPHER_SSH2, 16, 24, 0, evp_aes_128_ctr }, | 86 | { "aes192-ctr", SSH_CIPHER_SSH2, 16, 24, 0, 0, evp_aes_128_ctr }, |
86 | { "aes256-ctr", SSH_CIPHER_SSH2, 16, 32, 0, evp_aes_128_ctr }, | 87 | { "aes256-ctr", SSH_CIPHER_SSH2, 16, 32, 0, 0, evp_aes_128_ctr }, |
87 | #ifdef USE_CIPHER_ACSS | 88 | #ifdef USE_CIPHER_ACSS |
88 | { "acss@openssh.org", SSH_CIPHER_SSH2, 16, 5, 0, EVP_acss }, | 89 | { "acss@openssh.org", SSH_CIPHER_SSH2, 16, 5, 0, 0, EVP_acss }, |
89 | #endif | 90 | #endif |
90 | { NULL, SSH_CIPHER_INVALID, 0, 0, 0, NULL } | 91 | { NULL, SSH_CIPHER_INVALID, 0, 0, 0, 0, NULL } |
91 | }; | 92 | }; |
92 | 93 | ||
93 | /*--*/ | 94 | /*--*/ |
@@ -111,6 +112,12 @@ cipher_get_number(const Cipher *c) | |||
111 | } | 112 | } |
112 | 113 | ||
113 | u_int | 114 | u_int |
115 | cipher_is_cbc(const Cipher *c) | ||
116 | { | ||
117 | return (c->cbc_mode); | ||
118 | } | ||
119 | |||
120 | u_int | ||
114 | cipher_mask_ssh1(int client) | 121 | cipher_mask_ssh1(int client) |
115 | { | 122 | { |
116 | u_int mask = 0; | 123 | u_int mask = 0; |