1# Tests of the AES CFB8 block mode
2#### cfb8
3SET @IVA=REPEAT('a', 16);
4SET @IVB=REPEAT('b', 16);
5SET @KEY1=REPEAT('c', 16);
6SET @KEY2=REPEAT('d', 16);
7#### 128-cfb8
8SET SESSION block_encryption_mode="aes-128-cfb8";
9# must throw an error without an IV
10SELECT AES_ENCRYPT('a', @KEY1);
11ERROR 42000: Incorrect parameter count in the call to native function 'aes_encrypt'
12block mode dependent. Must be non-0 and non-null
13SELECT LENGTH(AES_ENCRYPT('a', @KEY1, @IVA));
14LENGTH(AES_ENCRYPT('a', @KEY1, @IVA))
151
16block mode dependent
17SELECT TO_BASE64(AES_ENCRYPT('a', @KEY1, @IVA));
18TO_BASE64(AES_ENCRYPT('a', @KEY1, @IVA))
19Pw==
20# must be equal
21SELECT 'a' = AES_DECRYPT(AES_ENCRYPT('a', @KEY1, @IVA), @KEY1, @IVA);
22'a' = AES_DECRYPT(AES_ENCRYPT('a', @KEY1, @IVA), @KEY1, @IVA)
231
24# must not be equal
25SELECT 'a' = AES_DECRYPT(AES_ENCRYPT('a',@KEY1, @IVA), @KEY1, @IVB);
26'a' = AES_DECRYPT(AES_ENCRYPT('a',@KEY1, @IVA), @KEY1, @IVB)
270
28SELECT 'a' = AES_DECRYPT(AES_ENCRYPT('a',@KEY1, @IVA), @KEY2, @IVA);
29'a' = AES_DECRYPT(AES_ENCRYPT('a',@KEY1, @IVA), @KEY2, @IVA)
300
31SELECT 'a' = AES_DECRYPT(AES_ENCRYPT('b',@KEY1, @IVA), @KEY1, @IVA);
32'a' = AES_DECRYPT(AES_ENCRYPT('b',@KEY1, @IVA), @KEY1, @IVA)
330
34#### 192-cfb8
35SET SESSION block_encryption_mode="aes-192-cfb8";
36# must throw an error without an IV
37SELECT AES_ENCRYPT('a', @KEY1);
38ERROR 42000: Incorrect parameter count in the call to native function 'aes_encrypt'
39# must be equal
40SELECT 'a' = AES_DECRYPT(AES_ENCRYPT('a',@KEY1, @IVA), @KEY1, @IVA);
41'a' = AES_DECRYPT(AES_ENCRYPT('a',@KEY1, @IVA), @KEY1, @IVA)
421
43# must not be equal
44SELECT 'a' = AES_DECRYPT(AES_ENCRYPT('a',@KEY1, @IVA), @KEY1, @IVB);
45'a' = AES_DECRYPT(AES_ENCRYPT('a',@KEY1, @IVA), @KEY1, @IVB)
460
47SELECT 'a' = AES_DECRYPT(AES_ENCRYPT('a',@KEY1, @IVA), @KEY2, @IVA);
48'a' = AES_DECRYPT(AES_ENCRYPT('a',@KEY1, @IVA), @KEY2, @IVA)
490
50SELECT 'a' = AES_DECRYPT(AES_ENCRYPT('b',@KEY1, @IVA), @KEY1, @IVA);
51'a' = AES_DECRYPT(AES_ENCRYPT('b',@KEY1, @IVA), @KEY1, @IVA)
520
53#### 256-cfb8
54SET SESSION block_encryption_mode="aes-256-cfb8";
55# must throw an error without an IV
56SELECT AES_ENCRYPT('a', @KEY1);
57ERROR 42000: Incorrect parameter count in the call to native function 'aes_encrypt'
58# must be equal
59SELECT 'a' = AES_DECRYPT(AES_ENCRYPT('a',@KEY1, @IVA), @KEY1, @IVA);
60'a' = AES_DECRYPT(AES_ENCRYPT('a',@KEY1, @IVA), @KEY1, @IVA)
611
62# must not be equal
63SELECT 'a' = AES_DECRYPT(AES_ENCRYPT('a',@KEY1, @IVA), @KEY1, @IVB);
64'a' = AES_DECRYPT(AES_ENCRYPT('a',@KEY1, @IVA), @KEY1, @IVB)
650
66SELECT 'a' = AES_DECRYPT(AES_ENCRYPT('a',@KEY1, @IVA), @KEY2, @IVA);
67'a' = AES_DECRYPT(AES_ENCRYPT('a',@KEY1, @IVA), @KEY2, @IVA)
680
69SELECT 'a' = AES_DECRYPT(AES_ENCRYPT('b',@KEY1, @IVA), @KEY1, @IVA);
70'a' = AES_DECRYPT(AES_ENCRYPT('b',@KEY1, @IVA), @KEY1, @IVA)
710
72SET SESSION block_encryption_mode=DEFAULT;
73#### 128, 192 and 256 bit cfb8
74CREATE TABLE aes_cfb8(a VARCHAR(128), b128 VARCHAR(144),
75b192 VARCHAR(144), b256 CHAR(144));
76INSERT INTO aes_cfb8 (a) VALUES (REPEAT('a', 128));
77INSERT INTO aes_cfb8 (a) VALUES (REPEAT(0x00313233, 32));
78SET SESSION block_encryption_mode="aes-128-cfb8";
79UPDATE aes_cfb8 SET b128 = AES_ENCRYPT(a, @KEY1, @IVA);
80SET SESSION block_encryption_mode="aes-192-cfb8";
81UPDATE aes_cfb8 SET b192 = AES_ENCRYPT(a, @KEY1, @IVA);
82SET SESSION block_encryption_mode="aes-256-cfb8";
83UPDATE aes_cfb8 SET b256 = AES_ENCRYPT(a, @KEY1, @IVA);
84# must return 0
85SELECT COUNT(*) FROM aes_cfb8 WHERE b128 = b192 OR B192 = b256 OR b128=b256;
86COUNT(*)
870
88SET SESSION block_encryption_mode="aes-256-cfb8";
89# must return 2
90SELECT COUNT(*) FROM aes_cfb8 WHERE a = AES_DECRYPT(b256, @KEY1, @IVA);
91COUNT(*)
922
93# must return 0
94SELECT COUNT(*) FROM aes_cfb8 WHERE a = AES_DECRYPT(b256, 'b', @IVA);
95COUNT(*)
960
97# must return 0
98SELECT COUNT(*) FROM aes_cfb8 WHERE a = AES_DECRYPT(b256, @KEY1, @IVB);
99COUNT(*)
1000
101SET SESSION block_encryption_mode="aes-192-cfb8";
102# must return 2
103SELECT COUNT(*) FROM aes_cfb8 WHERE a = AES_DECRYPT(b192, @KEY1, @IVA);
104COUNT(*)
1052
106# must return 0
107SELECT COUNT(*) FROM aes_cfb8 WHERE a = AES_DECRYPT(b192, @KEY2, @IVA);
108COUNT(*)
1090
110# must return 0
111SELECT COUNT(*) FROM aes_cfb8 WHERE a = AES_DECRYPT(b256, @KEY1, @IVB);
112COUNT(*)
1130
114SET SESSION block_encryption_mode="aes-128-cfb8";
115# must return 2
116SELECT COUNT(*) FROM aes_cfb8 WHERE a = AES_DECRYPT(b128, @KEY1, @IVA);
117COUNT(*)
1182
119# must return 0
120SELECT COUNT(*) FROM aes_cfb8 WHERE a = AES_DECRYPT(b128, @KEY2, @IVA);
121COUNT(*)
1220
123# must return 0
124SELECT COUNT(*) FROM aes_cfb8 WHERE a = AES_DECRYPT(b256, @KEY2, @IVB);
125COUNT(*)
1260
127SET SESSION block_encryption_mode=DEFAULT;
128DROP TABLE aes_cfb8;
129SET SESSION block_encryption_mode=default;
130#
131# End of 5.7 tests
132#
133