X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FVerify.pm;h=96009c4c1532dc30478682db4f06635fd10bc544;hb=b9dffeff7239952814342dad19db3a51def6fab7;hp=2d89495f03734b8f99eb89847c2ba3d931695d31;hpb=148f4d43135748ba5aff985c50720b370ca1e336;p=spider.git diff --git a/perl/Verify.pm b/perl/Verify.pm index 2d89495f..96009c4c 100644 --- a/perl/Verify.pm +++ b/perl/Verify.pm @@ -7,55 +7,60 @@ # $Id$ # +use strict; + package Verify; -use DXChannel; use DXUtil; use DXDebug; -use Time::HiRes qw(gettimeofday); use Digest::SHA1 qw(sha1_base64); -use strict; - -use vars qw($VERSION $BRANCH); -$VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ ); -$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/ ) || 0; -$main::build += $VERSION; -$main::branch += $BRANCH; - sub new { my $class = shift; my $self = bless {}, ref($class) || $class; - $self->{seed} = shift if @_; + if (@_) { + $self->newseed(@_); + $self->newsalt; + } return $self; } -sub challenge +sub newseed +{ + my $self = shift; + return $self->{seed} = sha1_base64('RbG4tST2dYPWnh6bfAaq7pPSL04', @_); +} + +sub newsalt { my $self = shift; - my @t = gettimeofday(); - my $r = unpack("xxNxx", pack("d", rand)); - @t = map {$_ ^ $r} @t; - dbg("challenge r: $r seed: $t[0] $t[1]" ) if isdbg('verify'); - $r = unpack("xxNxx", pack("d", rand)); - @t = map {$_ ^ $r} @t; - dbg("challenge r: $r seed: $t[0] $t[1]" ) if isdbg('verify'); - return $self->{seed} = sha1_base64(@t, gettimeofday, rand, rand, rand, @_); + return $self->{salt} = substr sha1_base64($self->{seed}, rand, rand, rand), 0, 6; } -sub response +sub challenge { my $self = shift; - return sha1_base64($self->{seed}, @_); + return $self->{salt} . sha1_base64($self->{salt}, $self->{seed}, @_); } sub verify { my $self = shift; my $answer = shift; - my $p = sha1_base64($self->{seed}, @_); + my $p = sha1_base64($self->{salt}, $self->{seed}, @_); return $p eq $answer; } +sub seed +{ + my $self = shift; + return @_ ? $self->{seed} = shift : $self->{seed}; +} + +sub salt +{ + my $self = shift; + return @_ ? $self->{salt} = shift : $self->{salt}; +} 1;