Skip to content

Instantly share code, notes, and snippets.

@bleything
Created February 9, 2011 21:48
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save bleything/819375 to your computer and use it in GitHub Desktop.
Save bleything/819375 to your computer and use it in GitHub Desktop.
A Rakefile for managing an encrypted password file
########################################################################
### Rakefile for encrypted passwords
########################################################################
#
# Here's a little Rakefile to manage your encrypted password file! It's
# really easy to use:
#
# 1) put the email addresses of the keys you want in AUTHORIZED_USERS
# 2) create a passwords.txt (and ignore it in your SCM)
# 3) run `rake passwords:encrypt`
# 4) check in passwords.pgp
#
# To decrypt, just run `rake passwords:decrypt`
#
########################################################################
#
# Ben Bleything wrote this, and would love it if you gave him lots of
# money. You can email him at ben@bleything.net for wire transfer info.
#
# That said, there's nothing special in here, so I'm placing it in the
# public domain.
#
AUTHORIZED_USERS = %w[
ben@bleything.net
]
namespace :passwords do
desc "Encrypts the current passwords.txt file"
task :encrypt do
# ascii armor, encrypt, sign, overwrite passwords.pgp, always trust public keys
cmd = %w[
gpg --armor --encrypt --sign --output passwords.pgp --yes --trust-model always
]
# add -r <email> for each user
AUTHORIZED_USERS.each do |user|
cmd << "-r #{user}"
end
# and encrypt the passwords.txt
cmd << "passwords.txt"
exec *cmd
end
desc "Decrypts passwords.gpg and writes it to passwords.txt"
task :decrypt do
exec "gpg --armor --decrypt --yes --output passwords.txt passwords.pgp"
end
desc "Uses `pwgen` to generate a few good passwords"
task :generate, [:length] do |_, args|
length = args.length || 15
exec "pwgen --numerals --capitalize --symbols #{length}"
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment