Skip to main content

passphrase_config/
passphrase_config.rs

1//! Passphrase generation with basic configuration
2//!
3//! This example shows how to use the [`BasicConfig`](config::BasicConfig) structure for
4//! configuring how passphrases should be generated. See the [`BasicConfig`](config::BasicConfig)
5//! documentation for all available options.
6//!
7//! Other configuration structures are available in the [`config`](config) module.
8//! You may build your own configuration structure with support for converting it into a
9//! [`Scheme`](scheme::Scheme) by implementing the [`ToScheme`](scheme::ToScheme) trait.
10//!
11//! Note that this example prints the generated passphrase in the console,
12//! which might not be desired in most situations.
13
14use chbs::{config::BasicConfig, prelude::*, probability::Probability};
15
16fn main() {
17    // Build a custom configuration to:
18    // - use hyphens as separator
19    // - sometimes capitalizes whole passphrase words
20    // - sometimes capitalizes the first characters of passphrase words
21    // TODO: use the builder instead
22    // let config = BasicConfigBuilder::default()
23    //     .separator("-")
24    //     .capitalize_first(Probability::from(0.33))
25    //     .capitalize_words(Probability::half())
26    //     .build()
27    //     .unwrap();
28    let mut config = BasicConfig::default();
29    config.words = 8;
30    config.separator = "-".into();
31    config.capitalize_first = Probability::from(0.33);
32    config.capitalize_words = Probability::half();
33
34    let scheme = config.to_scheme();
35
36    println!("Passphrase: {:?}", scheme.generate());
37    println!("Entropy: {:?}", scheme.entropy().bits());
38}