isc_buffer_t key_txtbuffer;
char key_txtsecret[256];
char namebuf[DNS_NAME_FORMATSIZE];
+ char selfbuf[DNS_NAME_FORMATSIZE];
+ char zonebuf[DNS_NAME_FORMATSIZE];
const char *keyname = NULL;
const char *zone = NULL;
const char *self_domain = NULL;
makesafe_keyname(keyname, namebuf, sizeof(namebuf), &wildcard);
+ /*
+ * If -s or -z is in use, it's fine to overwrite wildcard, because
+ * those are the ones we'd be using as the update-policy identity.
+ */
+ if (self_domain != NULL) {
+ makesafe_keyname(self_domain, selfbuf, sizeof(selfbuf),
+ &wildcard);
+ self_domain = selfbuf;
+ } else if (zone != NULL) {
+ makesafe_keyname(zone, zonebuf, sizeof(zonebuf), &wildcard);
+ zone = zonebuf;
+ }
+
isc_buffer_init(&key_txtbuffer, &key_txtsecret, sizeof(key_txtsecret));
generate_key(isc_g_mctx, alg, keysize, &key_txtbuffer);
if (wildcard && !quiet) {
printf("\n\
-# This is a wildcard key, and should not be used in an update-policy.\n");
+# \"%s\" is a wildcard key, and should not be used in an update-policy.\n",
+ zone != NULL
+ ? zone
+ : (self_domain != NULL ? self_domain : namebuf));
} else if (!quiet) {
if (self_domain != NULL) {
printf("\n\
# name \"%s\", place an \"update-policy\" statement\n\
# like this one, adjusted as needed for your preferred permissions:\n\
update-policy {\n\
- grant %s name %s ANY;\n\
+ grant \"%s\" name \"%s\" ANY;\n\
};\n",
self_domain, namebuf, self_domain);
} else if (zone != NULL) {
# place an \"update-policy\" statement like this one, adjusted as \n\
# needed for your preferred permissions:\n\
update-policy {\n\
- grant %s zonesub ANY;\n\
+ grant \"%s\" zonesub ANY;\n\
};\n",
zone, namebuf);
} else {
# to this key. For example, the following statement grants this key\n\
# permission to update any name within the zone:\n\
update-policy {\n\
- grant %s zonesub ANY;\n\
+ grant \"%s\" zonesub ANY;\n\
};\n",
namebuf);
}