Import BSDDB 4.7.25 (as of svn r89086)
This commit is contained in:
640
perl/BerkeleyDB/t/encrypt.t
Normal file
640
perl/BerkeleyDB/t/encrypt.t
Normal file
@@ -0,0 +1,640 @@
|
||||
#!./perl -w
|
||||
|
||||
# ID: %I%, %G%
|
||||
|
||||
use strict ;
|
||||
|
||||
use lib 't' ;
|
||||
use BerkeleyDB;
|
||||
use util ;
|
||||
|
||||
BEGIN
|
||||
{
|
||||
if ($BerkeleyDB::db_version < 4.1) {
|
||||
print "1..0 # Skip: this needs Berkeley DB 4.1.x or better\n" ;
|
||||
exit 0 ;
|
||||
}
|
||||
|
||||
# Is encryption available?
|
||||
my $env = new BerkeleyDB::Env @StdErrFile,
|
||||
-Encrypt => {Password => "abc",
|
||||
Flags => DB_ENCRYPT_AES
|
||||
};
|
||||
|
||||
if ($BerkeleyDB::Error =~ /Operation not supported/)
|
||||
{
|
||||
print "1..0 # Skip: encryption support not present\n" ;
|
||||
exit 0 ;
|
||||
}
|
||||
}
|
||||
|
||||
umask(0);
|
||||
|
||||
print "1..80\n";
|
||||
|
||||
{
|
||||
eval
|
||||
{
|
||||
my $env = new BerkeleyDB::Env @StdErrFile,
|
||||
-Encrypt => 1,
|
||||
-Flags => DB_CREATE ;
|
||||
};
|
||||
ok 1, $@ =~ /^Encrypt parameter must be a hash reference at/;
|
||||
|
||||
eval
|
||||
{
|
||||
my $env = new BerkeleyDB::Env @StdErrFile,
|
||||
-Encrypt => {},
|
||||
-Flags => DB_CREATE ;
|
||||
};
|
||||
ok 2, $@ =~ /^Must specify Password and Flags with Encrypt parameter at/;
|
||||
|
||||
eval
|
||||
{
|
||||
my $env = new BerkeleyDB::Env @StdErrFile,
|
||||
-Encrypt => {Password => "fred"},
|
||||
-Flags => DB_CREATE ;
|
||||
};
|
||||
ok 3, $@ =~ /^Must specify Password and Flags with Encrypt parameter at/;
|
||||
|
||||
eval
|
||||
{
|
||||
my $env = new BerkeleyDB::Env @StdErrFile,
|
||||
-Encrypt => {Flags => 1},
|
||||
-Flags => DB_CREATE ;
|
||||
};
|
||||
ok 4, $@ =~ /^Must specify Password and Flags with Encrypt parameter at/;
|
||||
|
||||
eval
|
||||
{
|
||||
my $env = new BerkeleyDB::Env @StdErrFile,
|
||||
-Encrypt => {Fred => 1},
|
||||
-Flags => DB_CREATE ;
|
||||
};
|
||||
ok 5, $@ =~ /^\Qunknown key value(s) Fred at/;
|
||||
|
||||
}
|
||||
|
||||
{
|
||||
# new BerkeleyDB::Env -Encrypt =>
|
||||
|
||||
# create an environment with a Home
|
||||
my $home = "./fred" ;
|
||||
#mkdir $home;
|
||||
ok 6, my $lexD = new LexDir($home) ;
|
||||
ok 7, my $env = new BerkeleyDB::Env @StdErrFile,
|
||||
-Home => $home,
|
||||
-Encrypt => {Password => "abc",
|
||||
Flags => DB_ENCRYPT_AES
|
||||
},
|
||||
-Flags => DB_CREATE | DB_INIT_MPOOL ;
|
||||
|
||||
|
||||
|
||||
my $Dfile = "abc.enc";
|
||||
my $lex = new LexFile $Dfile ;
|
||||
my %hash ;
|
||||
my ($k, $v) ;
|
||||
ok 8, my $db = new BerkeleyDB::Hash -Filename => $Dfile,
|
||||
-Env => $env,
|
||||
-Flags => DB_CREATE,
|
||||
-Property => DB_ENCRYPT ;
|
||||
|
||||
# create some data
|
||||
my %data = (
|
||||
"red" => 2,
|
||||
"green" => "house",
|
||||
"blue" => "sea",
|
||||
) ;
|
||||
|
||||
my $ret = 0 ;
|
||||
while (($k, $v) = each %data) {
|
||||
$ret += $db->db_put($k, $v) ;
|
||||
}
|
||||
ok 9, $ret == 0 ;
|
||||
|
||||
# check there are three records
|
||||
ok 10, countRecords($db) == 3 ;
|
||||
|
||||
undef $db;
|
||||
|
||||
# once the database is created, do not need to specify DB_ENCRYPT
|
||||
ok 11, my $db1 = new BerkeleyDB::Hash -Filename => $Dfile,
|
||||
-Env => $env,
|
||||
-Flags => DB_CREATE ;
|
||||
$v = '';
|
||||
ok 12, ! $db1->db_get("red", $v) ;
|
||||
ok 13, $v eq $data{"red"},
|
||||
undef $db1;
|
||||
undef $env;
|
||||
|
||||
# open a database without specifying encryption
|
||||
ok 14, ! new BerkeleyDB::Hash -Filename => "$home/$Dfile";
|
||||
|
||||
ok 15, ! new BerkeleyDB::Env
|
||||
-Home => $home,
|
||||
-Encrypt => {Password => "def",
|
||||
Flags => DB_ENCRYPT_AES
|
||||
},
|
||||
-Flags => DB_CREATE | DB_INIT_MPOOL ;
|
||||
}
|
||||
|
||||
{
|
||||
eval
|
||||
{
|
||||
my $env = new BerkeleyDB::Hash
|
||||
-Encrypt => 1,
|
||||
-Flags => DB_CREATE ;
|
||||
};
|
||||
ok 16, $@ =~ /^Encrypt parameter must be a hash reference at/;
|
||||
|
||||
eval
|
||||
{
|
||||
my $env = new BerkeleyDB::Hash
|
||||
-Encrypt => {},
|
||||
-Flags => DB_CREATE ;
|
||||
};
|
||||
ok 17, $@ =~ /^Must specify Password and Flags with Encrypt parameter at/;
|
||||
|
||||
eval
|
||||
{
|
||||
my $env = new BerkeleyDB::Hash
|
||||
-Encrypt => {Password => "fred"},
|
||||
-Flags => DB_CREATE ;
|
||||
};
|
||||
ok 18, $@ =~ /^Must specify Password and Flags with Encrypt parameter at/;
|
||||
|
||||
eval
|
||||
{
|
||||
my $env = new BerkeleyDB::Hash
|
||||
-Encrypt => {Flags => 1},
|
||||
-Flags => DB_CREATE ;
|
||||
};
|
||||
ok 19, $@ =~ /^Must specify Password and Flags with Encrypt parameter at/;
|
||||
|
||||
eval
|
||||
{
|
||||
my $env = new BerkeleyDB::Hash
|
||||
-Encrypt => {Fred => 1},
|
||||
-Flags => DB_CREATE ;
|
||||
};
|
||||
ok 20, $@ =~ /^\Qunknown key value(s) Fred at/;
|
||||
|
||||
}
|
||||
|
||||
{
|
||||
eval
|
||||
{
|
||||
my $env = new BerkeleyDB::Btree
|
||||
-Encrypt => 1,
|
||||
-Flags => DB_CREATE ;
|
||||
};
|
||||
ok 21, $@ =~ /^Encrypt parameter must be a hash reference at/;
|
||||
|
||||
eval
|
||||
{
|
||||
my $env = new BerkeleyDB::Btree
|
||||
-Encrypt => {},
|
||||
-Flags => DB_CREATE ;
|
||||
};
|
||||
ok 22, $@ =~ /^Must specify Password and Flags with Encrypt parameter at/;
|
||||
|
||||
eval
|
||||
{
|
||||
my $env = new BerkeleyDB::Btree
|
||||
-Encrypt => {Password => "fred"},
|
||||
-Flags => DB_CREATE ;
|
||||
};
|
||||
ok 23, $@ =~ /^Must specify Password and Flags with Encrypt parameter at/;
|
||||
|
||||
eval
|
||||
{
|
||||
my $env = new BerkeleyDB::Btree
|
||||
-Encrypt => {Flags => 1},
|
||||
-Flags => DB_CREATE ;
|
||||
};
|
||||
ok 24, $@ =~ /^Must specify Password and Flags with Encrypt parameter at/;
|
||||
|
||||
eval
|
||||
{
|
||||
my $env = new BerkeleyDB::Btree
|
||||
-Encrypt => {Fred => 1},
|
||||
-Flags => DB_CREATE ;
|
||||
};
|
||||
ok 25, $@ =~ /^\Qunknown key value(s) Fred at/;
|
||||
|
||||
}
|
||||
|
||||
{
|
||||
eval
|
||||
{
|
||||
my $env = new BerkeleyDB::Queue
|
||||
-Encrypt => 1,
|
||||
-Flags => DB_CREATE ;
|
||||
};
|
||||
ok 26, $@ =~ /^Encrypt parameter must be a hash reference at/;
|
||||
|
||||
eval
|
||||
{
|
||||
my $env = new BerkeleyDB::Queue
|
||||
-Encrypt => {},
|
||||
-Flags => DB_CREATE ;
|
||||
};
|
||||
ok 27, $@ =~ /^Must specify Password and Flags with Encrypt parameter at/;
|
||||
|
||||
eval
|
||||
{
|
||||
my $env = new BerkeleyDB::Queue
|
||||
-Encrypt => {Password => "fred"},
|
||||
-Flags => DB_CREATE ;
|
||||
};
|
||||
ok 28, $@ =~ /^Must specify Password and Flags with Encrypt parameter at/;
|
||||
|
||||
eval
|
||||
{
|
||||
my $env = new BerkeleyDB::Queue
|
||||
-Encrypt => {Flags => 1},
|
||||
-Flags => DB_CREATE ;
|
||||
};
|
||||
ok 29, $@ =~ /^Must specify Password and Flags with Encrypt parameter at/;
|
||||
|
||||
eval
|
||||
{
|
||||
my $env = new BerkeleyDB::Queue
|
||||
-Encrypt => {Fred => 1},
|
||||
-Flags => DB_CREATE ;
|
||||
};
|
||||
ok 30, $@ =~ /^\Qunknown key value(s) Fred at/;
|
||||
|
||||
}
|
||||
|
||||
{
|
||||
eval
|
||||
{
|
||||
my $env = new BerkeleyDB::Recno
|
||||
-Encrypt => 1,
|
||||
-Flags => DB_CREATE ;
|
||||
};
|
||||
ok 31, $@ =~ /^Encrypt parameter must be a hash reference at/;
|
||||
|
||||
eval
|
||||
{
|
||||
my $env = new BerkeleyDB::Recno
|
||||
-Encrypt => {},
|
||||
-Flags => DB_CREATE ;
|
||||
};
|
||||
ok 32, $@ =~ /^Must specify Password and Flags with Encrypt parameter at/;
|
||||
|
||||
eval
|
||||
{
|
||||
my $env = new BerkeleyDB::Recno
|
||||
-Encrypt => {Password => "fred"},
|
||||
-Flags => DB_CREATE ;
|
||||
};
|
||||
ok 33, $@ =~ /^Must specify Password and Flags with Encrypt parameter at/;
|
||||
|
||||
eval
|
||||
{
|
||||
my $env = new BerkeleyDB::Recno
|
||||
-Encrypt => {Flags => 1},
|
||||
-Flags => DB_CREATE ;
|
||||
};
|
||||
ok 34, $@ =~ /^Must specify Password and Flags with Encrypt parameter at/;
|
||||
|
||||
eval
|
||||
{
|
||||
my $env = new BerkeleyDB::Recno
|
||||
-Encrypt => {Fred => 1},
|
||||
-Flags => DB_CREATE ;
|
||||
};
|
||||
ok 35, $@ =~ /^\Qunknown key value(s) Fred at/;
|
||||
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
# new BerkeleyDB::Hash -Encrypt =>
|
||||
|
||||
my $Dfile = "abcd.enc";
|
||||
my $lex = new LexFile $Dfile ;
|
||||
my %hash ;
|
||||
my ($k, $v) ;
|
||||
ok 36, my $db = new BerkeleyDB::Hash
|
||||
-Filename => $Dfile,
|
||||
-Flags => DB_CREATE,
|
||||
-Encrypt => {Password => "beta",
|
||||
Flags => DB_ENCRYPT_AES
|
||||
},
|
||||
-Property => DB_ENCRYPT ;
|
||||
|
||||
# create some data
|
||||
my %data = (
|
||||
"red" => 2,
|
||||
"green" => "house",
|
||||
"blue" => "sea",
|
||||
) ;
|
||||
|
||||
my $ret = 0 ;
|
||||
while (($k, $v) = each %data) {
|
||||
$ret += $db->db_put($k, $v) ;
|
||||
}
|
||||
ok 37, $ret == 0 ;
|
||||
|
||||
# check there are three records
|
||||
ok 38, countRecords($db) == 3 ;
|
||||
|
||||
undef $db;
|
||||
|
||||
# attempt to open a database without specifying encryption
|
||||
ok 39, ! new BerkeleyDB::Hash -Filename => $Dfile,
|
||||
-Flags => DB_CREATE ;
|
||||
|
||||
|
||||
# try opening with the wrong password
|
||||
ok 40, ! new BerkeleyDB::Hash -Filename => $Dfile,
|
||||
-Filename => $Dfile,
|
||||
-Encrypt => {Password => "def",
|
||||
Flags => DB_ENCRYPT_AES
|
||||
},
|
||||
-Property => DB_ENCRYPT ;
|
||||
|
||||
|
||||
# read the encrypted data
|
||||
ok 41, my $db1 = new BerkeleyDB::Hash -Filename => $Dfile,
|
||||
-Filename => $Dfile,
|
||||
-Encrypt => {Password => "beta",
|
||||
Flags => DB_ENCRYPT_AES
|
||||
},
|
||||
-Property => DB_ENCRYPT ;
|
||||
|
||||
|
||||
$v = '';
|
||||
ok 42, ! $db1->db_get("red", $v) ;
|
||||
ok 43, $v eq $data{"red"};
|
||||
# check there are three records
|
||||
ok 44, countRecords($db1) == 3 ;
|
||||
undef $db1;
|
||||
}
|
||||
|
||||
{
|
||||
# new BerkeleyDB::Btree -Encrypt =>
|
||||
|
||||
my $Dfile = "abcd.enc";
|
||||
my $lex = new LexFile $Dfile ;
|
||||
my %hash ;
|
||||
my ($k, $v) ;
|
||||
ok 45, my $db = new BerkeleyDB::Btree
|
||||
-Filename => $Dfile,
|
||||
-Flags => DB_CREATE,
|
||||
-Encrypt => {Password => "beta",
|
||||
Flags => DB_ENCRYPT_AES
|
||||
},
|
||||
-Property => DB_ENCRYPT ;
|
||||
|
||||
# create some data
|
||||
my %data = (
|
||||
"red" => 2,
|
||||
"green" => "house",
|
||||
"blue" => "sea",
|
||||
) ;
|
||||
|
||||
my $ret = 0 ;
|
||||
while (($k, $v) = each %data) {
|
||||
$ret += $db->db_put($k, $v) ;
|
||||
}
|
||||
ok 46, $ret == 0 ;
|
||||
|
||||
# check there are three records
|
||||
ok 47, countRecords($db) == 3 ;
|
||||
|
||||
undef $db;
|
||||
|
||||
# attempt to open a database without specifying encryption
|
||||
ok 48, ! new BerkeleyDB::Btree -Filename => $Dfile,
|
||||
-Flags => DB_CREATE ;
|
||||
|
||||
|
||||
# try opening with the wrong password
|
||||
ok 49, ! new BerkeleyDB::Btree -Filename => $Dfile,
|
||||
-Filename => $Dfile,
|
||||
-Encrypt => {Password => "def",
|
||||
Flags => DB_ENCRYPT_AES
|
||||
},
|
||||
-Property => DB_ENCRYPT ;
|
||||
|
||||
|
||||
# read the encrypted data
|
||||
ok 50, my $db1 = new BerkeleyDB::Btree -Filename => $Dfile,
|
||||
-Filename => $Dfile,
|
||||
-Encrypt => {Password => "beta",
|
||||
Flags => DB_ENCRYPT_AES
|
||||
},
|
||||
-Property => DB_ENCRYPT ;
|
||||
|
||||
|
||||
$v = '';
|
||||
ok 51, ! $db1->db_get("red", $v) ;
|
||||
ok 52, $v eq $data{"red"};
|
||||
# check there are three records
|
||||
ok 53, countRecords($db1) == 3 ;
|
||||
undef $db1;
|
||||
}
|
||||
|
||||
{
|
||||
# new BerkeleyDB::Queue -Encrypt =>
|
||||
|
||||
my $Dfile = "abcd.enc";
|
||||
my $lex = new LexFile $Dfile ;
|
||||
my %hash ;
|
||||
my ($k, $v) ;
|
||||
ok 54, my $db = new BerkeleyDB::Queue
|
||||
-Filename => $Dfile,
|
||||
-Len => 5,
|
||||
-Pad => "x",
|
||||
-Flags => DB_CREATE,
|
||||
-Encrypt => {Password => "beta",
|
||||
Flags => DB_ENCRYPT_AES
|
||||
},
|
||||
-Property => DB_ENCRYPT ;
|
||||
|
||||
# create some data
|
||||
my %data = (
|
||||
1 => 2,
|
||||
2 => "house",
|
||||
3 => "sea",
|
||||
) ;
|
||||
|
||||
my $ret = 0 ;
|
||||
while (($k, $v) = each %data) {
|
||||
$ret += $db->db_put($k, $v) ;
|
||||
}
|
||||
ok 55, $ret == 0 ;
|
||||
|
||||
# check there are three records
|
||||
ok 56, countRecords($db) == 3 ;
|
||||
|
||||
undef $db;
|
||||
|
||||
# attempt to open a database without specifying encryption
|
||||
ok 57, ! new BerkeleyDB::Queue -Filename => $Dfile,
|
||||
-Len => 5,
|
||||
-Pad => "x",
|
||||
-Flags => DB_CREATE ;
|
||||
|
||||
|
||||
# try opening with the wrong password
|
||||
ok 58, ! new BerkeleyDB::Queue -Filename => $Dfile,
|
||||
-Len => 5,
|
||||
-Pad => "x",
|
||||
-Encrypt => {Password => "def",
|
||||
Flags => DB_ENCRYPT_AES
|
||||
},
|
||||
-Property => DB_ENCRYPT ;
|
||||
|
||||
|
||||
# read the encrypted data
|
||||
ok 59, my $db1 = new BerkeleyDB::Queue -Filename => $Dfile,
|
||||
-Len => 5,
|
||||
-Pad => "x",
|
||||
-Encrypt => {Password => "beta",
|
||||
Flags => DB_ENCRYPT_AES
|
||||
},
|
||||
-Property => DB_ENCRYPT ;
|
||||
|
||||
|
||||
$v = '';
|
||||
ok 60, ! $db1->db_get(3, $v) ;
|
||||
ok 61, $v eq fillout($data{3}, 5, 'x');
|
||||
# check there are three records
|
||||
ok 62, countRecords($db1) == 3 ;
|
||||
undef $db1;
|
||||
}
|
||||
|
||||
{
|
||||
# new BerkeleyDB::Recno -Encrypt =>
|
||||
|
||||
my $Dfile = "abcd.enc";
|
||||
my $lex = new LexFile $Dfile ;
|
||||
my %hash ;
|
||||
my ($k, $v) ;
|
||||
ok 63, my $db = new BerkeleyDB::Recno
|
||||
-Filename => $Dfile,
|
||||
-Flags => DB_CREATE,
|
||||
-Encrypt => {Password => "beta",
|
||||
Flags => DB_ENCRYPT_AES
|
||||
},
|
||||
-Property => DB_ENCRYPT ;
|
||||
|
||||
# create some data
|
||||
my %data = (
|
||||
1 => 2,
|
||||
2 => "house",
|
||||
3 => "sea",
|
||||
) ;
|
||||
|
||||
my $ret = 0 ;
|
||||
while (($k, $v) = each %data) {
|
||||
$ret += $db->db_put($k, $v) ;
|
||||
}
|
||||
ok 64, $ret == 0 ;
|
||||
|
||||
# check there are three records
|
||||
ok 65, countRecords($db) == 3 ;
|
||||
|
||||
undef $db;
|
||||
|
||||
# attempt to open a database without specifying encryption
|
||||
ok 66, ! new BerkeleyDB::Recno -Filename => $Dfile,
|
||||
-Flags => DB_CREATE ;
|
||||
|
||||
|
||||
# try opening with the wrong password
|
||||
ok 67, ! new BerkeleyDB::Recno -Filename => $Dfile,
|
||||
-Filename => $Dfile,
|
||||
-Encrypt => {Password => "def",
|
||||
Flags => DB_ENCRYPT_AES
|
||||
},
|
||||
-Property => DB_ENCRYPT ;
|
||||
|
||||
|
||||
# read the encrypted data
|
||||
ok 68, my $db1 = new BerkeleyDB::Recno -Filename => $Dfile,
|
||||
-Filename => $Dfile,
|
||||
-Encrypt => {Password => "beta",
|
||||
Flags => DB_ENCRYPT_AES
|
||||
},
|
||||
-Property => DB_ENCRYPT ;
|
||||
|
||||
|
||||
$v = '';
|
||||
ok 69, ! $db1->db_get(3, $v) ;
|
||||
ok 70, $v eq $data{3};
|
||||
# check there are three records
|
||||
ok 71, countRecords($db1) == 3 ;
|
||||
undef $db1;
|
||||
}
|
||||
|
||||
{
|
||||
# new BerkeleyDB::Unknown -Encrypt =>
|
||||
|
||||
my $Dfile = "abcd.enc";
|
||||
my $lex = new LexFile $Dfile ;
|
||||
my %hash ;
|
||||
my ($k, $v) ;
|
||||
ok 72, my $db = new BerkeleyDB::Hash
|
||||
-Filename => $Dfile,
|
||||
-Flags => DB_CREATE,
|
||||
-Encrypt => {Password => "beta",
|
||||
Flags => DB_ENCRYPT_AES
|
||||
},
|
||||
-Property => DB_ENCRYPT ;
|
||||
|
||||
# create some data
|
||||
my %data = (
|
||||
"red" => 2,
|
||||
"green" => "house",
|
||||
"blue" => "sea",
|
||||
) ;
|
||||
|
||||
my $ret = 0 ;
|
||||
while (($k, $v) = each %data) {
|
||||
$ret += $db->db_put($k, $v) ;
|
||||
}
|
||||
ok 73, $ret == 0 ;
|
||||
|
||||
# check there are three records
|
||||
ok 74, countRecords($db) == 3 ;
|
||||
|
||||
undef $db;
|
||||
|
||||
# attempt to open a database without specifying encryption
|
||||
ok 75, ! new BerkeleyDB::Unknown -Filename => $Dfile,
|
||||
-Flags => DB_CREATE ;
|
||||
|
||||
|
||||
# try opening with the wrong password
|
||||
ok 76, ! new BerkeleyDB::Unknown -Filename => $Dfile,
|
||||
-Filename => $Dfile,
|
||||
-Encrypt => {Password => "def",
|
||||
Flags => DB_ENCRYPT_AES
|
||||
},
|
||||
-Property => DB_ENCRYPT ;
|
||||
|
||||
|
||||
# read the encrypted data
|
||||
ok 77, my $db1 = new BerkeleyDB::Unknown -Filename => $Dfile,
|
||||
-Filename => $Dfile,
|
||||
-Encrypt => {Password => "beta",
|
||||
Flags => DB_ENCRYPT_AES
|
||||
},
|
||||
-Property => DB_ENCRYPT ;
|
||||
|
||||
|
||||
$v = '';
|
||||
ok 78, ! $db1->db_get("red", $v) ;
|
||||
ok 79, $v eq $data{"red"};
|
||||
# check there are three records
|
||||
ok 80, countRecords($db1) == 3 ;
|
||||
undef $db1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user