Skip to main content

Config

Struct Config 

Source
pub struct Config { /* private fields */ }
Expand description

Password hash configuration parameters.

Config::interactive is the default and is suitable for online authentication. Config::moderate and Config::sensitive spend more time and memory per password guess. Benchmark the chosen preset on the slowest supported system, and account for the number of concurrent hashes when setting memory limits.

Implementations§

Source§

impl Config

Source

pub fn with_algorithm(self, algorithm: PasswordHashAlgorithm) -> Self

Selects the password-hashing algorithm.

The preset resource limits target Argon2id. When selecting Argon2i, choose limits that satisfy the corresponding CRYPTO_PWHASH_ARGON2I_* constants.

Source

pub fn with_hash_length(self, hash_length: usize) -> Self

Sets the hash output length in bytes.

The length must be between CRYPTO_PWHASH_BYTES_MIN and CRYPTO_PWHASH_BYTES_MAX, inclusive. Invalid values are reported when the config is used to hash a password.

Source

pub fn with_memlimit(self, memlimit: usize) -> Self

Sets the approximate memory cost in bytes.

More memory makes parallel guessing more expensive, but every concurrent hash also consumes that memory. The value must be between CRYPTO_PWHASH_MEMLIMIT_MIN and CRYPTO_PWHASH_MEMLIMIT_MAX, inclusive.

Source

pub fn with_opslimit(self, opslimit: u64) -> Self

Sets the computation cost.

Larger values take longer and make each password guess more expensive. The supported range depends on the selected algorithm. See the CRYPTO_PWHASH_ARGON2I_OPSLIMIT_* and CRYPTO_PWHASH_ARGON2ID_OPSLIMIT_* constants.

Source

pub fn interactive() -> Self

Returns libsodium’s interactive password hashing configuration.

This is the default preset for online operations where users wait for the result.

Source

pub fn moderate() -> Self

Returns libsodium’s moderate password hashing configuration.

This preset uses more time and memory than Config::interactive.

Source

pub fn sensitive() -> Self

Returns libsodium’s sensitive password hashing configuration.

This preset has the highest resource requirements. Use it only when the deployment can tolerate its latency and memory use.

Trait Implementations§

Source§

impl Clone for Config

Source§

fn clone(&self) -> Config

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Config

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Config

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for Config

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for Config

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Zeroize for Config

Source§

fn zeroize(&mut self)

Zero out this object from memory using Rust intrinsics which ensure the zeroization operation is not “optimized away” by the compiler.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.