Move AES XTS support to a feature
This commit is contained in:
parent
fa42ed9edc
commit
5258ce6ece
|
|
@ -13,7 +13,7 @@ before_script:
|
||||||
script:
|
script:
|
||||||
- cargo build --features "$FEATURES"
|
- cargo build --features "$FEATURES"
|
||||||
- cargo test --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: |
|
after_success: |
|
||||||
[ $TRAVIS_BRANCH = master ] &&
|
[ $TRAVIS_BRANCH = master ] &&
|
||||||
[ $TRAVIS_PULL_REQUEST = false ] &&
|
[ $TRAVIS_PULL_REQUEST = false ] &&
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ authors = ["Steven Fackler <sfackler@gmail.com"]
|
||||||
tlsv1_2 = ["openssl-sys/tlsv1_2"]
|
tlsv1_2 = ["openssl-sys/tlsv1_2"]
|
||||||
tlsv1_1 = ["openssl-sys/tlsv1_1"]
|
tlsv1_1 = ["openssl-sys/tlsv1_1"]
|
||||||
sslv2 = ["openssl-sys/sslv2"]
|
sslv2 = ["openssl-sys/sslv2"]
|
||||||
|
aes_xts = ["openssl-sys/aes_xts"]
|
||||||
|
|
||||||
[target.i686-apple-darwin.dependencies.openssl-sys]
|
[target.i686-apple-darwin.dependencies.openssl-sys]
|
||||||
path = "openssl-sys"
|
path = "openssl-sys"
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ build = "src/build.rs"
|
||||||
tlsv1_2 = []
|
tlsv1_2 = []
|
||||||
tlsv1_1 = []
|
tlsv1_1 = []
|
||||||
sslv2 = []
|
sslv2 = []
|
||||||
|
aes_xts = []
|
||||||
|
|
||||||
[build-dependencies.pkg-config]
|
[build-dependencies.pkg-config]
|
||||||
git = "https://github.com/alexcrichton/pkg-config-rs"
|
git = "https://github.com/alexcrichton/pkg-config-rs"
|
||||||
|
|
|
||||||
|
|
@ -316,11 +316,13 @@ extern "C" {
|
||||||
|
|
||||||
pub fn EVP_aes_128_cbc() -> *const EVP_CIPHER;
|
pub fn EVP_aes_128_cbc() -> *const EVP_CIPHER;
|
||||||
pub fn EVP_aes_128_ecb() -> *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;
|
pub fn EVP_aes_128_xts() -> *const EVP_CIPHER;
|
||||||
// fn EVP_aes_128_ctr() -> EVP_CIPHER;
|
// fn EVP_aes_128_ctr() -> EVP_CIPHER;
|
||||||
// fn EVP_aes_128_gcm() -> EVP_CIPHER;
|
// fn EVP_aes_128_gcm() -> EVP_CIPHER;
|
||||||
pub fn EVP_aes_256_cbc() -> *const EVP_CIPHER;
|
pub fn EVP_aes_256_cbc() -> *const EVP_CIPHER;
|
||||||
pub fn EVP_aes_256_ecb() -> *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;
|
pub fn EVP_aes_256_xts() -> *const EVP_CIPHER;
|
||||||
// fn EVP_aes_256_ctr() -> EVP_CIPHER;
|
// fn EVP_aes_256_ctr() -> EVP_CIPHER;
|
||||||
// fn EVP_aes_256_gcm() -> EVP_CIPHER;
|
// fn EVP_aes_256_gcm() -> EVP_CIPHER;
|
||||||
|
|
|
||||||
|
|
@ -122,7 +122,7 @@ mod tests {
|
||||||
|
|
||||||
pub fn hash_writer(t: super::HashType, data: &[u8]) -> Vec<u8> {
|
pub fn hash_writer(t: super::HashType, data: &[u8]) -> Vec<u8> {
|
||||||
let mut h = super::Hasher::new(t);
|
let mut h = super::Hasher::new(t);
|
||||||
h.write(data);
|
h.write(data).unwrap();
|
||||||
h.finalize()
|
h.finalize()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,12 +11,16 @@ pub enum Mode {
|
||||||
pub enum Type {
|
pub enum Type {
|
||||||
AES_128_ECB,
|
AES_128_ECB,
|
||||||
AES_128_CBC,
|
AES_128_CBC,
|
||||||
|
/// Requires the `aes_xts` feature
|
||||||
|
#[cfg(feature = "aes_xts")]
|
||||||
AES_128_XTS,
|
AES_128_XTS,
|
||||||
// AES_128_CTR,
|
// AES_128_CTR,
|
||||||
//AES_128_GCM,
|
//AES_128_GCM,
|
||||||
|
|
||||||
AES_256_ECB,
|
AES_256_ECB,
|
||||||
AES_256_CBC,
|
AES_256_CBC,
|
||||||
|
/// Requires the `aes_xts` feature
|
||||||
|
#[cfg(feature = "aes_xts")]
|
||||||
AES_256_XTS,
|
AES_256_XTS,
|
||||||
// AES_256_CTR,
|
// AES_256_CTR,
|
||||||
//AES_256_GCM,
|
//AES_256_GCM,
|
||||||
|
|
@ -29,12 +33,14 @@ fn evpc(t: Type) -> (*const ffi::EVP_CIPHER, uint, uint) {
|
||||||
match t {
|
match t {
|
||||||
AES_128_ECB => (ffi::EVP_aes_128_ecb(), 16u, 16u),
|
AES_128_ECB => (ffi::EVP_aes_128_ecb(), 16u, 16u),
|
||||||
AES_128_CBC => (ffi::EVP_aes_128_cbc(), 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_XTS => (ffi::EVP_aes_128_xts(), 32u, 16u),
|
||||||
// AES_128_CTR => (EVP_aes_128_ctr(), 16u, 0u),
|
// AES_128_CTR => (EVP_aes_128_ctr(), 16u, 0u),
|
||||||
//AES_128_GCM => (EVP_aes_128_gcm(), 16u, 16u),
|
//AES_128_GCM => (EVP_aes_128_gcm(), 16u, 16u),
|
||||||
|
|
||||||
AES_256_ECB => (ffi::EVP_aes_256_ecb(), 32u, 16u),
|
AES_256_ECB => (ffi::EVP_aes_256_ecb(), 32u, 16u),
|
||||||
AES_256_CBC => (ffi::EVP_aes_256_cbc(), 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_XTS => (ffi::EVP_aes_256_xts(), 64u, 16u),
|
||||||
// AES_256_CTR => (EVP_aes_256_ctr(), 32u, 0u),
|
// AES_256_CTR => (EVP_aes_256_ctr(), 32u, 0u),
|
||||||
//AES_256_GCM => (EVP_aes_256_gcm(), 32u, 16u),
|
//AES_256_GCM => (EVP_aes_256_gcm(), 32u, 16u),
|
||||||
|
|
@ -268,6 +274,7 @@ mod tests {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
#[cfg(feature = "aes_xts")]
|
||||||
fn test_aes256_xts() {
|
fn test_aes256_xts() {
|
||||||
// Test case 174 from
|
// Test case 174 from
|
||||||
// http://csrc.nist.gov/groups/STM/cavp/documents/aes/XTSTestVectors.zip
|
// http://csrc.nist.gov/groups/STM/cavp/documents/aes/XTSTestVectors.zip
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue