2018-11-08 11:07:23 +00:00
|
|
|
import pytest
|
|
|
|
|
|
|
|
from umbral.keys import UmbralPrivateKey
|
|
|
|
from umbral.signing import Signer
|
|
|
|
|
|
|
|
from nucypher.config.keyring import NucypherKeyring
|
2018-12-13 21:17:22 +00:00
|
|
|
from nucypher.crypto.powers import DelegatingPower, DecryptingPower
|
2018-11-08 11:07:23 +00:00
|
|
|
|
|
|
|
|
2018-11-10 20:47:30 +00:00
|
|
|
@pytest.mark.skip("Redacted and refactored for sensitive info leakage")
|
2018-11-20 04:29:01 +00:00
|
|
|
def test_validate_password():
|
|
|
|
# Password too short
|
|
|
|
password = 'x' * 5
|
2018-11-08 11:07:23 +00:00
|
|
|
with pytest.raises(ValueError):
|
2018-11-20 04:29:01 +00:00
|
|
|
_keyring = NucypherKeyring.generate(password=password)
|
2018-11-08 11:07:23 +00:00
|
|
|
|
2018-11-20 04:29:01 +00:00
|
|
|
# Empty password is provided
|
2018-11-08 11:07:23 +00:00
|
|
|
with pytest.raises(ValueError):
|
2018-11-20 04:29:01 +00:00
|
|
|
_keyring = NucypherKeyring.generate(password="")
|
2018-11-08 11:07:23 +00:00
|
|
|
|
|
|
|
|
|
|
|
def test_generate_alice_keyring(tmpdir):
|
2018-11-20 04:29:01 +00:00
|
|
|
password = 'x' * 16
|
2018-11-08 11:07:23 +00:00
|
|
|
|
|
|
|
keyring = NucypherKeyring.generate(
|
2018-11-20 04:29:01 +00:00
|
|
|
password=password,
|
2018-11-08 11:07:23 +00:00
|
|
|
encrypting=True,
|
2019-01-13 01:35:25 +00:00
|
|
|
rest=False,
|
2018-11-08 11:07:23 +00:00
|
|
|
keyring_root=tmpdir
|
|
|
|
)
|
|
|
|
|
|
|
|
enc_pubkey = keyring.encrypting_public_key
|
|
|
|
assert enc_pubkey is not None
|
|
|
|
|
|
|
|
with pytest.raises(NucypherKeyring.KeyringLocked):
|
2018-12-13 21:17:22 +00:00
|
|
|
_dec_keypair = keyring.derive_crypto_power(DecryptingPower).keypair
|
2018-11-08 11:07:23 +00:00
|
|
|
|
2018-11-20 04:29:01 +00:00
|
|
|
keyring.unlock(password)
|
2018-12-13 21:17:22 +00:00
|
|
|
dec_keypair = keyring.derive_crypto_power(DecryptingPower).keypair
|
2018-11-08 11:07:23 +00:00
|
|
|
|
2018-12-13 21:17:22 +00:00
|
|
|
assert enc_pubkey == dec_keypair.pubkey
|
2018-11-08 11:07:23 +00:00
|
|
|
|
|
|
|
label = b'test'
|
|
|
|
|
|
|
|
delegating_power = keyring.derive_crypto_power(DelegatingPower)
|
|
|
|
delegating_pubkey = delegating_power.get_pubkey_from_label(label)
|
|
|
|
|
|
|
|
bob_pubkey = UmbralPrivateKey.gen_key().get_pubkey()
|
|
|
|
signer = Signer(UmbralPrivateKey.gen_key())
|
|
|
|
delegating_pubkey_again, _kfrags = delegating_power.generate_kfrags(
|
|
|
|
bob_pubkey, signer, label, m=2, n=3
|
|
|
|
)
|
|
|
|
|
|
|
|
assert delegating_pubkey == delegating_pubkey_again
|
|
|
|
|
|
|
|
another_delegating_power = keyring.derive_crypto_power(DelegatingPower)
|
|
|
|
another_delegating_pubkey = another_delegating_power.get_pubkey_from_label(label)
|
|
|
|
|
2018-12-13 21:17:22 +00:00
|
|
|
assert delegating_pubkey == another_delegating_pubkey
|