From 346d33e0130625e90a43321429ef887088bfd274 Mon Sep 17 00:00:00 2001 From: adrien Date: Wed, 10 Jul 2013 16:32:26 +0200 Subject: [PATCH] begin rewrite in ruby --- manage-password.rb | 61 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100755 manage-password.rb diff --git a/manage-password.rb b/manage-password.rb new file mode 100755 index 0000000..c3bb496 --- /dev/null +++ b/manage-password.rb @@ -0,0 +1,61 @@ +#!/usr/bin/ruby +require 'rubygems' +require 'gpgme' + +FILE_GPG = './pass.gpg' +KEY = 'adrien.waksberg@believedigital.com' +FILE_PWD = './tmp_passwd' +TIMEOUT_PWD = 10 + +class ManagePasswd + + ID = 0 + TYPE = 1 + SERVER = 2 + LOGIN = 3 + PASSWD = 4 + PORT = 5 + COMMENT = 6 + + def initialize(key, file_gpg, file_pwd, timeout_pwd=300) + @key = key + @file_gpg = file_gpg + @file_pwd = file_pwd + @timeout_pwd = timeout_pwd + + if File.exist?(@file_gpg) + self.decrypt() + else + @data = "" + end + end + + def decrypt() + + if File.exist?(@file_pwd) && File.stat(@file_pwd).mtime.to_i + @timeout_pwd < Time.now.to_i + File.delete(@file_pwd) + end + + begin + passwd = IO.read(@file_pwd) + rescue + puts "Password GPG: " + passwd = gets + file_pwd = File.new(@file_pwd, 'w') + file_pwd << passwd + file_pwd.close + end + + crypto = GPGME::Crypto.new(:armor => true) + @data = crypto.decrypt(IO.read(@file_gpg), :password => passwd).read + + end + + def encrypt() + crypto = GPGME::Crypto.new(:armor => true) + crypto.encrypt(@data, :recipients => @key, :output => @file_gpg) + end + +end + +manage = ManagePasswd.new(KEY, FILE_GPG, FILE_PWD)