@ -19,123 +19,86 @@ close $conf;
my $ rt_value = $ node - > start ;
my $ rt_value = $ node - > start ;
ok ( $ rt_value == 1 , "Start Server" ) ;
ok ( $ rt_value == 1 , "Start Server" ) ;
my ( $ cmdret , $ stdout , $ stderr ) = $ node - > psql ( 'postgres' , 'CREATE EXTENSION IF NOT EXISTS pg_tde;' , extra_params = > [ '-a' ] ) ;
PGTDE:: psql ( $ node , 'postgres' , 'CREATE EXTENSION IF NOT EXISTS pg_tde;' ) ;
ok ( $ cmdret == 0 , "CREATE PGTDE EXTENSION" ) ;
PGTDE:: append_to_file ( $ stdout ) ;
$ rt_value = $ node - > psql ( 'postgres' , 'CREATE TABLE test_enc(id SERIAL,k INTEGER,PRIMARY KEY (id)) USING tde_heap;' , extra_params = > [ '-a' ] ) ;
PGTDE:: psql ( $ node , 'postgres' , 'CREATE TABLE test_enc(id SERIAL,k INTEGER,PRIMARY KEY (id)) USING tde_heap;' ) ;
ok ( $ rt_value == 3 , "Failing query" ) ;
PGTDE:: append_to_file ( "-- server restart" ) ;
PGTDE:: append_to_file ( "-- server restart" ) ;
$ node - > stop ( ) ;
$ node - > stop ( ) ;
$ rt_value = $ node - > start ( ) ;
$ rt_value = $ node - > start ( ) ;
ok ( $ rt_value == 1 , "Restart Server" ) ;
ok ( $ rt_value == 1 , "Restart Server" ) ;
$ stdout = $ node - > safe_psql ( 'postgres' , "SELECT pg_tde_add_database_key_provider_file('file-vault','/tmp/pg_tde_test_keyring.per');" , extra_params = > [ '-a' ] ) ;
PGTDE:: psql ( $ node , 'postgres' , "SELECT pg_tde_add_database_key_provider_file('file-vault','/tmp/pg_tde_test_keyring.per');" ) ;
PGTDE:: append_to_file ( $ stdout ) ;
PGTDE:: psql ( $ node , 'postgres' , "SELECT pg_tde_add_database_key_provider_file('file-2','/tmp/pg_tde_test_keyring_2.per');" ) ;
$ stdout = $ node - > safe_psql ( 'postgres' , "SELECT pg_tde_add_database_key_provider_file('file-2','/tmp/pg_tde_test_keyring_2.per');" , extra_params = > [ '-a' ] ) ;
PGTDE:: psql ( $ node , 'postgres' , "SELECT pg_tde_add_global_key_provider_file('file-2','/tmp/pg_tde_test_keyring_2g.per');" ) ;
PGTDE:: append_to_file ( $ stdout ) ;
PGTDE:: psql ( $ node , 'postgres' , "SELECT pg_tde_add_global_key_provider_file('file-3','/tmp/pg_tde_test_keyring_3.per');" ) ;
$ stdout = $ node - > safe_psql ( 'postgres' , "SELECT pg_tde_add_global_key_provider_file('file-2','/tmp/pg_tde_test_keyring_2g.per');" , extra_params = > [ '-a' ] ) ;
PGTDE:: append_to_file ( $ stdout ) ;
$ stdout = $ node - > safe_psql ( 'postgres' , "SELECT pg_tde_add_global_key_provider_file('file-3','/tmp/pg_tde_test_keyring_3.per');" , extra_params = > [ '-a' ] ) ;
PGTDE:: append_to_file ( $ stdout ) ;
$ stdout = $ node - > safe_psql ( 'postgres' , "SELECT pg_tde_list_all_database_key_providers();" , extra_params = > [ '-a' ] ) ;
PGTDE:: psql ( $ node , 'postgres' , "SELECT pg_tde_list_all_database_key_providers();" ) ;
PGTDE:: append_to_file ( $ stdout ) ;
$ stdout = $ node - > safe_psql ( 'postgres' , "SELECT pg_tde_set_key_using_database_key_provider('test-db-key','file-vault');" , extra_params = > [ '-a' ] ) ;
PGTDE:: psql ( $ node , 'postgres' , "SELECT pg_tde_set_key_using_database_key_provider('test-db-key','file-vault');" ) ;
PGTDE:: append_to_file ( $ stdout ) ;
$ stdout = $ node - > safe_psql ( 'postgres' , 'CREATE TABLE test_enc(id SERIAL,k INTEGER,PRIMARY KEY (id)) USING tde_heap;' , extra_params = > [ '-a' ] ) ;
PGTDE:: psql ( $ node , 'postgres' , 'CREATE TABLE test_enc(id SERIAL,k INTEGER,PRIMARY KEY (id)) USING tde_heap;' ) ;
PGTDE:: append_to_file ( $ stdout ) ;
$ stdout = $ node - > safe_psql ( 'postgres' , 'INSERT INTO test_enc (k) VALUES (5),(6);' , extra_params = > [ '-a' ] ) ;
PGTDE:: psql ( $ node , 'postgres' , 'INSERT INTO test_enc (k) VALUES (5),(6);' ) ;
PGTDE:: append_to_file ( $ stdout ) ;
$ stdout = $ node - > safe_psql ( 'postgres' , 'SELECT * FROM test_enc ORDER BY id ASC;' , extra_params = > [ '-a' ] ) ;
PGTDE:: psql ( $ node , 'postgres' , 'SELECT * FROM test_enc ORDER BY id ASC;' ) ;
PGTDE:: append_to_file ( $ stdout ) ;
# Rotate key
# Rotate key
$ stdout = $ node - > psql ( 'postgres' , "SELECT pg_tde_set_key_using_database_key_provider('rotated-key1');" , extra_params = > [ '-a' ] ) ;
PGTDE:: psql ( $ node , 'postgres' , "SELECT pg_tde_set_key_using_database_key_provider('rotated-key1');" ) ;
PGTDE:: append_to_file ( $ stdout ) ;
PGTDE:: psql ( $ node , 'postgres' , 'SELECT * FROM test_enc ORDER BY id ASC;' ) ;
$ stdout = $ node - > safe_psql ( 'postgres' , 'SELECT * FROM test_enc ORDER BY id ASC;' , extra_params = > [ '-a' ] ) ;
PGTDE:: append_to_file ( $ stdout ) ;
PGTDE:: append_to_file ( "-- server restart" ) ;
PGTDE:: append_to_file ( "-- server restart" ) ;
$ node - > stop ( ) ;
$ node - > stop ( ) ;
$ rt_value = $ node - > start ( ) ;
$ rt_value = $ node - > start ( ) ;
ok ( $ rt_value == 1 , "Restart Server" ) ;
ok ( $ rt_value == 1 , "Restart Server" ) ;
$ stdout = $ node - > safe_psql ( 'postgres' , "SELECT key_provider_id, key_provider_name, key_name FROM pg_tde_key_info();" , extra_params = > [ '-a' ] ) ;
PGTDE:: psql ( $ node , 'postgres' , "SELECT key_provider_id, key_provider_name, key_name FROM pg_tde_key_info();" ) ;
PGTDE:: append_to_file ( $ stdout ) ;
PGTDE:: psql ( $ node , 'postgres' , "SELECT key_provider_id, key_provider_name, key_name FROM pg_tde_server_key_info();" ) ;
( $ cmdret , $ stdout , $ stderr ) = $ node - > psql ( 'postgres' , "SELECT key_provider_id, key_provider_name, key_name FROM pg_tde_server_key_info();" , extra_params = > [ '-a' ] ) ;
PGTDE:: psql ( $ node , 'postgres' , 'SELECT * FROM test_enc ORDER BY id ASC;' ) ;
PGTDE:: append_to_file ( $ stdout ) ;
PGTDE:: append_to_file ( $ stderr ) ;
$ stdout = $ node - > safe_psql ( 'postgres' , 'SELECT * FROM test_enc ORDER BY id ASC;' , extra_params = > [ '-a' ] ) ;
PGTDE:: append_to_file ( $ stdout ) ;
# Again rotate key
# Again rotate key
$ stdout = $ node - > safe_psql ( 'postgres' , "SELECT pg_tde_set_key_using_database_key_provider('rotated-key2','file-2');" , extra_params = > [ '-a' ] ) ;
PGTDE:: psql ( $ node , 'postgres' , "SELECT pg_tde_set_key_using_database_key_provider('rotated-key2','file-2');" ) ;
PGTDE:: append_to_file ( $ stdout ) ;
PGTDE:: psql ( $ node , 'postgres' , 'SELECT * FROM test_enc ORDER BY id ASC;' ) ;
$ stdout = $ node - > safe_psql ( 'postgres' , 'SELECT * FROM test_enc ORDER BY id ASC;' , extra_params = > [ '-a' ] ) ;
PGTDE:: append_to_file ( $ stdout ) ;
PGTDE:: append_to_file ( "-- server restart" ) ;
PGTDE:: append_to_file ( "-- server restart" ) ;
$ node - > stop ( ) ;
$ node - > stop ( ) ;
$ rt_value = $ node - > start ( ) ;
$ rt_value = $ node - > start ( ) ;
ok ( $ rt_value == 1 , "Restart Server" ) ;
ok ( $ rt_value == 1 , "Restart Server" ) ;
$ stdout = $ node - > safe_psql ( 'postgres' , "SELECT key_provider_id, key_provider_name, key_name FROM pg_tde_key_info();" , extra_params = > [ '-a' ] ) ;
PGTDE:: psql ( $ node , 'postgres' , "SELECT key_provider_id, key_provider_name, key_name FROM pg_tde_key_info();" ) ;
PGTDE:: append_to_file ( $ stdout ) ;
PGTDE:: psql ( $ node , 'postgres' , "SELECT key_provider_id, key_provider_name, key_name FROM pg_tde_server_key_info();" ) ;
( $ cmdret , $ stdout , $ stderr ) = $ node - > psql ( 'postgres' , "SELECT key_provider_id, key_provider_name, key_name FROM pg_tde_server_key_info();" , extra_params = > [ '-a' ] ) ;
PGTDE:: psql ( $ node , 'postgres' , 'SELECT * FROM test_enc ORDER BY id ASC;' ) ;
PGTDE:: append_to_file ( $ stdout ) ;
PGTDE:: append_to_file ( $ stderr ) ;
$ stdout = $ node - > safe_psql ( 'postgres' , 'SELECT * FROM test_enc ORDER BY id ASC;' , extra_params = > [ '-a' ] ) ;
PGTDE:: append_to_file ( $ stdout ) ;
# Again rotate key
# Again rotate key
$ stdout = $ node - > safe_psql ( 'postgres' , "SELECT pg_tde_set_key_using_global_key_provider('rotated-key', 'file-3', false);" , extra_params = > [ '-a' ] ) ;
PGTDE:: psql ( $ node , 'postgres' , "SELECT pg_tde_set_key_using_global_key_provider('rotated-key', 'file-3', false);" ) ;
PGTDE:: append_to_file ( $ stdout ) ;
PGTDE:: psql ( $ node , 'postgres' , 'SELECT * FROM test_enc ORDER BY id ASC;' ) ;
$ stdout = $ node - > safe_psql ( 'postgres' , 'SELECT * FROM test_enc ORDER BY id ASC;' , extra_params = > [ '-a' ] ) ;
PGTDE:: append_to_file ( $ stdout ) ;
PGTDE:: append_to_file ( "-- server restart" ) ;
PGTDE:: append_to_file ( "-- server restart" ) ;
$ node - > stop ( ) ;
$ node - > stop ( ) ;
$ rt_value = $ node - > start ( ) ;
$ rt_value = $ node - > start ( ) ;
ok ( $ rt_value == 1 , "Restart Server" ) ;
ok ( $ rt_value == 1 , "Restart Server" ) ;
$ stdout = $ node - > safe_psql ( 'postgres' , "SELECT key_provider_id, key_provider_name, key_name FROM pg_tde_key_info();" , extra_params = > [ '-a' ] ) ;
PGTDE:: psql ( $ node , 'postgres' , "SELECT key_provider_id, key_provider_name, key_name FROM pg_tde_key_info();" ) ;
PGTDE:: append_to_file ( $ stdout ) ;
PGTDE:: psql ( $ node , 'postgres' , "SELECT key_provider_id, key_provider_name, key_name FROM pg_tde_server_key_info();" ) ;
( $ cmdret , $ stdout , $ stderr ) = $ node - > psql ( 'postgres' , "SELECT key_provider_id, key_provider_name, key_name FROM pg_tde_server_key_info();" , extra_params = > [ '-a' ] ) ;
PGTDE:: psql ( $ node , 'postgres' , 'SELECT * FROM test_enc ORDER BY id ASC;' ) ;
PGTDE:: append_to_file ( $ stdout ) ;
PGTDE:: append_to_file ( $ stderr ) ;
$ stdout = $ node - > safe_psql ( 'postgres' , 'SELECT * FROM test_enc ORDER BY id ASC;' , extra_params = > [ '-a' ] ) ;
PGTDE:: append_to_file ( $ stdout ) ;
# TODO: add method to query current info
# TODO: add method to query current info
# And maybe debug tools to show what's in a file keyring?
# And maybe debug tools to show what's in a file keyring?
# Again rotate key
# Again rotate key
$ stdout = $ node - > safe_psql ( 'postgres' , "SELECT pg_tde_set_key_using_global_key_provider('rotated-keyX', 'file-2', false);" , extra_params = > [ '-a' ] ) ;
PGTDE:: psql ( $ node , 'postgres' , "SELECT pg_tde_set_key_using_global_key_provider('rotated-keyX', 'file-2', false);" ) ;
PGTDE:: append_to_file ( $ stdout ) ;
PGTDE:: psql ( $ node , 'postgres' , 'SELECT * FROM test_enc ORDER BY id ASC;' ) ;
$ stdout = $ node - > safe_psql ( 'postgres' , 'SELECT * FROM test_enc ORDER BY id ASC;' , extra_params = > [ '-a' ] ) ;
PGTDE:: append_to_file ( $ stdout ) ;
PGTDE:: append_to_file ( "-- server restart" ) ;
PGTDE:: append_to_file ( "-- server restart" ) ;
$ node - > stop ( ) ;
$ node - > stop ( ) ;
$ rt_value = $ node - > start ( ) ;
$ rt_value = $ node - > start ( ) ;
ok ( $ rt_value == 1 , "Restart Server" ) ;
ok ( $ rt_value == 1 , "Restart Server" ) ;
$ stdout = $ node - > safe_psql ( 'postgres' , "SELECT key_provider_id, key_provider_name, key_name FROM pg_tde_key_info();" , extra_params = > [ '-a' ] ) ;
PGTDE:: psql ( $ node , 'postgres' , "SELECT key_provider_id, key_provider_name, key_name FROM pg_tde_key_info();" ) ;
PGTDE:: append_to_file ( $ stdout ) ;
PGTDE:: psql ( $ node , 'postgres' , "SELECT key_provider_id, key_provider_name, key_name FROM pg_tde_server_key_info();" ) ;
( $ cmdret , $ stdout , $ stderr ) = $ node - > psql ( 'postgres' , "SELECT key_provider_id, key_provider_name, key_name FROM pg_tde_server_key_info();" , extra_params = > [ '-a' ] ) ;
PGTDE:: psql ( $ node , 'postgres' , 'SELECT * FROM test_enc ORDER BY id ASC;' ) ;
PGTDE:: append_to_file ( $ stdout ) ;
PGTDE:: append_to_file ( $ stderr ) ;
$ stdout = $ node - > safe_psql ( 'postgres' , 'SELECT * FROM test_enc ORDER BY id ASC;' , extra_params = > [ '-a' ] ) ;
PGTDE:: append_to_file ( $ stdout ) ;
$ stdout = $ node - > safe_psql ( 'postgres' , 'ALTER SYSTEM SET pg_tde.inherit_global_providers = OFF;' , extra_params = > [ '-a' ] ) ;
PGTDE:: psql ( $ node , 'postgres' , 'ALTER SYSTEM SET pg_tde.inherit_global_providers = OFF;' ) ;
PGTDE:: append_to_file ( $ stdout ) ;
# Things still work after a restart
# Things still work after a restart
PGTDE:: append_to_file ( "-- server restart" ) ;
PGTDE:: append_to_file ( "-- server restart" ) ;
@ -144,36 +107,24 @@ $rt_value = $node->start();
ok ( $ rt_value == 1 , "Restart Server" ) ;
ok ( $ rt_value == 1 , "Restart Server" ) ;
# But now can't be changed to another global provider
# But now can't be changed to another global provider
( $ cmdret , $ stdout , $ stderr ) = $ node - > psql ( 'postgres' , "SELECT pg_tde_set_key_using_global_key_provider('rotated-keyX2', 'file-2', false);" , extra_params = > [ '-a' ] ) ;
PGTDE:: psql ( $ node , 'postgres' , "SELECT pg_tde_set_key_using_global_key_provider('rotated-keyX2', 'file-2', false);" ) ;
PGTDE:: append_to_file ( $ stderr ) ;
PGTDE:: psql ( $ node , 'postgres' , "SELECT key_provider_id, key_provider_name, key_name FROM pg_tde_key_info();" ) ;
$ stdout = $ node - > safe_psql ( 'postgres' , "SELECT key_provider_id, key_provider_name, key_name FROM pg_tde_key_info();" , extra_params = > [ '-a' ] ) ;
PGTDE:: psql ( $ node , 'postgres' , "SELECT key_provider_id, key_provider_name, key_name FROM pg_tde_server_key_info();" ) ;
PGTDE:: append_to_file ( $ stdout ) ;
( $ cmdret , $ stdout , $ stderr ) = $ node - > psql ( 'postgres' , "SELECT key_provider_id, key_provider_name, key_name FROM pg_tde_server_key_info();" , extra_params = > [ '-a' ] ) ;
PGTDE:: psql ( $ node , 'postgres' , "SELECT pg_tde_set_key_using_database_key_provider('rotated-key2','file-2');" ) ;
PGTDE:: append_to_file ( $ stdout ) ;
PGTDE:: psql ( $ node , 'postgres' , "SELECT key_provider_id, key_provider_name, key_name FROM pg_tde_key_info();" ) ;
PGTDE:: append_to_file ( $ stderr ) ;
PGTDE:: psql ( $ node , 'postgres' , "SELECT key_provider_id, key_provider_name, key_name FROM pg_tde_server_key_info();" ) ;
$ stdout = $ node - > safe_psql ( 'postgres' , "SELECT pg_tde_set_key_using_database_key_provider('rotated-key2','file-2');" , extra_params = > [ '-a' ] ) ;
PGTDE:: psql ( $ node , 'postgres' , 'DROP TABLE test_enc;' ) ;
PGTDE:: append_to_file ( $ stdout ) ;
$ stdout = $ node - > safe_psql ( 'postgres' , "SELECT key_provider_id, key_provider_name, key_name FROM pg_tde_key_info();" , extra_params = > [ '-a' ] ) ;
PGTDE:: psql ( $ node , 'postgres' , 'ALTER SYSTEM RESET pg_tde.inherit_global_providers;' ) ;
PGTDE:: append_to_file ( $ stdout ) ;
( $ cmdret , $ stdout , $ stderr ) = $ node - > psql ( 'postgres' , "SELECT key_provider_id, key_provider_name, key_name FROM pg_tde_server_key_info();" , extra_params = > [ '-a' ] ) ;
PGTDE:: append_to_file ( $ stdout ) ;
PGTDE:: append_to_file ( $ stderr ) ;
$ stdout = $ node - > safe_psql ( 'postgres' , 'DROP TABLE test_enc;' , extra_params = > [ '-a' ] ) ;
PGTDE:: append_to_file ( $ stdout ) ;
$ stdout = $ node - > safe_psql ( 'postgres' , 'ALTER SYSTEM RESET pg_tde.inherit_global_providers;' , extra_params = > [ '-a' ] ) ;
PGTDE:: append_to_file ( $ stdout ) ;
PGTDE:: append_to_file ( "-- server restart" ) ;
PGTDE:: append_to_file ( "-- server restart" ) ;
$ node - > stop ( ) ;
$ node - > stop ( ) ;
$ rt_value = $ node - > start ( ) ;
$ rt_value = $ node - > start ( ) ;
ok ( $ rt_value == 1 , "Restart Server" ) ;
ok ( $ rt_value == 1 , "Restart Server" ) ;
( $ cmdret , $ stdout , $ stderr ) = $ node - > psql ( 'postgres' , 'DROP EXTENSION pg_tde CASCADE;' , extra_params = > [ '-a' ] ) ;
PGTDE:: psql ( $ node , 'postgres' , 'DROP EXTENSION pg_tde CASCADE;' ) ;
PGTDE:: append_to_file ( $ stdout ) ;
PGTDE:: append_to_file ( $ stderr ) ;
$ node - > stop ( ) ;
$ node - > stop ( ) ;