static void
check_keystore_options(keygen_ctx_t *ctx) {
- ctx->directory = dns_keystore_directory(ctx->keystore);
+ ctx->directory = dns_keystore_directory(ctx->keystore, NULL);
if (ctx->directory != NULL) {
isc_result_t ret = try_dir(ctx->directory);
if (ret != ISC_R_SUCCESS) {
{
if (dns_kasp_key_keystore(kkey) == keystore) {
const char *directory =
- dns_keystore_directory(
- keystore);
- if (directory == NULL ||
- (strcmp(dns_keystore_name(keystore),
- DNS_KEYSTORE_KEYDIRECTORY) ==
- 0))
- {
- directory = keydir;
- }
+ dns_keystore_directory(keystore,
+ keydir);
RETERR(findmatchingkeys(
directory, namebuf, len, mctx,
now, &list));
kkey != NULL; kkey = ISC_LIST_NEXT(kkey, link))
{
dns_keystore_t *ks = dns_kasp_key_keystore(kkey);
- if (ks == NULL ||
- strcmp(dns_keystore_name(ks),
- DNS_KEYSTORE_KEYDIRECTORY) == 0)
- {
- directory = keydir;
- } else {
- directory = dns_keystore_directory(ks);
- }
-
+ directory = dns_keystore_directory(ks, keydir);
result = dst_key_fromfile(dst_key_name(key),
dst_key_id(key),
dst_key_alg(key), type,
*/
const char *
-dns_keystore_directory(dns_keystore_t *keystore);
+dns_keystore_directory(dns_keystore_t *keystore, const char *keydir);
/*%<
- * Get keystore directory.
- *
- * Requires:
- *
- *\li 'keystore' is a valid keystore.
+ * Get keystore directory. If 'keystore' is NULL or 'keystore->directory' is
+ *NULL, return 'keydir'.
*
* Returns:
*
dst_key_t *newkey = NULL;
uint32_t alg = dns_kasp_key_algorithm(kkey);
dns_keystore_t *keystore = dns_kasp_key_keystore(kkey);
+ const char *dir = NULL;
int size = dns_kasp_key_size(kkey);
if (dns_kasp_key_ksk(kkey)) {
dst_key_setbool(newkey, DST_BOOL_KSK, dns_kasp_key_ksk(kkey));
dst_key_setbool(newkey, DST_BOOL_ZSK, dns_kasp_key_zsk(kkey));
- if (keystore == NULL ||
- strcmp(dns_keystore_name(keystore), "key-directory") == 0)
- {
- if (keydir != NULL) {
- dst_key_setdirectory(newkey, keydir);
- }
- } else {
- if (dns_keystore_directory(keystore) != NULL) {
- dst_key_setdirectory(newkey,
- dns_keystore_directory(keystore));
- }
+ dir = dns_keystore_directory(keystore, keydir);
+ if (dir != NULL) {
+ dst_key_setdirectory(newkey, dir);
}
-
*dst_key = newkey;
return (ISC_R_SUCCESS);
}
const char *
-dns_keystore_directory(dns_keystore_t *keystore) {
- REQUIRE(DNS_KEYSTORE_VALID(keystore));
+dns_keystore_directory(dns_keystore_t *keystore, const char *keydir) {
+ if (keystore == NULL) {
+ return (keydir);
+ }
+
+ INSIST(DNS_KEYSTORE_VALID(keystore));
+
+ if (keystore->directory == NULL) {
+ return (keydir);
+ }
return (keystore->directory);
}
kkey != NULL; kkey = ISC_LIST_NEXT(kkey, link))
{
dns_keystore_t *ks = dns_kasp_key_keystore(kkey);
- if (ks == NULL ||
- strcmp(dns_keystore_name(ks), "key-directory") == 0)
- {
- directory = zone->keydirectory;
- } else {
- directory = dns_keystore_directory(ks);
- }
+ directory = dns_keystore_directory(ks,
+ zone->keydirectory);
result = dst_key_fromfile(
dst_key_name(pubkey), dst_key_id(pubkey),
kkey != NULL; kkey = ISC_LIST_NEXT(kkey, link))
{
dns_keystore_t *kks = dns_kasp_key_keystore(kkey);
- if (kks == NULL || strcmp(DNS_KEYSTORE_KEYDIRECTORY,
- dns_keystore_name(kks)) == 0)
- {
- dir = keydir;
- keystore = false;
- } else {
- dir = dns_keystore_directory(kks);
- keystore = true;
+ dir = dns_keystore_directory(kks, keydir);
+ keystore = (kks != NULL && strcmp(DNS_KEYSTORE_KEYDIRECTORY,
+ dns_keystore_name(kks)) != 0);
+
+ ret = keydirexist(zconfig,
+ keystore ? "key-store directory"
+ : "key-directory",
+ zname, dir, name, keydirs, logctx, mctx);
+ if (ret != ISC_R_SUCCESS) {
+ result = ret;
}
}
dns_kasp_thaw(kasp);