File Coverage

blib/lib/Digest/SHA256.pm
Criterion Covered Total %
statement 24 38 63.1
branch 5 12 41.6
condition n/a
subroutine 5 7 71.4
pod 0 4 0.0
total 34 61 55.7


line stmt bran cond sub pod time code
1             package Digest::SHA256;
2              
3             # SHA256 perl module written by Rafael R. Sevilla
4             # This program is free software; you can redistribute it and/or
5             # modify it under the same terms as Perl itself.
6              
7 1     1   1022 use strict;
  1         2  
  1         51  
8 1     1   5 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
  1         2  
  1         181  
9              
10             require Exporter;
11             require DynaLoader;
12             require AutoLoader;
13              
14             @ISA = qw(Exporter AutoLoader DynaLoader);
15             @EXPORT = qw();
16             $VERSION = '0.01';
17              
18             bootstrap Digest::SHA256 $VERSION;
19              
20             sub addfile
21             {
22 1     1   6 no strict 'refs';
  1         12  
  1         848  
23 0     0 0 0 my ($self, $handle) = @_;
24 0         0 my ($package, $file, $line) = caller;
25 0         0 my $data = ' ' x 8192;
26              
27 0 0       0 if (!ref($handle)) {
28 0 0       0 $handle = "$package::$handle" unless ($handle =~ /(\:\:|\')/);
29             }
30 0         0 while (read($handle, $data, 8192)) {
31 0         0 $self->add($data);
32             }
33             }
34              
35             sub hexdigest
36             {
37 6     6 0 10 my ($self) = shift;
38 6         12 my ($tmp, $str, $i);
39              
40 6         66 $tmp = unpack("H*", ($self->digest()));
41 6         37 $str = substr($tmp, 0,8) . " " . substr($tmp, 8,8) . " " .
42             substr($tmp,16,8) . " " . substr($tmp,24,8) . " " .
43             substr($tmp,32,8) . " " . substr($tmp,40,8) . " " .
44             substr($tmp,48,8) . " " . substr($tmp,56,8);
45 6         19 $i = $self->length();
46 6 100       28 return($str) if ($self->length() == 256);
47 4         22 $str = substr($tmp, 0,16) . " " . substr($tmp,16,16) . " " .
48             substr($tmp,32,16) . " " . substr($tmp,48,16) . " " .
49             substr($tmp,64,16) . " " . substr($tmp,80,16);
50 4 100       21 return($str) if ($self->length() == 384);
51 2         15 $str = substr($tmp, 0,16) . " " . substr($tmp,16,16) . " " .
52             substr($tmp,32,16) . " " . substr($tmp,48,16) . " " .
53             substr($tmp,64,16) . " " . substr($tmp,80,16) . " " .
54             substr($tmp,96,16) . " " . substr($tmp,112,16);
55 2         17 return($str);
56              
57             }
58              
59             sub hash
60             {
61 0     0 0 0 my($self, $data) = @_;
62              
63 0 0       0 if (ref($self)) {
64 0         0 $self->reset();
65             } else {
66 0         0 $self = new Digest::SHA256;
67             }
68 0         0 $self->add($data);
69 0         0 $self->digest();
70             }
71              
72             sub hexhash
73             {
74 6     6 0 189 my($self, $data) = @_;
75              
76 6 50       17 if (ref($self)) {
77 6         21 $self->reset();
78             } else {
79 0         0 $self = new Digest::SHA256;
80             }
81 6         22 $self->add($data);
82 6         17 $self->hexdigest();
83             }
84              
85             1;
86             __END__