return (true);
}
-static void
-get_ksk_zsk(dst_key_t *key, bool *ksk, bool *zsk) {
+isc_result_t
+dst_key_role(dst_key_t *key, bool *ksk, bool *zsk) {
bool k = false, z = false;
+ isc_result_t result, ret = ISC_R_SUCCESS;
- if (dst_key_getbool(key, DST_BOOL_KSK, &k) == ISC_R_SUCCESS) {
- *ksk = k;
- } else {
- *ksk = ((dst_key_flags(key) & DNS_KEYFLAG_KSK) != 0);
+ if (ksk != NULL) {
+ result = dst_key_getbool(key, DST_BOOL_KSK, &k);
+ if (result == ISC_R_SUCCESS) {
+ *ksk = k;
+ } else {
+ *ksk = ((dst_key_flags(key) & DNS_KEYFLAG_KSK) != 0);
+ ret = result;
+ }
}
- if (dst_key_getbool(key, DST_BOOL_ZSK, &z) == ISC_R_SUCCESS) {
- *zsk = z;
- } else {
- *zsk = ((dst_key_flags(key) & DNS_KEYFLAG_KSK) == 0);
+
+ if (zsk != NULL) {
+ result = dst_key_getbool(key, DST_BOOL_ZSK, &z);
+ if (result == ISC_R_SUCCESS) {
+ *zsk = z;
+ } else {
+ *zsk = ((dst_key_flags(key) & DNS_KEYFLAG_KSK) == 0);
+ ret = result;
+ }
}
+ return (ret);
}
/* Hints on key whether it can be published and/or used for signing. */
time_ok = (when <= now);
}
- get_ksk_zsk(key, &ksk, &zsk);
+ (void)dst_key_role(key, &ksk, &zsk);
/* Check key states:
* KSK: If the DS is RUMOURED or OMNIPRESENT the key is considered
time_ok = (when <= now);
}
- get_ksk_zsk(key, &ksk, &zsk);
+ (void)dst_key_role(key, &ksk, &zsk);
/* Check key states:
* If the RRSIG state is RUMOURED or OMNIPRESENT, it means the key