diff --git a/tests/crypto/test_crypto.py b/tests/crypto/test_crypto.py index c3a1711e0..15c532d3a 100644 --- a/tests/crypto/test_crypto.py +++ b/tests/crypto/test_crypto.py @@ -147,8 +147,32 @@ class TestCrypto(unittest.TestCase): self.assertEqual(4, len(frags)) def test_ecies_combine(self): - # TODO - pass + eph_priv = self.pre.gen_priv() + eph_pub = self.pre.priv2pub(eph_priv) + + plain_key, enc_key = Crypto.ecies_encapsulate(eph_pub) + self.assertNotEqual(plain_key, enc_key) + self.assertEqual(umbral.EncryptedKey, type(enc_key)) + self.assertEqual(bytes, type(plain_key)) + self.assertEqual(32, len(plain_key)) + + rk_frags = Crypto.ecies_split_rekey(eph_priv, self.privkey_b, 6, 10) + self.assertEqual(list, type(rk_frags)) + self.assertEqual(10, len(rk_frags)) + + rk_selected = random.sample(rk_frags, 6) + shares = [Crypto.ecies_reencrypt(rk_frag, enc_key) for rk_frag in rk_selected] + self.assertEqual(list, type(shares)) + self.assertEqual(6, len(shares)) + [self.assertEqual(umbral.EncryptedKey, type(share)) for share in shares] + + e_b = Crypto.ecies_combine(shares) + self.assertEqual(umbral.EncryptedKey, type(e_b)) + + dec_key = Crypto.ecies_decapsulate(self.privkey_b, e_b) + self.assertEqual(bytes, type(dec_key)) + self.assertEqual(32, len(dec_key)) + self.assertEqual(plain_key, dec_key) def test_ecies_reencrypt(self): eph_priv = self.pre.gen_priv()