pub struct TimelockBuilder { /* private fields */ }Expand description
Fluent builder for [timelock] / timelock_async key derivation.
Provides a readable alternative to the 7-positional-argument timelock() function.
Create a builder via TimelockBuilder::encrypt (encryption path, _at) or
TimelockBuilder::decrypt (decryption path, _now), optionally configure
it with setter methods, then call derive or
derive_async.
§Encryption (key-at path)
All of time, salts, and kdf are required. cadence, precision, and
format are optional and fall back to sensible defaults:
cadence→TimeLockCadence::None(no calendar constraint)precision→TimePrecision::Minuteformat→TimeFormat::Hour24
let salts = TimeLockSalts::generate();
let kdf = KdfPreset::Balanced.params();
let key = TimelockBuilder::encrypt()
.time(TimeLockTime::new(14, 37).unwrap())
.salts(salts)
.kdf(kdf)
.derive()
.unwrap();§Decryption (key-now path)
Pass the TimeLockParams header stored in the ciphertext. No other
configuration is required; all settings are read from params.
let key = TimelockBuilder::decrypt(header).derive().unwrap();Implementations§
Source§impl TimelockBuilder
impl TimelockBuilder
Sourcepub fn encrypt() -> Self
pub fn encrypt() -> Self
Begin configuring an encryption (key-at) derivation.
Requires enc-timelock-keygen-input (or async variant) to call
derive / derive_async.
Sourcepub fn decrypt(params: TimeLockParams) -> Self
pub fn decrypt(params: TimeLockParams) -> Self
Begin configuring a decryption (key-now) derivation from a stored header.
Requires enc-timelock-keygen-now (or async variant) to call
derive / derive_async.
Sourcepub fn cadence(self, cadence: TimeLockCadence) -> Self
pub fn cadence(self, cadence: TimeLockCadence) -> Self
Set the calendar cadence (default: TimeLockCadence::None).
Sourcepub fn time(self, time: TimeLockTime) -> Self
pub fn time(self, time: TimeLockTime) -> Self
Set the explicit lock time (required for the encryption path).
Sourcepub fn precision(self, precision: TimePrecision) -> Self
pub fn precision(self, precision: TimePrecision) -> Self
Set the time precision (default: TimePrecision::Minute).
Sourcepub fn format(self, format: TimeFormat) -> Self
pub fn format(self, format: TimeFormat) -> Self
Set the clock format (default: TimeFormat::Hour24).
Sourcepub fn salts(self, salts: TimeLockSalts) -> Self
pub fn salts(self, salts: TimeLockSalts) -> Self
Set the KDF salts (required for the encryption path).
Sourcepub fn kdf(self, kdf: KdfParams) -> Self
pub fn kdf(self, kdf: KdfParams) -> Self
Set the KDF parameters (required for the encryption path).
Sourcepub fn derive(self) -> Result<TimeLockKey, TimeLockError>
pub fn derive(self) -> Result<TimeLockKey, TimeLockError>
Derive the key synchronously.
Delegates directly to [timelock].
Sourcepub async fn derive_async(self) -> Result<TimeLockKey, TimeLockError>
pub async fn derive_async(self) -> Result<TimeLockKey, TimeLockError>
Derive the key asynchronously.
Delegates directly to timelock_async. The blocking KDF work is
offloaded to a Tokio blocking thread.