ssh-rs 0.5.0

In addition to encryption library, pure RUST implementation of SSH-2.0 client protocol
Documentation
mod test {
    use paste::paste;
    use ssh::algorithm;
    use std::env;

    macro_rules! env_getter {
        ($field:ident, $default: expr) => {
            paste! {
                pub fn [<get_ $field>]() -> String {
                    env::var("SSH_RS_TEST_".to_owned() + stringify!([<$field:upper>])).unwrap_or($default.to_owned())
                }
            }
        };
    }
    env_getter!(username, "ubuntu");
    env_getter!(server, "127.0.0.1:22");
    env_getter!(pem_rsa, "./rsa_old");
    #[cfg(feature = "deprecated-dss-sha1")]
    env_getter!(passwd, "password");

    #[cfg(feature = "deprecated-rsa-sha1")]
    #[test]
    fn test_ssh_rsa() {
        let session = ssh::create_session_without_default()
            .username(&get_username())
            .private_key_path(get_pem_rsa())
            .add_kex_algorithms(algorithm::Kex::EcdhSha2Nistrp256)
            .add_pubkey_algorithms(algorithm::PubKey::SshRsa)
            .add_enc_algorithms(algorithm::Enc::Chacha20Poly1305Openssh)
            .add_compress_algorithms(algorithm::Compress::None)
            .add_mac_algortihms(algorithm::Mac::HmacSha1)
            .connect(get_server())
            .unwrap()
            .run_local();
        session.close();
    }

    #[cfg(feature = "deprecated-dss-sha1")]
    #[test]
    fn test_ssh_dss() {
        let session = ssh::create_session_without_default()
            .username(&get_username())
            .password(&get_passwd())
            .add_kex_algorithms(algorithm::Kex::DiffieHellmanGroup14Sha1)
            .add_pubkey_algorithms(algorithm::PubKey::SshDss)
            .add_enc_algorithms(algorithm::Enc::Aes128Ctr)
            .add_compress_algorithms(algorithm::Compress::None)
            .add_mac_algortihms(algorithm::Mac::HmacSha1)
            .connect(get_server())
            .unwrap()
            .run_local();
        session.close();
    }

    #[cfg(feature = "deprecated-dh-group1-sha1")]
    #[test]
    fn test_dh_group1() {
        let session = ssh::create_session_without_default()
            .username(&get_username())
            .private_key_path(get_pem_rsa())
            .add_kex_algorithms(algorithm::Kex::DiffieHellmanGroup1Sha1)
            .add_pubkey_algorithms(algorithm::PubKey::RsaSha2_256)
            .add_enc_algorithms(algorithm::Enc::Aes128Ctr)
            .add_compress_algorithms(algorithm::Compress::None)
            .add_mac_algortihms(algorithm::Mac::HmacSha1)
            .connect(get_server())
            .unwrap()
            .run_local();
        session.close();
    }

    #[test]
    fn test_curve25519_sha256() {
        let session = ssh::create_session_without_default()
            .username(&get_username())
            .private_key_path(get_pem_rsa())
            .add_kex_algorithms(algorithm::Kex::Curve25519Sha256)
            .add_pubkey_algorithms(algorithm::PubKey::RsaSha2_256)
            .add_enc_algorithms(algorithm::Enc::Aes128Ctr)
            .add_compress_algorithms(algorithm::Compress::None)
            .add_mac_algortihms(algorithm::Mac::HmacSha1)
            .connect(get_server())
            .unwrap()
            .run_local();
        session.close();
    }

    #[test]
    fn test_ecdh_sha2_nistp256() {
        let session = ssh::create_session_without_default()
            .username(&get_username())
            .private_key_path(get_pem_rsa())
            .add_kex_algorithms(algorithm::Kex::EcdhSha2Nistrp256)
            .add_pubkey_algorithms(algorithm::PubKey::RsaSha2_256)
            .add_enc_algorithms(algorithm::Enc::Aes128Ctr)
            .add_compress_algorithms(algorithm::Compress::None)
            .add_mac_algortihms(algorithm::Mac::HmacSha1)
            .connect(get_server())
            .unwrap()
            .run_local();
        session.close();
    }

    #[cfg(feature = "deprecated-dh-group1-sha1")]
    #[test]
    fn test_dh_group14_sha1() {
        let session = ssh::create_session_without_default()
            .username(&get_username())
            .private_key_path(get_pem_rsa())
            .add_kex_algorithms(algorithm::Kex::DiffieHellmanGroup14Sha1)
            .add_pubkey_algorithms(algorithm::PubKey::RsaSha2_256)
            .add_enc_algorithms(algorithm::Enc::Aes128Ctr)
            .add_compress_algorithms(algorithm::Compress::None)
            .add_mac_algortihms(algorithm::Mac::HmacSha1)
            .connect(get_server())
            .unwrap()
            .run_local();
        session.close();
    }

    #[test]
    fn test_dh_group14_sha256() {
        let session = ssh::create_session_without_default()
            .username(&get_username())
            .private_key_path(get_pem_rsa())
            .add_kex_algorithms(algorithm::Kex::DiffieHellmanGroup14Sha256)
            .add_pubkey_algorithms(algorithm::PubKey::RsaSha2_256)
            .add_enc_algorithms(algorithm::Enc::Aes128Ctr)
            .add_compress_algorithms(algorithm::Compress::None)
            .add_mac_algortihms(algorithm::Mac::HmacSha1)
            .connect(get_server())
            .unwrap()
            .run_local();
        session.close();
    }

    #[test]
    fn test_aes192_ctr() {
        let session = ssh::create_session_without_default()
            .username(&get_username())
            .private_key_path(get_pem_rsa())
            .add_kex_algorithms(algorithm::Kex::DiffieHellmanGroup14Sha256)
            .add_pubkey_algorithms(algorithm::PubKey::RsaSha2_256)
            .add_enc_algorithms(algorithm::Enc::Aes192Ctr)
            .add_compress_algorithms(algorithm::Compress::None)
            .add_mac_algortihms(algorithm::Mac::HmacSha1)
            .connect(get_server())
            .unwrap()
            .run_local();
        session.close();
    }

    #[test]
    fn test_aes256_ctr() {
        let session = ssh::create_session_without_default()
            .username(&get_username())
            .private_key_path(get_pem_rsa())
            .add_kex_algorithms(algorithm::Kex::DiffieHellmanGroup14Sha256)
            .add_pubkey_algorithms(algorithm::PubKey::RsaSha2_256)
            .add_enc_algorithms(algorithm::Enc::Aes256Ctr)
            .add_compress_algorithms(algorithm::Compress::None)
            .add_mac_algortihms(algorithm::Mac::HmacSha1)
            .connect(get_server())
            .unwrap()
            .run_local();
        session.close();
    }

    #[cfg(feature = "deprecated-aes-cbc")]
    #[test]
    fn test_aes128_cbc() {
        let session = ssh::create_session_without_default()
            .username(&get_username())
            .private_key_path(get_pem_rsa())
            .add_kex_algorithms(algorithm::Kex::DiffieHellmanGroup14Sha256)
            .add_pubkey_algorithms(algorithm::PubKey::RsaSha2_256)
            .add_enc_algorithms(algorithm::Enc::Aes128Cbc)
            .add_compress_algorithms(algorithm::Compress::None)
            .add_mac_algortihms(algorithm::Mac::HmacSha1)
            .connect(get_server())
            .unwrap()
            .run_local();
        session.close();
    }

    #[cfg(feature = "deprecated-aes-cbc")]
    #[test]
    fn test_aes192_cbc() {
        let session = ssh::create_session_without_default()
            .username(&get_username())
            .private_key_path(get_pem_rsa())
            .add_kex_algorithms(algorithm::Kex::DiffieHellmanGroup14Sha256)
            .add_pubkey_algorithms(algorithm::PubKey::RsaSha2_256)
            .add_enc_algorithms(algorithm::Enc::Aes192Cbc)
            .add_compress_algorithms(algorithm::Compress::None)
            .add_mac_algortihms(algorithm::Mac::HmacSha1)
            .connect(get_server())
            .unwrap()
            .run_local();
        session.close();
    }

    #[cfg(feature = "deprecated-aes-cbc")]
    #[test]
    fn test_aes256_cbc() {
        let session = ssh::create_session_without_default()
            .username(&get_username())
            .private_key_path(get_pem_rsa())
            .add_kex_algorithms(algorithm::Kex::DiffieHellmanGroup14Sha256)
            .add_pubkey_algorithms(algorithm::PubKey::RsaSha2_256)
            .add_enc_algorithms(algorithm::Enc::Aes256Cbc)
            .add_compress_algorithms(algorithm::Compress::None)
            .add_mac_algortihms(algorithm::Mac::HmacSha1)
            .connect(get_server())
            .unwrap()
            .run_local();
        session.close();
    }

    #[cfg(feature = "deprecated-des-cbc")]
    #[test]
    fn test_3des_cbc() {
        let session = ssh::create_session_without_default()
            .username(&get_username())
            .private_key_path(get_pem_rsa())
            .add_kex_algorithms(algorithm::Kex::DiffieHellmanGroup14Sha256)
            .add_pubkey_algorithms(algorithm::PubKey::RsaSha2_256)
            .add_enc_algorithms(algorithm::Enc::TripleDesCbc)
            .add_compress_algorithms(algorithm::Compress::None)
            .add_mac_algortihms(algorithm::Mac::HmacSha1)
            .connect(get_server())
            .unwrap()
            .run_local();
        session.close();
    }

    #[test]
    fn test_chacha20_poly1305() {
        let session = ssh::create_session_without_default()
            .username(&get_username())
            .private_key_path(get_pem_rsa())
            .add_kex_algorithms(algorithm::Kex::DiffieHellmanGroup14Sha256)
            .add_pubkey_algorithms(algorithm::PubKey::RsaSha2_256)
            .add_enc_algorithms(algorithm::Enc::Chacha20Poly1305Openssh)
            .add_compress_algorithms(algorithm::Compress::None)
            .add_mac_algortihms(algorithm::Mac::HmacSha1)
            .connect(get_server())
            .unwrap()
            .run_local();
        session.close();
    }

    #[test]
    fn test_zlib_openssh_com() {
        let session = ssh::create_session_without_default()
            .username(&get_username())
            .private_key_path(get_pem_rsa())
            .add_kex_algorithms(algorithm::Kex::DiffieHellmanGroup14Sha256)
            .add_pubkey_algorithms(algorithm::PubKey::RsaSha2_256)
            .add_enc_algorithms(algorithm::Enc::Chacha20Poly1305Openssh)
            .add_compress_algorithms(algorithm::Compress::ZlibOpenSsh)
            .add_mac_algortihms(algorithm::Mac::HmacSha1)
            .connect(get_server())
            .unwrap()
            .run_local();
        session.close();
    }

    #[test]
    fn test_hmac_sha256() {
        let session = ssh::create_session_without_default()
            .username(&get_username())
            .private_key_path(get_pem_rsa())
            .add_kex_algorithms(algorithm::Kex::DiffieHellmanGroup14Sha256)
            .add_pubkey_algorithms(algorithm::PubKey::RsaSha2_256)
            .add_enc_algorithms(algorithm::Enc::Chacha20Poly1305Openssh)
            .add_compress_algorithms(algorithm::Compress::None)
            .add_mac_algortihms(algorithm::Mac::HmacSha2_256)
            .connect(get_server())
            .unwrap()
            .run_local();
        session.close();
    }

    #[test]
    fn test_hmac_sha512() {
        let session = ssh::create_session_without_default()
            .username(&get_username())
            .private_key_path(get_pem_rsa())
            .add_kex_algorithms(algorithm::Kex::DiffieHellmanGroup14Sha256)
            .add_pubkey_algorithms(algorithm::PubKey::RsaSha2_256)
            .add_enc_algorithms(algorithm::Enc::Chacha20Poly1305Openssh)
            .add_compress_algorithms(algorithm::Compress::None)
            .add_mac_algortihms(algorithm::Mac::HmacSha2_512)
            .connect(get_server())
            .unwrap()
            .run_local();
        session.close();
    }
}