From 48bfbacd5d6dd365a2e1904588920fbc2855dc26 Mon Sep 17 00:00:00 2001 From: jMyles Date: Fri, 9 Feb 2018 13:03:10 -0800 Subject: [PATCH 1/5] KeypairBasedPower.__init__ - @tuxxy is perhaps going to move this down to KeyPair. --- nkms/crypto/powers.py | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/nkms/crypto/powers.py b/nkms/crypto/powers.py index 477d104c1..e5e88819e 100644 --- a/nkms/crypto/powers.py +++ b/nkms/crypto/powers.py @@ -7,7 +7,7 @@ from nkms.keystore import keypairs from nkms.keystore.keypairs import SigningKeypair, EncryptingKeypair from nkms.keystore.keystore import KeyStore -from umbral import keys +from umbral.keys import UmbralPrivateKey, UmbralPublicKey class PowerUpError(TypeError): @@ -107,24 +107,26 @@ class CryptoPowerUp(object): class KeyPairBasedPower(CryptoPowerUp): def __init__(self, - key_class: Union[keys.UmbralPrivateKey, keys.UmbralPublicKey], - key_bytes: bytes=None, - generate_keys_if_needed=True + umbral_key: Union[UmbralPrivateKey, UmbralPublicKey]=None, + generate_keys_if_needed=True, ) -> None: - priv_or_pub_key = key_class.load_key(key_bytes) - # Attmept to get pubkey from private key. If it's a pubkey, use it. try: - self.pub_key = priv_or_pub_key.get_pub_key() + # Attmept to get pubkey from private key. If it's a pubkey, use it. + self.pub_key = umbral_key.get_pub_key() + self.priv_key = umbral_key + except NotImplementedError: + self.pub_key = umbral_key except AttributeError: - self.pub_key = priv_or_pub_key + # They didn't pass anything we recognize as a valid key. + if generate_keys_if_needed: + # Let's generate. + self.priv_key = UmbralPrivateKey.gen_key() + self.pub_key = self.priv_key.gen_key() + else: + raise ValueError("Either pass a valid key as umbral_key or, if you want to generate keys, set generate_keys_if_needed to True.") else: - self.priv_key = priv_or_pub_key - - if generate_keys_if_needed and : - self.priv_key = keys.UmbralPrivateKey.gen_key() - self.pub_key = self.priv_key.get_pub_key() - + raise class SigningPower(KeyPairBasedPower): confers_public_key = True From 57417028919c8fa5d6130581b11b25240f787266 Mon Sep 17 00:00:00 2001 From: jMyles Date: Fri, 9 Feb 2018 13:03:52 -0800 Subject: [PATCH 2/5] Fixed NameError for Signature.__bytes__. --- nkms/crypto/powers.py | 2 +- nkms/crypto/signature.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/nkms/crypto/powers.py b/nkms/crypto/powers.py index e5e88819e..5ee4532c5 100644 --- a/nkms/crypto/powers.py +++ b/nkms/crypto/powers.py @@ -184,7 +184,7 @@ class EncryptingPower(KeyPairBasedPower): def _encrypt_key( self, key: bytes, - pubkey: UmbralPublicKey = None + pubkey: UmbralPublicKey=None ) -> Tuple[bytes, bytes]: """ Encrypts the `key` provided for the provided `pubkey` using the ECIES diff --git a/nkms/crypto/signature.py b/nkms/crypto/signature.py index c4a880744..7af183e25 100644 --- a/nkms/crypto/signature.py +++ b/nkms/crypto/signature.py @@ -1,5 +1,5 @@ -from umbral.keys import UmbralPublicKey from nkms.crypto import api as API +from umbral.keys import UmbralPublicKey class Signature(bytes): @@ -35,4 +35,4 @@ class Signature(bytes): Implements the __bytes__ call for Signature to transform into a transportable mode. """ - return sig_as_bytes + return self.sig_as_bytes From 0fc1e7cebb174494f6be2206f2f21c9f2f62ccc6 Mon Sep 17 00:00:00 2001 From: jMyles Date: Fri, 9 Feb 2018 13:05:00 -0800 Subject: [PATCH 3/5] Not uding nkms.db anymore. --- tests/conftest.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/conftest.py b/tests/conftest.py index 0fbe937b4..1a2a9d333 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,4 +1,3 @@ -import nkms.db import shutil import os import appdirs From 67dd86534ce2419555356b9ef9087a0ec2595835 Mon Sep 17 00:00:00 2001 From: jMyles Date: Fri, 9 Feb 2018 13:05:23 -0800 Subject: [PATCH 4/5] You can init a Power with nothing now. --- tests/crypto/test_encrypting_power.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/crypto/test_encrypting_power.py b/tests/crypto/test_encrypting_power.py index 4d91fa91e..e1452173b 100644 --- a/tests/crypto/test_encrypting_power.py +++ b/tests/crypto/test_encrypting_power.py @@ -8,7 +8,7 @@ class TestEncryptingPowers(unittest.TestCase): self.enc_keypair = EncryptingKeypair() self.enc_keypair.gen_privkey() - self.enc_power = EncryptingPower(self.enc_keypair) + self.enc_power = EncryptingPower() def test_encryption(self): data = b'hello world' From 7896e2d11d930ae193cb8ab6f3922af7d303dd68 Mon Sep 17 00:00:00 2001 From: jMyles Date: Fri, 9 Feb 2018 13:05:44 -0800 Subject: [PATCH 5/5] No more DB! --- tests/test_db.py | 30 ------------------------------ 1 file changed, 30 deletions(-) delete mode 100644 tests/test_db.py diff --git a/tests/test_db.py b/tests/test_db.py deleted file mode 100644 index e5c523f57..000000000 --- a/tests/test_db.py +++ /dev/null @@ -1,30 +0,0 @@ -from nkms.db import DB -import pytest - - -def test_db(): - db = DB() - db[b'x'] = b'y' - assert db[b'x'] == b'y' - db.close() - - db2 = DB() - assert b'x' in db2 - assert db2[b'x'] == b'y' - del db2[b'x'] - db2.close() - - db = DB() - with pytest.raises(KeyError): - db[b'x'] - assert b'x' not in db - db.close() - - assert db.path == db2.path - - -def test_store_dict(): - db = DB() - db[b'x'] = {b'a': 1, b'b': 2} - assert db[b'x'][b'a'] == 1 - db.close()