Commit 27ccff2e authored by Marek Vavruša's avatar Marek Vavruša

libknot/rrtype: added DS introspection from resolver

parent ee6c4de1
......@@ -107,6 +107,7 @@ nobase_libknot_la_HEADERS = \
libknot/rrset.h \
libknot/rrtype/aaaa.h \
libknot/rrtype/dnskey.h \
libknot/rrtype/ds.h \
libknot/rrtype/naptr.h \
libknot/rrtype/nsec.h \
libknot/rrtype/nsec3.h \
......@@ -143,6 +144,7 @@ libknot_la_SOURCES = \
libknot/rrset.c \
libknot/rrtype/aaaa.c \
libknot/rrtype/dnskey.c \
libknot/rrtype/ds.c \
libknot/rrtype/naptr.c \
libknot/rrtype/nsec3.c \
libknot/rrtype/nsec3param.c \
......
/* Copyright (C) 2015 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "libknot/rrtype/ds.h"
#include "contrib/wire.h"
_public_
uint16_t knot_ds_ktag(const knot_rdataset_t *rrs, size_t pos)
{
KNOT_RDATASET_CHECK(rrs, pos, return 0);
return wire_read_u16(knot_rdata_offset(rrs, pos, 0));
}
_public_
uint8_t knot_ds_alg(const knot_rdataset_t *rrs, size_t pos)
{
KNOT_RDATASET_CHECK(rrs, pos, return 0);
return *knot_rdata_offset(rrs, pos, 2);
}
_public_
uint8_t knot_ds_dtype(const knot_rdataset_t *rrs, size_t pos)
{
KNOT_RDATASET_CHECK(rrs, pos, return 0);
return *knot_rdata_offset(rrs, pos, 3);
}
_public_
void knot_ds_digest(const knot_rdataset_t *rrs, size_t pos,
uint8_t **digest, uint16_t *digest_size)
{
KNOT_RDATASET_CHECK(rrs, pos, return);
*digest = knot_rdata_offset(rrs, pos, 4);
const knot_rdata_t *rr = knot_rdataset_at(rrs, pos);
*digest_size = knot_rdata_rdlen(rr) - 4;
}
/* Copyright (C) 2015 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "libknot/attribute.h"
#include "libknot/rdataset.h"
_pure_
uint16_t knot_ds_ktag(const knot_rdataset_t *rrs, size_t pos);
_pure_
uint8_t knot_ds_alg(const knot_rdataset_t *rrs, size_t pos);
_pure_
uint8_t knot_ds_dtype(const knot_rdataset_t *rrs, size_t pos);
void knot_ds_digest(const knot_rdataset_t *rrs, size_t pos,
uint8_t **digest, uint16_t *digest_size);
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment