#!/usr/bin/perl
use strict;
use warnings;
use Crypt::CBC;

my @ciphers = qw/Rijndael/;

my $key  = "abcdefghijklmnop";
my $data = "allard is een aap";

print "Testing various ciphers:\n";

for my $cipher (@ciphers) {
	require "Crypt/$cipher.pm" or die;

	my $cbc       = new Crypt::CBC( { key => $key, cipher => $cipher, blocksize => 16 }) or die;
	my $encrypted = $cbc->encrypt($data);

	undef $cbc;

	   $cbc       = new Crypt::CBC( { key => $key, cipher => $cipher, blocksize => 16 }) or die;
	my $decrypted = $cbc->decrypt($encrypted);

	my $blocksize = $cbc->blocksize();
	my $salt      = length($cbc->salt());

	if ($decrypted ne $data) {
		print "Crypt::$cipher fails to decrypt it's own data!\n";
		next;
	}

	printf "Cipher::%-8s reports a %2d bits blocksize and uses %2d bits salt\n", $cipher, $blocksize, $salt;
}
