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


CGI-Application-Plugin-Authentication documentation Contained in the CGI-Application-Plugin-Authentication distribution.

Index


Code Index:

NAME

Top

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

VERSION

Top

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

METHODS

Top

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




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
 }




SEE ALSO

Top

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

AUTHOR

Top

Cees Hek <ceeshek@gmail.com>

LICENCE AND COPYRIGHT

Top


CGI-Application-Plugin-Authentication documentation Contained in the CGI-Application-Plugin-Authentication distribution.

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__