summaryrefslogtreecommitdiffstats
path: root/crypto/evp
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>2011-11-15 12:19:56 +0000
committerAndy Polyakov <appro@openssl.org>2011-11-15 12:19:56 +0000
commite6ccc6ed70ca66c12737fbd9d35dfa6e588883aa (patch)
tree6db98012f65d99b243f9f621ce906f695b2a0b9f /crypto/evp
parente959a01faca639958eb22c5705ac221f27ebeaa6 (diff)
Configure, e_aes.c: allow for XTS assembler implementation [from HEAD].
Diffstat (limited to 'crypto/evp')
-rw-r--r--crypto/evp/e_aes.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/crypto/evp/e_aes.c b/crypto/evp/e_aes.c
index 0c6ef73bb1..1e4af0cb75 100644
--- a/crypto/evp/e_aes.c
+++ b/crypto/evp/e_aes.c
@@ -144,6 +144,14 @@ void AES_ctr32_encrypt(const unsigned char *in, unsigned char *out,
size_t blocks, const AES_KEY *key,
const unsigned char ivec[AES_BLOCK_SIZE]);
#endif
+#ifdef AES_XTS_ASM
+void AES_xts_encrypt(const char *inp,char *out,size_t len,
+ const AES_KEY *key1, const AES_KEY *key2,
+ const unsigned char iv[16]);
+void AES_xts_decrypt(const char *inp,char *out,size_t len,
+ const AES_KEY *key1, const AES_KEY *key2,
+ const unsigned char iv[16]);
+#endif
#if defined(AES_ASM) && !defined(I386_ONLY) && ( \
((defined(__i386) || defined(__i386__) || \
@@ -1050,7 +1058,11 @@ static int aes_xts_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
if (key) do
{
+#ifdef AES_XTS_ASM
+ xctx->stream = enc ? AES_xts_encrypt : AES_xts_decrypt;
+#else
xctx->stream = NULL;
+#endif
/* key_len is two AES keys */
#ifdef BSAES_CAPABLE
if (BSAES_CAPABLE)