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.
This commit is contained in:
parent
b94ea8598c
commit
2062d48dd2
|
|
@ -527,6 +527,11 @@ extern "C" {
|
|||
pub fn EVP_aes_256_cfb8() -> *const EVP_CIPHER;
|
||||
pub fn EVP_rc4() -> *const EVP_CIPHER;
|
||||
|
||||
pub fn EVP_des_cbc() -> *const EVP_CIPHER;
|
||||
pub fn EVP_des_ecb() -> *const EVP_CIPHER;
|
||||
pub fn EVP_des_cfb() -> *const EVP_CIPHER;
|
||||
pub fn EVP_des_ofb() -> *const EVP_CIPHER;
|
||||
|
||||
pub fn EVP_BytesToKey(typ: *const EVP_CIPHER, md: *const EVP_MD,
|
||||
salt: *const u8, data: *const u8, datalen: c_int,
|
||||
count: c_int, key: *mut u8, iv: *mut u8) -> c_int;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue