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>(&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 { +pub fn encrypt>(t: Type, key: &[u8], iv: T, data: &[u8]) -> Vec { 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 { * 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 { +pub fn decrypt>(t: Type, key: &[u8], iv: T, data: &[u8]) -> Vec { let c = Crypter::new(t); c.init(Mode::Decrypt, key, iv); let mut r = c.update(data);