File Coverage

lib/Crypt/Perl/ECDSA/NIST.pm
Criterion Covered Total %
statement 31 33 93.9
branch 7 10 70.0
condition n/a
subroutine 9 9 100.0
pod 0 2 0.0
total 47 54 87.0


line stmt bran cond sub pod time code
1             package Crypt::Perl::ECDSA::NIST;
2              
3 8     8   59 use strict;
  8         16  
  8         242  
4 8     8   58 use warnings;
  8         14  
  8         186  
5              
6 8     8   3430 use Symbol::Get ();
  8         8795  
  8         163  
7              
8 8     8   55 use Crypt::Perl::X ();
  8         16  
  8         187  
9              
10 8     8   37 use constant JWK_CURVE_prime256v1 => 'P-256';
  8         16  
  8         449  
11 8     8   46 use constant JWK_CURVE_secp384r1 => 'P-384';
  8         28  
  8         411  
12 8     8   44 use constant JWK_CURVE_secp521r1 => 'P-521';
  8         19  
  8         2402  
13              
14             sub get_nist_for_curve_name {
15 5     5 0 15 my ($curve_name) = @_;
16              
17 5 50       22 die Crypt::Perl::X::create('Generic', 'Need curve name!') if !length $curve_name;
18              
19 5 50       59 my $cr = __PACKAGE__->can("JWK_CURVE_$curve_name") or do {
20 0         0 die Crypt::Perl::X::create('ECDSA::NoCurveForName', { name => $curve_name });
21             };
22              
23 5         35 return $cr->();
24             }
25              
26             sub get_curve_name_for_nist {
27 4     4 0 14 my ($nist_name) = @_;
28              
29 4 50       19 die Crypt::Perl::X::create('Generic', 'Need NIST curve name!') if !length $nist_name;
30              
31 4         18 for my $node ( Symbol::Get::get_names() ) {
32 11 100       392 next if $node !~ m<\AJWK_CURVE_(.+)>;
33              
34 7         72 my $nist = __PACKAGE__->can($node)->();
35 7 100       42 return $1 if $nist eq $nist_name;
36             }
37              
38 0           die Crypt::Perl::X::create('ECDSA::NoCurveForNISTName', { name => $nist_name });
39             }
40              
41             1;