diff --git a/mysql-test/std_data/keys.txt b/mysql-test/std_data/keys.txt index 389f261fc53..e511521d7ab 100644 --- a/mysql-test/std_data/keys.txt +++ b/mysql-test/std_data/keys.txt @@ -1,6 +1,12 @@ +# +# this is a comment +# 1;770A8A65DA156D24EE2A093277530142 2;4D92199549E0F2EF009B4160F3582E5528A11A45017F3EF8 -3;B374A26A71490437AA024E4FADD5B497FDFF1A8EA6FF12F6FB65AF2720B59CCF -4;18420B5CBA31CCDFFE9716E91EB61374D05914F3ADE23E03 + # another comment +33;B374A26A71490437AA024E4FADD5B497FDFF1A8EA6FF12F6FB65AF2720B59CCF +4;18420B5CBA31CCDFFE9716E91EB61374D05914F3ADE23E03 --> ignored + 5;966050D7777350B6FD5CCB3E5F648DA45C63BEFB6DEDDFA13443F156B7D35C84 -6;B5EA210C8C09EF20DB95EC584714A89F +6;B5EA210C8C09EF20DB95EC584714A89F # and yet another + diff --git a/mysql-test/suite/innodb/r/innodb-page_encryption.result b/mysql-test/suite/innodb/r/innodb-page_encryption.result index dfc93508b90..b66c4f79106 100644 --- a/mysql-test/suite/innodb/r/innodb-page_encryption.result +++ b/mysql-test/suite/innodb/r/innodb-page_encryption.result @@ -4,6 +4,8 @@ create table innodb_normal(c1 bigint not null, b char(200)) engine=innodb; create table innodb_compact(c1 bigint not null, b char(200)) engine=innodb row_format=compact page_encryption=1 page_encryption_key=1; create table innodb_compressed(c1 bigint not null, b char(200)) engine=innodb row_format=compressed page_encryption=1 page_encryption_key=2; create table innodb_dynamic(c1 bigint not null, b char(200)) engine=innodb row_format=dynamic page_encryption=1 page_encryption_key=3; +ERROR HY000: Can't create table `test`.`innodb_dynamic` (errno: 140 "Wrong create options") +create table innodb_dynamic(c1 bigint not null, b char(200)) engine=innodb row_format=dynamic page_encryption=1 page_encryption_key=33; create table innodb_redundant(c1 bigint not null, b char(200)) engine=innodb row_format=redundant page_encryption=1 page_encryption_key=4; SET GLOBAL innodb_default_page_encryption_key = 5; create table innodb_defkey(c1 bigint not null, b char(200)) engine=innodb page_encryption=1; @@ -30,7 +32,7 @@ Table Create Table innodb_dynamic CREATE TABLE `innodb_dynamic` ( `c1` bigint(20) NOT NULL, `b` char(200) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC `page_encryption`=1 `page_encryption_key`=3 +) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC `page_encryption`=1 `page_encryption_key`=33 show create table innodb_redundant; Table Create Table innodb_redundant CREATE TABLE `innodb_redundant` ( diff --git a/mysql-test/suite/innodb/r/innodb-page_encryption_log_encryption.result b/mysql-test/suite/innodb/r/innodb-page_encryption_log_encryption.result index 3830bfee22b..56222861a7a 100644 --- a/mysql-test/suite/innodb/r/innodb-page_encryption_log_encryption.result +++ b/mysql-test/suite/innodb/r/innodb-page_encryption_log_encryption.result @@ -6,7 +6,7 @@ SET GLOBAL innodb_file_per_table = ON; create table innodb_normal(c1 bigint not null, b char(200)) engine=innodb; create table innodb_compact(c1 bigint not null, b char(200)) engine=innodb row_format=compact page_encryption=1 page_encryption_key=1; create table innodb_compressed(c1 bigint not null, b char(200)) engine=innodb row_format=compressed page_encryption=1 page_encryption_key=2; -create table innodb_dynamic(c1 bigint not null, b char(200)) engine=innodb row_format=dynamic page_encryption=1 page_encryption_key=3; +create table innodb_dynamic(c1 bigint not null, b char(200)) engine=innodb row_format=dynamic page_encryption=1 page_encryption_key=33; create table innodb_redundant(c1 bigint not null, b char(200)) engine=innodb row_format=redundant page_encryption=1 page_encryption_key=4; show create table innodb_compact; Table Create Table @@ -25,7 +25,7 @@ Table Create Table innodb_dynamic CREATE TABLE `innodb_dynamic` ( `c1` bigint(20) NOT NULL, `b` char(200) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC `page_encryption`=1 `page_encryption_key`=3 +) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC `page_encryption`=1 `page_encryption_key`=33 show create table innodb_redundant; Table Create Table innodb_redundant CREATE TABLE `innodb_redundant` ( diff --git a/mysql-test/suite/innodb/t/innodb-page_encryption.test b/mysql-test/suite/innodb/t/innodb-page_encryption.test index 66927d1905f..93c071f3b95 100644 --- a/mysql-test/suite/innodb/t/innodb-page_encryption.test +++ b/mysql-test/suite/innodb/t/innodb-page_encryption.test @@ -13,7 +13,9 @@ SET GLOBAL innodb_file_per_table = ON; create table innodb_normal(c1 bigint not null, b char(200)) engine=innodb; create table innodb_compact(c1 bigint not null, b char(200)) engine=innodb row_format=compact page_encryption=1 page_encryption_key=1; create table innodb_compressed(c1 bigint not null, b char(200)) engine=innodb row_format=compressed page_encryption=1 page_encryption_key=2; +--error ER_CANT_CREATE_TABLE create table innodb_dynamic(c1 bigint not null, b char(200)) engine=innodb row_format=dynamic page_encryption=1 page_encryption_key=3; +create table innodb_dynamic(c1 bigint not null, b char(200)) engine=innodb row_format=dynamic page_encryption=1 page_encryption_key=33; create table innodb_redundant(c1 bigint not null, b char(200)) engine=innodb row_format=redundant page_encryption=1 page_encryption_key=4; SET GLOBAL innodb_default_page_encryption_key = 5; diff --git a/mysql-test/suite/innodb/t/innodb-page_encryption_log_encryption.test b/mysql-test/suite/innodb/t/innodb-page_encryption_log_encryption.test index abff5d93083..6076b82f596 100644 --- a/mysql-test/suite/innodb/t/innodb-page_encryption_log_encryption.test +++ b/mysql-test/suite/innodb/t/innodb-page_encryption_log_encryption.test @@ -16,7 +16,7 @@ SET GLOBAL innodb_file_per_table = ON; create table innodb_normal(c1 bigint not null, b char(200)) engine=innodb; create table innodb_compact(c1 bigint not null, b char(200)) engine=innodb row_format=compact page_encryption=1 page_encryption_key=1; create table innodb_compressed(c1 bigint not null, b char(200)) engine=innodb row_format=compressed page_encryption=1 page_encryption_key=2; -create table innodb_dynamic(c1 bigint not null, b char(200)) engine=innodb row_format=dynamic page_encryption=1 page_encryption_key=3; +create table innodb_dynamic(c1 bigint not null, b char(200)) engine=innodb row_format=dynamic page_encryption=1 page_encryption_key=33; create table innodb_redundant(c1 bigint not null, b char(200)) engine=innodb row_format=redundant page_encryption=1 page_encryption_key=4; show create table innodb_compact; diff --git a/mysql-test/suite/plugins/r/filekeys_encfile.result b/mysql-test/suite/plugins/r/filekeys_encfile.result new file mode 100644 index 00000000000..456c8a00279 --- /dev/null +++ b/mysql-test/suite/plugins/r/filekeys_encfile.result @@ -0,0 +1,38 @@ +create table t1(c1 bigint not null, b char(200)) engine=innodb page_encryption=1 page_encryption_key=1; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `c1` bigint(20) NOT NULL, + `b` char(200) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_encryption`=1 `page_encryption_key`=1 +insert t1 values (12345, repeat('1234567890', 20)); +alter table t1 page_encryption_key=2; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `c1` bigint(20) NOT NULL, + `b` char(200) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_encryption`=1 `page_encryption_key`=2 +alter table t1 page_encryption_key=3; +ERROR HY000: Can't create table `test`.`#sql-temporary` (errno: 140 "Wrong create options") +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `c1` bigint(20) NOT NULL, + `b` char(200) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_encryption`=1 `page_encryption_key`=2 +alter table t1 page_encryption_key=33; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `c1` bigint(20) NOT NULL, + `b` char(200) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_encryption`=1 `page_encryption_key`=33 +alter table t1 page_encryption_key=4; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `c1` bigint(20) NOT NULL, + `b` char(200) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_encryption`=1 `page_encryption_key`=4 +drop table t1; diff --git a/mysql-test/suite/plugins/r/filekeys_encfile_bad.result b/mysql-test/suite/plugins/r/filekeys_encfile_bad.result new file mode 100644 index 00000000000..233c7da432e --- /dev/null +++ b/mysql-test/suite/plugins/r/filekeys_encfile_bad.result @@ -0,0 +1,8 @@ +call mtr.add_suppression("Cannot decrypt .*filekeys-data.enc. Wrong key"); +call mtr.add_suppression("Plugin 'file_key_management' init function returned error"); +call mtr.add_suppression("Plugin 'file_key_management' registration.*failed"); +create table t1(c1 bigint not null, b char(200)) engine=innodb page_encryption=1 page_encryption_key=1; +ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options") +select plugin_status from information_schema.plugins +where plugin_name = 'file_key_management'; +plugin_status diff --git a/mysql-test/suite/plugins/r/filekeys_encfile_badfile.result b/mysql-test/suite/plugins/r/filekeys_encfile_badfile.result new file mode 100644 index 00000000000..68973fc8ee3 --- /dev/null +++ b/mysql-test/suite/plugins/r/filekeys_encfile_badfile.result @@ -0,0 +1,8 @@ +call mtr.add_suppression("File 'bad' not found"); +call mtr.add_suppression("Plugin 'file_key_management' init function returned error"); +call mtr.add_suppression("Plugin 'file_key_management' registration.*failed"); +create table t1(c1 bigint not null, b char(200)) engine=innodb page_encryption=1 page_encryption_key=1; +ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options") +select plugin_status from information_schema.plugins +where plugin_name = 'file_key_management'; +plugin_status diff --git a/mysql-test/suite/plugins/r/filekeys_encfile_file.result b/mysql-test/suite/plugins/r/filekeys_encfile_file.result new file mode 100644 index 00000000000..456c8a00279 --- /dev/null +++ b/mysql-test/suite/plugins/r/filekeys_encfile_file.result @@ -0,0 +1,38 @@ +create table t1(c1 bigint not null, b char(200)) engine=innodb page_encryption=1 page_encryption_key=1; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `c1` bigint(20) NOT NULL, + `b` char(200) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_encryption`=1 `page_encryption_key`=1 +insert t1 values (12345, repeat('1234567890', 20)); +alter table t1 page_encryption_key=2; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `c1` bigint(20) NOT NULL, + `b` char(200) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_encryption`=1 `page_encryption_key`=2 +alter table t1 page_encryption_key=3; +ERROR HY000: Can't create table `test`.`#sql-temporary` (errno: 140 "Wrong create options") +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `c1` bigint(20) NOT NULL, + `b` char(200) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_encryption`=1 `page_encryption_key`=2 +alter table t1 page_encryption_key=33; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `c1` bigint(20) NOT NULL, + `b` char(200) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_encryption`=1 `page_encryption_key`=33 +alter table t1 page_encryption_key=4; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `c1` bigint(20) NOT NULL, + `b` char(200) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_encryption`=1 `page_encryption_key`=4 +drop table t1; diff --git a/mysql-test/suite/plugins/r/filekeys_encfile_no.result b/mysql-test/suite/plugins/r/filekeys_encfile_no.result new file mode 100644 index 00000000000..233c7da432e --- /dev/null +++ b/mysql-test/suite/plugins/r/filekeys_encfile_no.result @@ -0,0 +1,8 @@ +call mtr.add_suppression("Cannot decrypt .*filekeys-data.enc. Wrong key"); +call mtr.add_suppression("Plugin 'file_key_management' init function returned error"); +call mtr.add_suppression("Plugin 'file_key_management' registration.*failed"); +create table t1(c1 bigint not null, b char(200)) engine=innodb page_encryption=1 page_encryption_key=1; +ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options") +select plugin_status from information_schema.plugins +where plugin_name = 'file_key_management'; +plugin_status diff --git a/mysql-test/suite/plugins/r/filekeys_nofile.result b/mysql-test/suite/plugins/r/filekeys_nofile.result new file mode 100644 index 00000000000..43997ee384b --- /dev/null +++ b/mysql-test/suite/plugins/r/filekeys_nofile.result @@ -0,0 +1,8 @@ +call mtr.add_suppression("File '' not found"); +call mtr.add_suppression("Plugin 'file_key_management' init function returned error"); +call mtr.add_suppression("Plugin 'file_key_management' registration.*failed"); +create table t1(c1 bigint not null, b char(200)) engine=innodb page_encryption=1 page_encryption_key=1; +ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options") +select plugin_status from information_schema.plugins +where plugin_name = 'file_key_management'; +plugin_status diff --git a/mysql-test/suite/plugins/r/filekeys_syntax.result b/mysql-test/suite/plugins/r/filekeys_syntax.result new file mode 100644 index 00000000000..4340fb6bdb9 --- /dev/null +++ b/mysql-test/suite/plugins/r/filekeys_syntax.result @@ -0,0 +1,116 @@ +call mtr.add_suppression("File '.*keys.txt' not found"); +call mtr.add_suppression("Plugin 'file_key_management' init function returned error"); +call mtr.add_suppression("Plugin 'file_key_management' registration.*failed"); +create table t1(c1 bigint not null, b char(200)) engine=innodb page_encryption=1 page_encryption_key=1; +ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options") +select plugin_status from information_schema.plugins +where plugin_name = 'file_key_management'; +plugin_status +install soname 'file_key_management'; +ERROR HY000: Invalid key id at MYSQL_TMP_DIR/keys.txt line 2, column 2 +call mtr.add_suppression("File '.*keys.txt' not found"); +call mtr.add_suppression("Plugin 'file_key_management' init function returned error"); +call mtr.add_suppression("Plugin 'file_key_management' registration.*failed"); +create table t1(c1 bigint not null, b char(200)) engine=innodb page_encryption=1 page_encryption_key=1; +ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options") +select plugin_status from information_schema.plugins +where plugin_name = 'file_key_management'; +plugin_status +call mtr.add_suppression("Invalid key id"); +call mtr.add_suppression("Plugin 'file_key_management' init function returned error"); +call mtr.add_suppression("Plugin 'file_key_management' registration.*failed"); +create table t1(c1 bigint not null, b char(200)) engine=innodb page_encryption=1 page_encryption_key=1; +ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options") +select plugin_status from information_schema.plugins +where plugin_name = 'file_key_management'; +plugin_status +install soname 'file_key_management'; +ERROR HY000: Invalid key id at MYSQL_TMP_DIR/keys.txt line 2, column 11 +call mtr.add_suppression("Invalid key id"); +call mtr.add_suppression("Plugin 'file_key_management' init function returned error"); +call mtr.add_suppression("Plugin 'file_key_management' registration.*failed"); +create table t1(c1 bigint not null, b char(200)) engine=innodb page_encryption=1 page_encryption_key=1; +ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options") +select plugin_status from information_schema.plugins +where plugin_name = 'file_key_management'; +plugin_status +call mtr.add_suppression("Invalid key id"); +call mtr.add_suppression("Plugin 'file_key_management' init function returned error"); +call mtr.add_suppression("Plugin 'file_key_management' registration.*failed"); +create table t1(c1 bigint not null, b char(200)) engine=innodb page_encryption=1 page_encryption_key=1; +ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options") +select plugin_status from information_schema.plugins +where plugin_name = 'file_key_management'; +plugin_status +install soname 'file_key_management'; +ERROR HY000: Invalid key at MYSQL_TMP_DIR/keys.txt line 2, column 47 +call mtr.add_suppression("Invalid key id"); +call mtr.add_suppression("Plugin 'file_key_management' init function returned error"); +call mtr.add_suppression("Plugin 'file_key_management' registration.*failed"); +create table t1(c1 bigint not null, b char(200)) engine=innodb page_encryption=1 page_encryption_key=1; +ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options") +select plugin_status from information_schema.plugins +where plugin_name = 'file_key_management'; +plugin_status +call mtr.add_suppression("Invalid key"); +call mtr.add_suppression("Plugin 'file_key_management' init function returned error"); +call mtr.add_suppression("Plugin 'file_key_management' registration.*failed"); +create table t1(c1 bigint not null, b char(200)) engine=innodb page_encryption=1 page_encryption_key=1; +ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options") +select plugin_status from information_schema.plugins +where plugin_name = 'file_key_management'; +plugin_status +install soname 'file_key_management'; +ERROR HY000: Invalid key at MYSQL_TMP_DIR/keys.txt line 2, column 33 +call mtr.add_suppression("Invalid key"); +call mtr.add_suppression("Plugin 'file_key_management' init function returned error"); +call mtr.add_suppression("Plugin 'file_key_management' registration.*failed"); +create table t1(c1 bigint not null, b char(200)) engine=innodb page_encryption=1 page_encryption_key=1; +ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options") +select plugin_status from information_schema.plugins +where plugin_name = 'file_key_management'; +plugin_status +call mtr.add_suppression("Invalid key"); +call mtr.add_suppression("Plugin 'file_key_management' init function returned error"); +call mtr.add_suppression("Plugin 'file_key_management' registration.*failed"); +create table t1(c1 bigint not null, b char(200)) engine=innodb page_encryption=1 page_encryption_key=1; +ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options") +select plugin_status from information_schema.plugins +where plugin_name = 'file_key_management'; +plugin_status +install soname 'file_key_management'; +ERROR HY000: Syntax error at MYSQL_TMP_DIR/keys.txt line 2, column 2 +call mtr.add_suppression("Invalid key"); +call mtr.add_suppression("Plugin 'file_key_management' init function returned error"); +call mtr.add_suppression("Plugin 'file_key_management' registration.*failed"); +create table t1(c1 bigint not null, b char(200)) engine=innodb page_encryption=1 page_encryption_key=1; +ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options") +select plugin_status from information_schema.plugins +where plugin_name = 'file_key_management'; +plugin_status +call mtr.add_suppression("Syntax error"); +call mtr.add_suppression("Plugin 'file_key_management' init function returned error"); +call mtr.add_suppression("Plugin 'file_key_management' registration.*failed"); +create table t1(c1 bigint not null, b char(200)) engine=innodb page_encryption=1 page_encryption_key=1; +ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options") +select plugin_status from information_schema.plugins +where plugin_name = 'file_key_management'; +plugin_status +install soname 'file_key_management'; +ERROR HY000: Syntax error at MYSQL_TMP_DIR/keys.txt line 2, column 1 +call mtr.add_suppression("Syntax error"); +call mtr.add_suppression("Plugin 'file_key_management' init function returned error"); +call mtr.add_suppression("Plugin 'file_key_management' registration.*failed"); +create table t1(c1 bigint not null, b char(200)) engine=innodb page_encryption=1 page_encryption_key=1; +ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options") +select plugin_status from information_schema.plugins +where plugin_name = 'file_key_management'; +plugin_status +call mtr.add_suppression("Syntax error"); +call mtr.add_suppression("Plugin 'file_key_management' init function returned error"); +call mtr.add_suppression("Plugin 'file_key_management' registration.*failed"); +create table t1(c1 bigint not null, b char(200)) engine=innodb page_encryption=1 page_encryption_key=1; +ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options") +select plugin_status from information_schema.plugins +where plugin_name = 'file_key_management'; +plugin_status diff --git a/mysql-test/suite/plugins/r/filekeys_unencfile.result b/mysql-test/suite/plugins/r/filekeys_unencfile.result new file mode 100644 index 00000000000..f292aa582a7 --- /dev/null +++ b/mysql-test/suite/plugins/r/filekeys_unencfile.result @@ -0,0 +1,8 @@ +call mtr.add_suppression("Cannot decrypt .*keys.txt. Not encrypted"); +call mtr.add_suppression("Plugin 'file_key_management' init function returned error"); +call mtr.add_suppression("Plugin 'file_key_management' registration.*failed"); +create table t1(c1 bigint not null, b char(200)) engine=innodb page_encryption=1 page_encryption_key=1; +ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options") +select plugin_status from information_schema.plugins +where plugin_name = 'file_key_management'; +plugin_status diff --git a/mysql-test/suite/plugins/t/filekeys-data.enc b/mysql-test/suite/plugins/t/filekeys-data.enc new file mode 100644 index 00000000000..a8adb2f939c Binary files /dev/null and b/mysql-test/suite/plugins/t/filekeys-data.enc differ diff --git a/mysql-test/suite/plugins/t/filekeys-data.key b/mysql-test/suite/plugins/t/filekeys-data.key new file mode 100644 index 00000000000..536aca34dba --- /dev/null +++ b/mysql-test/suite/plugins/t/filekeys-data.key @@ -0,0 +1 @@ +secret \ No newline at end of file diff --git a/mysql-test/suite/plugins/t/filekeys_badtest.inc b/mysql-test/suite/plugins/t/filekeys_badtest.inc new file mode 100644 index 00000000000..dfbc3071d46 --- /dev/null +++ b/mysql-test/suite/plugins/t/filekeys_badtest.inc @@ -0,0 +1,18 @@ +-- source include/not_embedded.inc +-- source include/have_xtradb.inc +-- source filekeys_plugin.inc + +--eval call mtr.add_suppression("$SEARCH_PATTERN") +call mtr.add_suppression("Plugin 'file_key_management' init function returned error"); +call mtr.add_suppression("Plugin 'file_key_management' registration.*failed"); + +--let SEARCH_FILE= $MYSQLTEST_VARDIR/log/mysqld.1.err +--let SEARCH_RANGE= -10000 +--source include/search_pattern_in_file.inc + +--error ER_CANT_CREATE_TABLE +create table t1(c1 bigint not null, b char(200)) engine=innodb page_encryption=1 page_encryption_key=1; + +select plugin_status from information_schema.plugins + where plugin_name = 'file_key_management'; + diff --git a/mysql-test/suite/plugins/t/filekeys_encfile.opt b/mysql-test/suite/plugins/t/filekeys_encfile.opt new file mode 100644 index 00000000000..651cc0f4cbe --- /dev/null +++ b/mysql-test/suite/plugins/t/filekeys_encfile.opt @@ -0,0 +1,2 @@ +--loose-file-key-management-filekey=secret +--loose-file-key-management-filename=$MTR_SUITE_DIR/t/filekeys-data.enc diff --git a/mysql-test/suite/plugins/t/filekeys_encfile.test b/mysql-test/suite/plugins/t/filekeys_encfile.test new file mode 100644 index 00000000000..a0611a38ec4 --- /dev/null +++ b/mysql-test/suite/plugins/t/filekeys_encfile.test @@ -0,0 +1 @@ +source filekeys_goodtest.inc; diff --git a/mysql-test/suite/plugins/t/filekeys_encfile_bad.opt b/mysql-test/suite/plugins/t/filekeys_encfile_bad.opt new file mode 100644 index 00000000000..6ece8c6b08d --- /dev/null +++ b/mysql-test/suite/plugins/t/filekeys_encfile_bad.opt @@ -0,0 +1,2 @@ +--loose-file-key-management-filekey=bad +--loose-file-key-management-filename=$MTR_SUITE_DIR/t/filekeys-data.enc diff --git a/mysql-test/suite/plugins/t/filekeys_encfile_bad.test b/mysql-test/suite/plugins/t/filekeys_encfile_bad.test new file mode 100644 index 00000000000..51ab14c5608 --- /dev/null +++ b/mysql-test/suite/plugins/t/filekeys_encfile_bad.test @@ -0,0 +1,2 @@ +let SEARCH_PATTERN=Cannot decrypt .*filekeys-data.enc. Wrong key; +source filekeys_badtest.inc; diff --git a/mysql-test/suite/plugins/t/filekeys_encfile_badfile.opt b/mysql-test/suite/plugins/t/filekeys_encfile_badfile.opt new file mode 100644 index 00000000000..374a41395b8 --- /dev/null +++ b/mysql-test/suite/plugins/t/filekeys_encfile_badfile.opt @@ -0,0 +1,2 @@ +--loose-file-key-management-filekey=FILE:bad +--loose-file-key-management-filename=$MTR_SUITE_DIR/t/filekeys-data.enc diff --git a/mysql-test/suite/plugins/t/filekeys_encfile_badfile.test b/mysql-test/suite/plugins/t/filekeys_encfile_badfile.test new file mode 100644 index 00000000000..e0b07ac62b1 --- /dev/null +++ b/mysql-test/suite/plugins/t/filekeys_encfile_badfile.test @@ -0,0 +1,2 @@ +let SEARCH_PATTERN=File 'bad' not found; +source filekeys_badtest.inc; diff --git a/mysql-test/suite/plugins/t/filekeys_encfile_file.opt b/mysql-test/suite/plugins/t/filekeys_encfile_file.opt new file mode 100644 index 00000000000..df2d3d526d7 --- /dev/null +++ b/mysql-test/suite/plugins/t/filekeys_encfile_file.opt @@ -0,0 +1,2 @@ +--loose-file-key-management-filekey=FILE:$MTR_SUITE_DIR/t/filekeys-data.key +--loose-file-key-management-filename=$MTR_SUITE_DIR/t/filekeys-data.enc diff --git a/mysql-test/suite/plugins/t/filekeys_encfile_file.test b/mysql-test/suite/plugins/t/filekeys_encfile_file.test new file mode 100644 index 00000000000..a0611a38ec4 --- /dev/null +++ b/mysql-test/suite/plugins/t/filekeys_encfile_file.test @@ -0,0 +1 @@ +source filekeys_goodtest.inc; diff --git a/mysql-test/suite/plugins/t/filekeys_encfile_no.opt b/mysql-test/suite/plugins/t/filekeys_encfile_no.opt new file mode 100644 index 00000000000..68264e5c261 --- /dev/null +++ b/mysql-test/suite/plugins/t/filekeys_encfile_no.opt @@ -0,0 +1 @@ +--loose-file-key-management-filename=$MTR_SUITE_DIR/t/filekeys-data.enc diff --git a/mysql-test/suite/plugins/t/filekeys_encfile_no.test b/mysql-test/suite/plugins/t/filekeys_encfile_no.test new file mode 100644 index 00000000000..51ab14c5608 --- /dev/null +++ b/mysql-test/suite/plugins/t/filekeys_encfile_no.test @@ -0,0 +1,2 @@ +let SEARCH_PATTERN=Cannot decrypt .*filekeys-data.enc. Wrong key; +source filekeys_badtest.inc; diff --git a/mysql-test/suite/plugins/t/filekeys_goodtest.inc b/mysql-test/suite/plugins/t/filekeys_goodtest.inc new file mode 100644 index 00000000000..c35c819d1af --- /dev/null +++ b/mysql-test/suite/plugins/t/filekeys_goodtest.inc @@ -0,0 +1,20 @@ +-- source include/have_xtradb.inc +-- source filekeys_plugin.inc + +create table t1(c1 bigint not null, b char(200)) engine=innodb page_encryption=1 page_encryption_key=1; +show create table t1; +insert t1 values (12345, repeat('1234567890', 20)); + +alter table t1 page_encryption_key=2; +show create table t1; +--replace_regex /#sql-[0-9a-f_]*/#sql-temporary/ +--error ER_CANT_CREATE_TABLE +alter table t1 page_encryption_key=3; +show create table t1; +alter table t1 page_encryption_key=33; +show create table t1; +alter table t1 page_encryption_key=4; +show create table t1; + +drop table t1; + diff --git a/mysql-test/suite/plugins/t/filekeys_nofile.test b/mysql-test/suite/plugins/t/filekeys_nofile.test new file mode 100644 index 00000000000..c4505ebec81 --- /dev/null +++ b/mysql-test/suite/plugins/t/filekeys_nofile.test @@ -0,0 +1,2 @@ +let SEARCH_PATTERN=File '' not found; +source filekeys_badtest.inc; diff --git a/mysql-test/suite/plugins/t/filekeys_plugin.inc b/mysql-test/suite/plugins/t/filekeys_plugin.inc new file mode 100644 index 00000000000..8f0634a9076 --- /dev/null +++ b/mysql-test/suite/plugins/t/filekeys_plugin.inc @@ -0,0 +1,4 @@ +if (!$FILE_KEY_MANAGEMENT_SO) +{ + --skip Needs file_key_management +} diff --git a/mysql-test/suite/plugins/t/filekeys_plugin.opt b/mysql-test/suite/plugins/t/filekeys_plugin.opt new file mode 100644 index 00000000000..43d00186d59 --- /dev/null +++ b/mysql-test/suite/plugins/t/filekeys_plugin.opt @@ -0,0 +1,2 @@ +--plugin-load-add=$FILE_KEY_MANAGEMENT_SO +--encryption-algorithm=aes_cbc diff --git a/mysql-test/suite/plugins/t/filekeys_syntax.opt b/mysql-test/suite/plugins/t/filekeys_syntax.opt new file mode 100644 index 00000000000..4be6601bbac --- /dev/null +++ b/mysql-test/suite/plugins/t/filekeys_syntax.opt @@ -0,0 +1 @@ +--loose-file-key-management-filename=$MYSQL_TMP_DIR/keys.txt diff --git a/mysql-test/suite/plugins/t/filekeys_syntax.test b/mysql-test/suite/plugins/t/filekeys_syntax.test new file mode 100644 index 00000000000..e68e18bee1a --- /dev/null +++ b/mysql-test/suite/plugins/t/filekeys_syntax.test @@ -0,0 +1,96 @@ +# +# first test - missing key file +# +let SEARCH_PATTERN=File '.*keys.txt' not found; +source filekeys_badtest.inc; + +# +# key id= 0 +# +write_file $MYSQL_TMP_DIR/keys.txt; +1;11111111111111111111111111111111 +0;00000000000000000000000000000000 +2;22222222222222222222222222222222 +EOF +--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR +--error 2 +install soname 'file_key_management'; +source filekeys_badtest.inc; +let SEARCH_PATTERN=Invalid key id; +source filekeys_badtest.inc; + +# +# id too big +# +remove_file $MYSQL_TMP_DIR/keys.txt; +write_file $MYSQL_TMP_DIR/keys.txt; +1;11111111111111111111111111111111 +4294967299;00000000000000000000000000000000 +2;22222222222222222222222222222222 +EOF +--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR +--error 2 +install soname 'file_key_management'; +source filekeys_badtest.inc; +let SEARCH_PATTERN=Invalid key id; +source filekeys_badtest.inc; +# +# wrong key length (not 16, 24, 23 bytes) +# +remove_file $MYSQL_TMP_DIR/keys.txt; +write_file $MYSQL_TMP_DIR/keys.txt; +1;11111111111111111111111111111111 +3;00000000000000000000000000000000111122223333 +2;22222222222222222222222222222222 +EOF +--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR +--error 2 +install soname 'file_key_management'; +source filekeys_badtest.inc; +let SEARCH_PATTERN=Invalid key; +source filekeys_badtest.inc; +# +# wrong key length (not an even number of digits) +# +remove_file $MYSQL_TMP_DIR/keys.txt; +write_file $MYSQL_TMP_DIR/keys.txt; +1;11111111111111111111111111111111 +3;0000000000000000000000000000000 +2;22222222222222222222222222222222 +EOF +--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR +--error 2 +install soname 'file_key_management'; +source filekeys_badtest.inc; +let SEARCH_PATTERN=Invalid key; +source filekeys_badtest.inc; +# +# no semicolon +# +remove_file $MYSQL_TMP_DIR/keys.txt; +write_file $MYSQL_TMP_DIR/keys.txt; +1;11111111111111111111111111111111 +3:0000000000000000000000000000000 +2;22222222222222222222222222222222 +EOF +--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR +--error 2 +install soname 'file_key_management'; +source filekeys_badtest.inc; +let SEARCH_PATTERN=Syntax error; +source filekeys_badtest.inc; +# +# another syntax error +# +remove_file $MYSQL_TMP_DIR/keys.txt; +write_file $MYSQL_TMP_DIR/keys.txt; +1;11111111111111111111111111111111 +syntax error +2;22222222222222222222222222222222 +EOF +--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR +--error 2 +install soname 'file_key_management'; +source filekeys_badtest.inc; +let SEARCH_PATTERN=Syntax error; +source filekeys_badtest.inc; diff --git a/mysql-test/suite/plugins/t/filekeys_unencfile.opt b/mysql-test/suite/plugins/t/filekeys_unencfile.opt new file mode 100644 index 00000000000..b7e207c07d4 --- /dev/null +++ b/mysql-test/suite/plugins/t/filekeys_unencfile.opt @@ -0,0 +1,2 @@ +--loose-file-key-management-filekey=bad +--loose-file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys.txt diff --git a/mysql-test/suite/plugins/t/filekeys_unencfile.test b/mysql-test/suite/plugins/t/filekeys_unencfile.test new file mode 100644 index 00000000000..2567c29f5ec --- /dev/null +++ b/mysql-test/suite/plugins/t/filekeys_unencfile.test @@ -0,0 +1,2 @@ +let SEARCH_PATTERN=Cannot decrypt .*keys.txt. Not encrypted; +source filekeys_badtest.inc;