*
*/
+bool
+dns_keymgr_key_may_be_purged(dst_key_t *key, uint32_t after, isc_stdtime_t now);
+/*%<
+ * Checks if the key files for 'key' may be removed from disk.
+ *
+ * Requires:
+ *\li 'key' is not NULL.
+ *
+ * Returns:
+ *\li true if the key files may be purged, false otherwise.
+ */
+
ISC_LANG_ENDDECLS
return ISC_R_SUCCESS;
}
-static bool
-keymgr_key_may_be_purged(dst_key_t *key, uint32_t after, isc_stdtime_t now) {
+bool
+dns_keymgr_key_may_be_purged(dst_key_t *key, uint32_t after, isc_stdtime_t now) {
bool ksk = false;
bool zsk = false;
dst_key_state_t hidden[NUM_KEYSTATES] = { HIDDEN, NA, NA, NA };
}
/* Check purge-keys interval. */
- if (keymgr_key_may_be_purged(dkey->key,
+ if (dns_keymgr_key_may_be_purged(dkey->key,
dns_kasp_purgekeys(kasp), now))
{
dst_key_format(dkey->key, keystr, sizeof(keystr));
}
static isc_result_t
-zone_verifykeys(dns_zone_t *zone, dns_dnsseckeylist_t *newkeys) {
+zone_verifykeys(dns_zone_t *zone, dns_dnsseckeylist_t *newkeys, uint32_t purgeval, isc_stdtime_t now) {
dns_dnsseckey_t *key1, *key2, *next;
/*
if (dst_key_is_unused(key1->key)) {
continue;
}
+ if (dns_keymgr_key_may_be_purged(key1->key, purgeval, now)) {
+ continue;
+ }
if (key1->purge) {
continue;
}
if (kasp != NULL) {
/* Verify new keys. */
- isc_result_t ret = zone_verifykeys(zone, &keys);
+ isc_result_t ret = zone_verifykeys(zone, &keys, dns_kasp_purgekeys(kasp), now);
if (ret != ISC_R_SUCCESS) {
dnssec_log(zone, ISC_LOG_ERROR,
"zone_rekey:zone_verifykeys failed: "