File Coverage

blib/lib/Apache/Auth/User/Digest.pm
Criterion Covered Total %
statement 33 33 100.0
branch 3 6 50.0
condition 3 9 33.3
subroutine 11 11 100.0
pod 0 2 0.0
total 50 61 81.9


line stmt bran cond sub pod time code
1             #
2             # Apache::Auth::User::Digest
3             # An Apache digest authentication user class.
4             #
5             # (C) 2003-2007 Julian Mehnle
6             # $Id: Digest.pm 31 2007-09-18 01:39:14Z julian $
7             #
8             ##############################################################################
9              
10             package Apache::Auth::User::Digest;
11              
12 2     2   37333 use version; our $VERSION = qv('0.120');
  2         2473  
  2         14  
13              
14 2     2   160 use warnings;
  2         4  
  2         55  
15 2     2   9 use strict;
  2         4  
  2         63  
16              
17 2     2   16 use base qw(Apache::Auth::User);
  2         4  
  2         1207  
18              
19 2     2   12 use Carp;
  2         4  
  2         165  
20 2     2   11 use Digest::MD5;
  2         4  
  2         79  
21              
22             # Constants:
23             ##############################################################################
24              
25 2     2   10 use constant TRUE => (0 == 0);
  2         5  
  2         114  
26 2     2   11 use constant FALSE => not TRUE;
  2         2  
  2         579  
27              
28             # Interface:
29             ##############################################################################
30              
31             sub signature;
32             sub realm;
33              
34             # Implementation:
35             ##############################################################################
36              
37             sub signature {
38 11     11 0 609 my ($self) = @_;
39             return
40 11 50 33     36 (defined($self->name) and defined($self->realm)) ?
41             $self->name . ':' . $self->realm
42             : undef;
43             }
44              
45             sub realm {
46 25     25 0 38 my ($self, @value) = @_;
47 25 50       46 $self->{realm} = $value[0] if @value;
48 25         134 return $self->{realm};
49             }
50              
51             sub _build_password_digest {
52 4     4   6 my ($self) = @_;
53            
54 4 50 33     52 croak("Unable to build password digest from incomplete data")
      33        
55             if not defined($self->{realm}) or
56             not defined($self->{name}) or
57             not defined($self->{password});
58            
59 4         15 my $text = join(':', $self->{name}, $self->{realm}, $self->{password});
60 4         33 return Digest::MD5::md5_hex($text);
61             }
62              
63             TRUE;