diff options
author | Brian Sherson <caretaker82@euclid.shersonb.net> | 2013-08-27 20:25:22 -0700 |
---|---|---|
committer | Brian Sherson <caretaker82@euclid.shersonb.net> | 2013-08-27 20:25:22 -0700 |
commit | f1504f7162c8c43e3b06dd279370451e9b683e9c (patch) | |
tree | c0a6d06840cf42438041f5b6cc1c1fb82f7353a1 /wallet.py | |
parent | fc456d6660162f7ad3a278d00288865175b30281 (diff) |
Diffstat (limited to 'wallet.py')
l---------[-rw-r--r--] | wallet.py | 38 |
1 files changed, 1 insertions, 37 deletions
diff --git a/wallet.py b/wallet.py index 05321f0..eba4a72 100644..120000 --- a/wallet.py +++ b/wallet.py @@ -1,37 +1 @@ -#!/usr/bin/python -import pickle, Crypto.Cipher.Blowfish, os, getpass -from threading import Lock - -class Wallet(dict): - def __init__(self, filename): - self.lock=Lock() - if os.path.isfile(filename): - self.f=open(filename,"rb+") - self.passwd=getpass.getpass() - self.crypt=Crypto.Cipher.Blowfish.new(self.passwd) - contents_encrypted=self.f.read() - contents=self.crypt.decrypt(contents_encrypted+"\x00"*((-len(contents_encrypted))%8)) - if contents.startswith(self.passwd): - self.update(dict(pickle.loads(contents[len(self.passwd):]))) - else: - self.f.close() - raise BaseException, "Incorrect Password" - else: - self.f=open(filename,"wb+") - passwd=self.passwd=None - while passwd==None or passwd!=self.passwd: - passwd=getpass.getpass("Enter new password: ") - self.passwd=getpass.getpass("Confirm new password: ") - if passwd!=self.passwd: print "Passwords do not match!" - self.crypt=Crypto.Cipher.Blowfish.new(self.passwd) - self.flush() - def flush(self): - contents=self.passwd+pickle.dumps(self.items(), protocol=2) - self.lock.acquire() - try: - self.f.seek(0) - self.f.write(self.crypt.encrypt(contents+"\x00"*((-len(contents))%8))) - self.f.truncate() - self.f.flush() - finally: - self.lock.release() +../wallet.py
\ No newline at end of file |