summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpeter@mysql.com <>2002-07-23 19:29:06 +0400
committerpeter@mysql.com <>2002-07-23 19:29:06 +0400
commit6579112ce2d91bf8cca729c23488a200ee012fbf (patch)
tree5256210763edbaa78f3e7c9bfa1d0043e5a2ff69
parent49a44d22f025400e8e789207f0a5180ba1af3d6a (diff)
downloadmariadb-git-6579112ce2d91bf8cca729c23488a200ee012fbf.tar.gz
Possibility to weaken AES key as Mark asked
-rw-r--r--mysys/my_aes.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/mysys/my_aes.c b/mysys/my_aes.c
index b67166f8367..10ef62ae0a5 100644
--- a/mysys/my_aes.c
+++ b/mysys/my_aes.c
@@ -74,6 +74,32 @@ static int my_aes_create_key(KEYINSTANCE *aes_key,
ptr= rkey; /* Just loop over tmp_key until we used all key */
*ptr^= *sptr;
}
+#ifdef AES_USE_KEY_BITS
+ /*
+ This block is intended to allow more weak encryption if application
+ build with libmysqld needs to correspond to export regulations
+ It should be never used in normal distribution as does not give
+ any speed improvement.
+ To get worse security define AES_USE_KEY_BITS to number of bits
+ you want key to be. It should be divisible by 8
+
+ WARNING: Changing this value results in changing of enryption for
+ all key lengths so altering this value will result in impossibility
+ to decrypt data encrypted with previous value
+ */
+#define AES_USE_KEY_BYTES (AES_USE_KEY_BITS/8)
+ /*
+ To get weaker key we use first AES_USE_KEY_BYTES bytes of created key
+ and cyclically copy them until we created all required key length
+ */
+ for (ptr= rkey+AES_USE_KEY_BYTES, sptr=rkey ; ptr < rkey_end;
+ ptr++,sptr++)
+ {
+ if (sptr == rkey+AES_USE_KEY_BYTES)
+ sptr=rkey;
+ *ptr=*sptr;
+ }
+#endif
if (direction == AES_DECRYPT)
aes_key->nr = rijndaelKeySetupDec(aes_key->rk, rkey, AES_KEY_LENGTH);
else