requestRecoveryKeyReset

Requests a delayed reset of the requester's user's recovery key in one atomic step. In this order:

  1. the user has no ACTIVE recovery key (never registered, or revoked): RecoveryKeyResetRequestResult.NotConfigured;

  2. the requester's registration differs from RecoveryKeyResetRequest.requester (key and epoch): RecoveryKeyResetRequestResult.Conflict;

  3. a reset is pending: RecoveryKeyResetRequestResult.Existing with it, unchanged (whoever requested it; the delay never restarts);

  4. the recovery key epoch is Long.MAX_VALUE (a completion could never apply): RecoveryKeyResetRequestResult.EpochExhausted;

  5. stores a reset with the candidate ID, bound to the ACTIVE key and epoch read in this step, RecoveryKeyResetRequest.now as request time and RecoveryKeyResetRequest.eligibleAt: RecoveryKeyResetRequestResult.Created.

Nothing else changes; in particular every last-device recovery challenge stays valid.