#!/usr/bin/perl -w use strict; use lib '..','../blib/lib','.','./blib/lib'; sub test; my (@mods,@pads,@in,$pad,$test_data,$mod,$tnum,$c,$i,$p); @mods = qw/Rijndael Blowfish Blowfish_PP IDEA DES /; @pads = qw/standard oneandzeroes space null/; for $mod (@mods) { eval "use Crypt::$mod(); 1" && push @in,$mod; } unless ($#in > -1) { print "1..0 # Skipped: no cryptographic modules found\n"; exit; } print '1..', 128*($#in + 1) * ($#pads + 1) + 1, "\n"; sub test { local($^W) = 0; my($num, $true,$msg) = @_; $$num++; print($true ? "ok $$num\n" : "not ok $$num $msg\n"); } $tnum = 0; eval "use Crypt::CBC"; test(\$tnum,!$@,"Couldn't load module"); for my $mod (@in) { for my $pad (@pads) { my $cipher = Crypt::CBC->new(-key => 'secret', -cipher => $mod, -padding => $pad, ); for my $length (1..128) { my $test_data = 'a'x$length . '0'; my $encrypted = $cipher->encrypt_hex($test_data); my $decrypted = $cipher->decrypt_hex($encrypted); test(\$tnum,$test_data eq $decrypted,"$mod/$pad: match failed on zero-terminated data length $length"); } } }