diff options
| author | Charlie Ozinga <[email protected]> | 2016-04-14 03:44:43 -0600 |
|---|---|---|
| committer | Charlie Ozinga <[email protected]> | 2016-04-14 03:44:43 -0600 |
| commit | 2062d48dd2fa5645889f2fda06c84de7bf546806 (patch) | |
| tree | 04e974455e4a753cb304f6a593f6def883c4c443 /openssl/src | |
| parent | Update for nightly changes (diff) | |
| download | rust-openssl-2062d48dd2fa5645889f2fda06c84de7bf546806.tar.xz rust-openssl-2062d48dd2fa5645889f2fda06c84de7bf546806.zip | |
Add 1DES symm ciphers (des-cbc, des-ecb, des-cfb, des-ofb)
1DES is well and truly dead for actual sensitive information, (its
keysize is too small for modern purposes), but it can still find use in
backwards compatiblity or educational applications.
Diffstat (limited to 'openssl/src')
| -rw-r--r-- | openssl/src/crypto/symm.rs | 49 | ||||
| -rw-r--r-- | openssl/src/crypto/symm_internal.rs | 5 |
2 files changed, 54 insertions, 0 deletions
diff --git a/openssl/src/crypto/symm.rs b/openssl/src/crypto/symm.rs index c0e845dc..dfba7053 100644 --- a/openssl/src/crypto/symm.rs +++ b/openssl/src/crypto/symm.rs @@ -37,6 +37,11 @@ pub enum Type { AES_256_CFB128, AES_256_CFB8, + DES_CBC, + DES_ECB, + DES_CFB, + DES_OFB, + RC4_128, } @@ -362,4 +367,48 @@ mod tests { cipher_test(super::Type::AES_256_CFB8, pt, ct, key, iv); } + + #[test] + fn test_des_cbc() { + + let pt = "54686973206973206120746573742e"; + let ct = "6f2867cfefda048a4046ef7e556c7132"; + let key = "7cb66337f3d3c0fe"; + let iv = "0001020304050607"; + + cipher_test(super::Type::DES_CBC, pt, ct, key, iv); + } + + #[test] + fn test_des_ecb() { + + let pt = "54686973206973206120746573742e"; + let ct = "0050ab8aecec758843fe157b4dde938c"; + let key = "7cb66337f3d3c0fe"; + let iv = "0001020304050607"; + + cipher_test(super::Type::DES_ECB, pt, ct, key, iv); + } + + #[test] + fn test_des_cfb() { + + let pt = "54686973206973206120746573742e"; + let ct = "10577dc484ebfe7679121dff761797"; + let key = "7cb66337f3d3c0fe"; + let iv = "0001020304050607"; + + cipher_test(super::Type::DES_CFB, pt, ct, key, iv); + } + + #[test] + fn test_des_ofb() { + + let pt = "54686973206973206120746573742e"; + let ct = "10577dc484ebfe76be391c7b8a6b9d"; + let key = "7cb66337f3d3c0fe"; + let iv = "0001020304050607"; + + cipher_test(super::Type::DES_OFB, pt, ct, key, iv); + } } diff --git a/openssl/src/crypto/symm_internal.rs b/openssl/src/crypto/symm_internal.rs index 5c457f3f..37b9025c 100644 --- a/openssl/src/crypto/symm_internal.rs +++ b/openssl/src/crypto/symm_internal.rs @@ -26,6 +26,11 @@ pub fn evpc(t: symm::Type) -> (*const ffi::EVP_CIPHER, u32, u32) { symm::Type::AES_256_CFB128 => (ffi::EVP_aes_256_cfb128(), 32, 16), symm::Type::AES_256_CFB8 => (ffi::EVP_aes_256_cfb8(), 32, 16), + symm::Type::DES_CBC => (ffi::EVP_des_cbc(), 8, 8), + symm::Type::DES_ECB => (ffi::EVP_des_ecb(), 8, 8), + symm::Type::DES_CFB => (ffi::EVP_des_cfb(), 8, 8), + symm::Type::DES_OFB => (ffi::EVP_des_ofb(), 8, 8), + symm::Type::RC4_128 => (ffi::EVP_rc4(), 16, 0), } } |