an embarrasingly simple password safe
Scala Shell
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bin
LICENSE
Passwords.scala
README
build.sbt

README

passwords - an embarrassingly simple password safe

Highlights:

  - Functional: stores all your passwords in a single, encrypted file
  - Secure: 256-bit AES encryption
  - Verifiable: less than 300 lines of Scala code
  - Durable: backup ~/.passwords with Dropbox, or email, or whatever
  - Free: MIT license

The goal of this program is to be moderately more user friendly than storing
passwords in a plain text file encrypted with GnuPG, while at the same time
being short and simple enough that any competent programmer can convince
themselves of its correctness in under 30 minutes.

Example usage:

  $ passwords
  > help
  Commands:
    generate [length]
    add <url> <username>
    remove <url> <username>
    list
    search <search string>
    merge <other file>

  > generate
  g9mYO:=[

  > add https://www.mint.com/ johndoe
  No existing passwords database.
  Enter a master password:
  Confirm master password:
  Password: <copy/paste "g9mYO:=[" from above>

  > search mint
  https://www.mint.com/ johndoe g9mYO:=[

  > remove https://www.mint.com/ johndoe
  Really remove this entry? (Y/N): y

  > quit

Installation instructions for MacPorts/Debian/Ubuntu:

  1. Download and install git and sbt:

     apt-get install git sbt   # Debian/Ubuntu
     port install git sbt      # MacPorts

  2. Download and install this program:

     mkdir -p ~/src
     cd ~/src
     git clone git://github.com/srhea/passwords.git
     cd passwords
     sbt compile
     export PATH=$PATH:$HOME/src/passwords/bin

Notes:

I wrote passwords in Scala because of the languages I know well, Scala
produces shorter, more readable code than C++, and I trust Scala's
cryptographic primitives more than those in Ruby.

If you're using Java 7 and getting mysterious errors, you may need to download
the "Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy
Files". You can find those files and instructions on how to install them here:

  http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html

On Mac OSX, JAVA_HOME is a little wierd.  To install the unlimited strength
cryptography extensions on OSX, unzip the file downloaded from the link above,
cd into the unzipped directory, and then run this command

  sudo mv *.jar `/usr/libexec/java_home`/jre/lib/security/

Enjoy!