| 
49
 | 
     1 package Security::Auth::Simple;
 | 
| 
 | 
     2 use strict;
 | 
| 
 | 
     3 use Common;
 | 
| 
 | 
     4 
 | 
| 
 | 
     5 our $Strict;
 | 
| 
 | 
     6 
 | 
| 
 | 
     7 our @ISA = qw(Object);
 | 
| 
 | 
     8 
 | 
| 
 | 
     9 sub Name {
 | 
| 
 | 
    10     return 'Simple';
 | 
| 
 | 
    11 }
 | 
| 
 | 
    12 
 | 
| 
 | 
    13 sub ConstructAuthData {
 | 
| 
 | 
    14     my ($class,$SecData) = @_;
 | 
| 
 | 
    15     return new Security::Auth::Simple::AuthData(DataMD5 => $SecData);
 | 
| 
 | 
    16 }
 | 
| 
 | 
    17 
 | 
| 
 | 
    18 sub NewAuthData {
 | 
| 
 | 
    19     my ($class,$SecData) = @_;
 | 
| 
 | 
    20     return new Security::Auth::Simple::AuthData(Data => $SecData);
 | 
| 
 | 
    21     
 | 
| 
 | 
    22 }
 | 
| 
 | 
    23 
 | 
| 
 | 
    24 package Security::Auth::Simple::AuthData;
 | 
| 
 | 
    25 use Common;
 | 
| 
 | 
    26 use Security;
 | 
| 
 | 
    27 use Security::Auth;
 | 
| 
 | 
    28 use Digest::MD5 qw(md5_hex);
 | 
| 
 | 
    29 our @ISA = qw(Object);
 | 
| 
 | 
    30 
 | 
| 
 | 
    31 BEGIN {
 | 
| 
 | 
    32     DeclareProperty Data => ACCESS_READ;
 | 
| 
 | 
    33     DeclareProperty DataMD5 => ACCESS_READ;
 | 
| 
 | 
    34 }
 | 
| 
 | 
    35 
 | 
| 
 | 
    36 sub CTOR {
 | 
| 
 | 
    37     my ($this,%args) = @_;
 | 
| 
 | 
    38     
 | 
| 
 | 
    39     if ($args{'Data'}) {
 | 
| 
 | 
    40         $args{'DataMD5'}= $args{'Data'} ? md5_hex($args{'Data'}) : undef ;
 | 
| 
 | 
    41         $this->{$Data} = $args{'Data'};
 | 
| 
 | 
    42     }
 | 
| 
 | 
    43     $this->{$DataMD5} = $args{'DataMD5'};
 | 
| 
 | 
    44 }
 | 
| 
 | 
    45 
 | 
| 
 | 
    46 sub DoAuth {
 | 
| 
 | 
    47     my ($this,$SecData) = @_;
 | 
| 
 | 
    48     
 | 
| 
 | 
    49     if (not ($this->{$DataMD5} or $SecData) or $this->{$DataMD5} eq md5_hex($SecData)) {
 | 
| 
 | 
    50         if ($Strict) {
 | 
| 
 | 
    51             $this->{$Data} = Security::Auth::GenSSID;
 | 
| 
 | 
    52             $this->{$DataMD5} = md5_hex($this->{$Data});
 | 
| 
 | 
    53         } else {
 | 
| 
 | 
    54             $this->{$Data} = $SecData;
 | 
| 
 | 
    55         }
 | 
| 
 | 
    56         return Security::AUTH_SUCCESS;
 | 
| 
 | 
    57     } else {
 | 
| 
 | 
    58         return Security::AUTH_FAILED;
 | 
| 
 | 
    59     }
 | 
| 
 | 
    60 }
 | 
| 
 | 
    61 
 | 
| 
 | 
    62 sub SessionAuthData {
 | 
| 
 | 
    63     my ($this) = @_;
 | 
| 
 | 
    64     
 | 
| 
 | 
    65     return $this->{$DataMD5};
 | 
| 
 | 
    66 }
 | 
| 
 | 
    67 
 | 
| 
 | 
    68 sub ClientAuthData {
 | 
| 
 | 
    69     my ($this) = @_;
 | 
| 
 | 
    70     return $this->{$Data};
 | 
| 
 | 
    71 }
 | 
| 
 | 
    72 
 | 
| 
 | 
    73 1;
 |