summaryrefslogtreecommitdiff
path: root/wallet.py
diff options
context:
space:
mode:
authorBrian Sherson <caretaker82@euclid.shersonb.net>2013-08-27 20:25:22 -0700
committerBrian Sherson <caretaker82@euclid.shersonb.net>2013-08-27 20:25:22 -0700
commitf1504f7162c8c43e3b06dd279370451e9b683e9c (patch)
treec0a6d06840cf42438041f5b6cc1c1fb82f7353a1 /wallet.py
parentfc456d6660162f7ad3a278d00288865175b30281 (diff)
Diffstat (limited to 'wallet.py')
l---------[-rw-r--r--]wallet.py38
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