From f9cab77861b4fdaa5371b290b25bb4fec841c5dc Mon Sep 17 00:00:00 2001 From: Guillaume Horel Date: Mon, 11 Apr 2011 01:33:32 -0400 Subject: Preliminary support of a user private key. --- server/plugin.py | 14 ++++++++++++-- server/user.py | 10 ++++++---- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/server/plugin.py b/server/plugin.py index 892977e..393e675 100644 --- a/server/plugin.py +++ b/server/plugin.py @@ -17,7 +17,7 @@ class AliasQuery(ElementBase): name = 'query' plugin_attrib = 'alias' interfaces = set(('node', 'type', 'content', 'permission', 'key')) - sub_interfaces = set(('content', 'permission', 'key')) + sub_interfaces = set(('content', 'permission', 'key', 'salt')) def addItem(self, node, key, permission = None): item = AliasItem(None, self) @@ -55,11 +55,21 @@ class AliasPlugin(base.base_plugin): iq.send() def handle_alias_query(self, iq): + caller = iq['from'].bare + + if iq['alias']['type'] == 'keys': + key, salt = Object(caller).get_private_key(); + iq.reply() + iq['alias']['type'] = 'keys' + iq['alias']['key'] = key + iq['alias']['salt'] = salt + iq.send() + try: callee = base64.b64decode(iq['to'].user) except TypeError: logging.error("callee field not base64 encoded") - caller = iq['from'].bare + node = iq['alias']['node'] if not node: node = hashlib.sha1(callee).hexdigest() diff --git a/server/user.py b/server/user.py index 819ad51..ac6e2be 100644 --- a/server/user.py +++ b/server/user.py @@ -1,7 +1,6 @@ import os import os.path import shutil -import object import hashlib class UserHandler: @@ -11,9 +10,12 @@ class UserHandler: def register(self, name): userDir = self.root + '/' + name - os.mkdir(userDir) - handler = object.ObjectHandler(self.root,name) - handler.create_home_node() + self.hash = hashlib.sha1(name).hexdigest() + root_node = userDir + '/' + self.hash[:2] + '/' + self.hash[2:] + os.mkdirs(root_node) + os.touch(root_node + '/permissions') + os.touch(root_node + '/childs') + os.touch(root_node + '/object') def registered(self, name): return os.path.exists(self.root + '/' + name) -- cgit v1.2.3-70-g09d2 From 544d90e6b6c83b4dbf8d8d8d3e00a21ab1bf0599 Mon Sep 17 00:00:00 2001 From: Guillaume Horel Date: Mon, 11 Apr 2011 01:39:38 -0400 Subject: Add a placeholder for the get_private_key method. --- server/object.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/server/object.py b/server/object.py index 6723481..c2b5d16 100644 --- a/server/object.py +++ b/server/object.py @@ -19,6 +19,9 @@ class Object: def __init__(self, owner, hash): self.owner = owner + if hash is None: + hash = hashlib.sha1(owner).hexdigest() + self.hash = hash owner_path = config.root + self.owner + '/' @@ -92,6 +95,9 @@ class Object: content = file.read() file.close() return content, key + + def get_private_key(self): + pass if __name__ == '__main__': pass -- cgit v1.2.3-70-g09d2