RecoveryKeyReset
Delayed recovery key reset, format version 1 (docs/recovery-key-reset.md). Integers are big-endian, strings u32 length | UTF-8.
Completion statement:
u32 length | userId
reset ID (16)
expected recovery key epoch: i64 (>= 1)
current recovery public key (32)
new recovery public key (32) // ≠ current
requestedAt: i64, epoch milliseconds (>= 0)
eligibleAt: i64, epoch milliseconds (> requestedAt)
u32 length | completer userId // = userId
u32 length | completer deviceIdCancellation statement:
u32 length | userId
reset ID (16)
expected recovery key epoch: i64
current recovery public key (32)
requestedAt: i64 | eligibleAt: i64Status query statement:
u32 length | userId
current recovery public key (32)
timestamp: i64, epoch millisecondsEach construction prefixes u32 length | domain (UTF-8):
completion proof of possession, Ed25519 by the new recovery key:
KSecureMessage-RecoveryKeyReset-NewKeyPoP-v1;RecoveryKeyResetCompletionId, SHA-256:
KSecureMessage-RecoveryKeyResetId-v1;cancellation, Ed25519 by the current recovery key:
KSecureMessage-RecoveryKeyReset-Cancel-v1;status query, Ed25519 by the current recovery key:
KSecureMessage-RecoveryKeyResetStatusQuery-v1.
No domain is shared with any other construction.
Properties
Functions
The cancellation of reset by the recovery key it would replace, currentKey. Throws IllegalArgumentException if currentKey is not the key reset replaces.
The bytes the current recovery key signs to cancel.
The ID of statement.
The bytes the new recovery key signs.
A status query for userId's pending reset, signed by currentKey. timestamp is truncated to milliseconds.
The bytes the current recovery key signs to query the status.
true if the cancellation verifies with currentPublicKey; the server passes the registered recovery key.
true if the proof of possession verifies with the statement's new key.
true if the status query verifies with currentPublicKey; the server passes the registered recovery key.