Changeset 256

Show
Ignore:
Timestamp:
02/18/08 22:36:14 (9 months ago)
Author:
mbr
Message:

added md5 sum checking across encrypt/decrypt cycles, added standard encryption/decryption cycle

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • gpgdir/trunk/test/gpgdir_test.pl

    r254 r256  
    2929# 
    3030 
     31use Digest::MD5 'md5_base64'; 
    3132use File::Find; 
    3233use Getopt::Long; 
     
    4041my $logfile    = 'test.log'; 
    4142my $tarfile    = 'gpgdir_test.tar.gz'; 
     43my $data_dir   = 'data-dir'; 
    4244 
    4345my $gpg_dir = "$conf_dir/test-gpg"; 
     
    5557my $prepare_results = 0; 
    5658my $successful_tests = 0; 
     59my @data_dir_files = (); 
     60my %md5sums = (); 
    5761 
    5862die "[*] Use --help" unless GetOptions( 
     
    6367exit &prepare_results() if $prepare_results; 
    6468 
     69&collect_md5sums(); 
     70 
    6571&logr("\n[+] ==> Running gpgdir test suite <==\n\n"); 
    6672 
     
    6975&test_driver('(Setup) Command line argument processing', \&getopt_test); 
    7076&test_driver('(Test mode) gpgdir basic test mode', \&test_mode); 
     77&test_driver('(Encrypt dir) gpgdir directory encryption', \&encrypt); 
     78&test_driver('(Encrypt dir) Excluded hidden files/dirs', 
     79    \&skipped_hidden_files_dirs); 
     80&test_driver('(Decrypt dir) gpgdir directory decryption', \&decrypt); 
     81&test_driver('(MD5 digest) match across encrypt/decrypt cycle', 
     82    \&md5sum_validation); 
    7183 
    7284&logr("\n"); 
     
    95107    $test_num++; 
    96108    return; 
     109} 
     110 
     111sub encrypt() { 
     112    if (&run_cmd("$gpgdirCmd --test --gnupg-dir $gpg_dir " . 
     113            " --pw-file $pw_file --Key-id $key_id -e $data_dir")) { 
     114        return 1; 
     115    } 
     116    return &print_errors("fail ($test_num)\n[*] " . 
     117        "Directory encryption"); 
     118} 
     119 
     120sub decrypt() { 
     121    if (&run_cmd("$gpgdirCmd --test --gnupg-dir $gpg_dir " . 
     122            " --pw-file $pw_file --Key-id $key_id -d $data_dir")) { 
     123        return 1; 
     124    } 
     125    return &print_errors("fail ($test_num)\n[*] " . 
     126        "Directory decryption"); 
     127} 
     128 
     129sub skipped_hidden_files_dirs() { 
     130    @data_dir_files = (); 
     131    find(\&find_files, $data_dir); 
     132    for my $file (@data_dir_files) { 
     133        if ($file =~ m|^\.| or $file =~ m|/\.|) { 
     134            ### check for any .gpg or .asc extensions 
     135            if ($file =~ m|\.gpg$| or $file =~ m|\.asc$|) { 
     136                return &print_errors("fail ($test_num)\n[*] " . 
     137                    "Encrypted hidden file"); 
     138            } 
     139        } 
     140    } 
     141    return 1; 
     142} 
     143 
     144sub find_files() { 
     145    my $file = $File::Find::name; 
     146    push @data_dir_files, $file; 
     147    return; 
     148} 
     149 
     150sub collect_md5sums() { 
     151    @data_dir_files = (); 
     152    find(\&find_files, $data_dir); 
     153    for my $file (@data_dir_files) { 
     154        if (-f $file) { 
     155            $md5sums{$file} = md5_base64($file); 
     156        } 
     157    } 
     158    return 1; 
     159} 
     160 
     161sub md5sum_validation() { 
     162    @data_dir_files = (); 
     163    find(\&find_files, $data_dir); 
     164    for my $file (@data_dir_files) { 
     165        if (-f $file) { 
     166            if (not defined $md5sums{$file} 
     167                    or $md5sums{$file} ne md5_base64($file)) { 
     168                return &print_errors("fail ($test_num)\n[*] " . 
     169                        "MD5 sum mis-match for $file"); 
     170            } 
     171        } 
     172    } 
     173    return 1; 
    97174} 
    98175