]> dxcluster.org Git - spider.git/blob - perl/Verify.pm
fix RBN callsigns and 'basecall()'
[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 #
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 sub new
19 {
20         my $class = shift;
21         my $self = bless {}, ref($class) || $class; 
22         if (@_) {
23                 $self->newseed(@_);
24                 $self->newsalt;
25         }
26         return $self;
27 }
28
29 sub newseed
30 {
31         my $self = shift;
32         return $self->{seed} = sha1_base64('RbG4tST2dYPWnh6bfAaq7pPSL04', @_);
33 }
34
35 sub newsalt
36 {
37         my $self = shift;
38         return $self->{salt} = substr sha1_base64($self->{seed}, rand, rand, rand), 0, 6;
39 }
40
41 sub challenge
42 {
43         my $self = shift;
44         return $self->{salt} . sha1_base64($self->{salt}, $self->{seed}, @_);
45 }
46
47 sub verify
48 {
49         my $self = shift;
50         my $answer = shift;
51         my $p = sha1_base64($self->{salt}, $self->{seed}, @_);
52         return $p eq $answer;
53 }
54
55 sub seed
56 {
57         my $self = shift;
58         return @_ ? $self->{seed} = shift : $self->{seed};
59 }
60
61 sub salt
62 {
63         my $self = shift;
64         return @_ ? $self->{salt} = shift : $self->{salt};
65 }
66 1;