5e0fffe1d7e38e3a38927d23caf5f09b262b5a1d
[spider.git] / perl / Verify.pm
1 #!/usr/bin/perl
2 #
3 # This module impliments the verification routines
4 #
5 # Copyright (c) 2002 Dirk Koopman G1TLH
6 #
7 # $Id$
8
9
10 use strict;
11
12 package Verify;
13
14 use DXUtil;
15 use DXDebug;
16 use Digest::SHA1 qw(sha1_base64);
17
18 use vars qw($VERSION $BRANCH);
19 $VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ );
20 $BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/  || (0,0));
21 $main::build += $VERSION;
22 $main::branch += $BRANCH;
23
24 sub new
25 {
26         my $class = shift;
27         my $self = bless {}, ref($class) || $class; 
28         if (@_) {
29                 $self->newseed(@_);
30                 $self->newsalt;
31         }
32         return $self;
33 }
34
35 sub newseed
36 {
37         my $self = shift;
38         return $self->{seed} = sha1_base64('RbG4tST2dYPWnh6bfAaq7pPSL04', @_);
39 }
40
41 sub newsalt
42 {
43         my $self = shift;
44         return $self->{salt} = substr sha1_base64($self->{seed}, rand, rand, rand), 0, 6;
45 }
46
47 sub challenge
48 {
49         my $self = shift;
50         return $self->{salt} . sha1_base64($self->{salt}, $self->{seed}, @_);
51 }
52
53 sub verify
54 {
55         my $self = shift;
56         my $answer = shift;
57         my $p = sha1_base64($self->{salt}, $self->{seed}, @_);
58         return $p eq $answer;
59 }
60
61 sub seed
62 {
63         my $self = shift;
64         return @_ ? $self->{seed} = shift : $self->{seed};
65 }
66
67 sub salt
68 {
69         my $self = shift;
70         return @_ ? $self->{salt} = shift : $self->{salt};
71 }
72 1;