[PATCH 2/4] rijndael: move AES-NI blocks before Padlock
Jussi Kivilinna
jussi.kivilinna at iki.fi
Mon Dec 1 20:12:47 CET 2014
* cipher/rijndael.c (do_setkey, rijndael_encrypt, _gcry_aes_cfb_enc)
(rijndael_decrypt, _gcry_aes_cfb_dec): Move USE_AESNI before
USE_PADLOCK.
(check_decryption_praparation) [USE_PADLOCK]: Move to...
(prepare_decryption) [USE_PADLOCK]: ...here.
--
Make order of AES-NI and Padlock #ifdefs consistent.
Signed-off-by: Jussi Kivilinna <jussi.kivilinna at iki.fi>
---
cipher/rijndael.c | 88 +++++++++++++++++++++++++++--------------------------
1 file changed, 45 insertions(+), 43 deletions(-)
diff --git a/cipher/rijndael.c b/cipher/rijndael.c
index 4a10a6b..8a76fad 100644
--- a/cipher/rijndael.c
+++ b/cipher/rijndael.c
@@ -180,6 +180,12 @@ do_setkey (RIJNDAEL_context *ctx, const byte *key, const unsigned keylen)
{
;
}
+#ifdef USE_AESNI
+ else if (hwfeatures & HWF_INTEL_AESNI)
+ {
+ ctx->use_aesni = 1;
+ }
+#endif
#ifdef USE_PADLOCK
else if (hwfeatures & HWF_PADLOCK_AES)
{
@@ -187,12 +193,6 @@ do_setkey (RIJNDAEL_context *ctx, const byte *key, const unsigned keylen)
memcpy (ctx->padlockkey, key, keylen);
}
#endif
-#ifdef USE_AESNI
- else if (hwfeatures & HWF_INTEL_AESNI)
- {
- ctx->use_aesni = 1;
- }
-#endif
}
else if ( keylen == 192/8 )
{
@@ -348,13 +348,21 @@ prepare_decryption( RIJNDAEL_context *ctx )
{
int r;
+ if (0)
+ ;
#ifdef USE_AESNI
- if (ctx->use_aesni)
+ else if (ctx->use_aesni)
{
_gcry_aes_aesni_prepare_decryption (ctx);
}
- else
#endif /*USE_AESNI*/
+#ifdef USE_PADLOCK
+ else if (ctx->use_padlock)
+ {
+ /* Padlock does not need decryption subkeys. */
+ }
+#endif /*USE_PADLOCK*/
+ else
{
union
{
@@ -587,13 +595,6 @@ rijndael_encrypt (void *context, byte *b, const byte *a)
if (0)
;
-#ifdef USE_PADLOCK
- else if (ctx->use_padlock)
- {
- do_padlock (ctx, 0, b, a);
- burn_stack = (48 + 15 /* possible padding for alignment */);
- }
-#endif /*USE_PADLOCK*/
#ifdef USE_AESNI
else if (ctx->use_aesni)
{
@@ -601,6 +602,13 @@ rijndael_encrypt (void *context, byte *b, const byte *a)
burn_stack = 0;
}
#endif /*USE_AESNI*/
+#ifdef USE_PADLOCK
+ else if (ctx->use_padlock)
+ {
+ do_padlock (ctx, 0, b, a);
+ burn_stack = (48 + 15 /* possible padding for alignment */);
+ }
+#endif /*USE_PADLOCK*/
else
{
do_encrypt (ctx, b, a);
@@ -627,6 +635,13 @@ _gcry_aes_cfb_enc (void *context, unsigned char *iv,
if (0)
;
+#ifdef USE_AESNI
+ else if (ctx->use_aesni)
+ {
+ _gcry_aes_aesni_cfb_enc (ctx, outbuf, inbuf, iv, nblocks);
+ burn_depth = 0;
+ }
+#endif /*USE_AESNI*/
#ifdef USE_PADLOCK
else if (ctx->use_padlock)
{
@@ -642,13 +657,6 @@ _gcry_aes_cfb_enc (void *context, unsigned char *iv,
}
}
#endif /*USE_PADLOCK*/
-#ifdef USE_AESNI
- else if (ctx->use_aesni)
- {
- _gcry_aes_aesni_cfb_enc (ctx, outbuf, inbuf, iv, nblocks);
- burn_depth = 0;
- }
-#endif /*USE_AESNI*/
else
{
for ( ;nblocks; nblocks-- )
@@ -909,13 +917,7 @@ do_decrypt (RIJNDAEL_context *ctx, byte *bx, const byte *ax)
static inline void
check_decryption_preparation (RIJNDAEL_context *ctx)
{
- if (0)
- ;
-#ifdef USE_PADLOCK
- else if (ctx->use_padlock)
- { /* Padlock does not need decryption subkeys. */ }
-#endif /*USE_PADLOCK*/
- else if ( !ctx->decryption_prepared )
+ if ( !ctx->decryption_prepared )
{
prepare_decryption ( ctx );
ctx->decryption_prepared = 1;
@@ -933,13 +935,6 @@ rijndael_decrypt (void *context, byte *b, const byte *a)
if (0)
;
-#ifdef USE_PADLOCK
- else if (ctx->use_padlock)
- {
- do_padlock (ctx, 1, b, a);
- burn_stack = (48 + 2*sizeof(int) /* FIXME */);
- }
-#endif /*USE_PADLOCK*/
#ifdef USE_AESNI
else if (ctx->use_aesni)
{
@@ -947,6 +942,13 @@ rijndael_decrypt (void *context, byte *b, const byte *a)
burn_stack = 0;
}
#endif /*USE_AESNI*/
+#ifdef USE_PADLOCK
+ else if (ctx->use_padlock)
+ {
+ do_padlock (ctx, 1, b, a);
+ burn_stack = (48 + 2*sizeof(int) /* FIXME */);
+ }
+#endif /*USE_PADLOCK*/
else
{
do_decrypt (ctx, b, a);
@@ -973,6 +975,13 @@ _gcry_aes_cfb_dec (void *context, unsigned char *iv,
if (0)
;
+#ifdef USE_AESNI
+ else if (ctx->use_aesni)
+ {
+ _gcry_aes_aesni_cfb_dec (ctx, outbuf, inbuf, iv, nblocks);
+ burn_depth = 0;
+ }
+#endif /*USE_AESNI*/
#ifdef USE_PADLOCK
else if (ctx->use_padlock)
{
@@ -986,13 +995,6 @@ _gcry_aes_cfb_dec (void *context, unsigned char *iv,
}
}
#endif /*USE_PADLOCK*/
-#ifdef USE_AESNI
- else if (ctx->use_aesni)
- {
- _gcry_aes_aesni_cfb_dec (ctx, outbuf, inbuf, iv, nblocks);
- burn_depth = 0;
- }
-#endif /*USE_AESNI*/
else
{
for ( ;nblocks; nblocks-- )
More information about the Gcrypt-devel
mailing list