def encrypt_message(message, public_key, symetric_key): """ Encrypts a message using a Advance Encryption Standard (AES) key used with the Counter with CBC-MAC (CCM) mode of operation """ if message != None: nonce = os.urandom(12) message = AESCCM(symetric_key).encrypt(nonce, message.encode("iso-8859-1"), None) nonce, *_ = encrypt(public_key, nonce) message = { 'nonce': nonce.decode("iso-8859-1"), 'message': message.decode("iso-8859-1") } return message
def decrypt_message(data, symetric_key, private_key): """ Decrypts a message previously encrypted using the encrypt_message function Needs a private_key to do it """ if type(data) == str or type(data) == bytes: data = json.loads(data) typ = data['type'] nonce = data['nonce'].encode("iso-8859-1") message = data['message'].encode("iso-8859-1") nonce, *_ = decrypt(private_key, nonce) message = AESCCM(symetric_key).decrypt(nonce, message, None) message = { 'type': typ, 'nonce': nonce.decode("iso-8859-1"), 'message': message.decode("iso-8859-1") } return message