Crate pants_gen

Source
Expand description

Password generation library used in pants

When using from the command line can either provide a spec string, or override the default (or current spec string) with other arguments.

§CLI examples (requires pants to be installed)

Using the default spec

$ pants gen
PHk};IUX{59!H88252x4wjD(Fg|5cva|

Overriding the default spec to be:

  • 3 or more uppercase letters
  • 1 to 2 lowercase letters
  • 3 or fewer numbers
  • 1 symbol
  • password of length 16
$ pants gen --spec '16//3+|:upper://1-2|:lower://3-|:number://1|:symbol:'
8Z6TWWCARwJxC)8C

Overriding parts of the default spec

  • setting the length to be 12
$ pants gen -l 12
bS),2VMV2G+T

Setting custom charater groups

  • disabling the symbols
  • setting an equivalent set of symbols to be !@#$%^&*|_+-=
$ pants gen -s 0 -c '!@#$%^&*|_+-=|1+'
=LsI8=%@%GP5hMlIm%#dj9&66V9-#7h@

§Library examples

To generate a password build up the spec and then call generate to produce the password. This function returns an Option since the constraints on the provided choices can’t always meet the length requirement given.

use pants_gen::charset::Charset;
use pants_gen::password::PasswordSpec;
use pants_gen::interval::Interval;
let spec = PasswordSpec::new()
    .length(16)
    .upper_at_least(1)
    .lower(Interval::new(1,10).unwrap())
    .include(Charset::Number.exactly(3))
    .custom(vec!['&', '^'], Interval::exactly(1));
if let Some(p) = spec.generate() {
    println!("{}", p);
} else {
    println!("Couldn't meet constraints of spec");
}

Modules§

charset
choice
interval
password