]> git.datanom.net - securemail.git/blobdiff - user.py
Reorder
[securemail.git] / user.py
diff --git a/user.py b/user.py
deleted file mode 100644 (file)
index a4ab2f7..0000000
--- a/user.py
+++ /dev/null
@@ -1,142 +0,0 @@
-# -*- coding: utf-8 -*-
-# Copyright (c) 2018  Michael Rasmussen <mir@datanom.net>
-# This file is part of SecureMail.
-
-# SecureMail is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# SecureMail is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with SecureMail.  If not, see <https://www.gnu.org/licenses/>.
-
-import pickle
-from db import DBInterface as DBI
-from cryptonize import Cryptonize
-from nacl.public import PublicKey
-
-class NoSuchUser(Exception):
-    pass
-
-class User:
-    """
-    Class implementing the backend users
-    """
-    def __init__(self, key=None):
-        if key is not None:
-            self.load(key)
-        else:
-            self.pubkeys = {}
-
-    def store(self, key):
-        crypto = Cryptonize()
-        cipher = crypto.symmetric_encrypt(key, pickle.dumps(self))
-        DBI.store_user(crypto.generate_hash(key), cipher)
-
-    def load(self, key):
-        crypto = Cryptonize()
-        cipher = DBI.load_user(crypto.generate_hash(key))
-        if cipher is None:
-            raise NoSuchUser('{0}: User not found'.format(key))
-        plain = crypto.symmetric_decrypt(key, cipher)
-        try:
-            obj = pickle.loads(plain)
-            self.__dict__.update(obj.__dict__)
-        except pickle.UnpicklingError as e:
-            raise e
-    
-    def add_pubkey(self, email, key):
-        if email not in self.pubkeys:
-            self.pubkeys[email] = key.encode()
-        else:
-            raise KeyError('{0}: Exists'.format(email))
-    
-    def update_pubkey(self, email, key):
-        self.pubkeys[email] = key.encode()
-
-    def delete_pubkey(self, email):
-        if email in self.pubkeys:
-            del self.pubkeys[email]
-
-    def get_pubkey(self, email):
-        if email in self.pubkeys:
-            key = self.pubkeys[email]
-            key = PublicKey(key)
-        else:
-            key = None
-        
-        return key
-
-    @property
-    def name(self):
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        self._name = name
-
-    @property
-    def email(self):
-        return self._email
-
-    @email.setter
-    def email(self, email):
-        self._email = email
-
-    @property
-    def pubkeys(self):
-        return self._pubkeys
-
-    @pubkeys.setter
-    def pubkeys(self, pubkeys):
-        if type(pubkeys) is not type({}):
-            raise ValueError('Not dictionary')
-        self._pubkeys = pubkeys
-
-if __name__ == '__main__':
-    try:
-        u = User('test')
-        for attr, value in u.__dict__.items():
-            print ('{0}: {1}'.format(attr, value))
-        print ('{0} - {1} - {2}'.format(u.name, u.email, u.pubkeys))
-        key = ''
-        for i in range(40):
-            key += '{0}'.format(i)
-        u = User()
-        u.name = 'testname1'
-        u.email = 'testname1@securemail.icu'
-        u.pubkeys = {'test': 'some test', 'test1': 'some test 1'}
-        try:
-            u.store(key)
-        except:
-            u = User(key)
-            for attr, value in u.__dict__.items():
-                print ('{0}: {1}'.format(attr, value))
-            print ('{0} - {1} - {2}'.format(u.name, u.email, u.pubkeys))
-        c = Cryptonize()
-        keypair1 = c.get_key_pair()
-        keypair2 = c.get_key_pair()
-        try:
-            u.add_pubkey('test', keypair2[1])
-        except KeyError:
-            u.update_pubkey('test', keypair2[1])
-        message = "Kill all humans æøåÅØÆ"
-        print ("Message to encrypt: {0}".format(message))
-        encrypted = c.asymmetric_encrypt(keypair1[0], u.get_pubkey('test'), message)
-        print ("Message encrypted: {0}".format(encrypted))
-        plaintext = c.asymmetric_decrypt(keypair2[0], keypair1[1], encrypted)
-        print("Message decrypted: {0}".format(plaintext.decode()))
-    except NoSuchUser:
-        u = User()
-        u.name = 'testname'
-        u.email = 'testname@securemail.icu'
-        u.store('test')
-    except Exception as e:
-        print (e)
This page took 0.032606 seconds and 5 git commands to generate.