File Coverage

blib/lib/Net/DNS/RR/NSEC3PARAM.pm
Criterion Covered Total %
statement 55 55 100.0
branch 6 6 100.0
path n/a
condition 10 10 100.0
subroutine 15 15 100.0
pod 5 6 100.0
total 91 92 100.0


line stmt bran path cond sub pod time code
1               package Net::DNS::RR::NSEC3PARAM;
2                
3 3       3   519 use strict;
  3           6  
  3           92  
4 3       3   10 use warnings;
  3           5  
  3           200  
5               our $VERSION = (qw$Id: NSEC3PARAM.pm 2003 2025-01-21 12:06:06Z willem $)[2];
6                
7 3       3   13 use base qw(Net::DNS::RR);
  3           3  
  3           280  
8                
9                
10               =head1 NAME
11                
12               Net::DNS::RR::NSEC3PARAM - DNS NSEC3PARAM resource record
13                
14               =cut
15                
16 3       3   12 use integer;
  3           5  
  3           13  
17                
18 3       3   76 use Carp;
  3           4  
  3           2100  
19                
20                
21               sub _decode_rdata { ## decode rdata from wire-format octet string
22 4       4   10 my ( $self, $data, $offset ) = @_;
23                
24 4           11 my $size = unpack "\@$offset x4 C", $$data;
25 4           17 @{$self}{qw(algorithm flags iterations saltbin)} = unpack "\@$offset CCnx a$size", $$data;
  4           14  
26 4           10 return;
27               }
28                
29                
30               sub _encode_rdata { ## encode rdata as wire-format octet string
31 5       5   7 my $self = shift;
32                
33 5           7 my $salt = $self->saltbin;
34 5           6 return pack 'CCnCa*', @{$self}{qw(algorithm flags iterations)}, length($salt), $salt;
  5           14  
35               }
36                
37                
38               sub _format_rdata { ## format rdata portion of RR string.
39 3       3   3 my $self = shift;
40                
41 3     100     6 return join ' ', $self->algorithm, $self->flags, $self->iterations, $self->salt || '-';
42               }
43                
44                
45               sub _parse_rdata { ## populate RR from rdata in argument list
46 4       4   11 my ( $self, @argument ) = @_;
47                
48 4           8 for (qw(algorithm flags iterations)) { $self->$_( shift @argument ) }
  12           23  
49 4           9 my $salt = shift @argument;
50 4 100         15 $self->salt($salt) unless $salt eq '-';
51 3           7 return;
52               }
53                
54                
55               sub algorithm {
56 13       13 1 28 my ( $self, @value ) = @_;
57 13           13 for (@value) { $self->{algorithm} = 0 + $_ }
  5           10  
58 13     100     40 return $self->{algorithm} || 0;
59               }
60                
61                
62               sub flags {
63 10       10 1 1117 my ( $self, @value ) = @_;
64 10           23 for (@value) { $self->{flags} = 0 + $_ }
  5           8  
65 10     100     42 return $self->{flags} || 0;
66               }
67                
68                
69               sub iterations {
70 11       11 1 1251 my ( $self, @value ) = @_;
71 11           17 for (@value) { $self->{iterations} = 0 + $_ }
  5           10  
72 11     100     29 return $self->{iterations} || 0;
73               }
74                
75                
76               sub salt {
77 10       10 1 1090 my ( $self, @value ) = @_;
78 10 100         30 return unpack "H*", $self->saltbin() unless scalar @value;
79 4 100         8 my @hex = map { /^"*([\dA-Fa-f]*)"*$/ || croak("corrupt hex"); $1 } @value;
  4           229  
  3           22  
80 3           17 return $self->saltbin( pack "H*", join "", @hex );
81               }
82                
83                
84               sub saltbin {
85 15       15 1 20 my ( $self, @value ) = @_;
86 15           21 for (@value) { $self->{saltbin} = $_ }
  3           11  
87 15     100     73 return $self->{saltbin} || "";
88               }
89                
90                
91               ########################################
92                
93 2       2 0 594 sub hashalgo { return &algorithm; } # uncoverable pod
94                
95               ########################################
96                
97                
98               1;
99               __END__