2 * EXPERIMENTAL ecdsa implementation, please do not enable on real
4 * GOST code enabled by default (RFC 5933).
5 * bugfix #326: ignore whitespace between directives and their values.
6 * Header comment to advertise ldns_axfr_complete to check for
7 successfully completed zone transfers.
8 * read resolv.conf skips interface labels, e.g. %eth0.
9 * Fix drill verify NSEC3 denials.
10 * Use closesocket() on windows.
11 * Add ldns_get_signing_algorithm_by_name that understand aliases,
12 names changed to RFC names and aliases for compatibility added.
13 * bugfix: don't print final dot if the domain is relative.
14 * bugfix: resolver search continue when packet rcode != NOERROR.
15 * bugfix: resolver push all domains in search directive to list.
16 * bugfix: resolver search by default includes the root domain.
17 * bugfix: tcp read could fail on single octet recv.
18 * bugfix: read of RR in unknown syntax with missing fields.
19 * added ldns_pkt_tsig_sign_next() and ldns_pkt_tsig_verify_next()
20 to sign and verify TSIG RRs on subsequent messages
21 (section 4.4, RFC 2845).
22 * bugfix: signer sigs nsecs with zsks only.
23 * bugfix #333: fix ldns_dname_absolute for name ending with backslash.
26 * Fix ldns_rr_clone to copy question rrs properly.
27 * Fix ldns_sign_zone(_nsec3) to clone the soa for the new zone.
28 * Fix ldns_wire2dname size check from reading 1 byte beyond buffer end.
29 * Fix ldns_wire2dname from reading 1 byte beyond end for pointer.
30 * Fix crash using GOST for particular platform configurations.
31 * extern C declarations used in the header file.
32 * Removed debug fprintf from resolver.c.
33 * ldns-signzone checks if public key file is for the right zone.
34 * NETLDNS, .NET port of ldns functionality, by Alex Nicoll, in contrib.
35 * Fix handling of comments in resolv.conf parse.
36 * GOST code enabled if SSL recent, RFC 5933.
37 * bugfix #317: segfault util.c ldns_init_random() fixed.
38 * Fix ldns_tsig_mac_new: allocate enough memory for the hash, fix use of
39 b64_pton_calculate_size.
40 * Fix ldns_dname_cat: size calculation and handling of realloc().
41 * Fix ldns_rr_pop_rdf: fix handling of realloc().
42 * Fix ldns-signzone for single type key scheme: sign whole zone if there
44 * Fix ldns_resolver: also close socket if AXFR failed (if you don't,
45 it would block subsequent transfers (thanks Roland van Rijswijk).
46 * Fix drill: allow for a secure trace if you use DS records as trust
47 anchors (thanks Jan Komissar).
50 * Catch \X where X is a digit as an error.
51 * Fix segfault when ip6 ldns resolver only has ip4 servers.
52 * Fix NSEC record after DNSKEY at zone apex not properly signed.
53 * Fix syntax error if last label too long and no dot at end of domain.
54 * Fix parse of \# syntax with space for type LOC.
55 * Fix ldns_dname_absolute for escape sequences, fixes some parse errs.
56 * bugfix #297: linking ssl, bug due to patch submitted as #296.
57 * bugfix #299: added missing declarations to host2str.h
58 * ldns-compare-zones -s to not exclude SOA record from comparison.
60 * fix ldns_pkt_empty(), reported by Alex Nicoll.
61 * fix ldns_resolver_new_frm_fp not ignore lines after a comment.
62 * python code for ldns_rr.new_question_frm_str()
63 * Fix ldns_dnssec_verify_denial: the signature selection routine.
64 * Type TALINK parsed (draft-ietf-dnsop-trust-history).
65 * bugfix #304: fixed dead loop in ldns_tcp_read_wire() and
66 ldns_tcp_read_wire_timeout().
67 * GOST support with correct algorithm numbers. The plan is to make it
68 enabled if openssl support is detected, but it is disabled by
69 default in this release because the RFC is not ready.
70 * Fixed comment in rbtree.h about being first member and data ptr.
71 * Fixed possibly leak in case of out of memory in ldns_native2rdf...
72 * ldns_dname_is_wildcard added.
73 * Fixed: signatures over wildcards had the wrong labelcount.
74 * Fixed ldns_verify() inconsistent return values.
75 * Fixed ldns_resolver to copy and free tsig name, data and algorithm.
76 * Fixed ldns_resolver to push search onto searchlist.
77 * A ldns resolver now defaults to a non-recursive resolver that handles
79 * ldns_resolver_print() prints more details.
80 * Fixed ldns_rdf2buffer_str_time(), which did not print timestamps
82 * Make ldns_resolver_nameservers_randomize() more random.
83 * bugfix #310: POSIX specifies NULL second argument of gettimeofday.
84 * fix compiler warnings from llvm clang compiler.
85 * bugfix #309: ldns_pkt_clone did not clone the tsig_rr.
86 * Fix gentoo ebuild for drill, 'no m4 directory'.
87 * bugfix #313: drill trace on an empty nonterminal continuation.
90 * Imported pyldns contribution by Zdenek Vasicek and Karel Slany.
91 Changed its configure and Makefile to fit into ldns.
92 Added its dname_* methods to the rdf_* class (as is the ldns API).
93 Changed swig destroy of ldns_buffer class to ldns_buffer_free.
94 Declared ldns_pkt_all and ldns_pkt_all_noquestion so swig sees them.
95 * Bugfix: parse PTR target of .tomhendrikx.nl with error not crash.
96 * Bugfix: handle escaped characters in TXT rdata.
97 * bug292: no longer crash on malformed domain names where a label is
98 on position 255, which was a buffer overflow by one.
99 * Fix ldns_get_rr_list_hosts_frm_fp_l (strncpy to strlcpy change),
100 which fixes resolv.conf reading badly terminated string buffers.
101 * Fix ldns_pkt_set_random_id to be more random, and a little faster,
102 it did not do value 0 statistically correctly.
103 * Fix ldns_rdf2native_sockaddr_storage to set sockaddr type to zeroes,
105 * bug295: nsec3-hash routine no longer case sensitive.
106 * bug298: drill failed nsec3 denial of existence proof.
109 * Bugfix: allow for unknown resource records in zonefile with rdlen=0.
110 * Bugfix: also mark an RR as question if it comes from the wire
111 * Bugfix: NSEC3 bitmap contained NSEC
112 * Bugfix: Inherit class when creating signatures
115 * Fix Makefile patch from Havard Eidnes, better install.sh usage.
116 * Fix parse error on SOA serial of 2910532839.
117 Fix print of ';' and readback of '\;' in names, also for '\\'.
118 Fix parse of '\(' and '\)' in names. Also for file read. Also '\.'
119 * Fix signature creation when TTLs are different for RRs in RRset.
120 * bug273: fix so EDNS rdata is included in pkt to wire conversion.
121 * bug274: fix use of c++ keyword 'class' for RR class in the code.
122 * bug275: fix memory leak of packet edns rdata.
123 * Fix timeout procedure for TCP and AXFR on Solaris.
124 * Fix occasional NSEC bitmap bogus
125 * Fix rr comparing (was in reversed order since 1.6.0)
126 * bug278: fix parsing HINFO rdata (and other cases).
127 * Fix previous owner name: also pick up if owner name is @.
128 * RFC5702: enabled sha2 functions by default. This requires OpenSSL 0.9.8 or higher.
129 Reason for this default is the root to be signed with RSASHA256.
130 * Fix various LDNS RR parsing issues: IPSECKEY, WKS, NSAP, very long lines
131 * Fix: Make ldns_dname_is_subdomain case insensitive.
132 * Fix ldns-verify-zone so that address records at zone NS set are not considered glue
133 (Or glue records fall below delegation)
134 * Fix LOC RR altitude printing.
135 * Feature: Added period (e.g. '3m6d') support at explicit TTLs.
136 * Feature: DNSKEY rrset by default signed with minimal signatures
137 but -A option for ldns-signzone to sign it with all keys.
138 This makes the DNSKEY responses smaller for signed domains.
141 * --enable-gost : use the GOST algorithm (experimental).
142 * Added some missing options to drill manpage
143 * Some fixes to --without-ssl option
144 * Fixed quote parsing withing strings
145 * Bitmask fix in EDNS handling
146 * Fixed non-fqdn domain name completion for rdata field domain
148 * Fixed chain validation with SHA256 DS records
152 * Addition of an ldns-config script which gives cflags and libs
153 values, for use in configure scripts for applications that use
154 use ldns. Can be disabled with ./configure --disable-ldns-config
155 * Added direct sha1, sha256, and sha512 support in ldns.
156 With these functions, all NSEC3 functionality can still be
157 used, even if ldns is built without OpenSSL. Thanks to OpenBSD,
158 Steve Reid, and Aaron D. Gifford for the code.
159 * Added reading/writing support for the SPF Resource Record
160 * Base32 functions are now exported
162 * ldns_is_rrset did not go through the complete rrset, but
163 only compared the first two records. Thanks to Olafur
164 Gudmundsson for report and patch
165 * Fixed a small memory bug in ldns_rr_list_subtype_by_rdf(),
166 thanks to Marius Rieder for finding an patching this.
167 * --without-ssl should now work. Make sure that examples/ and
168 drill also get the --without-ssl flag on their configure, if
170 * Some malloc() return value checks have been added
171 * NSEC3 creation has been improved wrt to empty nonterminals,
173 * Fixed a bug in the parser when reading large NSEC3 salt
175 * Made the allowed length for domain names on wire
176 and presentation format the same.
178 * ldns-key2ds can now also generate DS records for keys without
180 * ldns-signzone now equalizes the TTL of the DNSKEY RRset (to
181 the first non-default DNSKEY TTL value it sees)
185 * ldns-signzone was broken in 1.5.0 for multiple keys, this
189 * Removed a small erroneous output warning in
190 examples/configure and drill/configure
194 * fixed a possible memory overflow in the RR parser
195 * build flag fix for Sun Studio
196 * fixed a building race condition in the copying of header
198 * EDNS0 extended rcode; the correct assembled code number
199 is now printed (still in the EDNS0 field, though)
200 * ldns_pkt_rr no longer leaks memory (in fact, it no longer
204 * ldns_key now has support for 'external' data, in which
205 case the OpenSSL EVP structures are not used;
206 ldns_key_set_external_key() and ldns_key_external_key()
207 * added ldns_key_get_file_base_name() which creates a
208 'default' filename base string for key storage, of the
209 form "K<zone>+<algorithm>+<keytag>"
210 * the ldns_dnssec_* family of structures now have deep_free()
211 functions, which also free the ldns_rr's contained in them
212 * there is now an ldns_match_wildcard() function, which checks
213 whether a domain name matches a wildcard name
214 * ldns_sign_public has been split up; this resulted in the
215 addition of ldns_create_empty_rrsig() and
216 ldns_sign_public_buffer()
219 * ldns-signzone can now automatically add DNSKEY records when
220 using an OpenSSL engine, as it already did when using key
222 * added new example tool: ldns-nsec3-hash
223 * ldns-dpa can now filter on specific query name and types
224 * ldnsd has fixes for the zone name, a fix for the return
225 value of recvfrom(), and an memory initialization fix
226 (Thanks to Colm MacCárthaigh for the patch)
227 * Fixed memory leaks in ldnsd
233 * fixed a build issue where ldns lib existence was done too early
234 * removed unnecessary check for pcap.h
235 * NSEC3 optout flag now correctly printed in string output
236 * inttypes.h moved to configured inclusion
237 * fixed NSEC3 type bitmaps for empty nonterminals and unsigned
241 * for that last fix, we added a new function
242 ldns_dname_add_from() that can clone parts of a dname
246 * sig chase return code fix (patch from Rafael Justo, bug id 189)
247 * rdata.c memory leaks on error and allocation checks fixed (patch
248 from Shane Kerr, bug id 188)
249 * zone.c memory leaks on error and allocation checks fixed (patch
250 from Shane Kerr, bug id 189)
251 * ldns-zplit output and error messages fixed (patch from Shane Kerr,
253 * Fixed potential buffer overflow in ldns_str2rdf_dname
254 * Signing code no longer signs delegation NS rrsets
255 * Some minor configure/makefile updates
256 * Fixed a bug in the randomness initialization
257 * Fixed a bug in the reading of resolv.conf
258 * Fixed a bug concerning whitespace in zone data (with patch from Ondrej
260 * Fixed a small fallback problem in axfr client code
263 * added 2str convenience functions:
266 - ldns_rr_type2buffer_str
267 - ldns_rr_class2buffer_str
268 * buffer2str() is now called ldns_buffer2str
269 * base32 and base64 function names are now also prepended with ldns_
270 * ldns_rr_new_frm_str() now returns an error on missing RDATA fields.
271 Since you cannot read QUESTION section RRs with this anymore,
272 there is now a function called ldns_rr_new_question_frm_str()
275 * DS RRs string representation now add bubblebabble in a comment
276 (patch from Jakob Schlyter)
278 * TCP fallback system has been improved
279 * HMAC-SHA256 TSIG support has been added.
280 * TTLS are now correcly set in NSEC(3) records when signing zones
283 * New example: ldns-revoke to revoke DNSKEYs according to RFC5011
284 * ldns-testpkts has been fixed and updated
285 * ldns-signzone now has the option to not add the DNSKEY
286 * ldns-signzone now has an (full zone only) opt-out option for
288 * ldns-keygen can create HMAC-SHA1 and HMAC-SHA256 symmetric keys
289 * ldns-walk output has been fixed
290 * ldns-compare-zones has been fixed, and now has an option
291 to show all differences (-a)
292 * ldns-read-zone now has an option to print DNSSEC records only
297 * Added a new family of functions based around ldns_dnssec_zone,
298 which is a new structure that keeps a zone sorted through an
299 rbtree and links signatures and NSEC(3) records directly to their
300 RRset. These functions all start with ldns_dnssec_
302 * ldns_zone_sign and ldns_zone_sign_nsec3 are now deprecated, but
303 have been changed to internally use the new
304 ldns_dnssec_zone_sign(_nsec3)
306 * Moved some ldns_buffer functions inline, so a clean rebuild of
307 applications relying on those is needed (otherwise you'll get
309 * ldns_dname_label now returns one extra (zero)
310 byte, so it can be seen as an fqdn.
311 * NSEC3 type code update for signing algorithms.
312 * DSA key generation of DNSKEY RRs fixed (one byte too small).
314 * Added support for RSA/SHA256 and RSA/SHA512, as specified in
315 draft-ietf-dnsext-dnssec-rsasha256-04. The typecodes are not
316 final, and this feature is not enabled by default. It can be
317 enabled at compilation time with the flag --with-sha2
319 * Added 2wire_canonical family of functions that lowercase dnames
320 in rdata fields in resource records of the types in the list in
323 * Added base32 conversion functions.
325 * Fixed DSA RRSIG conversion when calling OpenSSL
329 * Chase output is completely different, it shows, in ascii, the
330 relations in the trust hierarchy.
333 * Added ldns-verify-zone, that can verify the internal DNSSEC records
334 of a signed BIND-style zone file
336 * ldns-keygen now takes an -a argument specifying the algorithm,
337 instead of -R or -D. -a list show a list of supported algorithms
339 * ldns-keygen now defaults to the exponent RSA_F4 instead of RSA_3
340 for RSA key generation
342 * ldns-signzone now has support for HSMs
343 * ldns-signzone uses the new ldns_dnssec_ structures and functions
344 which improves its speed, and output; RRSIGS are now placed
345 directly after their RRset, NSEC(3) records directly after the
349 * new contrib/ dir with user contributions
350 * added compilation script for solaris (thanks to Jakob Schlyter)
353 * Added support for HMAC-MD5 keys in generator
354 * Added a new example tool (written by Ondrej Sury): ldns-compare-zones
355 * ldns-keygen now checks key sizes for rfc conformancy
356 * ldns-signzone outputs SSL error if present
357 * Fixed manpages (thanks to Ondrej Sury)
358 * Fixed Makefile for -j <x>
359 * Fixed a $ORIGIN error when reading zones
360 * Fixed another off-by-one error
363 * Fixed an offset error in rr comparison
364 * Fixed ldns-read-zone exit code
365 * Added check for availability of SHA256 hashing algorithm
366 * Fixed ldns-key2ds -2 argument
367 * Fixed $ORIGIN bug in .key files
368 * Output algorithms as an integer instead of their mnemonic
369 * Fixed a memory leak in dnssec code when SHA256 is not available
370 * Updated fedora .spec file
373 * canonicalization of rdata in DNSSEC functions now adheres to the
374 rr type list in rfc3597, not rfc4035, which will be updated
375 (see http://www.ops.ietf.org/lists/namedroppers/namedroppers.2007/msg00183.html)
376 * ldns-walk now support dnames with maximum label length
377 * ldnsd now takes an extra argument containing the address to listen on
378 * signing no longer signs every rrset with KSK's, but only the DNSKEY rrset
379 * ported to Solaris 10
380 * added ldns_send_buffer() function
381 * added ldns-testpkts fake packet server
382 * added ldns-notify to send NOTIFY packets
383 * ldns-dpa can now accurately calculate the number of matches per
385 * libtool is now used for compilation too (still gcc, but not directly)
387 - TSIG signing buffer size
388 - resolv.conf reading (comments)
389 - dname comparison off by one error
390 - typo in keyfetchers output file name fixed (a . too much)
391 - fixed zone file parser when comments contain ( or )
396 * drill prints error on failed axfr.
397 * drill now accepts mangled packets with -f
398 * old -c option (use tcp) changed to -t
399 * -c option to specify alternative resolv.conf file added
400 * feedback of signature chase improved
401 * chaser now stops at root when no trusted keys are found
402 instead of looping forever trying to find the DS for .
404 - wildcard on multiple labels signature verification
405 - error in -f packet writing for malformed packets
406 - made KSK check more resilient
408 7 Jul 2006: 1.1.0: ldns-team
409 * Added tutorials and an introduction to the documentation
410 * Added include/ and lib/ dirs so that you can compile against ldns
411 without installing ldns on your system
413 * Starting usage of assert throughout the library to catch illegal calls
414 * Solaris 9 testing was carried out. Ldns now compiles on that
415 platform; some gnuism were identified and fixed.
416 * The ldns_zone structure was stress tested. The current setup
417 (ie. just a list of rrs) can scale to zone file in order of
418 megabytes. Sorting such zone is still difficult.
419 * Reading multiline b64 encoded rdata works.
420 * OpenSSL was made optional, configure --without-ssl.
421 Ofcourse all dnssec/tsig related functions are disabled
422 * Building of examples and drill now happens with the same
423 defines as the building of ldns itself.
424 * Preliminary sha-256 support was added. Currently is your
425 OpenSSL supports it, it is supported in the DS creation.
426 * ldns_resolver_search was implemented
427 * Fixed a lot of bugs
430 * -r was killed in favor of -o <header bit mnemonic> which
431 allows for a header bits setting (and maybe more in the
433 * DNSSEC is never automaticaly set, even when you query
434 for DNSKEY/RRSIG or DS.
435 * Implement a crude RTT check, it now distinguishes between
436 reachable and unreachable.
437 * A form of secure tracing was added
438 * Secure Chasing has been improved
439 * -x does a reverse lookup for the given IP address
442 * ldns-dpa was added to the examples - this is the Dns Packet
444 * ldnsd - as very, very simple nameserver impl.
445 * ldns-zsplit - split zones for parrallel signing
446 * ldns-zcat - cat split zones back together
447 * ldns-keyfetcher - Fetches DNSKEY records with a few (non-strong,
448 non-DNSSEC) anti-spoofing techniques.
449 * ldns-walk - 'Walks' a DNSSEC signed zone
450 * Added an all-static target to the makefile so you can use examples
451 without installing the library
452 * When building in the source tree or in a direct subdirectory of
453 the build dir, configure does not need --with-ldns=../ anymore
456 * All networking code was moved to net.c
457 * rdata.c: added asserts to the rdf set/get functions
458 * const keyword was added to pointer arguments that
463 * renamed ldns/dns.h to ldns/ldns.h
464 * ldns_rr_new_frm_str() is extented with an extra variable which
465 in common use may be NULL. This trickles through to:
467 o ldns_rr_new_frm_fp_l
468 Which also get an extra variable
469 Also the function has been changed to return a status message.
470 The compiled RR is returned in the first argument.
471 * ldns_zone_new_frm_fp_l() and ldns_zone_new_frm_fp() are
472 changed to return a status msg.
473 * ldns_key_new_frm_fp is changed to return ldns_status and
474 the actual key list in the first argument
475 * ldns_rdata_new_frm_fp[_l]() are changed to return a status.
476 the rdf is return in the first argument
477 * ldns_resolver_new_frm_fp: same treatment: return status and
478 the new resolver in the first argument
479 * ldns_pkt_query_new_frm_str(): same: return status and the
480 packet in the first arg
481 * tsig.h: internal used functions are now static:
482 ldns_digest_name and ldns_tsig_mac_new
483 * ldns_key_rr2ds has an extra argument to specify the hash to
485 * ldns_pkt_rcode() is renamed to ldns_pkt_get_rcode, ldns_pkt_rcode
486 is now the rcode type, like ldns_pkt_opcode
488 * ldns_resolver_searchlist_count: return the searchlist counter
489 * ldns_zone_sort: Sort a zone
490 * ldns_bgsend(): background send, returns a socket.
491 * ldns_pkt_empty(): check is a packet is empty
492 * ldns_rr_list_pop_rr_list(): pop multiple rr's from another rr_list
493 * ldns_rr_list_push_rr_list(): push multiple rr's to an rr_list
494 * ldns_rr_list_compare(): compare 2 ldns_rr_lists
495 * ldns_pkt_push_rr_list: rr_list equiv for rr
496 * ldns_pkt_safe_push_rr_list: rr_list equiv for rr
498 * ldns_resolver_bgsend(): was not used in 1.0.0 and is not used now
499 * ldns_udp_server_connect(): was faulty and isn't really part of
500 the core ldns idea any how.
501 * ldns_rr_list_insert_rr(): obsoleted, because not used.
502 * char *_when was removed from the ldns_pkt structure
504 18 Oct 2005: 1.0.0: ldns-team
505 * Commited a patch from Håkan Olsson
506 * Added UPDATE support (Jakob Schlyter and Håkan Olsson)
507 * License change: ldns is now BSD licensed
508 * ldns now depends on SSL
509 * Networking code cleanup, added (some) server udp/tcp support
510 * A zone type is introduced. Currently this is a list
511 of RRs, so it will not scale well.
512 * [beta] Zonefile parsing was added
513 * [tools] Drill was added to ldns - see drill/
514 * [tools] experimental signer was added
515 * [building] better check for ssl
516 * [building] major revision of build system
517 * [building] added rpm .spec in packaging/ (thanks to Paul Wouters)
518 * [building] A lot of cleanup in the build scripts (thanks to Jakob Schlyter
521 28 Jul 2005: 0.70: ldns-team
522 * [func] ldns_pkt_get_section now returns copies from the rrlists
523 in the packet. This can be freed by the user program
524 * [code] added ldns_ prefixes to function from util.h
525 * [inst] removed documentation from default make install
526 * Usual fixes in documentation and code
528 20 Jun 2005: 0.66: ldns-team
529 Rel. Focus: drill-pre2 uses some functions which are
531 * dnssec_cd bit function was added
532 * Zone infrastructure was added
533 * Usual fixes in documentation and code
535 13 Jun 2005: 0.65: ldns-team
536 * Repository is online at:
537 http://www.nlnetlabs.nl/ldns/svn/
538 * Apply reference copying throuhgout ldns, except in 2
539 places in the ldns_resolver structure (._domain and
541 * Usual array of bugfixes
542 * Documentation added
543 * keygen.c added as an example for DNSSEC programming
545 23 May 2005: 0.60: ldns-team
546 * Removed config.h from the header installed files
547 (you're not supposed to include that in a libary)
549 - DNSSEC signing/verification works
550 - Assorted bug fixes and tweaks (memory management)
552 May 2005: 0.50: ldns-team
553 * First usable release
554 * Basic DNS functionality works
555 * DNSSEC validation works