This file is indexed.

/usr/share/perl5/CGI/Application/Plugin/Authentication/Driver/Filter/sha1.pm is in libcgi-application-plugin-authentication-perl 0.20-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package CGI::Application::Plugin::Authentication::Driver::Filter::sha1;

use strict;
use warnings;
our $VERSION = '0.20';

use UNIVERSAL::require;

sub check {
    my $class    = shift;
    my $param    = shift;
    my $plain    = shift;
    my $filtered = shift;

    if ($param) {
        return ( $class->filter( $param, $plain ) eq $filtered ) ? 1 : 0;
    } elsif ( length($filtered) == 20 ) {
        return ( $class->filter( 'binary', $plain ) eq $filtered ) ? 1 : 0;
    } elsif ( length($filtered) == 27 ) {
        return ( $class->filter( 'base64', $plain ) eq $filtered ) ? 1 : 0;
    } else {
        return ( $class->filter( undef, $plain ) eq $filtered ) ? 1 : 0;
    }
}

sub filter {
    my $class = shift;
    my $param = lc shift || 'hex';
    my $plain = shift;

    Digest::SHA->require || die "Digest::SHA is required to check SHA1 passwords";
    if ( $param eq 'hex' ) {
        return Digest::SHA::sha1_hex($plain);
    } elsif ( $param eq 'base64' ) {
        return Digest::SHA::sha1_base64($plain);
    } elsif ( $param eq 'binary' ) {
        return Digest::SHA::sha1($plain);
    }
    die "Unknown SHA1 format $param";
}

1;
__END__


=head1 NAME

CGI::Application::Plugin::Authentication::Driver::Filter::sha1 - SHA1 Password filter

=head1 VERSION

This document describes CGI::Application::Plugin::Authentication::Driver::Filter::sha1 version 0.20

=head1 METHODS


=head2 filter ( (hex base64 binary), $string )

This will generate an SHA1 hash of the string in the requested format.  By default,
hex encoding is used.

 my $filtered = $class->filter('base64', 'foobar'); # iEPX+SQWIR3p67lj/0zigSWTKHg

 -or-

 my $filtered = $class->filter(undef, 'foobar'); # 8843d7f92416211de9ebb963ff4ce28125932878


=head2 check ( (hex base64 binary), $string, $sha1 )

This will generate an SHA1 hash of the string, and compare it against the provided SHA1 string.
If no encoding type is specified, the length of the SHA1 string will be tested to see what format it
is in.

 if ($class->check(undef, 'foobar', '8843d7f92416211de9ebb963ff4ce28125932878')) {
     # they match
 }


=head1 SEE ALSO

L<CGI::Application::Plugin::Authentication::Driver>, L<Digest::SHA>, perl(1)


=head1 AUTHOR

Cees Hek <ceeshek@gmail.com>


=head1 LICENCE AND COPYRIGHT

Copyright (c) 2005, SiteSuite. All rights reserved.

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

=cut