spider/perl/Verify.pm

73 lines
1.2 KiB
Perl
Raw Normal View History

2002-07-11 15:28:35 +00:00
#!/usr/bin/perl
#
# This module impliments the verification routines
#
# Copyright (c) 2002 Dirk Koopman G1TLH
#
# $Id$
#
2005-01-24 09:08:54 +00:00
use strict;
2002-07-11 15:28:35 +00:00
package Verify;
use DXUtil;
use DXDebug;
use Digest::SHA1 qw(sha1_base64);
use vars qw($VERSION $BRANCH);
$VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ );
$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/ || (0,0));
2002-07-11 15:28:35 +00:00
$main::build += $VERSION;
$main::branch += $BRANCH;
sub new
{
my $class = shift;
my $self = bless {}, ref($class) || $class;
2005-01-24 09:08:54 +00:00
if (@_) {
$self->newseed(@_);
$self->newsalt;
}
2002-07-11 15:28:35 +00:00
return $self;
}
2005-01-24 09:08:54 +00:00
sub newseed
2002-07-11 15:28:35 +00:00
{
my $self = shift;
2005-01-24 09:08:54 +00:00
return $self->{seed} = sha1_base64('RbG4tST2dYPWnh6bfAaq7pPSL04', @_);
2002-07-11 15:28:35 +00:00
}
2005-01-24 09:08:54 +00:00
sub newsalt
2002-07-11 15:28:35 +00:00
{
my $self = shift;
2005-01-24 09:08:54 +00:00
return $self->{salt} = substr sha1_base64($self->{seed}, rand, rand, rand), 0, 6;
}
sub challenge
{
my $self = shift;
return $self->{salt} . sha1_base64($self->{salt}, $self->{seed}, @_);
2002-07-11 15:28:35 +00:00
}
sub verify
{
my $self = shift;
my $answer = shift;
2005-01-24 09:08:54 +00:00
my $p = sha1_base64($self->{salt}, $self->{seed}, @_);
2002-07-11 15:28:35 +00:00
return $p eq $answer;
}
2005-01-24 09:08:54 +00:00
sub seed
{
my $self = shift;
return @_ ? $self->{seed} = shift : $self->{seed};
}
sub salt
{
my $self = shift;
return @_ ? $self->{salt} = shift : $self->{salt};
}
2002-07-11 15:28:35 +00:00
1;