[test suite] added perl FKO Rijndael key test with embedded NULL char

This commit is contained in:
Michael Rash 2013-04-09 22:48:54 -04:00
parent b45a1b07ad
commit 378305a8ab
2 changed files with 80 additions and 3 deletions

View File

@ -1574,7 +1574,7 @@ sub perl_fko_module_client_timeout() {
return 0;
}
my $valid_timeout = 30;
my $valid_timeout = 30;
my $status = $fko_obj->spa_client_timeout($valid_timeout);
if ($status == FKO->FKO_SUCCESS and $fko_obj->spa_client_timeout() == $valid_timeout) {
@ -2229,13 +2229,81 @@ sub fuzzing_cmd_messages() {
return \@msgs;
}
sub perl_fko_module_key_with_null() {
my $test_hr = shift;
my $rv = 1;
my $msg = @{valid_access_messages()}[0];
my $user = @{valid_usernames()}[0];
my $digest_type = @{valid_spa_digest_types()}[0];
my $key_with_null = 'AAAA' . pack('a', "") . 'AAAA';
&write_test_file("\n\n[+] ------ KEY: $key_with_null (" . length($key_with_null) . " bytes)\n",
$curr_test_file);
&write_test_file("\n MSG: $msg, user: $user, " .
"digest type: $digest_type (orig key: $key_with_null)\n",
$curr_test_file);
$fko_obj = FKO->new();
unless ($fko_obj) {
&write_test_file("[-] error FKO->new(): " . FKO::error_str() . "\n",
$curr_test_file);
return 0;
}
$fko_obj->spa_message($msg);
$fko_obj->username($user);
$fko_obj->spa_message_type(FKO->FKO_ACCESS_MSG);
$fko_obj->digest_type($digest_type);
$fko_obj->spa_data_final($key_with_null, length($key_with_null), '', 0);
my $encrypted_msg = $fko_obj->spa_data();
$fko_obj->destroy();
for (my $j=1; $j < length($key_with_null); $j++) {
### now get new object for decryption
$fko_obj = FKO->new();
unless ($fko_obj) {
&write_test_file("[-] error FKO->new(): " . FKO::error_str() . "\n",
$curr_test_file);
return 0;
}
$fko_obj->spa_data($encrypted_msg);
my $truncated_key = $key_with_null;
$truncated_key =~ s/^(.{$j}).*/$1/;
&write_test_file(" Trying truncated key: $truncated_key\n",
$curr_test_file);
if ($fko_obj->decrypt_spa_data($truncated_key,
length($truncated_key)) == FKO->FKO_SUCCESS) {
&write_test_file("[-] $msg decrypt success with truncated key " .
"($key_with_null -> $truncated_key)\n",
$curr_test_file);
$rv = 0;
} else {
&write_test_file("[+] $msg decrypt rejected truncated " .
"key ($key_with_null -> $truncated_key)\n",
$curr_test_file);
}
$fko_obj->destroy();
}
&write_test_file("\n", $curr_test_file);
return $rv;
}
sub perl_fko_module_rijndael_truncated_keys() {
my $test_hr = shift;
my $rv = 1;
my $msg = @{valid_access_messages()}[0];
my $user = @{valid_usernames()}[0];
my $msg = @{valid_access_messages()}[0];
my $user = @{valid_usernames()}[0];
my $digest_type = @{valid_spa_digest_types()}[0];
my $key = '1';

View File

@ -154,6 +154,15 @@
'set_legacy_iv' => $NO,
'fatal' => $NO
},
{
'category' => 'perl FKO module',
'subcategory' => 'encrypt/decrypt',
'detail' => 'key with NULL handling',
'function' => \&perl_fko_module_key_with_null,
'set_legacy_iv' => $NO,
'fatal' => $NO
},
{
'category' => 'perl FKO module',
'subcategory' => 'encrypt/decrypt',