コード例 #1
0
def test_combine_secret_3_users():
    """ Acceptance test with 3 users and not-full access groups """

    secrets = [7, 9]
    user_num = 4
    dealer = Dealer(17, user_num, secrets, [[[1, 4]], [[2, 3, 4]]])
    dealer.split_secrets()
    print('Secrets shared!')

    user_shares = []

    # for user in dealer.access_structures[0][0]
    for user in range(
            user_num
    ):  # here only users who are in access group should give their shares
        share = dealer.get_user_key_share(user)
        user_shares.append(share)

    shares_for_secret_0 = [share[0] for share in user_shares]
    #shares_for_secret_0 = [share1[0], share2[0]]it
    print('Combine using shares: %r', shares_for_secret_0)
    assert False

    secret_key_0 = dealer.combine_secret_key(0, shares_for_secret_0)

    assert_equal(secret_key_0.to_bytes(dealer.AES_KEY_LEN, byteorder='big'),
                 dealer.cipher_keys[0])

    secret0_bytes = dealer.cipher_decrypt(dealer.public_shares_M[0],
                                          secret_key_0)
    secret0 = int.from_bytes(secret0_bytes, byteorder='big')

    assert_equal(secret0, secrets[0])
コード例 #2
0
def test_split_secret_keys():
    dealer = Dealer(p256, n_participants, s_secrets, access_structures)

    # this function invokes low-level methods
    dealer.split_secrets()

    print(dealer.key_shares)
    assert_equal(len(dealer.key_shares), len(dealer.s_secrets))
コード例 #3
0
def test_get_user_key_share():
    dealer = Dealer(p256, n_participants, s_secrets, access_structures)

    # this function invokes low-level methods
    dealer.split_secrets()
    user_share = dealer.get_user_key_share(1)

    print('All key shares', dealer.key_shares)
    print('User 0 key share', user_share)

    assert_equal(user_share[0], dealer.key_shares[0][0][0])
    # user 2 has internally index 1
    assert_equal(dealer.get_user_key_share(2)[1], dealer.key_shares[1][0][1])
    assert_equal(dealer.get_user_key_share(2)[0], dealer.key_shares[0][0][1])
コード例 #4
0
def test_combine_secret_2_users():
    """ Acceptance test with 2 users """
    secrets = [7, 9]
    dealer = Dealer(p256, 2, secrets, [[[1, 2]], [[1, 2]]])
    dealer.split_secrets()

    share1 = dealer.get_user_key_share(1)
    share2 = dealer.get_user_key_share(2)

    print('Secrets shared!')

    shares_for_secret_0 = [share1[0], share2[0]]
    print('Combine using shares: %r', shares_for_secret_0)

    secret_key_0 = dealer.combine_secret_key(0, shares_for_secret_0)

    assert_equal(secret_key_0.to_bytes(dealer.AES_KEY_LEN, byteorder='big'),
                 dealer.cipher_keys[0])

    secret0_bytes = dealer.cipher_decrypt(dealer.public_shares_M[0],
                                          secret_key_0)
    secret0 = int.from_bytes(secret0_bytes, byteorder='big')

    assert_equal(secret0, secrets[0])