diff options
Diffstat (limited to 'openssl/src')
| -rw-r--r-- | openssl/src/crypto/symm.rs | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/openssl/src/crypto/symm.rs b/openssl/src/crypto/symm.rs index cb3cb55b..a1736804 100644 --- a/openssl/src/crypto/symm.rs +++ b/openssl/src/crypto/symm.rs @@ -1,4 +1,5 @@ use std::iter::repeat; +use std::convert::AsRef; use libc::{c_int}; use ffi; @@ -86,7 +87,7 @@ impl Crypter { /** * Initializes this crypter. */ - pub fn init(&self, mode: Mode, key: &[u8], iv: &[u8]) { + pub fn init<T: AsRef<[u8]>>(&self, mode: Mode, key: &[u8], iv: T) { unsafe { let mode = match mode { Mode::Encrypt => 1 as c_int, @@ -98,7 +99,7 @@ impl Crypter { self.ctx, self.evp, key.as_ptr(), - iv.as_ptr(), + iv.as_ref().as_ptr(), mode ); } @@ -157,7 +158,7 @@ impl Drop for Crypter { * Encrypts data, using the specified crypter type in encrypt mode with the * specified key and iv; returns the resulting (encrypted) data. */ -pub fn encrypt(t: Type, key: &[u8], iv: &[u8], data: &[u8]) -> Vec<u8> { +pub fn encrypt<T: AsRef<[u8]>>(t: Type, key: &[u8], iv: T, data: &[u8]) -> Vec<u8> { let c = Crypter::new(t); c.init(Mode::Encrypt, key, iv); let mut r = c.update(data); @@ -170,7 +171,7 @@ pub fn encrypt(t: Type, key: &[u8], iv: &[u8], data: &[u8]) -> Vec<u8> { * Decrypts data, using the specified crypter type in decrypt mode with the * specified key and iv; returns the resulting (decrypted) data. */ -pub fn decrypt(t: Type, key: &[u8], iv: &[u8], data: &[u8]) -> Vec<u8> { +pub fn decrypt<T: AsRef<[u8]>>(t: Type, key: &[u8], iv: T, data: &[u8]) -> Vec<u8> { let c = Crypter::new(t); c.init(Mode::Decrypt, key, iv); let mut r = c.update(data); |