blob: ad1927339d8dc7f059b525ed37c47b6430018029 [file] [log] [blame]
#!/usr/bin/perl -w -T
use strict;
use Mail::SpamAssassin;
use Digest::SHA qw(sha1_hex);
use Test::More tests => 15;
sub try {
my ($data, $want) = @_;
if ($want ne sha1_hex($data)) {
print "Digest::SHA sha1 mismatch\n";
return 0;
}
return 1;
}
sub string {
my ($seed, $length) = @_;
my $string;
while ($length--) {
$seed = (736 * $seed + 364) % 33843;
$string .= chr($seed % 256);
}
return $string;
}
my $habeas = <<END;
X-Habeas-SWE-1: winter into spring
X-Habeas-SWE-2: brightly anticipated
X-Habeas-SWE-3: like Habeas SWE (tm)
X-Habeas-SWE-4: Copyright 2002 Habeas (tm)
X-Habeas-SWE-5: Sender Warranted Email (SWE) (tm). The sender of this
X-Habeas-SWE-6: email in exchange for a license for this Habeas
X-Habeas-SWE-7: warrant mark warrants that this is a Habeas Compliant
X-Habeas-SWE-8: Message (HCM) and not spam. Please report use of this
X-Habeas-SWE-9: mark in spam to <http://www.habeas.com/report/>.
END
$habeas =~ tr/A-Z/a-z/;
$habeas =~ tr/ / /s;
$habeas =~ s/\/?>/\/>/;
# fixed strings
ok(try("squeamish ossifrage\n", "820550664cf296792b38d1647a4d8c0e1966af57"));
ok(try("abc", "a9993e364706816aba3e25717850c26c9cd0d89d"));
ok(try("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
"84983e441c3bd26ebaae4aa1f95129e5e54670f1"));
# garbled strings
ok(try(string(287, 1), "909f99a779adb66a76fc53ab56c7dd1caf35d0fd"));
ok(try(string(648, 16), "44793ba2b430507c5be08165e5b003977e31d0b2"));
ok(try(string(628, 76), "5ed4ded95f3104734f438db4426ac2e2941b389f"));
ok(try(string(93, 348), "a4f33e402a7c689fb3899e5ff3608a4e4ff59347"));
ok(try(string(236, 2163), "bdbe8891a6b2fbb47ee419325877b513ee897fe0"));
ok(try(string(975, 687), "80c20a5fe4065d6877cdb75de27a4ce06d5cb8ed"));
ok(try(string(826, 4280), "fd4ed5f43e128f7a12346dd194e7f5bb77ae8d2f"));
ok(try(string(584, 24869), "69396239246666faed31d6f5884c7469d915d4d8"));
ok(try(string(367, 51474), "15201559b3ffb278918a2f7a35d2b702a72fb391"));
ok(try(string(504, 64273), "73e56c49eecef44a53048e27baa42e491375eb23"));
# habeas
ok(try($habeas, "42ab3d716380503f66c4d44017c7f37b04458a9a"));
# anti-habeas
$habeas =~ s/0/O/;
ok(!try($habeas, "42ab3d716380503f66c4d44017c7f37b04458a9a"));