aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven Fackler <[email protected]>2014-11-16 13:57:05 -0800
committerSteven Fackler <[email protected]>2014-11-16 14:01:24 -0800
commit5258ce6ece505c6c9b40310bcff0ef55a3073300 (patch)
treeeab32d5ca0322fb083a1f18d4ad9321ee367d0ff
parentMerge pull request #96 from coyotebush/xts (diff)
downloadrust-openssl-5258ce6ece505c6c9b40310bcff0ef55a3073300.tar.xz
rust-openssl-5258ce6ece505c6c9b40310bcff0ef55a3073300.zip
Move AES XTS support to a feature
-rw-r--r--.travis.yml2
-rw-r--r--Cargo.toml1
-rw-r--r--openssl-sys/Cargo.toml1
-rw-r--r--[-rwxr-xr-x]openssl-sys/src/lib.rs2
-rw-r--r--src/crypto/hash.rs2
-rw-r--r--src/crypto/symm.rs7
6 files changed, 13 insertions, 2 deletions
diff --git a/.travis.yml b/.travis.yml
index ccab34c6..831a77d6 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -13,7 +13,7 @@ before_script:
script:
- cargo build --features "$FEATURES"
- cargo test --features "$FEATURES"
- - cargo doc --features "sslv2 tlsv1_1 tlsv1_2"
+ - cargo doc --features "sslv2 tlsv1_1 tlsv1_2 aes_xtc"
after_success: |
[ $TRAVIS_BRANCH = master ] &&
[ $TRAVIS_PULL_REQUEST = false ] &&
diff --git a/Cargo.toml b/Cargo.toml
index e278c264..ad54f049 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -8,6 +8,7 @@ authors = ["Steven Fackler <[email protected]"]
tlsv1_2 = ["openssl-sys/tlsv1_2"]
tlsv1_1 = ["openssl-sys/tlsv1_1"]
sslv2 = ["openssl-sys/sslv2"]
+aes_xts = ["openssl-sys/aes_xts"]
[target.i686-apple-darwin.dependencies.openssl-sys]
path = "openssl-sys"
diff --git a/openssl-sys/Cargo.toml b/openssl-sys/Cargo.toml
index 370ec13a..27d8879f 100644
--- a/openssl-sys/Cargo.toml
+++ b/openssl-sys/Cargo.toml
@@ -10,6 +10,7 @@ build = "src/build.rs"
tlsv1_2 = []
tlsv1_1 = []
sslv2 = []
+aes_xts = []
[build-dependencies.pkg-config]
git = "https://github.com/alexcrichton/pkg-config-rs"
diff --git a/openssl-sys/src/lib.rs b/openssl-sys/src/lib.rs
index 8d79b41b..377ae8e5 100755..100644
--- a/openssl-sys/src/lib.rs
+++ b/openssl-sys/src/lib.rs
@@ -316,11 +316,13 @@ extern "C" {
pub fn EVP_aes_128_cbc() -> *const EVP_CIPHER;
pub fn EVP_aes_128_ecb() -> *const EVP_CIPHER;
+ #[cfg(feature = "aes_xts")]
pub fn EVP_aes_128_xts() -> *const EVP_CIPHER;
// fn EVP_aes_128_ctr() -> EVP_CIPHER;
// fn EVP_aes_128_gcm() -> EVP_CIPHER;
pub fn EVP_aes_256_cbc() -> *const EVP_CIPHER;
pub fn EVP_aes_256_ecb() -> *const EVP_CIPHER;
+ #[cfg(feature = "aes_xts")]
pub fn EVP_aes_256_xts() -> *const EVP_CIPHER;
// fn EVP_aes_256_ctr() -> EVP_CIPHER;
// fn EVP_aes_256_gcm() -> EVP_CIPHER;
diff --git a/src/crypto/hash.rs b/src/crypto/hash.rs
index b00dfba8..14dd34b5 100644
--- a/src/crypto/hash.rs
+++ b/src/crypto/hash.rs
@@ -122,7 +122,7 @@ mod tests {
pub fn hash_writer(t: super::HashType, data: &[u8]) -> Vec<u8> {
let mut h = super::Hasher::new(t);
- h.write(data);
+ h.write(data).unwrap();
h.finalize()
}
diff --git a/src/crypto/symm.rs b/src/crypto/symm.rs
index 6ad39933..6af4be6c 100644
--- a/src/crypto/symm.rs
+++ b/src/crypto/symm.rs
@@ -11,12 +11,16 @@ pub enum Mode {
pub enum Type {
AES_128_ECB,
AES_128_CBC,
+ /// Requires the `aes_xts` feature
+ #[cfg(feature = "aes_xts")]
AES_128_XTS,
// AES_128_CTR,
//AES_128_GCM,
AES_256_ECB,
AES_256_CBC,
+ /// Requires the `aes_xts` feature
+ #[cfg(feature = "aes_xts")]
AES_256_XTS,
// AES_256_CTR,
//AES_256_GCM,
@@ -29,12 +33,14 @@ fn evpc(t: Type) -> (*const ffi::EVP_CIPHER, uint, uint) {
match t {
AES_128_ECB => (ffi::EVP_aes_128_ecb(), 16u, 16u),
AES_128_CBC => (ffi::EVP_aes_128_cbc(), 16u, 16u),
+ #[cfg(feature = "aes_xts")]
AES_128_XTS => (ffi::EVP_aes_128_xts(), 32u, 16u),
// AES_128_CTR => (EVP_aes_128_ctr(), 16u, 0u),
//AES_128_GCM => (EVP_aes_128_gcm(), 16u, 16u),
AES_256_ECB => (ffi::EVP_aes_256_ecb(), 32u, 16u),
AES_256_CBC => (ffi::EVP_aes_256_cbc(), 32u, 16u),
+ #[cfg(feature = "aes_xts")]
AES_256_XTS => (ffi::EVP_aes_256_xts(), 64u, 16u),
// AES_256_CTR => (EVP_aes_256_ctr(), 32u, 0u),
//AES_256_GCM => (EVP_aes_256_gcm(), 32u, 16u),
@@ -268,6 +274,7 @@ mod tests {
}
#[test]
+ #[cfg(feature = "aes_xts")]
fn test_aes256_xts() {
// Test case 174 from
// http://csrc.nist.gov/groups/STM/cavp/documents/aes/XTSTestVectors.zip