1package DNS::LDNS::DNSSecZone; 2 3use 5.008008; 4use strict; 5use warnings; 6 7use DNS::LDNS ':all'; 8 9our $VERSION = '0.61'; 10 11sub new { 12 my ($class, %args) = @_; 13 14 my $line_nr; 15 my $status = &LDNS_STATUS_OK; 16 my $zone; 17 my $file; 18 19 if ($args{filename}) { 20 unless (open FILE, $args{filename}) { 21 $DNS::LDNS::last_status = &LDNS_STATUS_FILE_ERR; 22 $DNS::LDNS::line_nr = 0; 23 return; 24 } 25 26 $file = \*FILE; 27 } 28 elsif ($args{file}) { 29 $file = $args{file}; 30 } 31 32 if ($file) { 33 $zone = _new_from_file($file, 34 $args{origin}, 35 $args{ttl} || 0, 36 $args{class} || 0, 37 $status, $line_nr); 38 } 39 else { 40 $zone = _new(); 41 } 42 43 if ($args{filename}) { 44 close $file; 45 } 46 47 $DNS::LDNS::last_status = $status; 48 $DNS::LDNS::line_nr = $line_nr; 49 if (!defined $zone) { 50 return; 51 } 52 53 return $zone; 54} 55 56sub soa { 57 my $self = shift; 58 return DNS::LDNS::GC::own($self->_soa, $self); 59} 60 61sub names { 62 my $self = shift; 63 return DNS::LDNS::GC::own($self->_names, $self); 64} 65 66sub find_rrset { 67 my ($self, $name, $type) = @_; 68 return DNS::LDNS::GC::own($self->_find_rrset($name, $type), $self); 69} 70 71sub add_rr { 72 my ($self, $rr) = @_; 73 74 # Set a copy of the rr in case it is already owned 75 my $s = _add_rr($self, my $copy = $rr->clone); 76 $DNS::LDNS::last_status = $s; 77 DNS::LDNS::GC::own($copy, $self); 78 return $s; 79} 80 81sub add_empty_nonterminals { 82 my $self = shift; 83 my $s = _add_empty_nonterminals($self); 84 $DNS::LDNS::last_status = $s; 85 return $s; 86} 87 88sub mark_glue { 89 my $self = shift; 90 my $s = _mark_glue($self); 91 $DNS::LDNS::last_status = $s; 92 return $s; 93} 94 95sub sign { 96 my ($self, $keylist, $policy, $flags) = @_; 97 my $s = _sign($self, $keylist, $policy, $flags); 98 $DNS::LDNS::last_status = $s; 99 return $s; 100} 101 102sub sign_nsec3 { 103 my ($self, $keylist, $policy, $algorithm, $flags, $iterations, $salt, 104 $signflags) = @_; 105 my $s = _sign_nsec3($self, $keylist, $policy, $algorithm, $flags, 106 $iterations, $salt, $signflags); 107 $DNS::LDNS::last_status = $s; 108 return $s; 109} 110 111sub to_string { 112 return "DNS::LDNS::DNSSecZone::to_string is not yet implemented"; 113} 114 115sub DESTROY { 116 DNS::LDNS::GC::free($_[0]); 117} 118 1191; 120__END__ 121 122=head1 NAME 123 124DNS::LDNS::DNSSecZone - Zone with dnssec data 125 126=head1 SYNOPSIS 127 128 use DNS::LDNS ':all' 129 130 my z = new DNS::LDNS::DNSSecZone( 131 filename => '/path/to/myzone', 132 origin => new DNS::LDNS::RData(LDNS_RDF_TYPE_DNAME, 'myzone'), #optional 133 ttl => 3600, #optional 134 class => LDNS_RR_CLASS_, #optional 135 ) 136 my z = new DNS::LDNS::DNSSecZone( 137 file => \*FILE, 138 origin => ..., ttl => ..., class => ... 139 ) 140 my z = new DNS::LDNS::DNSSecZone 141 142 rr = z->soa 143 rbtree = z->names 144 rrsets = z->find_rrset 145 z->add_rr(rr) 146 z->create_from_zone(zone) 147 z->add_empty_nonterminals 148 149 z->sign(keylist, policy) 150 z->sign_nsec3(keylist, policy, algorithm, flags, iterations, salt) 151 152 z->create_nsecs 153 z->create_nsec3s(algorithm, flags, iterations, salt) 154 z->create_rrsigs(key_list, policy, flags) 155 156=head1 TODO 157 158 z->to_string 159 160=head1 SEE ALSO 161 162http://www.nlnetlabs.nl/projects/ldns 163 164=head1 AUTHOR 165 166Erik Pihl Ostlyngen, E<lt>erik.ostlyngen@uninett.noE<gt> 167 168=head1 COPYRIGHT AND LICENSE 169 170Copyright (C) 2013 by UNINETT Norid AS 171 172This library is free software; you can redistribute it and/or modify 173it under the same terms as Perl itself, either Perl version 5.14.2 or, 174at your option, any later version of Perl 5 you may have available. 175 176=cut 177