zonekey.c revision dafcb997e390efa4423883dafd100c975c4095d6
d864d899d729b9d84ba6c0b5511023aeab215ea1Brian Wellington/*
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC")
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence * Copyright (C) 2001, 2003 Internet Software Consortium.
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews *
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * Permission to use, copy, modify, and distribute this software for any
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * purpose with or without fee is hereby granted, provided that the above
d864d899d729b9d84ba6c0b5511023aeab215ea1Brian Wellington * copyright notice and this permission notice appear in all copies.
d864d899d729b9d84ba6c0b5511023aeab215ea1Brian Wellington *
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
d864d899d729b9d84ba6c0b5511023aeab215ea1Brian Wellington * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
d864d899d729b9d84ba6c0b5511023aeab215ea1Brian Wellington * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
451a3c52624cf3ef336e2873b76989e11d8a6dc6Brian Wellington * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
14c5931d3d52baf17a786153c35c05fa62f916dcBrian Wellington * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
bb36b3102cfed68eac49ac7cb5f86cc52e962188Brian Wellington * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
b984520acca2532d048eae929dc0682dd334c7a3Brian Wellington * PERFORMANCE OF THIS SOFTWARE.
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont */
1a69a1a78cfaa86f3b68bbc965232b7876d4da2aDavid Lawrence
364a82f7c25b62967678027043425201a5e5171aBob Halley/* $Id: zonekey.c,v 1.5 2004/03/05 05:09:26 marka Exp $ */
d864d899d729b9d84ba6c0b5511023aeab215ea1Brian Wellington
c40906dfad6dd6e3a3e3c94b8c8847bc9bc064e5Mark Andrews#include <config.h>
c40906dfad6dd6e3a3e3c94b8c8847bc9bc064e5Mark Andrews
d864d899d729b9d84ba6c0b5511023aeab215ea1Brian Wellington#include <isc/result.h>
8766351a67bab11a010a5e43aafd3b262027d8a6Brian Wellington#include <isc/types.h>
d864d899d729b9d84ba6c0b5511023aeab215ea1Brian Wellington#include <isc/util.h>
0378429c74590cb6128457ee1d209f71f0bad139Brian Wellington
d864d899d729b9d84ba6c0b5511023aeab215ea1Brian Wellington#include <dns/keyvalues.h>
451a3c52624cf3ef336e2873b76989e11d8a6dc6Brian Wellington#include <dns/rdata.h>
d864d899d729b9d84ba6c0b5511023aeab215ea1Brian Wellington#include <dns/rdatastruct.h>
d864d899d729b9d84ba6c0b5511023aeab215ea1Brian Wellington#include <dns/types.h>
d864d899d729b9d84ba6c0b5511023aeab215ea1Brian Wellington#include <dns/zonekey.h>
451a3c52624cf3ef336e2873b76989e11d8a6dc6Brian Wellington
09f22ac5b09e70bc526015f37168ba33e21ea91fDavid Lawrenceisc_boolean_t
d864d899d729b9d84ba6c0b5511023aeab215ea1Brian Wellingtondns_zonekey_iszonekey(dns_rdata_t *keyrdata) {
d864d899d729b9d84ba6c0b5511023aeab215ea1Brian Wellington isc_result_t result;
d864d899d729b9d84ba6c0b5511023aeab215ea1Brian Wellington dns_rdata_dnskey_t key;
4ed956c5c06702c219dba7175dd0dd2c2a6da3d5Brian Wellington isc_boolean_t iszonekey = ISC_TRUE;
4ed956c5c06702c219dba7175dd0dd2c2a6da3d5Brian Wellington
4ed956c5c06702c219dba7175dd0dd2c2a6da3d5Brian Wellington REQUIRE(keyrdata != NULL);
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt result = dns_rdata_tostruct(keyrdata, &key, NULL);
9dc5ef7f24dba2be01d1cb10ba38c4a8b603d2b6Mark Andrews if (result != ISC_R_SUCCESS)
1c1d1a5a96624c7e6382c97f8d78765e05c246a1Brian Wellington return (ISC_FALSE);
1c1d1a5a96624c7e6382c97f8d78765e05c246a1Brian Wellington
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt if ((key.flags & DNS_KEYTYPE_NOAUTH) != 0)
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt iszonekey = ISC_FALSE;
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt if ((key.flags & DNS_KEYFLAG_OWNERMASK) != DNS_KEYOWNER_ZONE)
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt iszonekey = ISC_FALSE;
ff936a56ea2ec850748f82df46e67a8a614af49bBob Halley if (key.protocol != DNS_KEYPROTO_DNSSEC &&
d864d899d729b9d84ba6c0b5511023aeab215ea1Brian Wellington key.protocol != DNS_KEYPROTO_ANY)
d864d899d729b9d84ba6c0b5511023aeab215ea1Brian Wellington iszonekey = ISC_FALSE;
d864d899d729b9d84ba6c0b5511023aeab215ea1Brian Wellington
d864d899d729b9d84ba6c0b5511023aeab215ea1Brian Wellington return (iszonekey);
d864d899d729b9d84ba6c0b5511023aeab215ea1Brian Wellington}
76c8294c81fb48b1da6e1fc5b83322a4cedb8e58Andreas Gustafsson