ldns(3)
π ldns(3) β the manual for verifying rrsigs π
okay bestie, welcome to the ldns(3) library functions manual, aka the page where we learn how to make DNSSEC signatures go β
or β. this is the "Library Functions Manual" corner of the ldns universe and it's lowkey iconic. grab a boba, we're verifying some rrsigs π¦
β¨ NAME β¨
ldns_verify, ldns_verify_rrsig, ldns_verify_rrsig_keylist, ldns_verify_rrsig_keylist_notime, ldns_verify_notime β verify rrsigs π
like. the whole girl gang of verification functions. they check that signatures are actually valid, no cap.
πΈ SYNOPSIS πΈ
#include <stdint.h>
#include <stdbool.h>
#include <ldns/ldns.h>
ldns_status ldns_verify(ldns_rr_list *rrset, ldns_rr_list *rrsig, const
ldns_rr_list *keys, ldns_rr_list *good_keys);
ldns_status ldns_verify_rrsig(ldns_rr_list *rrset, ldns_rr *rrsig,
ldns_rr *key);
ldns_status ldns_verify_rrsig_keylist(ldns_rr_list *rrset, ldns_rr
*rrsig, const ldns_rr_list *keys, ldns_rr_list *good_keys);
ldns_status ldns_verify_rrsig_keylist_notime(const ldns_rr_list *rrset,
const ldns_rr *rrsig, const ldns_rr_list *keys, ldns_rr_list
*good_keys);
ldns_status ldns_verify_notime(ldns_rr_list *rrset, ldns_rr_list *rrsig,
const ldns_rr_list *keys, ldns_rr_list *good_keys);
yes queen, include those headers or nothing works. stdint.h, stdbool.h, and obviously <ldns/ldns.h> β the holy trinity π«Ά
π DESCRIPTION π
π§ ldns_verify() β Verifies a list of signatures for one rrset.
rrset: the rrset to verify β the thing we're checking up onrrsig: a list of signatures to check β the receipts, basicallykeys: a list of keys to check with β the keys we're using to do the checkinggood_keys: if this is a (initialized) list, the pointer to keys fromkeysthat validate one of the signatures are added to it
Returns status LDNS_STATUS_OK if there is at least one correct key. one single slay key is enough and we're celebrating π
π¦ ldns_verify_rrsig() β verify an rrsig with 1 key
rrset: the rrsetrrsig: the rrsig to verifykey: the key to use
Returns status message whether verification succeeded. just the one key, no entourage needed π«
π ldns_verify_rrsig_keylist() β Verifies an rrsig. All keys in the keyset are tried.
rrset: the rrset to checkrrsig: the signature of the rrsetkeys: the keys to trygood_keys: if this is a (initialized) list, the pointer to keys fromkeysthat validate one of the signatures are added to it
Returns a list of keys which validate the rrsig + rrset. Returns status LDNS_STATUS_OK if at least one key matched. Else an error. it's giving "we tried every single one of them" energy π
π ldns_verify_rrsig_keylist_notime() β Verifies an rrsig. All keys in the keyset are tried. Time is not checked.
rrset: the rrset to checkrrsig: the signature of the rrsetkeys: the keys to trygood_keys: if this is a (initialized) list, the pointer to keys fromkeysthat validate one of the signatures are added to it
Returns a list of keys which validate the rrsig + rrset. Returns status LDNS_STATUS_OK if at least one key matched. Else an error. same vibe as above but we're ignoring the clock entirely, we live outside of time bestie β³β¨
β ldns_verify_notime() β Verifies a list of signatures for one rrset, but disregard the time. Inception and Expiration are not checked.
rrset: the rrset to verifyrrsig: a list of signatures to checkkeys: a list of keys to check withgood_keys: if this is a (initialized) list, the pointer to keys fromkeysthat validate one of the signatures are added to it
Returns status LDNS_STATUS_OK if there is at least one correct key. and yes, Inception and Expiration are literally not checked here, so don't come for me when the timestamps are off π
π AUTHOR π
The ldns team at NLnet Labs. the icons themselves, honestly.
π REPORTING BUGS π
Please report bugs to dns-team@nlnetlabs.nl or on GitHub at https://github.com/NLnetLabs/ldns/issues.
found a bug? don't suffer in silence, tell the girlies. they want to know fr fr π
π COPYRIGHT π
Copyright (c) 2004 - 2006 NLnet Labs.
Licensed under the BSD License. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
ok so real talk: NO warranty, not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. they are not liable, periodt. read the license, bestie π₯
π SEE ALSO π
ldns_verify_rrsig_evpldns_verify_rrsig_dsaldns_verify_rrsig_rsasha1ldns_verify_rrsig_rsamd5ldns_sign_publicldns_zone_signldns_key
And perldoc Net::DNS, RFC1034, RFC1035, RFC4033, RFC4034 and RFC4035.
the reading list is long but the lore is worth it, iykyk ππ
π REMARKS π
This manpage was automatically generated from the ldns source code.
(yes, a robot wrote the original. i just gave it a personality. main character energy for a manpage, honestly.)
and that's the whole page, bestie! π
β¨ this little beauty is from the 30 May 2006 era of ldns(3) β yes, the ldns(3) manual, section three, the library functions one. go forth and verify those signatures, you absolute legend ππ¦ππ
π¦ where this page comes from
- alpine 3.22: ldns-doc 1.8.4-r0 Β· BSD-3-Clause
- alpine 3.23: ldns-doc 1.8.4-r1 Β· BSD-3-Clause
- alpine 3.24: ldns-doc 1.8.4-r1 Β· BSD-3-Clause
- arch rolling: ldns 1.9.2-1 Β· custom:BSD
- debian trixie: libldns-dev 1.8.4-2+b1
- fedora 43: ldns-devel 1.8.4-8.fc43 Β· BSD-3-Clause
- fedora 43: ldns-devel 1.8.4-8.fc43 Β· BSD-3-Clause
- fedora 43: ldns-devel 1.9.2-1.fc43 Β· BSD-3-Clause
- fedora 43: ldns-devel 1.9.2-1.fc43 Β· BSD-3-Clause
- fedora 44: ldns-devel 1.9.0-2.fc44 Β· BSD-3-Clause
- fedora 44: ldns-devel 1.9.0-2.fc44 Β· BSD-3-Clause
- fedora 44: ldns-devel 1.9.2-1.fc44 Β· BSD-3-Clause
- fedora 44: ldns-devel 1.9.2-1.fc44 Β· BSD-3-Clause
- nixos 26.05: ldns 1.9.2
- nixpkgs unstable: ldns 1.9.2
- opensuse-leap 16.0: ldns-devel 1.8.4-160000.3.1 Β· BSD-3-Clause
- opensuse-leap 16.0: ldns-devel 1.8.4-160000.3.1 Β· BSD-3-Clause
- opensuse-leap 16.0: ldns-devel 1.8.4-160000.3.1 Β· BSD-3-Clause
- opensuse-leap 16.0: ldns-devel 1.8.4-160000.3.1 Β· BSD-3-Clause
- ubuntu questing: libldns-dev 1.8.4-2build1
- ubuntu resolute: libldns-dev 1.8.4-2build3
- ubuntu stonking: libldns-dev 1.9.2-1ubuntu1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms