aboutsummaryrefslogtreecommitdiff
path: root/openssl/src
diff options
context:
space:
mode:
authorJethro Beekman <[email protected]>2015-06-14 21:56:23 -0700
committerJethro Beekman <[email protected]>2015-06-14 21:56:23 -0700
commitd2d20a83778b7c363322997332bf1ff5deef92d5 (patch)
treeee21c906e5c1109f9d590de602a555a9d82fa451 /openssl/src
parentPass symmetric crypto initialization vector as a slice (diff)
downloadrust-openssl-d2d20a83778b7c363322997332bf1ff5deef92d5.tar.xz
rust-openssl-d2d20a83778b7c363322997332bf1ff5deef92d5.zip
Use AsRef for backwards compatibility with passing IV as Vec
Diffstat (limited to 'openssl/src')
-rw-r--r--openssl/src/crypto/symm.rs9
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);