Move AES XTS support to a feature

This commit is contained in:
Steven Fackler 2014-11-16 13:57:05 -08:00
parent fa42ed9edc
commit 5258ce6ece
6 changed files with 13 additions and 2 deletions

View File

@ -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 ] &&

View File

@ -8,6 +8,7 @@ authors = ["Steven Fackler <sfackler@gmail.com"]
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"

View File

@ -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"

2
openssl-sys/src/lib.rs Executable file → Normal file
View File

@ -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;

View File

@ -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()
}

View File

@ -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