File Coverage

blib/lib/Crypt/Keyczar/DsaPrivateKey.pm
Criterion Covered Total %
statement 64 65 98.4
branch n/a
condition n/a
subroutine 15 16 93.7
pod 0 7 0.0
total 79 88 89.7


line stmt bran cond sub pod time code
1             package Crypt::Keyczar::DsaPrivateKey;
2 2     2   1271 use base 'Crypt::Keyczar::Key';
  2         4  
  2         185  
3 2     2   11 use strict;
  2         4  
  2         70  
4 2     2   10 use warnings;
  2         5  
  2         69  
5              
6 2     2   12 use Crypt::Keyczar::Util;
  2         4  
  2         87  
7 2     2   923 use Crypt::Keyczar::DsaPublicKey;
  2         5  
  2         1288  
8              
9              
10             sub expose {
11 3     3 0 6 my $self = shift;
12 3         11 my $expose = {};
13 3         14 $expose->{size} = $self->{size};
14 3         12 $expose->{publicKey} = $self->get_public->expose;
15 3         10 $expose->{x} = $self->{x};
16 3         20 return $expose;
17             }
18              
19              
20             sub read {
21 26     26 0 55 my $class = shift;
22 26         43 my $json_string = shift;
23              
24 26         100 my $obj = Crypt::Keyczar::Util::decode_json($json_string);
25 26         78 my $self = bless $obj, $class;
26 26         85 $self->{publicKey} = bless $self->{publicKey}, 'Crypt::Keyczar::DsaPublicKey';
27 26         189 $self->{publicKey}->init();
28 26         149 $self->init();
29 26         96 return $self;
30             }
31              
32              
33             sub generate {
34 3     3 0 36 my $class = shift;
35 3         6 my $size = shift;
36              
37 3         562130 my $key = Crypt::Keyczar::DsaPrivateKeyEngine->generate($size);
38 3         22 my $priv = {};
39 3         19 $priv->{size} = $size;
40 3         32 $priv->{x} = Crypt::Keyczar::Util::encode($key->{x});
41 3         25 my $self = bless $priv, $class;
42              
43 3         8 my $pub = {};
44 3         10 $pub->{size} = $size;
45 3         13 $pub->{y} = Crypt::Keyczar::Util::encode($key->{y});
46 3         16 $pub->{p} = Crypt::Keyczar::Util::encode($key->{p});
47 3         11 $pub->{q} = Crypt::Keyczar::Util::encode($key->{q});
48 3         13 $pub->{g} = Crypt::Keyczar::Util::encode($key->{g});
49 3         33 $self->{publicKey} = bless $pub, 'Crypt::Keyczar::DsaPublicKey';
50 3         26 $self->{publicKey}->init();
51 3         24 $self->init();
52              
53 3         27 return $self;
54             }
55              
56              
57             sub get_engine {
58 1     1 0 720 my $self = shift;
59 1         5 my @args = map { Crypt::Keyczar::Util::decode($_) } (
  5         12  
60             $self->{x},
61             $self->get_public->{y},
62             $self->get_public->{p},
63             $self->get_public->{q},
64             $self->get_public->{g},
65             );
66 1         60 return Crypt::Keyczar::DsaPrivateKeyEngine->new(@args);
67             }
68              
69              
70 31     31 0 92 sub hash { return $_[0]->get_public->hash(); }
71              
72              
73 0     0 0 0 sub digest_size { return 48; }
74              
75              
76 40     40 0 144 sub get_public { return $_[0]->{publicKey}; }
77              
78             1;
79              
80             package Crypt::Keyczar::DsaPrivateKeyEngine;
81 2     2   13 use base 'Exporter';
  2         3  
  2         156  
82 2     2   11 use strict;
  2         4  
  2         57  
83 2     2   16 use warnings;
  2         16  
  2         67  
84 2     2   11 use Crypt::Keyczar::Engine;
  2         5  
  2         54  
85              
86              
87             1;
88             __END__