tkeyconf.c revision e20788e1216ed720aefa84f3295f7899d9f28c22
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt * Copyright (C) 2004-2007, 2009, 2010, 2012, 2014 Internet Systems Consortium, Inc. ("ISC")
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt * Copyright (C) 1999-2001 Internet Software Consortium.
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt * Permission to use, copy, modify, and/or distribute this software for any
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt * purpose with or without fee is hereby granted, provided that the above
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt * copyright notice and this permission notice appear in all copies.
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt * PERFORMANCE OF THIS SOFTWARE.
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt/* $Id: tkeyconf.c,v 1.33 2010/12/20 23:47:20 tbox Exp $ */
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt#include <isc/string.h> /* Required for HP/UX (and others?) */
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt#define RETERR(x) do { \
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Huntns_tkeyctx_fromconfig(const cfg_obj_t *options, isc_mem_t *mctx,
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt const char *s;
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt result = cfg_map_get(options, "tkey-dhkey", &obj);
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt n = cfg_obj_asuint32(cfg_tuple_get(obj, "keyid"));
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt RETERR(dns_name_fromtext(name, &b, dns_rootname, 0, NULL));
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt type = DST_TYPE_PUBLIC|DST_TYPE_PRIVATE|DST_TYPE_KEY;
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt RETERR(dst_key_fromfile(name, (dns_keytag_t) n, DNS_KEYALG_DH,
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt result = cfg_map_get(options, "tkey-domain", &obj);
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt RETERR(dns_name_fromtext(name, &b, dns_rootname, 0, NULL));
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt tctx->domain = isc_mem_get(mctx, sizeof(dns_name_t));
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt result = cfg_map_get(options, "tkey-gssapi-credential", &obj);
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt RETERR(dns_name_fromtext(name, &b, dns_rootname, 0, NULL));
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt RETERR(dst_gssapi_acquirecred(name, ISC_FALSE, &tctx->gsscred));
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt result = cfg_map_get(options, "tkey-gssapi-keytab", &obj);