[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