File Coverage

lib/Crypt/Perl/ASN1.pm
Criterion Covered Total %
statement 28 29 96.5
branch 1 2 50.0
condition 6 12 50.0
subroutine 11 11 100.0
pod 5 6 83.3
total 51 60 85.0


line stmt bran cond sub pod time code
1             package Crypt::Perl::ASN1;
2              
3             #Wrappers around basic methods to get exceptions thrown on errors.
4              
5 13     13   75 use strict;
  13         22  
  13         288  
6 13     13   50 use warnings;
  13         23  
  13         273  
7              
8 13     13   406 use parent 'Convert::ASN1';
  13         277  
  13         53  
9              
10 13     13   379196 use Crypt::Perl::BigInt ();
  13         37  
  13         217  
11 13     13   60 use Crypt::Perl::X ();
  13         48  
  13         3213  
12              
13             sub new {
14 2136     2136 1 6379 my ($class, @opts) = @_;
15              
16 2136         23352 return $class->SUPER::new(
17             encode => { bigint => 'Crypt::Perl::BigInt' },
18             decode => { bigint => 'Crypt::Perl::BigInt' },
19             @opts,
20             );
21             }
22              
23             sub prepare {
24 2136     2136 1 99262 my ( $self, $asn1_r ) = ( $_[0], \$_[1] );
25              
26 2136         10739 my $ret = $self->SUPER::prepare($$asn1_r);
27              
28 2136 50       18302999 if ( !defined $ret ) {
29 0         0 die Crypt::Perl::X::create('ASN1::Prepare', $$asn1_r, $self->error());
30             }
31              
32 2136         11342 return $ret;
33             }
34              
35             sub find {
36 1647     1647 1 5632 my ( $self, $macro ) = @_;
37              
38 1647   33     8688 return $self->SUPER::find($macro) || do {
39             die Crypt::Perl::X::create('ASN1::Find', $macro, $self->error());
40             };
41             }
42              
43             sub encode {
44 1057     1057 1 416334 my ($self) = shift;
45              
46 1057   33     5320 return $self->SUPER::encode(@_) || do {
47             die Crypt::Perl::X::create('ASN1::Encode', \@_, $self->error());
48             };
49             }
50              
51             sub decode {
52 1083     1083 1 3346 my ($self) = shift;
53              
54 1083   66     6049 return $self->SUPER::decode($_[0]) || do {
55             die Crypt::Perl::X::create('ASN1::Decode', $_[0], $self->error());
56             };
57             }
58              
59             my $_asn1_null;
60              
61             sub NULL {
62 14   66 14 0 541 return $_asn1_null ||= Crypt::Perl::ASN1->new()->prepare('n NULL')->encode( { n => 0 } );
63             }
64              
65             1;