Add tests and fix encrypt/decrypt issues

pull/79/head
tuxxy 2017-10-16 14:10:56 -06:00
parent ed47bdf79b
commit 84d183ba7c
No known key found for this signature in database
GPG Key ID: 7BB971A0E89144D9
2 changed files with 42 additions and 2 deletions

View File

@ -241,8 +241,9 @@ class EncryptingPower(CryptoPowerUp):
"""
pubkey = pubkey or self.pub_key
key, enc_key = API.ecies_encaspulate(pubkey)
key, enc_key = API.ecies_encapsulate(pubkey)
enc_data = API.symm_encrypt(key, data)
return (enc_data, API.elliptic_curve.serialize(enc_key.ekey))
def decrypt(
@ -261,7 +262,10 @@ class EncryptingPower(CryptoPowerUp):
"""
privkey = privkey or self.priv_key
ciphertext, enc_key = enc_data
enc_key = API.elliptic_curve.deserialize(enc_key)
enc_key = API.elliptic_curve.deserialize(API.PRE.ecgroup, enc_key)
enc_key = API.umbral.EncryptedKey(ekey=enc_key, re_id=None)
dec_key = API.ecies_decapsulate(privkey, enc_key)
return API.symm_decrypt(dec_key, ciphertext)

View File

@ -0,0 +1,36 @@
import unittest
from nkms.crypto.powers import EncryptingPower
from nkms.keystore.keypairs import EncryptingKeypair
class TestEncryptingPowers(unittest.TestCase):
def setUp(self):
self.enc_keypair = EncryptingKeypair()
self.enc_keypair.gen_privkey()
self.enc_power = EncryptingPower(self.enc_keypair)
def test_encryption(self):
data = b'hello world'
enc_data = self.enc_power.encrypt(data)
self.assertTrue(tuple, type(enc_data))
self.assertEqual(2, len(enc_data))
self.assertTrue(bytes, type(enc_data[0]))
self.assertTrue(bytes, type(enc_data[1]))
self.assertNotEqual(data, enc_data[0])
def test_decryption(self):
data = b'hello world'
enc_data = self.enc_power.encrypt(data)
self.assertTrue(tuple, type(enc_data))
self.assertEqual(2, len(enc_data))
self.assertTrue(bytes, type(enc_data[0]))
self.assertTrue(bytes, type(enc_data[1]))
self.assertNotEqual(data, enc_data[0])
dec_data = self.enc_power.decrypt(enc_data)
self.assertTrue(bytes, type(dec_data))
self.assertEqual(data, dec_data)