[Nym3-commit] r155 - trunk/nym3/Client
laurent at komite.net
laurent at komite.net
Sun Jan 23 20:17:35 CET 2005
Author: laurent
Date: 2005-01-23 20:17:34 +0100 (Sun, 23 Jan 2005)
New Revision: 155
Modified:
trunk/nym3/Client/Keyring.py
Log:
Keyring has decrypting hability now.
Modified: trunk/nym3/Client/Keyring.py
===================================================================
--- trunk/nym3/Client/Keyring.py 2005-01-03 23:02:56 UTC (rev 154)
+++ trunk/nym3/Client/Keyring.py 2005-01-23 19:17:34 UTC (rev 155)
@@ -1,7 +1,9 @@
# $Id$
import pickle
+from mixminion.Crypto import sha1, ctr_crypt, AES_KEY_LEN
+
class Keyring:
"""Class that holds a user keyring"""
@@ -9,14 +11,22 @@
self.keyfile = keyfile
try:
f = open(keyfile, 'r')
- self.data = pickle.load(f)
+ self.data = f.read()
f.close
except IOError:
raise "Duh"
- self.encdata = self.data['keyring']
- self.checksum = self.data['checksum']
self.status = 'encrypted'
def decrypt(self, passphrase):
"""Decrypt the keyring"""
- pass
+ salt = self.data[:SALT_LEN]
+ key = sha1(salt + passphrase + salt)
+ key = key[:AES_KEY_LEN]
+ clear = ctr_crypt(self.data[SALT_LEN:], key)
+ digest = clear[:-DIGEST_LEN]
+ # Should digest really be a digest, or merely a fixed MAGIC
+ # string ? TODO.
+ if sha1(clear) != digest:
+ raise "Bad password"
+ self.data = clear
+ self.status = 'clear'
More information about the Nym3-commit
mailing list