filename, ".state");
INSIST(result == ISC_R_SUCCESS);
+ key->kasp = false;
result = dst_key_read_state(newfilename, mctx, &key);
- if (result == ISC_R_FILENOTFOUND) {
+ if (result == ISC_R_SUCCESS) {
+ key->kasp = true;
+ } else if (result == ISC_R_FILENOTFOUND) {
/* Having no state is valid. */
result = ISC_R_SUCCESS;
}
-
isc_mem_put(mctx, newfilename, newfilenamelen);
newfilename = NULL;
RETERR(result);
dst_key_state_t state;
isc_result_t result;
+ REQUIRE(VALID_KEY(key));
+
result = dst_key_getstate(key, DST_KEY_GOAL, &state);
if (result == ISC_R_SUCCESS) {
return (state);
return (DST_KEY_STATE_HIDDEN);
}
+bool
+dst_key_haskasp(dst_key_t *key) {
+ REQUIRE(VALID_KEY(key));
+
+ return (key->kasp);
+}
+
void
dst_key_copy_metadata(dst_key_t *to, dst_key_t *from) {
dst_key_state_t state;
bool keystateset[DST_MAX_KEYSTATES + 1]; /*%< data
* set? */
+ bool kasp; /*%< key has kasp state */
bool inactive; /*%< private key not present as it is
* inactive */
bool external; /*%< external key */
* 'key' to be valid.
*/
+bool
+dst_key_haskasp(dst_key_t *key);
+/*%<
+ * Check if this key has state (and thus uses KASP).
+ *
+ * Requires:
+ * 'key' to be valid.
+ */
+
bool
dst_key_is_unused(dst_key_t *key);
/*%<