mirror of https://github.com/nucypher/nucypher.git
commit
fc29e1faf7
|
@ -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
|
||||
|
@ -182,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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
import nkms.db
|
||||
import shutil
|
||||
import os
|
||||
import appdirs
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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()
|
Loading…
Reference in New Issue