c6x/* "facelift":
[oweals/openssl.git] / util / fips_standalone_sha1
1 #!/usr/bin/env perl
2 #
3 $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
4
5 unshift(@INC,$dir);
6 require "hmac_sha1.pl";
7
8 (!@ARV[0] && -f @ARGV[$#ARGV]) || die "usage: $0 [-verify] file";
9
10 $verify=shift   if (@ARGV[0] eq "-verify");
11
12 sysopen(FD,@ARGV[0],0) || die "$!";
13 binmode(FD);
14
15 my $ctx = HMAC->Init("etaonrishdlcupfm");
16
17 while (read(FD,$blob,4*1024)) { $ctx->Update($blob); }
18
19 close(FD);
20
21 my $signature = unpack("H*",$ctx->Final());
22
23 print "HMAC-SHA1(@ARGV[0])= $signature\n";
24
25 if ($verify) {
26         open(FD,"<@ARGV[0].sha1") || die "$!";
27         $line = <FD>;
28         close(FD);
29         exit(0) if ($line =~ /HMAC\-SHA1\([^\)]*\)=\s*([0-9a-f]+)/i &&
30                                 $1 eq $signature);
31         die "signature mismatch";
32 }