]> dxcluster.net Git - spider.git/blob - perl/Verify.pm
add some security fixes
[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         $self->newsalt(@_);
29         return $self;
30 }
31
32 sub newsalt
33 {
34         my $self = shift;
35         return $self->{salt} = sha1_base64('RbG4tST2dYPWnh6bfAaq7pPSL04', @_);
36 }
37
38 sub challenge
39 {
40         my $self = shift;
41         my $p = substr(sha1_base64($self->{salt}, @_), -6, 6);
42         return $p;
43 }
44
45 sub verify
46 {
47         my $self = shift;
48         my $answer = shift;
49         my $p = substr(sha1_base64($self->{salt}, @_), -6, 6);
50         return $p eq $answer;
51 }
52
53 sub salt
54 {
55         my $self = shift;
56         return @_ ? $self->{salt} = shift : $self->{salt};
57 }
58 1;