b374k
m1n1 1.01
Apache/2.2.15 (CentOS)
Linux obd60-6c49958d75-2q7cw 5.4.0-174-generic #193-Ubuntu SMP Thu Mar 7 14:29:28 UTC 2024 x86_64
uid=48(apache) gid=48(apache) groups=48(apache)
server ip : 104.21.65.202 | your ip : 10.244.126.0
safemode OFF
 >  / usr / share / perl5 / Digest /
Filename/usr/share/perl5/Digest/base.pm
Size1.76 kb
Permissionrw-r--r--
Ownerapache
Create time23-Dec-2025 17:41
Last modified22-Mar-2017 16:32
Last accessed22-Apr-2026 00:41
Actionsedit | rename | delete | download (gzip)
Viewtext | code | image
package Digest::base;

use strict;
use vars qw($VERSION);
$VERSION = "1.16";

# subclass is supposed to implement at least these
sub new;
sub clone;
sub add;
sub digest;

sub reset {
my $self = shift;
$self->new(@_); # ugly
}

sub addfile {
my ($self, $handle) = @_;

my $n;
my $buf = "";

while (($n = read($handle, $buf, 4*1024))) {
$self->add($buf);
}
unless (defined $n) {
require Carp;
Carp::croak("Read failed: $!");
}

$self;
}

sub add_bits {
my $self = shift;
my $bits;
my $nbits;
if (@_ == 1) {
my $arg = shift;
$bits = pack("B*", $arg);
$nbits = length($arg);
}
else {
($bits, $nbits) = @_;
}
if (($nbits % 8) != 0) {
require Carp;
Carp::croak("Number of bits must be multiple of 8 for this algorithm");
}
return $self->add(substr($bits, 0, $nbits/8));
}

sub hexdigest {
my $self = shift;
return unpack("H*", $self->digest(@_));
}

sub b64digest {
my $self = shift;
require MIME::Base64;
my $b64 = MIME::Base64::encode($self->digest(@_), "");
$b64 =~ s/=+$//;
return $b64;
}

1;

__END__

=head1 NAME

Digest::base - Digest base class

=head1 SYNOPSIS

package Digest::Foo;
use base 'Digest::base';

=head1 DESCRIPTION

The C<Digest::base> class provide implementations of the methods
C<addfile> and C<add_bits> in terms of C<add>, and of the methods
C<hexdigest> and C<b64digest> in terms of C<digest>.

Digest implementations might want to inherit from this class to get
this implementations of the alternative I<add> and I<digest> methods.
A minimal subclass needs to implement the following methods by itself:

new
clone
add
digest

The arguments and expected behaviour of these methods are described in
L<Digest>.

=head1 SEE ALSO

L<Digest>