summaryrefslogtreecommitdiffstats
path: root/perl/cipher.pl
blob: efc712fdf58bb3134ee8db89b47a5d51a5da2b99 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/usr/local/bin/perl

use ExtUtils::testlib;

use SSLeay;

$md=SSLeay::MD::new("md5");

foreach (@SSLeay::Cipher::names)
	{
	($c=SSLeay::Cipher::new($_)) ||
		die "'$_' is an unknown cipher algorithm\n";


	$data="012345678abcdefghijklmnopqrstuvwxyz";
	$c->init("01234567abcdefghABCDEFGH","zyxwvut",1);

	$in =$c->update(substr($data, 0, 5));
	$in.=$c->update(substr($data, 5,10));
	$in.=$c->update(substr($data,15,1));
	$in.=$c->update(substr($data,16));

	$in.=$c->final();

	$c->init("01234567abcdefghABCDEFGH","zyxwvut",0);
	$out=$c->update($in);
	$out.=$c->final();

	($out eq $data) || die "decrypt for $_ failed:$!\n";

	$md->init();
	$md->update($in);
	$digest=$md->final();

	print unpack("H*",$digest);
	printf " %2d %2d %2d %s\n", $c->key_length(), $c->iv_length(),
		$c->block_size(), $c->name();
	}