[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 package Digest::base; 2 3 use strict; 4 use vars qw($VERSION); 5 $VERSION = "1.00"; 6 7 # subclass is supposed to implement at least these 8 sub new; 9 sub clone; 10 sub add; 11 sub digest; 12 13 sub reset { 14 my $self = shift; 15 $self->new(@_); # ugly 16 } 17 18 sub addfile { 19 my ($self, $handle) = @_; 20 21 my $n; 22 my $buf = ""; 23 24 while (($n = read($handle, $buf, 4*1024))) { 25 $self->add($buf); 26 } 27 unless (defined $n) { 28 require Carp; 29 Carp::croak("Read failed: $!"); 30 } 31 32 $self; 33 } 34 35 sub add_bits { 36 my $self = shift; 37 my $bits; 38 my $nbits; 39 if (@_ == 1) { 40 my $arg = shift; 41 $bits = pack("B*", $arg); 42 $nbits = length($arg); 43 } 44 else { 45 ($bits, $nbits) = @_; 46 } 47 if (($nbits % 8) != 0) { 48 require Carp; 49 Carp::croak("Number of bits must be multiple of 8 for this algorithm"); 50 } 51 return $self->add(substr($bits, 0, $nbits/8)); 52 } 53 54 sub hexdigest { 55 my $self = shift; 56 return unpack("H*", $self->digest(@_)); 57 } 58 59 sub b64digest { 60 my $self = shift; 61 require MIME::Base64; 62 my $b64 = MIME::Base64::encode($self->digest(@_), ""); 63 $b64 =~ s/=+$//; 64 return $b64; 65 } 66 67 1; 68 69 __END__ 70 71 =head1 NAME 72 73 Digest::base - Digest base class 74 75 =head1 SYNOPSIS 76 77 package Digest::Foo; 78 use base 'Digest::base'; 79 80 =head1 DESCRIPTION 81 82 The C<Digest::base> class provide implementations of the methods 83 C<addfile> and C<add_bits> in terms of C<add>, and of the methods 84 C<hexdigest> and C<b64digest> in terms of C<digest>. 85 86 Digest implementations might want to inherit from this class to get 87 this implementations of the alternative I<add> and I<digest> methods. 88 A minimal subclass needs to implement the following methods by itself: 89 90 new 91 clone 92 add 93 digest 94 95 The arguments and expected behaviour of these methods are described in 96 L<Digest>. 97 98 =head1 SEE ALSO 99 100 L<Digest>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |