summaryrefslogtreecommitdiffstats
path: root/util/fips_standalone_sha1
diff options
context:
space:
mode:
Diffstat (limited to 'util/fips_standalone_sha1')
-rw-r--r--util/fips_standalone_sha132
1 files changed, 32 insertions, 0 deletions
diff --git a/util/fips_standalone_sha1 b/util/fips_standalone_sha1
new file mode 100644
index 0000000000..ea2268cb4e
--- /dev/null
+++ b/util/fips_standalone_sha1
@@ -0,0 +1,32 @@
+#!/usr/bin/env perl
+#
+$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
+
+unshift(@INC,$dir);
+require "hmac_sha1.pl";
+
+(!@ARV[0] && -f @ARGV[$#ARGV]) || die "usage: $0 [-verify] file";
+
+$verify=shift if (@ARGV[0] eq "-verify");
+
+sysopen(FD,@ARGV[0],0) || die "$!";
+binmode(FD);
+
+my $ctx = HMAC->Init("etaonrishdlcupfm");
+
+while (read(FD,$blob,4*1024)) { $ctx->Update($blob); }
+
+close(FD);
+
+my $signature = unpack("H*",$ctx->Final());
+
+print "HMAC-SHA1(@ARGV[0])= $signature\n";
+
+if ($verify) {
+ open(FD,"<@ARGV[0].sha1") || die "$!";
+ $line = <FD>;
+ close(FD);
+ exit(0) if ($line =~ /HMAC\-SHA1\([^\)]*\)=\s*([0-9a-f]+)/i &&
+ $1 eq $signature);
+ die "signature mismatch";
+}