@@ -25,6 +25,7 @@ use aes::{Aes128, Aes192, Aes256};
2525use byteorder:: { BigEndian , ByteOrder } ;
2626use cbc:: CbcWrapper ;
2727use ctr:: Ctr128BE ;
28+ use des:: TdesEde3 ;
2829use log:: debug;
2930use once_cell:: sync:: Lazy ;
3031use tokio:: io:: { AsyncRead , AsyncReadExt } ;
@@ -70,6 +71,8 @@ pub(crate) trait Cipher {
7071
7172/// `clear`
7273pub const CLEAR : Name = Name ( "clear" ) ;
74+ /// `3des-cbc`
75+ pub const TRIPLE_DES_CBC : Name = Name ( "3des-cbc" ) ;
7376/// `aes128-ctr`
7477pub const AES_128_CTR : Name = Name ( "aes128-ctr" ) ;
7578/// `aes192-ctr`
@@ -90,6 +93,7 @@ pub const CHACHA20_POLY1305: Name = Name("chacha20-poly1305@openssh.com");
9093pub const NONE : Name = Name ( "none" ) ;
9194
9295static _CLEAR: Clear = Clear { } ;
96+ static _3DES_CBC: SshBlockCipher < CbcWrapper < TdesEde3 > > = SshBlockCipher ( PhantomData ) ;
9397static _AES_128_CTR: SshBlockCipher < Ctr128BE < Aes128 > > = SshBlockCipher ( PhantomData ) ;
9498static _AES_192_CTR: SshBlockCipher < Ctr128BE < Aes192 > > = SshBlockCipher ( PhantomData ) ;
9599static _AES_256_CTR: SshBlockCipher < Ctr128BE < Aes256 > > = SshBlockCipher ( PhantomData ) ;
@@ -102,6 +106,7 @@ static _CHACHA20_POLY1305: SshChacha20Poly1305Cipher = SshChacha20Poly1305Cipher
102106pub static ALL_CIPHERS : & [ & Name ] = & [
103107 & CLEAR ,
104108 & NONE ,
109+ & TRIPLE_DES_CBC ,
105110 & AES_128_CTR ,
106111 & AES_192_CTR ,
107112 & AES_256_CTR ,
@@ -117,6 +122,7 @@ pub(crate) static CIPHERS: Lazy<HashMap<&'static Name, &(dyn Cipher + Send + Syn
117122 let mut h: HashMap < & ' static Name , & ( dyn Cipher + Send + Sync ) > = HashMap :: new ( ) ;
118123 h. insert ( & CLEAR , & _CLEAR) ;
119124 h. insert ( & NONE , & _CLEAR) ;
125+ h. insert ( & TRIPLE_DES_CBC , & _3DES_CBC) ;
120126 h. insert ( & AES_128_CTR , & _AES_128_CTR) ;
121127 h. insert ( & AES_192_CTR , & _AES_192_CTR) ;
122128 h. insert ( & AES_256_CTR , & _AES_256_CTR) ;
0 commit comments