File Coverage

blib/lib/Crypt/IDEA.pm
Criterion Covered Total %
statement 25 30 83.3
branch 4 8 50.0
condition n/a
subroutine 7 8 87.5
pod 5 6 83.3
total 41 52 78.8


line stmt bran cond sub pod time code
1             #! /usr/local/bin/perl -w
2              
3             #
4             # Copyright (C) 1995, 1996 Systemics Ltd (http://www.systemics.com/)
5             # All rights reserved.
6             #
7              
8             package Crypt::IDEA;
9              
10             require Exporter;
11             require DynaLoader;
12              
13             @ISA = (Exporter, DynaLoader);
14              
15             # Items to export into callers namespace by default
16             @EXPORT = qw();
17              
18             # Other items we are prepared to export if requested
19             @EXPORT_OK = qw();
20              
21             bootstrap Crypt::IDEA;
22              
23              
24             package IDEA;
25              
26             $VERSION="1.08";
27              
28 1     1   16 use strict;
  1         17  
  1         14  
29 1     1   14 use Carp;
  1         9  
  1         17  
30              
31             sub usage
32             {
33 0     0 0 0     my ($mess, $package, $filename, $line, $subr);
34 0         0 ($mess) = @_;
35 0         0 ($package, $filename, $line, $subr) = caller(1);
36 0         0 $Carp::CarpLevel = 2;
37 0         0 croak "Usage: $package\::$subr - $mess";
38             }
39              
40              
41 11     11 1 606 sub blocksize { 8; }
42 11     11 1 216 sub keysize { 16; }
43              
44             sub new
45             {
46 11 50   11 1 782 usage("new IDEA key") unless @_ == 2;
47              
48 11         108 my $type = shift; my $self = {}; bless $self, $type;
  11         111  
  11         119  
49              
50 11         157 $self->{'ks'} = Crypt::IDEA::expand_key(shift);
51              
52 11         119 $self;
53             }
54              
55             sub encrypt
56             {
57 11 50   11 1 123 usage("encrypt data[8 bytes]") unless @_ == 2;
58              
59 11         100 my $self = shift;
60 11         101 my $data = shift;
61              
62 11         138 Crypt::IDEA::crypt($data, $data, $self->{'ks'});
63              
64 11         460 $data;
65             }
66              
67             sub decrypt
68             {
69 11 50   11 1 240 usage("decrypt data[8 bytes]") unless @_ == 2;
70              
71 11         100 my $self = shift;
72 11         150 my $data = shift;
73              
74             #
75             # Cache Decrypt key schedule
76             #
77 11 50       312 $self->{'dks'} = Crypt::IDEA::invert_key($self->{'ks'})
78             unless exists $self->{'dks'};
79              
80 11         132 Crypt::IDEA::crypt($data, $data, $self->{'dks'});
81              
82 11         163 $data;
83             }
84              
85             1;
86