mirror of https://github.com/nucypher/pyUmbral.git
Rename pre.split_rekey to pre.generate_kfrags. Introduce changes in args
parent
d6ee0cc4e5
commit
4e331f3010
|
@ -90,11 +90,11 @@ except:
|
||||||
# She uses her private key, and Bob's public key, and she sets a minimum
|
# She uses her private key, and Bob's public key, and she sets a minimum
|
||||||
# threshold of 10, for 20 total shares
|
# threshold of 10, for 20 total shares
|
||||||
|
|
||||||
kfrags = pre.split_rekey(delegating_privkey=alices_private_key,
|
kfrags = pre.generate_kfrags(delegating_privkey=alices_private_key,
|
||||||
signer=alices_signer,
|
signer=alices_signer,
|
||||||
receiving_pubkey=bobs_public_key,
|
receiving_pubkey=bobs_public_key,
|
||||||
threshold=10,
|
threshold=10,
|
||||||
N=20)
|
N=20)
|
||||||
|
|
||||||
|
|
||||||
#9
|
#9
|
||||||
|
|
|
@ -108,12 +108,14 @@ def prepared_capsule(alices_keys, bobs_keys):
|
||||||
@pytest.fixture(scope='function')
|
@pytest.fixture(scope='function')
|
||||||
def kfrags(alices_keys, bobs_keys):
|
def kfrags(alices_keys, bobs_keys):
|
||||||
delegating_privkey, signing_privkey = alices_keys
|
delegating_privkey, signing_privkey = alices_keys
|
||||||
delegating_pubkey = delegating_privkey.get_pubkey()
|
|
||||||
signer_alice = Signer(signing_privkey)
|
signer_alice = Signer(signing_privkey)
|
||||||
|
|
||||||
receiving_privkey, receiving_pubkey = bobs_keys
|
receiving_privkey, receiving_pubkey = bobs_keys
|
||||||
|
|
||||||
yield pre.split_rekey(delegating_privkey, signer_alice, receiving_pubkey, 6, 10)
|
yield pre.generate_kfrags(delegating_privkey=delegating_privkey,
|
||||||
|
signer=signer_alice,
|
||||||
|
receiving_pubkey=receiving_pubkey,
|
||||||
|
threshold=6, N=10)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -135,13 +135,13 @@ def test_kfrags_signed_without_correctness_keys(alices_keys, bobs_keys, capsule)
|
||||||
|
|
||||||
receiving_privkey, receiving_pubkey = bobs_keys
|
receiving_privkey, receiving_pubkey = bobs_keys
|
||||||
|
|
||||||
kfrags = pre.split_rekey(delegating_privkey=delegating_privkey,
|
kfrags = pre.generate_kfrags(delegating_privkey=delegating_privkey,
|
||||||
signer=Signer(signing_privkey),
|
signer=Signer(signing_privkey),
|
||||||
receiving_pubkey=receiving_pubkey,
|
receiving_pubkey=receiving_pubkey,
|
||||||
threshold=6,
|
threshold=6,
|
||||||
N=10,
|
N=10,
|
||||||
sign_delegating_key=False,
|
sign_delegating_key=False,
|
||||||
sign_receiving_key=False)
|
sign_receiving_key=False)
|
||||||
|
|
||||||
for kfrag in kfrags:
|
for kfrag in kfrags:
|
||||||
# You can verify the KFrag specifying only the verifying key
|
# You can verify the KFrag specifying only the verifying key
|
||||||
|
|
|
@ -37,5 +37,9 @@ def test_wrong_N_M_in_split_rekey(N, M, alices_keys, bobs_keys):
|
||||||
_receiving_privkey, receiving_pubkey = bobs_keys
|
_receiving_privkey, receiving_pubkey = bobs_keys
|
||||||
|
|
||||||
with pytest.raises(ValueError):
|
with pytest.raises(ValueError):
|
||||||
_kfrags = pre.split_rekey(delegating_privkey, signer, receiving_pubkey, M, N)
|
_kfrags = pre.generate_kfrags(delegating_privkey=delegating_privkey,
|
||||||
|
signer=signer,
|
||||||
|
receiving_pubkey=receiving_pubkey,
|
||||||
|
threshold=M,
|
||||||
|
N=N)
|
||||||
|
|
||||||
|
|
|
@ -93,7 +93,7 @@ def test_split_rekey_performance(benchmark, m: int, n: int) -> None:
|
||||||
return args, kwargs
|
return args, kwargs
|
||||||
|
|
||||||
print("\nBenchmarking {function} with M:{M} of N:{N}...".format(function="pre.split_rekey", M=m, N=n))
|
print("\nBenchmarking {function} with M:{M} of N:{N}...".format(function="pre.split_rekey", M=m, N=n))
|
||||||
benchmark.pedantic(pre.split_rekey, setup=__setup, rounds=1000)
|
benchmark.pedantic(pre.generate_kfrags, setup=__setup, rounds=1000)
|
||||||
assert True # ensure function finishes and succeeds.
|
assert True # ensure function finishes and succeeds.
|
||||||
|
|
||||||
|
|
||||||
|
@ -111,7 +111,7 @@ def test_random_frag_reencryption_performance(benchmark, m: int, n: int) -> None
|
||||||
|
|
||||||
def __setup():
|
def __setup():
|
||||||
delegating_privkey, signer, receiving_pubkey, ciphertext, capsule = __standard_encryption_api()
|
delegating_privkey, signer, receiving_pubkey, ciphertext, capsule = __standard_encryption_api()
|
||||||
kfrags = pre.split_rekey(delegating_privkey, signer, receiving_pubkey, m, n)
|
kfrags = pre.generate_kfrags(delegating_privkey, signer, receiving_pubkey, m, n)
|
||||||
one_kfrag, *remaining_kfrags = kfrags
|
one_kfrag, *remaining_kfrags = kfrags
|
||||||
args, kwargs = tuple(), {"kfrag": one_kfrag, "capsule": capsule},
|
args, kwargs = tuple(), {"kfrag": one_kfrag, "capsule": capsule},
|
||||||
return args, kwargs
|
return args, kwargs
|
||||||
|
@ -133,7 +133,7 @@ def test_random_frag_reencryption_performance(benchmark, m: int, n: int) -> None
|
||||||
def test_single_frag_reencryption_performance(benchmark, m: int, n: int) -> None:
|
def test_single_frag_reencryption_performance(benchmark, m: int, n: int) -> None:
|
||||||
|
|
||||||
delegating_privkey, signer, receiving_pubkey, ciphertext, capsule = __standard_encryption_api()
|
delegating_privkey, signer, receiving_pubkey, ciphertext, capsule = __standard_encryption_api()
|
||||||
kfrags = pre.split_rekey(delegating_privkey, signer, receiving_pubkey, m, n)
|
kfrags = pre.generate_kfrags(delegating_privkey, signer, receiving_pubkey, m, n)
|
||||||
one_kfrag, *remaining_kfrags = kfrags
|
one_kfrag, *remaining_kfrags = kfrags
|
||||||
args, kwargs = tuple(), {"kfrag": one_kfrag, "capsule": capsule},
|
args, kwargs = tuple(), {"kfrag": one_kfrag, "capsule": capsule},
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@ def __produce_kfrags_and_capsule(m: int, n: int) -> Tuple[List[KFrag], Capsule]:
|
||||||
plain_data = os.urandom(32)
|
plain_data = os.urandom(32)
|
||||||
ciphertext, capsule = pre.encrypt(delegating_pubkey, plain_data)
|
ciphertext, capsule = pre.encrypt(delegating_pubkey, plain_data)
|
||||||
|
|
||||||
kfrags = pre.split_rekey(delegating_privkey, signer, receiving_pubkey, m, n)
|
kfrags = pre.generate_kfrags(delegating_privkey, signer, receiving_pubkey, m, n)
|
||||||
|
|
||||||
capsule.set_correctness_keys(delegating=delegating_pubkey,
|
capsule.set_correctness_keys(delegating=delegating_pubkey,
|
||||||
receiving=receiving_pubkey,
|
receiving=receiving_pubkey,
|
||||||
|
|
|
@ -64,7 +64,7 @@ def test_lifecycle_with_serialization(N, M, curve=default_curve()):
|
||||||
receiving_pubkey = UmbralPublicKey.from_bytes(receiving_pubkey_bytes, params)
|
receiving_pubkey = UmbralPublicKey.from_bytes(receiving_pubkey_bytes, params)
|
||||||
|
|
||||||
signer = Signer(signing_privkey)
|
signer = Signer(signing_privkey)
|
||||||
kfrags = pre.split_rekey(delegating_privkey, signer, receiving_pubkey, M, N)
|
kfrags = pre.generate_kfrags(delegating_privkey, receiving_pubkey, M, N, signer)
|
||||||
kfrags_bytes = tuple(map(bytes, kfrags))
|
kfrags_bytes = tuple(map(bytes, kfrags))
|
||||||
|
|
||||||
del kfrags
|
del kfrags
|
||||||
|
|
|
@ -64,7 +64,7 @@ def test_simple_api(N, M, curve=default_curve()):
|
||||||
assert cleartext == plain_data
|
assert cleartext == plain_data
|
||||||
|
|
||||||
# Split Re-Encryption Key Generation (aka Delegation)
|
# Split Re-Encryption Key Generation (aka Delegation)
|
||||||
kfrags = pre.split_rekey(delegating_privkey, signer, receiving_pubkey, M, N)
|
kfrags = pre.generate_kfrags(delegating_privkey, receiving_pubkey, M, N, signer)
|
||||||
|
|
||||||
|
|
||||||
# Capsule preparation (necessary before re-encryotion and activation)
|
# Capsule preparation (necessary before re-encryotion and activation)
|
||||||
|
|
|
@ -192,20 +192,20 @@ class Capsule(object):
|
||||||
return "{}:{}".format(self.__class__.__name__, hex(int(self._bn_sig))[2:17])
|
return "{}:{}".format(self.__class__.__name__, hex(int(self._bn_sig))[2:17])
|
||||||
|
|
||||||
|
|
||||||
def split_rekey(delegating_privkey: UmbralPrivateKey,
|
def generate_kfrags(delegating_privkey: UmbralPrivateKey,
|
||||||
signer: Signer,
|
receiving_pubkey: UmbralPublicKey,
|
||||||
receiving_pubkey: UmbralPublicKey,
|
threshold: int,
|
||||||
threshold: int,
|
N: int,
|
||||||
N: int,
|
signer: Signer,
|
||||||
sign_delegating_key : Optional[bool] = True,
|
sign_delegating_key: Optional[bool] = True,
|
||||||
sign_receiving_key : Optional[bool] = True,
|
sign_receiving_key: Optional[bool] = True,
|
||||||
) -> List[KFrag]:
|
) -> List[KFrag]:
|
||||||
"""
|
"""
|
||||||
Creates a re-encryption key from Alice's delegating public key to Bob's
|
Creates a re-encryption key from Alice's delegating public key to Bob's
|
||||||
receiving public key, and splits it in KFrags, using Shamir's Secret Sharing.
|
receiving public key, and splits it in KFrags, using Shamir's Secret Sharing.
|
||||||
Requires a threshold number of KFrags out of N.
|
Requires a threshold number of KFrags out of N.
|
||||||
|
|
||||||
Returns a dictionary which includes the list of N KFrags
|
Returns a list of N KFrags
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if threshold <= 0 or threshold > N:
|
if threshold <= 0 or threshold > N:
|
||||||
|
|
|
@ -53,7 +53,7 @@ receiving_key = receiving_privkey.get_pubkey()
|
||||||
|
|
||||||
signer = Signer(signing_privkey)
|
signer = Signer(signing_privkey)
|
||||||
|
|
||||||
kfrags = pre.split_rekey(delegating_privkey, signer, receiving_key, 6, 10)
|
kfrags = pre.generate_kfrags(delegating_privkey, signer, receiving_key, 6, 10)
|
||||||
|
|
||||||
plain_data = b'peace at dawn'
|
plain_data = b'peace at dawn'
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue