use russh::keys::{Algorithm, EcdsaCurve, HashAlg};
use russh::{cipher, compression, kex, mac};
pub const LEGACY_KEX_ORDER: &[kex::Name] = &[
kex::CURVE25519,
kex::CURVE25519_PRE_RFC_8731,
kex::DH_GEX_SHA1,
kex::DH_GEX_SHA256,
kex::DH_G1_SHA1,
kex::DH_G14_SHA1,
kex::DH_G14_SHA256,
kex::DH_G15_SHA512,
kex::DH_G16_SHA512,
kex::DH_G17_SHA512,
kex::DH_G18_SHA512,
kex::ECDH_SHA2_NISTP256,
kex::ECDH_SHA2_NISTP384,
kex::ECDH_SHA2_NISTP521,
kex::NONE,
];
pub static LEGACY_CIPHERS: &[cipher::Name] = &[
cipher::CLEAR,
cipher::NONE,
cipher::AES_128_CTR,
cipher::AES_192_CTR,
cipher::AES_256_CTR,
cipher::AES_256_GCM,
cipher::AES_128_CBC,
cipher::AES_192_CBC,
cipher::AES_256_CBC,
cipher::CHACHA20_POLY1305,
];
pub const LEGACY_MAC_ALGORITHMS: &[mac::Name] = &[
mac::NONE,
mac::HMAC_SHA1,
mac::HMAC_SHA256,
mac::HMAC_SHA512,
mac::HMAC_SHA1_ETM,
mac::HMAC_SHA256_ETM,
mac::HMAC_SHA512_ETM,
];
pub const DEFAULT_COMPRESSION_ALGORITHMS: &[compression::Name] = &[
compression::NONE,
compression::ZLIB,
compression::ZLIB_LEGACY,
];
pub const LEGACY_KEY_TYPES: &[Algorithm] = &[
Algorithm::Dsa,
Algorithm::Ecdsa {
curve: EcdsaCurve::NistP256,
},
Algorithm::Ecdsa {
curve: EcdsaCurve::NistP384,
},
Algorithm::Ecdsa {
curve: EcdsaCurve::NistP521,
},
Algorithm::Ed25519,
Algorithm::Rsa { hash: None },
Algorithm::Rsa {
hash: Some(HashAlg::Sha256),
},
Algorithm::Rsa {
hash: Some(HashAlg::Sha512),
},
Algorithm::SkEcdsaSha2NistP256,
Algorithm::SkEd25519,
];
pub const BALANCED_KEX_ORDER: &[kex::Name] = &[
kex::CURVE25519,
kex::CURVE25519_PRE_RFC_8731,
kex::ECDH_SHA2_NISTP256,
kex::ECDH_SHA2_NISTP384,
kex::ECDH_SHA2_NISTP521,
kex::DH_G14_SHA256,
kex::DH_G15_SHA512,
kex::DH_G16_SHA512,
kex::DH_G17_SHA512,
kex::DH_G18_SHA512,
];
pub static BALANCED_CIPHERS: &[cipher::Name] = &[
cipher::AES_128_CTR,
cipher::AES_192_CTR,
cipher::AES_256_CTR,
cipher::AES_256_GCM,
cipher::CHACHA20_POLY1305,
];
pub const BALANCED_MAC_ALGORITHMS: &[mac::Name] = &[
mac::HMAC_SHA256,
mac::HMAC_SHA512,
mac::HMAC_SHA256_ETM,
mac::HMAC_SHA512_ETM,
];
pub const BALANCED_KEY_TYPES: &[Algorithm] = &[
Algorithm::Ecdsa {
curve: EcdsaCurve::NistP256,
},
Algorithm::Ecdsa {
curve: EcdsaCurve::NistP384,
},
Algorithm::Ecdsa {
curve: EcdsaCurve::NistP521,
},
Algorithm::Ed25519,
Algorithm::Rsa {
hash: Some(HashAlg::Sha256),
},
Algorithm::Rsa {
hash: Some(HashAlg::Sha512),
},
];
pub const SECURE_KEX_ORDER: &[kex::Name] = &[
kex::CURVE25519,
kex::CURVE25519_PRE_RFC_8731,
kex::ECDH_SHA2_NISTP256,
kex::ECDH_SHA2_NISTP384,
kex::ECDH_SHA2_NISTP521,
];
pub static SECURE_CIPHERS: &[cipher::Name] = &[
cipher::AES_256_GCM,
cipher::CHACHA20_POLY1305,
cipher::AES_256_CTR,
];
pub const SECURE_MAC_ALGORITHMS: &[mac::Name] =
&[mac::HMAC_SHA512_ETM, mac::HMAC_SHA256_ETM, mac::HMAC_SHA512];
pub const SECURE_KEY_TYPES: &[Algorithm] = &[
Algorithm::Ed25519,
Algorithm::Ecdsa {
curve: EcdsaCurve::NistP256,
},
Algorithm::Ecdsa {
curve: EcdsaCurve::NistP384,
},
Algorithm::Ecdsa {
curve: EcdsaCurve::NistP521,
},
Algorithm::Rsa {
hash: Some(HashAlg::Sha512),
},
Algorithm::Rsa {
hash: Some(HashAlg::Sha256),
},
];