Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 19 additions & 11 deletions password-generator.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
# Password Generator

**Objective:** Create a password generator that can create a secure password.
**Objective:** Create a password generator that can create a cryptographically secure password,
suitable for use in authentication systems.

It should be possible to generate a password by calling a method—you may choose
the method signature for this. The method should return a string containing the
new password.

## Requirements

This generation method should accept the following options which define the
requirements of returned passwords:

Expand All @@ -17,19 +20,24 @@ requirements of returned passwords:

The function should produce an error in the event of invalid options.

External libraries are allowed for testing purposes. The actual password
generation code however should be implemented in your code, and not simply call
out to an external library that generates passwords for you.
## Constraints

* Passwords should be generated in a way that ensures high entropy and unpredictability.
* You may use any classes or modules available in the standard Ruby library.
* External libraries/gems may be used for testing purposes only. The core password
generation logic must be your own implementation. Don't use them to generate passwords.

The code should be packaged as a library/module which could be included into
other libraries and applications.
## Deliverables

Tests should be included to verify that the code works as intended.
* The code should be packaged as a library/module which could be included into
other libraries and applications.
* Tests should be included to verify that the code works as intended.
* Documentation should be included to demonstrate how to use the library. A well
written README is more than sufficient. Please add some notes about how you
approached the problem, and any difficulties or issues you encountered during
development.

Documentation should be included to demonstrate how to use the library. A well
written README is more than sufficient. Please add some notes about how you
approached the problem, and any difficulties or issues you encountered during
development.
## Submission

Push the library into a private repository on GitHub and invite
[@js1300](https://github.com/js1300) and [@jpswade](https://github.com/jpswade) with read access.