def test_challenge_response_serialization(): priv_key = umbral.gen_priv() pub_key = umbral.priv2pub(priv_key) _unused_key, capsule = umbral._encapsulate(pub_key) kfrags, _unused_vkeys = umbral.split_rekey(priv_key, pub_key, 1, 2) cfrag = umbral.reencrypt(kfrags[0], capsule) capsule.attach_cfrag(cfrag) ch_resp = umbral.challenge(kfrags[0], capsule, cfrag) ch_resp_bytes = ch_resp.to_bytes() # A ChallengeResponse can be represented as # the 228 total bytes of four Points (33 each) and three BigNums (32 each). assert len(ch_resp_bytes) == (33 * 4) + (32 * 3) == 228 new_ch_resp = umbral.ChallengeResponse.from_bytes(ch_resp_bytes) assert new_ch_resp.point_eph_e2 == ch_resp.point_eph_e2 assert new_ch_resp.point_eph_v2 == ch_resp.point_eph_v2 assert new_ch_resp.point_kfrag_commitment == ch_resp.point_kfrag_commitment assert new_ch_resp.point_kfrag_pok == ch_resp.point_kfrag_pok assert new_ch_resp.bn_kfrag_sig1 == ch_resp.bn_kfrag_sig1 assert new_ch_resp.bn_kfrag_sig2 == ch_resp.bn_kfrag_sig2 assert new_ch_resp.bn_sig == ch_resp.bn_sig
def test_activated_capsule_serialization(): priv_key = umbral.gen_priv() pub_key = umbral.priv2pub(priv_key) _unused_key, capsule = umbral._encapsulate(pub_key) kfrags, _unused_vkeys = umbral.split_rekey(priv_key, pub_key, 1, 2) cfrag = umbral.reencrypt(kfrags[0], capsule) capsule.attach_cfrag(cfrag) capsule._reconstruct_shamirs_secret() rec_capsule_bytes = capsule.to_bytes() # An activated Capsule is: # three points, representable as 33 bytes each (the original), and # two points and a bignum (32 bytes) (the activated components), for 197 total. assert len(rec_capsule_bytes) == (33 * 3) + (33 + 33 + 32) new_rec_capsule = umbral.Capsule.from_bytes(rec_capsule_bytes) # Again, the same three perspectives on equality. assert new_rec_capsule == capsule assert new_rec_capsule.activated_components() == capsule.activated_components() assert new_rec_capsule._point_eph_e_prime == capsule._point_eph_e_prime assert new_rec_capsule._point_eph_v_prime == capsule._point_eph_v_prime assert new_rec_capsule._point_noninteractive == capsule._point_noninteractive
def test_public_key_to_bytes(): priv_key = umbral.gen_priv() pub_key = umbral.priv2pub(priv_key) umbral_key = keys.UmbralPublicKey(pub_key) key_bytes = bytes(umbral_key) assert type(key_bytes) == bytes
def test_private_key_serialization(): priv_key = umbral.gen_priv() umbral_key = keys.UmbralPrivateKey(priv_key) encoded_key = umbral_key.to_bytes() decoded_key = keys.UmbralPrivateKey.from_bytes(encoded_key) assert priv_key == decoded_key.bn_key
def test_private_key_serialization_with_encryption(): priv_key = umbral.gen_priv() umbral_key = keys.UmbralPrivateKey(priv_key) encoded_key = umbral_key.to_bytes(password=b'test') decoded_key = keys.UmbralPrivateKey.from_bytes(encoded_key, password=b'test') assert priv_key == decoded_key.bn_key
def test_public_key_serialization(): priv_key = umbral.gen_priv() pub_key = umbral.priv2pub(priv_key) umbral_key = keys.UmbralPublicKey(pub_key) encoded_key = umbral_key.to_bytes() decoded_key = keys.UmbralPublicKey.from_bytes(encoded_key) assert pub_key == decoded_key.point_key