aes/asm/bsaes-armv7: fix kernel-side XTS and harmonize with Linux.
authorAndy Polyakov <appro@openssl.org>
Tue, 24 Feb 2015 09:07:22 +0000 (10:07 +0100)
committerAndy Polyakov <appro@openssl.org>
Tue, 24 Feb 2015 09:08:57 +0000 (10:08 +0100)
XTS bug spotted and fix suggested by Adrian Kotelba.

Reviewed-by: Tim Hudson <tjh@openssl.org>
crypto/aes/asm/bsaes-armv7.pl

index fcc81d1a493374b3592c253ddd51cce3dd2fe888..a4d3856e7d2477ec6379f1f10a9121e32f36a974 100644 (file)
@@ -702,7 +702,7 @@ $code.=<<___;
 # define BSAES_ASM_EXTENDED_KEY
 # define XTS_CHAIN_TWEAK
 # define __ARM_ARCH__ __LINUX_ARM_ARCH__
-# define __ARM_MAX_ARCH__ __LINUX_ARM_ARCH__
+# define __ARM_MAX_ARCH__ 7
 #endif
 
 #ifdef __thumb__
@@ -2078,9 +2078,11 @@ bsaes_xts_decrypt:
        vld1.8  {@XMM[8]}, [r0]                 @ initial tweak
        adr     $magic, .Lxts_magic
 
+#ifndef        XTS_CHAIN_TWEAK
        tst     $len, #0xf                      @ if not multiple of 16
        it      ne                              @ Thumb2 thing, sanity check in ARM
        subne   $len, #0x10                     @ subtract another 16 bytes
+#endif
        subs    $len, #0x80
 
        blo     .Lxts_dec_short