Merge pull request #6 from jMyles/rm-crypto

Rm crypto
pull/157/head
Tux 2018-02-09 14:08:27 -07:00 committed by GitHub
commit fc29e1faf7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 20 additions and 49 deletions

View File

@ -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

View File

@ -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

View File

@ -1,4 +1,3 @@
import nkms.db
import shutil
import os
import appdirs

View File

@ -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'

View File

@ -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()