diff options
Diffstat (limited to 'src/crypto/symm.rs')
| -rw-r--r-- | src/crypto/symm.rs | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/src/crypto/symm.rs b/src/crypto/symm.rs index 93286498..6bba7267 100644 --- a/src/crypto/symm.rs +++ b/src/crypto/symm.rs @@ -174,9 +174,10 @@ impl Drop for Crypter { pub fn encrypt(t: Type, key: &[u8], iv: Vec<u8>, data: &[u8]) -> Vec<u8> { let c = Crypter::new(t); c.init(Encrypt, key, iv); - let r = c.update(data); + let mut r = c.update(data); let rest = c.final(); - r.append(rest.as_slice()) + r.extend(rest.into_iter()); + r } /** @@ -186,9 +187,10 @@ pub fn encrypt(t: Type, key: &[u8], iv: Vec<u8>, data: &[u8]) -> Vec<u8> { pub fn decrypt(t: Type, key: &[u8], iv: Vec<u8>, data: &[u8]) -> Vec<u8> { let c = Crypter::new(t); c.init(Decrypt, key, iv); - let r = c.update(data); + let mut r = c.update(data); let rest = c.final(); - r.append(rest.as_slice()) + r.extend(rest.into_iter()); + r } #[cfg(test)] @@ -213,11 +215,13 @@ mod tests { let c = super::Crypter::new(super::AES_256_ECB); c.init(super::Encrypt, k0.as_slice(), vec![]); c.pad(false); - let r0 = c.update(p0.as_slice()).append(c.final().as_slice()); + let mut r0 = c.update(p0.as_slice()); + r0.extend(c.final().into_iter()); assert!(r0 == c0); c.init(super::Decrypt, k0.as_slice(), vec![]); c.pad(false); - let p1 = c.update(r0.as_slice()).append(c.final().as_slice()); + let mut p1 = c.update(r0.as_slice()); + p1.extend(c.final().into_iter()); assert!(p1 == p0); } @@ -227,8 +231,9 @@ mod tests { let cipher = super::Crypter::new(ciphertype); cipher.init(super::Encrypt, key.from_hex().unwrap().as_slice(), iv.from_hex().unwrap()); - let expected = Vec::from_slice(ct.from_hex().unwrap().as_slice()); - let computed = cipher.update(pt.from_hex().unwrap().as_slice()).append(cipher.final().as_slice()); + let expected = ct.from_hex().unwrap().as_slice().to_vec(); + let mut computed = cipher.update(pt.from_hex().unwrap().as_slice()); + computed.extend(cipher.final().into_iter()); if computed != expected { println!("Computed: {}", computed.as_slice().to_hex()); |