from db import DBInterface as DBI
from cryptonize import Cryptonize
from nacl.public import PublicKey
-from nacl import __version__ as NACL_VERSION
class NoSuchUser(Exception):
pass
def store(self, key):
crypto = Cryptonize()
- if NACL_VERSION < "1.1.0":
- from nacl.utils import random
- from nacl.public import SecretBox
- nonce = random(SecretBox.NONCE_SIZE)
- cipher = crypto.symmetric_encrypt(key, pickle.dumps(self), nonce)
- else:
- cipher = crypto.symmetric_encrypt(key, pickle.dumps(self))
+ cipher = crypto.symmetric_encrypt(key, pickle.dumps(self))
DBI.store_user(crypto.generate_hash(key), cipher)
def load(self, 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))
- from nacl.public import Box
c = Cryptonize()
keypair1 = c.get_key_pair()
keypair2 = c.get_key_pair()
u.add_pubkey('test', keypair2[1])
except KeyError:
u.update_pubkey('test', keypair2[1])
- bob_box = Box(keypair1[0], u.get_pubkey('test'))
message = "Kill all humans æøåÅØÆ"
- encrypted = bob_box.encrypt(message.encode())
- alice_box = Box(keypair2[0], keypair1[1])
- plaintext = alice_box.decrypt(encrypted)
- print (plaintext.decode())
-# c = Cryptonize()
-# key = 'æselØre' #c.get_random_key()
-# cipher = c.symmetric_encrypt(key, pickle.dumps(u))
-# obj = pickle.loads(c.symmetric_decrypt(key, cipher))
-# for attr, value in obj.__dict__.items():
-# print ('{0}: {1}'.format(attr, value))
+ 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'