131 lines
4.0 KiB
SQL
131 lines
4.0 KiB
SQL
#
|
|
# Parameters:
|
|
#
|
|
# $block_mode
|
|
|
|
|
|
--echo #### $block_mode
|
|
|
|
SET @IVA=REPEAT('a', 16);
|
|
SET @IVB=REPEAT('b', 16);
|
|
SET @KEY1=REPEAT('c', 16);
|
|
SET @KEY2=REPEAT('d', 16);
|
|
|
|
|
|
--echo #### 128-$block_mode
|
|
|
|
eval SET SESSION block_encryption_mode="aes-128-$block_mode";
|
|
|
|
--echo # must throw an error without an IV
|
|
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
|
SELECT AES_ENCRYPT('a', @KEY1);
|
|
|
|
--echo block mode dependent. Must be non-0 and non-null
|
|
SELECT LENGTH(AES_ENCRYPT('a', @KEY1, @IVA));
|
|
|
|
--echo block mode dependent
|
|
SELECT TO_BASE64(AES_ENCRYPT('a', @KEY1, @IVA));
|
|
|
|
--echo # must be equal
|
|
SELECT 'a' = AES_DECRYPT(AES_ENCRYPT('a', @KEY1, @IVA), @KEY1, @IVA);
|
|
|
|
--echo # must not be equal
|
|
SELECT 'a' = AES_DECRYPT(AES_ENCRYPT('a',@KEY1, @IVA), @KEY1, @IVB);
|
|
SELECT 'a' = AES_DECRYPT(AES_ENCRYPT('a',@KEY1, @IVA), @KEY2, @IVA);
|
|
SELECT 'a' = AES_DECRYPT(AES_ENCRYPT('b',@KEY1, @IVA), @KEY1, @IVA);
|
|
|
|
|
|
--echo #### 192-$block_mode
|
|
|
|
eval SET SESSION block_encryption_mode="aes-192-$block_mode";
|
|
|
|
--echo # must throw an error without an IV
|
|
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
|
SELECT AES_ENCRYPT('a', @KEY1);
|
|
|
|
--echo # must be equal
|
|
SELECT 'a' = AES_DECRYPT(AES_ENCRYPT('a',@KEY1, @IVA), @KEY1, @IVA);
|
|
|
|
--echo # must not be equal
|
|
SELECT 'a' = AES_DECRYPT(AES_ENCRYPT('a',@KEY1, @IVA), @KEY1, @IVB);
|
|
SELECT 'a' = AES_DECRYPT(AES_ENCRYPT('a',@KEY1, @IVA), @KEY2, @IVA);
|
|
SELECT 'a' = AES_DECRYPT(AES_ENCRYPT('b',@KEY1, @IVA), @KEY1, @IVA);
|
|
|
|
|
|
--echo #### 256-$block_mode
|
|
|
|
eval SET SESSION block_encryption_mode="aes-256-$block_mode";
|
|
|
|
--echo # must throw an error without an IV
|
|
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
|
SELECT AES_ENCRYPT('a', @KEY1);
|
|
|
|
--echo # must be equal
|
|
SELECT 'a' = AES_DECRYPT(AES_ENCRYPT('a',@KEY1, @IVA), @KEY1, @IVA);
|
|
|
|
--echo # must not be equal
|
|
SELECT 'a' = AES_DECRYPT(AES_ENCRYPT('a',@KEY1, @IVA), @KEY1, @IVB);
|
|
SELECT 'a' = AES_DECRYPT(AES_ENCRYPT('a',@KEY1, @IVA), @KEY2, @IVA);
|
|
SELECT 'a' = AES_DECRYPT(AES_ENCRYPT('b',@KEY1, @IVA), @KEY1, @IVA);
|
|
|
|
SET SESSION block_encryption_mode=DEFAULT;
|
|
|
|
|
|
--echo #### 128, 192 and 256 bit $block_mode
|
|
|
|
|
|
eval CREATE TABLE aes_$block_mode(a VARBINARY(128), b128 VARBINARY(144),
|
|
b192 VARBINARY(144), b256 BINARY(144));
|
|
eval INSERT INTO aes_$block_mode (a) VALUES (REPEAT('a', 128));
|
|
eval INSERT INTO aes_$block_mode (a) VALUES (REPEAT(0x00313233, 32));
|
|
|
|
eval SET SESSION block_encryption_mode="aes-128-$block_mode";
|
|
eval UPDATE aes_$block_mode SET b128 = AES_ENCRYPT(a, @KEY1, @IVA);
|
|
|
|
eval SET SESSION block_encryption_mode="aes-192-$block_mode";
|
|
eval UPDATE aes_$block_mode SET b192 = AES_ENCRYPT(a, @KEY1, @IVA);
|
|
|
|
eval SET SESSION block_encryption_mode="aes-256-$block_mode";
|
|
eval UPDATE aes_$block_mode SET b256 = AES_ENCRYPT(a, @KEY1, @IVA);
|
|
|
|
--echo # must return 0
|
|
eval SELECT COUNT(*) FROM aes_$block_mode WHERE b128 = b192 OR B192 = b256 OR b128=b256;
|
|
|
|
eval SET SESSION block_encryption_mode="aes-256-$block_mode";
|
|
|
|
--echo # must return 2
|
|
eval SELECT COUNT(*) FROM aes_$block_mode WHERE a = AES_DECRYPT(b256, @KEY1, @IVA);
|
|
|
|
--echo # must return 0
|
|
eval SELECT COUNT(*) FROM aes_$block_mode WHERE a = AES_DECRYPT(b256, 'b', @IVA);
|
|
|
|
--echo # must return 0
|
|
eval SELECT COUNT(*) FROM aes_$block_mode WHERE a = AES_DECRYPT(b256, @KEY1, @IVB);
|
|
|
|
eval SET SESSION block_encryption_mode="aes-192-$block_mode";
|
|
|
|
--echo # must return 2
|
|
eval SELECT COUNT(*) FROM aes_$block_mode WHERE a = AES_DECRYPT(b192, @KEY1, @IVA);
|
|
|
|
--echo # must return 0
|
|
eval SELECT COUNT(*) FROM aes_$block_mode WHERE a = AES_DECRYPT(b192, @KEY2, @IVA);
|
|
|
|
--echo # must return 0
|
|
eval SELECT COUNT(*) FROM aes_$block_mode WHERE a = AES_DECRYPT(b256, @KEY1, @IVB);
|
|
|
|
eval SET SESSION block_encryption_mode="aes-128-$block_mode";
|
|
|
|
--echo # must return 2
|
|
eval SELECT COUNT(*) FROM aes_$block_mode WHERE a = AES_DECRYPT(b128, @KEY1, @IVA);
|
|
|
|
--echo # must return 0
|
|
eval SELECT COUNT(*) FROM aes_$block_mode WHERE a = AES_DECRYPT(b128, @KEY2, @IVA);
|
|
|
|
--echo # must return 0
|
|
eval SELECT COUNT(*) FROM aes_$block_mode WHERE a = AES_DECRYPT(b256, @KEY2, @IVB);
|
|
|
|
|
|
SET SESSION block_encryption_mode=DEFAULT;
|
|
eval DROP TABLE aes_$block_mode;
|
|
|