privkey is not _privkey.

pull/171/head
jMyles 2018-02-24 00:50:28 -08:00
parent 49005ae250
commit 6d38ff2509
2 changed files with 28 additions and 9 deletions

View File

@ -25,14 +25,14 @@ class Keypair(object):
"""
try:
self.pubkey = umbral_key.get_pubkey()
self.privkey = umbral_key
self._privkey = umbral_key
except NotImplementedError:
self.pubkey = umbral_key
except AttributeError:
# They didn't pass anything we recognize as a valid key.
if generate_keys_if_needed:
self.privkey = UmbralPrivateKey.gen_key()
self.pubkey = self.privkey.get_pubkey()
self._privkey = UmbralPrivateKey.gen_key()
self.pubkey = self._privkey.get_pubkey()
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.")
@ -72,7 +72,26 @@ class EncryptingKeypair(Keypair):
:return: bytes
"""
return message_kit.decypt(self.privkey)
cleartext = pre.decrypt(message_kit.capsule, self._privkey,
message_kit.ciphertext, message_kit.alice_pubkey)
return cleartext
def generate_kfrags(self, bob_pubkey_enc, m, n) -> List:
"""
Generates re-encryption key frags ("KFrags") and returns them.
These KFrags can be used by Ursula to re-encrypt a Capsule for Bob so
that he can activate the Capsule.
:param alice_privkey: Alice's private key
:param bob_pubkey: Bob's public key
:param m: Minimum number of KFrags needed to rebuild ciphertext
:param n: Total number of rekey shares to generate
"""
alice_priv_enc = self._privkey
kfrags, _v_keys = pre.split_rekey(alice_priv_enc, bob_pubkey_enc, m, n)
return kfrags
class SigningKeypair(Keypair):
@ -90,5 +109,5 @@ class SigningKeypair(Keypair):
:return: Signature in bytes
"""
signature_der_bytes = API.ecdsa_sign(message, self.privkey)
signature_der_bytes = API.ecdsa_sign(message, self._privkey)
return Signature.from_bytes(signature_der_bytes, der_encoded=True)

View File

@ -6,11 +6,11 @@ from umbral.keys import UmbralPrivateKey, UmbralPublicKey
def test_gen_keypair_if_needed():
new_enc_keypair = keypairs.EncryptingKeypair()
assert new_enc_keypair.privkey != None
assert new_enc_keypair._privkey != None
assert new_enc_keypair.pubkey != None
new_sig_keypair = keypairs.SigningKeypair()
assert new_sig_keypair.privkey != None
assert new_sig_keypair._privkey != None
assert new_sig_keypair.pubkey != None
@ -19,13 +19,13 @@ def test_keypair_with_umbral_keys():
umbral_pubkey = umbral_privkey.get_pubkey()
new_keypair_from_priv = keypairs.Keypair(umbral_privkey)
assert new_keypair_from_priv.privkey.bn_key.to_bytes() == umbral_privkey.bn_key.to_bytes()
assert new_keypair_from_priv._privkey.bn_key.to_bytes() == umbral_privkey.bn_key.to_bytes()
assert new_keypair_from_priv.pubkey.to_bytes() == umbral_pubkey.to_bytes()
new_keypair_from_pub = keypairs.Keypair(umbral_pubkey)
assert new_keypair_from_pub.pubkey.to_bytes() == umbral_pubkey.to_bytes()
with pytest.raises(AttributeError):
new_keypair_from_pub.privkey
new_keypair_from_pub._privkey
def test_keypair_serialization():