#!/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 = ; close(FD); exit(0) if ($line =~ /HMAC\-SHA1\([^\)]*\)=\s*([0-9a-f]+)/i && $1 eq $signature); die "signature mismatch"; }