blob: 214d02c5deccb925965d63de6b2bd3f57bf94010 [file]
ij> --
-- Licensed to the Apache Software Foundation (ASF) under one or more
-- contributor license agreements. See the NOTICE file distributed with
-- this work for additional information regarding copyright ownership.
-- The ASF licenses this file to You under the Apache License, Version 2.0
-- (the "License"); you may not use this file except in compliance with
-- the License. You may obtain a copy of the License at
--
-- http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.
--
-- test database encryption parameters such as the encryption algorithm and the encryption provider
connect 'jdbc:derby:;shutdown=true';
ERROR XJ015: Derby system shutdown.
ij> connect 'jdbc:derby:wombatDESede;create=true;dataEncryption=true;bootPassword=ThursdaySaturday;encryptionAlgorithm=DESede/CBC/NoPadding';
ij> create table t1 ( a char(20));
0 rows inserted/updated/deleted
ij> insert into t1 values ('hello world');
1 row inserted/updated/deleted
ij> select * from t1;
A
--------------------
hello world
ij> disconnect;
ij> connect 'jdbc:derby:;shutdown=true';
ERROR XJ015: Derby system shutdown.
ij> -- algorithm is not specified, doesn't matter since algorithm is stored in the database
connect 'jdbc:derby:wombatDESede;bootPassword=ThursdaySaturday';
ij> select * from t1;
A
--------------------
hello world
ij> disconnect;
ij> connect 'jdbc:derby:;shutdown=true';
ERROR XJ015: Derby system shutdown.
ij> -- wrong algorithm, doesn't matter since algorithm is stored in the database
connect 'jdbc:derby:wombatDESede;bootPassword=ThursdaySaturday;encryptionAlgorithm=Blowfish/CBC/NoPadding';
ij> select * from t1;
A
--------------------
hello world
ij> disconnect;
ij> connect 'jdbc:derby:;shutdown=true';
ERROR XJ015: Derby system shutdown.
ij> -- create new databases with different encryption algorithms
connect 'jdbc:derby:wombatDES;create=true;dataEncryption=true;bootPassword=ThursdaySaturdayfoobarpo;encryptionAlgorithm=DES/CBC/NoPadding';
ij> create table t2 ( a char(20));
0 rows inserted/updated/deleted
ij> insert into t2 values ('hot air');
1 row inserted/updated/deleted
ij> select * from t2;
A
--------------------
hot air
ij> disconnect;
ij> connect 'jdbc:derby:;shutdown=true';
ERROR XJ015: Derby system shutdown.
ij> connect 'jdbc:derby:wombatBlowfish;create=true;dataEncryption=true;bootPassword=SundayMondayFriday;encryptionAlgorithm=Blowfish/CBC/NoPadding';
ij> create table t3 ( a char(20));
0 rows inserted/updated/deleted
ij> insert into t3 values ('blow hot air on fish');
1 row inserted/updated/deleted
ij> select * from t3;
A
--------------------
blow hot air on fish
ij> disconnect;
ij> connect 'jdbc:derby:;shutdown=true';
ERROR XJ015: Derby system shutdown.
ij> -- have 3 connections open to 3 databases, each datababase uses a different encryption algorithm
connect 'jdbc:derby:wombatDESede;bootPassword=ThursdaySaturday' AS C1;
ij> connect 'jdbc:derby:wombatDES;bootPassword=ThursdaySaturdayfoobarpo' AS C2;
ij(C2)> connect 'jdbc:derby:wombatBlowfish;bootPassword=SundayMondayFriday' AS C3;
ij(C3)> set connection C1;
ij(C1)> select * from t1;
A
--------------------
hello world
ij(C1)> set connection C2;
ij(C2)> select * from t2;
A
--------------------
hot air
ij(C2)> set connection C3;
ij(C3)> select * from t3;
A
--------------------
blow hot air on fish
ij(C3)> disconnect;
ij> connect 'jdbc:derby:;shutdown=true';
ERROR XJ015: Derby system shutdown.
ij> -- create a new database with an algorithm which uses padding
-- should not work
connect 'jdbc:derby:wombatBad;create=true;dataEncryption=true;bootPassword=ThursdaySaturday;encryptionAlgorithm=DESede/CBC/PKCS5Padding';
ERROR XJ041: Failed to create database 'wombatBad', see the next exception for details.
ERROR XBM01: Startup failed due to an exception. See next exception for details.
ERROR XBCXB: Bad encryption padding 'PKCS5Padding' or padding not specified. 'NoPadding' must be used.
ij> -- create a new database with a bad algorithm
-- should not work
connect 'jdbc:derby:wombatBad;create=true;dataEncryption=true;bootPassword=ThursdaySaturday;encryptionAlgorithm=Fungus/CBC/NoPadding';
ERROR XJ041: Failed to create database 'wombatBad', see the next exception for details.
ERROR XBM01: Startup failed due to an exception. See next exception for details.
ERROR XBCXC: Encryption algorithm 'Fungus/CBC/NoPadding' does not exist. Please check that the chosen provider 'default' supports this algorithm.
ij> -- create a new database with another bad algorithm (bad feedback mode)
-- should not work
connect 'jdbc:derby:wombatBad;create=true;dataEncryption=true;bootPassword=ThursdaySaturday;encryptionAlgorithm=DES/CNN/NoPadding';
ERROR XJ041: Failed to create database 'wombatBad', see the next exception for details.
ERROR XBM01: Startup failed due to an exception. See next exception for details.
ERROR XBCXI: The feedback mode 'CNN' is not supported. Supported feedback modes are CBC, CFB, OFB and ECB.
ij> -- create a new database with a provider class that doesn't exist
-- should not work
connect 'jdbc:derby:wombatBad;create=true;dataEncryption=true;bootPassword=ThursdaySaturday;encryptionProvider=com.foo.bar';
ERROR XJ041: Failed to create database 'wombatBad', see the next exception for details.
ERROR XBM0G: Failed to start encryption engine. Please make sure you are running Java 2 and have downloaded an encryption provider such as jce and put it in your class path.
ERROR XBCXF: The class 'com.foo.bar' representing the encryption provider cannot be found.
ERROR XJ001: Java exception: 'com.foo.bar: java.lang.ClassNotFoundException'.
ij> -- create a new database with a provider class that doesn't implement the
-- java.security.Provider interface
-- should not work
connect 'jdbc:derby:wombatBad;create=true;dataEncryption=true;bootPassword=ThursdaySaturday;encryptionProvider=java.lang.Object';
ERROR XJ041: Failed to create database 'wombatBad', see the next exception for details.
ERROR XBM01: Startup failed due to an exception. See next exception for details.
ERROR XBCXF: The class 'java.lang.Object' does not implement the java.security.Provider interface.
ij> -- create a new database with a bad encryption algorithm format
-- should not work
connect 'jdbc:derby:wombatBad;create=true;dataEncryption=true;bootPassword=ThursdaySaturday;encryptionAlgorithm=DES';
ERROR XJ041: Failed to create database 'wombatBad', see the next exception for details.
ERROR XBM01: Startup failed due to an exception. See next exception for details.
ERROR XBCXH: The encryptionAlgorithm 'DES' is not in the correct format. The correct format is algorithm/feedbackMode/NoPadding.
ij> -- create a new database with a non supported feedback mode (PCBC)
-- should not work
connect 'jdbc:derby:wombatBad;create=true;dataEncryption=true;bootPassword=ThursdaySaturday;encryptionAlgorithm=DES/PCBC/NoPadding';
ERROR XJ041: Failed to create database 'wombatBad', see the next exception for details.
ERROR XBM01: Startup failed due to an exception. See next exception for details.
ERROR XBCXI: The feedback mode 'PCBC' is not supported. Supported feedback modes are CBC, CFB, OFB and ECB.
ij>