7 releases

0.3.0 Jul 15, 2024
0.2.2 Jul 4, 2024
0.1.2 Jun 6, 2024
0.1.1 May 31, 2024

#1370 in Cryptography

Download history 16/week @ 2024-07-18 1/week @ 2024-07-25 41/week @ 2024-09-12 24/week @ 2024-09-19 10/week @ 2024-09-26 3/week @ 2024-10-03

515 downloads per month
Used in pants-store

MIT license

26KB
622 lines

pants-gen

Password generator, used for pants.

Documentation

Usage

A password generator that can be used as a library or at the command line

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

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

Dependencies

~0.5–1MB
~22K SLoC