Unverified Commit 9db259a1 authored by Alex Gaynor's avatar Alex Gaynor Committed by GitHub
Browse files

Merge pull request #2084 from alex/more-bad-ciphers

Expose a few more (bad) ciphers in cipher::Cipher
parents 83140c57 3cab63cd
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -312,7 +312,10 @@ extern "C" {
    pub fn EVP_des_ecb() -> *const EVP_CIPHER;
    pub fn EVP_des_ede3() -> *const EVP_CIPHER;
    pub fn EVP_des_ede3_cbc() -> *const EVP_CIPHER;
    pub fn EVP_des_ede3_ecb() -> *const EVP_CIPHER;
    pub fn EVP_des_ede3_cfb64() -> *const EVP_CIPHER;
    pub fn EVP_des_ede3_cfb8() -> *const EVP_CIPHER;
    pub fn EVP_des_ede3_ofb() -> *const EVP_CIPHER;
    pub fn EVP_des_cbc() -> *const EVP_CIPHER;
    #[cfg(not(osslconf = "OPENSSL_NO_RC4"))]
    pub fn EVP_rc4() -> *const EVP_CIPHER;
@@ -398,17 +401,23 @@ extern "C" {
    #[cfg(not(osslconf = "OPENSSL_NO_CAMELLIA"))]
    pub fn EVP_camellia_128_cbc() -> *const EVP_CIPHER;
    #[cfg(not(osslconf = "OPENSSL_NO_CAMELLIA"))]
    pub fn EVP_camellia_128_ofb() -> *const EVP_CIPHER;
    #[cfg(not(osslconf = "OPENSSL_NO_CAMELLIA"))]
    pub fn EVP_camellia_192_cfb128() -> *const EVP_CIPHER;
    #[cfg(not(osslconf = "OPENSSL_NO_CAMELLIA"))]
    pub fn EVP_camellia_192_ecb() -> *const EVP_CIPHER;
    #[cfg(not(osslconf = "OPENSSL_NO_CAMELLIA"))]
    pub fn EVP_camellia_192_cbc() -> *const EVP_CIPHER;
    #[cfg(not(osslconf = "OPENSSL_NO_CAMELLIA"))]
    pub fn EVP_camellia_192_ofb() -> *const EVP_CIPHER;
    #[cfg(not(osslconf = "OPENSSL_NO_CAMELLIA"))]
    pub fn EVP_camellia_256_cfb128() -> *const EVP_CIPHER;
    #[cfg(not(osslconf = "OPENSSL_NO_CAMELLIA"))]
    pub fn EVP_camellia_256_ecb() -> *const EVP_CIPHER;
    #[cfg(not(osslconf = "OPENSSL_NO_CAMELLIA"))]
    pub fn EVP_camellia_256_cbc() -> *const EVP_CIPHER;
    #[cfg(not(osslconf = "OPENSSL_NO_CAMELLIA"))]
    pub fn EVP_camellia_256_ofb() -> *const EVP_CIPHER;

    #[cfg(not(osslconf = "OPENSSL_NO_CAST"))]
    pub fn EVP_cast5_cfb64() -> *const EVP_CIPHER;
@@ -416,6 +425,8 @@ extern "C" {
    pub fn EVP_cast5_ecb() -> *const EVP_CIPHER;
    #[cfg(not(osslconf = "OPENSSL_NO_CAST"))]
    pub fn EVP_cast5_cbc() -> *const EVP_CIPHER;
    #[cfg(not(osslconf = "OPENSSL_NO_CAST"))]
    pub fn EVP_cast5_ofb() -> *const EVP_CIPHER;

    #[cfg(not(osslconf = "OPENSSL_NO_IDEA"))]
    pub fn EVP_idea_cfb64() -> *const EVP_CIPHER;
@@ -423,6 +434,8 @@ extern "C" {
    pub fn EVP_idea_ecb() -> *const EVP_CIPHER;
    #[cfg(not(osslconf = "OPENSSL_NO_IDEA"))]
    pub fn EVP_idea_cbc() -> *const EVP_CIPHER;
    #[cfg(not(osslconf = "OPENSSL_NO_IDEA"))]
    pub fn EVP_idea_ofb() -> *const EVP_CIPHER;

    #[cfg(not(ossl110))]
    pub fn OPENSSL_add_all_algorithms_noconf();
+25 −0
Original line number Diff line number Diff line
@@ -388,6 +388,11 @@ impl Cipher {
        unsafe { CipherRef::from_ptr(ffi::EVP_camellia_128_ecb() as *mut _) }
    }

    #[cfg(not(osslconf = "OPENSSL_NO_CAMELLIA"))]
    pub fn camellia128_cbc() -> &'static CipherRef {
        unsafe { CipherRef::from_ptr(ffi::EVP_camellia_128_cbc() as *mut _) }
    }

    #[cfg(not(osslconf = "OPENSSL_NO_CAMELLIA"))]
    pub fn camellia192_cfb128() -> &'static CipherRef {
        unsafe { CipherRef::from_ptr(ffi::EVP_camellia_192_cfb128() as *mut _) }
@@ -398,6 +403,11 @@ impl Cipher {
        unsafe { CipherRef::from_ptr(ffi::EVP_camellia_192_ecb() as *mut _) }
    }

    #[cfg(not(osslconf = "OPENSSL_NO_CAMELLIA"))]
    pub fn camellia192_cbc() -> &'static CipherRef {
        unsafe { CipherRef::from_ptr(ffi::EVP_camellia_192_cbc() as *mut _) }
    }

    #[cfg(not(osslconf = "OPENSSL_NO_CAMELLIA"))]
    pub fn camellia256_cfb128() -> &'static CipherRef {
        unsafe { CipherRef::from_ptr(ffi::EVP_camellia_256_cfb128() as *mut _) }
@@ -408,6 +418,11 @@ impl Cipher {
        unsafe { CipherRef::from_ptr(ffi::EVP_camellia_256_ecb() as *mut _) }
    }

    #[cfg(not(osslconf = "OPENSSL_NO_CAMELLIA"))]
    pub fn camellia256_cbc() -> &'static CipherRef {
        unsafe { CipherRef::from_ptr(ffi::EVP_camellia_256_cbc() as *mut _) }
    }

    #[cfg(not(osslconf = "OPENSSL_NO_CAST"))]
    pub fn cast5_cfb64() -> &'static CipherRef {
        unsafe { CipherRef::from_ptr(ffi::EVP_cast5_cfb64() as *mut _) }
@@ -418,6 +433,11 @@ impl Cipher {
        unsafe { CipherRef::from_ptr(ffi::EVP_cast5_ecb() as *mut _) }
    }

    #[cfg(not(osslconf = "OPENSSL_NO_CAST"))]
    pub fn cast5_cbc() -> &'static CipherRef {
        unsafe { CipherRef::from_ptr(ffi::EVP_cast5_cbc() as *mut _) }
    }

    #[cfg(not(osslconf = "OPENSSL_NO_IDEA"))]
    pub fn idea_cfb64() -> &'static CipherRef {
        unsafe { CipherRef::from_ptr(ffi::EVP_idea_cfb64() as *mut _) }
@@ -428,6 +448,11 @@ impl Cipher {
        unsafe { CipherRef::from_ptr(ffi::EVP_idea_ecb() as *mut _) }
    }

    #[cfg(not(osslconf = "OPENSSL_NO_IDEA"))]
    pub fn idea_cbc() -> &'static CipherRef {
        unsafe { CipherRef::from_ptr(ffi::EVP_idea_cbc() as *mut _) }
    }

    #[cfg(all(ossl110, not(osslconf = "OPENSSL_NO_CHACHA")))]
    pub fn chacha20() -> &'static CipherRef {
        unsafe { CipherRef::from_ptr(ffi::EVP_chacha20() as *mut _) }
+89 −0
Original line number Diff line number Diff line
@@ -278,11 +278,25 @@ impl Cipher {
        unsafe { Cipher(ffi::EVP_des_ede3_cbc()) }
    }

    pub fn des_ede3_ecb() -> Cipher {
        unsafe { Cipher(ffi::EVP_des_ede3_ecb()) }
    }

    #[cfg(not(boringssl))]
    pub fn des_ede3_cfb64() -> Cipher {
        unsafe { Cipher(ffi::EVP_des_ede3_cfb64()) }
    }

    #[cfg(not(boringssl))]
    pub fn des_ede3_cfb8() -> Cipher {
        unsafe { Cipher(ffi::EVP_des_ede3_cfb8()) }
    }

    #[cfg(not(boringssl))]
    pub fn des_ede3_ofb() -> Cipher {
        unsafe { Cipher(ffi::EVP_des_ede3_ofb()) }
    }

    #[cfg(not(osslconf = "OPENSSL_NO_RC4"))]
    pub fn rc4() -> Cipher {
        unsafe { Cipher(ffi::EVP_rc4()) }
@@ -293,21 +307,81 @@ impl Cipher {
        unsafe { Cipher(ffi::EVP_camellia_128_cbc()) }
    }

    #[cfg(not(osslconf = "OPENSSL_NO_CAMELLIA"))]
    pub fn camellia_128_ecb() -> Cipher {
        unsafe { Cipher(ffi::EVP_camellia_128_ecb()) }
    }

    #[cfg(not(osslconf = "OPENSSL_NO_CAMELLIA"))]
    pub fn camellia_128_ofb() -> Cipher {
        unsafe { Cipher(ffi::EVP_camellia_128_ofb()) }
    }

    #[cfg(not(osslconf = "OPENSSL_NO_CAMELLIA"))]
    pub fn camellia_128_cfb128() -> Cipher {
        unsafe { Cipher(ffi::EVP_camellia_128_cfb128()) }
    }

    #[cfg(not(osslconf = "OPENSSL_NO_CAMELLIA"))]
    pub fn camellia_192_cbc() -> Cipher {
        unsafe { Cipher(ffi::EVP_camellia_192_cbc()) }
    }

    #[cfg(not(osslconf = "OPENSSL_NO_CAMELLIA"))]
    pub fn camellia_192_ecb() -> Cipher {
        unsafe { Cipher(ffi::EVP_camellia_192_ecb()) }
    }

    #[cfg(not(osslconf = "OPENSSL_NO_CAMELLIA"))]
    pub fn camellia_192_ofb() -> Cipher {
        unsafe { Cipher(ffi::EVP_camellia_192_ofb()) }
    }

    #[cfg(not(osslconf = "OPENSSL_NO_CAMELLIA"))]
    pub fn camellia_192_cfb128() -> Cipher {
        unsafe { Cipher(ffi::EVP_camellia_192_cfb128()) }
    }

    #[cfg(not(osslconf = "OPENSSL_NO_CAMELLIA"))]
    pub fn camellia_256_cbc() -> Cipher {
        unsafe { Cipher(ffi::EVP_camellia_256_cbc()) }
    }

    #[cfg(not(osslconf = "OPENSSL_NO_CAMELLIA"))]
    pub fn camellia_256_ecb() -> Cipher {
        unsafe { Cipher(ffi::EVP_camellia_256_ecb()) }
    }

    #[cfg(not(osslconf = "OPENSSL_NO_CAMELLIA"))]
    pub fn camellia_256_ofb() -> Cipher {
        unsafe { Cipher(ffi::EVP_camellia_256_ofb()) }
    }

    #[cfg(not(osslconf = "OPENSSL_NO_CAMELLIA"))]
    pub fn camellia_256_cfb128() -> Cipher {
        unsafe { Cipher(ffi::EVP_camellia_256_cfb128()) }
    }

    #[cfg(not(osslconf = "OPENSSL_NO_CAST"))]
    pub fn cast5_cbc() -> Cipher {
        unsafe { Cipher(ffi::EVP_cast5_cbc()) }
    }

    #[cfg(not(osslconf = "OPENSSL_NO_CAST"))]
    pub fn cast5_ecb() -> Cipher {
        unsafe { Cipher(ffi::EVP_cast5_ecb()) }
    }

    #[cfg(not(osslconf = "OPENSSL_NO_CAST"))]
    pub fn cast5_ofb() -> Cipher {
        unsafe { Cipher(ffi::EVP_cast5_ofb()) }
    }

    #[cfg(not(osslconf = "OPENSSL_NO_CAST"))]
    pub fn cast5_cfb64() -> Cipher {
        unsafe { Cipher(ffi::EVP_cast5_cfb64()) }
    }

    /// Requires OpenSSL 1.1.0 or newer.
    #[cfg(all(ossl110, not(osslconf = "OPENSSL_NO_CHACHA")))]
    pub fn chacha20() -> Cipher {
@@ -325,6 +399,21 @@ impl Cipher {
        unsafe { Cipher(ffi::EVP_idea_cbc()) }
    }

    #[cfg(not(osslconf = "OPENSSL_NO_IDEA"))]
    pub fn idea_ecb() -> Cipher {
        unsafe { Cipher(ffi::EVP_idea_ecb()) }
    }

    #[cfg(not(osslconf = "OPENSSL_NO_IDEA"))]
    pub fn idea_ofb() -> Cipher {
        unsafe { Cipher(ffi::EVP_idea_ofb()) }
    }

    #[cfg(not(osslconf = "OPENSSL_NO_IDEA"))]
    pub fn idea_cfb64() -> Cipher {
        unsafe { Cipher(ffi::EVP_idea_cfb64()) }
    }

    #[cfg(not(osslconf = "OPENSSL_NO_SEED"))]
    pub fn seed_cbc() -> Cipher {
        unsafe { Cipher(ffi::EVP_seed_cbc()) }