/// Buffer time before key expiry to trigger rotation. This ensures we rotate slightly before the
/// C-tor uses 3 hours for the link/auth key and 1 day for the signing key. Let's use 3 hours here,
/// If the key already exists, the error is ignored as this could happen if the system time drifts
/// Returns `min_remaining` which is the minimum `valid_until` of the entries that were kept (if
/// Attempt to generate a key and cert using the given [`KeyCertificateSpecifier`] which is signed
/// [`RelaySigningKeyCert`]. Note that identity keys are NOT generated within this function, it is
/// Returns the minimum `valid_until` across newly generated keys, or `None` if nothing was generated.
let ntor_generated = try_generate_key::<RelayNtorKeypair, RelayNtorKeypairSpecifierPattern, _>(
/// Return (`removed`, `next_expiry`) where the `removed` indicates if at least one key has been
/// removed because it was expired. The `next_expiry` is the minimum value of all valid_until which