Example #1
0
def test_send_same_nyms_only_first_gets_written(looper, do, sdk_pool_handle,
                                                sdk_wallet_steward):
    wh, _ = sdk_wallet_steward
    seed = randomString(32)
    did, verkey = looper.loop.run_until_complete(
        create_and_store_my_did(wh, json.dumps({'seed': seed})))

    # request 1
    _, did1 = sdk_add_new_nym(looper,
                              sdk_pool_handle,
                              sdk_wallet_steward,
                              dest=did,
                              verkey=verkey)

    seed = randomString(32)
    _, verkey = looper.loop.run_until_complete(
        create_and_store_my_did(wh, json.dumps({'seed': seed})))
    # request 2
    with pytest.raises(RequestRejectedException) as e:
        _, did2 = sdk_add_new_nym(looper,
                                  sdk_pool_handle,
                                  sdk_wallet_steward,
                                  dest=did,
                                  verkey=verkey)
    e.match('is neither Trustee nor owner of')
def test_steward_suspension_by_another_trustee(looper, sdk_pool_handle,
                                               sdk_wallet_trustee,
                                               sdk_wallet_handle, with_verkey):
    new_trustee_did, new_trustee_verkey = looper.loop.run_until_complete(
        did.create_and_store_my_did(sdk_wallet_trustee[0], "{}"))
    new_steward_did, new_steward_verkey = looper.loop.run_until_complete(
        did.create_and_store_my_did(sdk_wallet_trustee[0], "{}"))
    """Adding new steward"""
    sdk_add_new_nym(looper,
                    sdk_pool_handle,
                    sdk_wallet_trustee,
                    'newSteward',
                    STEWARD_STRING,
                    verkey=new_steward_verkey,
                    dest=new_steward_did)
    """Adding new trustee"""
    sdk_add_new_nym(looper,
                    sdk_pool_handle,
                    sdk_wallet_trustee,
                    'newTrustee',
                    TRUSTEE_STRING,
                    verkey=new_trustee_verkey,
                    dest=new_trustee_did)
    """Blacklisting new steward by new trustee"""
    op = {'type': '1', 'dest': new_steward_did, 'role': None}
    if with_verkey:
        op['verkey'] = new_steward_verkey
    req = sdk_sign_and_submit_op(looper, sdk_pool_handle,
                                 (sdk_wallet_handle, new_trustee_did), op)
    if with_verkey:
        with pytest.raises(RequestRejectedException):
            sdk_get_and_check_replies(looper, [req])
    else:
        sdk_get_and_check_replies(looper, [req])
Example #3
0
def test_new_DID_cannot_update_another_DID(looper,
                                           sdk_pool_handle,
                                           sdk_wallet_trustee,
                                           sdk_wallet_handle):
    """Create trustee"""
    trustee_did, trustee_verkey = looper.loop.run_until_complete(
        did.create_and_store_my_did(sdk_wallet_trustee[0], "{}"))

    """Add trustee to ledger"""
    sdk_add_new_nym(looper, sdk_pool_handle,
                    sdk_wallet_trustee, 'newTrustee', TRUSTEE_STRING, verkey=trustee_verkey, dest=trustee_did)

    """new DID (no role)"""
    new_no_role_did, new_no_role_verkey = looper.loop.run_until_complete(
        did.create_and_store_my_did(sdk_wallet_trustee[0], "{}"))

    """Adding new DID (no role) to ledger"""
    sdk_add_new_nym(looper, sdk_pool_handle,
                    sdk_wallet_trustee,
                    'noRole',
                    verkey=new_no_role_verkey, dest=new_no_role_did)

    """Nym transaction to update Trustee DID that makes no change to verkey or role"""
    op = {'type': '1',
          'dest': trustee_did
          }

    """Submitting the transaction fails"""
    with pytest.raises(RequestRejectedException):
        req = sdk_sign_and_submit_op(looper, sdk_pool_handle, sdk_wallet_trustee, op)
        sdk_get_and_check_replies(looper, [req])
Example #4
0
def test_send_same_nyms_only_first_gets_written(looper, sdk_pool_handle,
                                                sdk_wallet):
    wh, _ = sdk_wallet
    seed = randomString(32)
    did, verkey = looper.loop.run_until_complete(
        create_and_store_my_did(wh, json.dumps({'seed': seed})))

    # request 1
    _, did1 = sdk_add_new_nym(looper,
                              sdk_pool_handle,
                              sdk_wallet,
                              dest=did,
                              verkey=verkey)

    seed = randomString(32)
    _, verkey = looper.loop.run_until_complete(
        create_and_store_my_did(wh, json.dumps({'seed': seed})))
    # request 2
    with pytest.raises(RequestRejectedException) as e:
        _, did2 = sdk_add_new_nym(looper,
                                  sdk_pool_handle,
                                  sdk_wallet,
                                  dest=did,
                                  verkey=verkey)
    e.match('can not touch verkey field since only the owner can modify it')
Example #5
0
def test_network_monitor_suspension_by_itself(looper, sdk_pool_handle,
                                              sdk_wallet_steward,
                                              sdk_wallet_handle, with_verkey):
    new_network_monitor_did, new_network_monitor_verkey = looper.loop.run_until_complete(
        did.create_and_store_my_did(sdk_wallet_steward[0], "{}"))
    """Adding NETWORK_MONITOR role by steward"""
    op = {
        'type': '1',
        'dest': new_network_monitor_did,
        'role': NETWORK_MONITOR,
        'verkey': new_network_monitor_verkey
    }
    req = sdk_sign_and_submit_op(looper, sdk_pool_handle,
                                 (sdk_wallet_handle, sdk_wallet_steward[1]),
                                 op)
    sdk_get_and_check_replies(looper, [req])
    """Blacklisting network_monitor by itself"""
    op = {'type': '1', 'dest': new_network_monitor_did, 'role': None}
    if with_verkey:
        op['verkey'] = new_network_monitor_verkey
    req = sdk_sign_and_submit_op(looper, sdk_pool_handle,
                                 (sdk_wallet_handle, new_network_monitor_did),
                                 op)
    with pytest.raises(RequestRejectedException):
        sdk_get_and_check_replies(looper, [req])
Example #6
0
def nym_txn_data(looper, sdk_wallet_client):
    seed = randomString(32)

    wh, _ = sdk_wallet_client
    sender_did, sender_verkey = \
        looper.loop.run_until_complete(create_and_store_my_did(wh, json.dumps({'seed': seed})))
    return wh, randomString(5), sender_did, sender_verkey
Example #7
0
    def _add_did(role, did_name, with_verkey=True):
        nonlocal data

        data['seeds'][did_name] = did_name + '0' * (32 - len(did_name))
        t_sgnr = DidSigner(seed=data['seeds'][did_name].encode())
        verkey = t_sgnr.full_verkey if with_verkey else None
        data['txns'].append(
            Member.nym_txn(nym=t_sgnr.identifier,
                           verkey=verkey,
                           role=role.value,
                           name=did_name,
                           creator=trustee.did)
        )

        if verkey:
            (sdk_did, sdk_verkey) = looper.loop.run_until_complete(
                create_and_store_my_did(
                    trustee.wallet_handle,
                    json.dumps({'seed': data['seeds'][did_name]}))
            )

        return DID(
            did=t_sgnr.identifier, role=role, verkey=verkey,
            creator=trustee, wallet_handle=trustee.wallet_handle
        )
Example #8
0
def op(looper, sdk_wallet_stewards):
    wh, did = sdk_wallet_stewards[0]
    seed = randomString(32)
    new_did, new_verkey = looper.loop.run_until_complete(
        create_and_store_my_did(wh, json.dumps({'seed': seed})))
    op = {'type': '1', 'dest': new_did, 'verkey': new_verkey, 'role': None}
    return op
Example #9
0
def nym_full_vk(looper, tconf, nodeSet, sdk_pool_handle, sdk_wallet_trustee):
    wh, tr_did = sdk_wallet_trustee
    (new_did, new_verkey) = looper.loop.run_until_complete(
        create_and_store_my_did(wh, json.dumps({'seed': randomString(32)})))
    assert not new_verkey.startswith("~")
    nwh, nd = add_new_nym(looper, sdk_pool_handle, sdk_wallet_trustee, dest=new_did, verkey=new_verkey)
    return nwh, nd, new_verkey
Example #10
0
def sdk_trustees(looper, sdk_wallet_handle, trustee_data):
    trustees = []
    for _, trustee_seed in trustee_data:
        did_future = create_and_store_my_did(sdk_wallet_handle, json.dumps({"seed": trustee_seed}))
        did, _ = looper.loop.run_until_complete(did_future)
        trustees.append(did)
    return trustees
Example #11
0
def trustees(libsovtoken, wallet, looper, idr_cache):
    trustees = []
    for i in range(3):
        did_future = create_and_store_my_did(wallet, "{}")
        did, vk = looper.loop.run_until_complete(did_future)
        trustees.append(did)
        idr_cache.users[did] = "0"
    return trustees
Example #12
0
def test_send_same_nyms_only_first_gets_written(
        looper, do, sdk_pool_handle, sdk_wallet_steward):
    wh, _ = sdk_wallet_steward
    seed = randomString(32)
    did, verkey = looper.loop.run_until_complete(
        create_and_store_my_did(wh, json.dumps({'seed': seed})))

    # request 1
    _, did1 = sdk_add_new_nym(looper, sdk_pool_handle, sdk_wallet_steward, dest=did, verkey=verkey)

    seed = randomString(32)
    _, verkey = looper.loop.run_until_complete(
        create_and_store_my_did(wh, json.dumps({'seed': seed})))
    # request 2
    with pytest.raises(RequestRejectedException) as e:
        _, did2 = sdk_add_new_nym(looper, sdk_pool_handle, sdk_wallet_steward, dest=did, verkey=verkey)
    e.match('is neither Trustee nor owner of')
Example #13
0
def test_network_monitor_suspension_by_another_steward(looper, sdk_pool_handle,
                                                       sdk_wallet_steward,
                                                       sdk_wallet_trustee,
                                                       sdk_wallet_handle,
                                                       with_verkey):
    new_steward_did, new_steward_verkey = looper.loop.run_until_complete(
        did.create_and_store_my_did(sdk_wallet_trustee[0], "{}"))
    new_network_monitor_did, new_network_monitor_verkey = looper.loop.run_until_complete(
        did.create_and_store_my_did(sdk_wallet_steward[0], "{}"))
    """Adding new steward"""
    sdk_add_new_nym(looper,
                    sdk_pool_handle,
                    sdk_wallet_trustee,
                    'newSteward',
                    STEWARD_STRING,
                    verkey=new_steward_verkey,
                    dest=new_steward_did)
    """Adding NETWORK_MONITOR role by first steward"""
    op = {
        'type': '1',
        'dest': new_network_monitor_did,
        'role': NETWORK_MONITOR,
        'verkey': new_network_monitor_verkey
    }
    req = sdk_sign_and_submit_op(looper, sdk_pool_handle,
                                 (sdk_wallet_handle, new_steward_did), op)
    sdk_get_and_check_replies(looper, [req])
    """Check that get_validator_info command works for NETWORK_MONITOR role"""
    sdk_get_validator_info(looper,
                           (sdk_wallet_handle, new_network_monitor_did),
                           sdk_pool_handle)
    """Blacklisting network_monitor by new steward"""
    op = {'type': '1', 'dest': new_network_monitor_did, 'role': None}
    if with_verkey:
        op['verkey'] = new_network_monitor_verkey
    req = sdk_sign_and_submit_op(looper, sdk_pool_handle,
                                 (sdk_wallet_handle, new_steward_did), op)
    if with_verkey:
        with pytest.raises(RequestRejectedException):
            sdk_get_and_check_replies(looper, [req])
    else:
        sdk_get_and_check_replies(looper, [req])
        with pytest.raises(RequestRejectedException):
            sdk_get_validator_info(
                looper, (sdk_wallet_handle, new_network_monitor_did),
                sdk_pool_handle)
Example #14
0
def sdk_stewards(looper, sdk_wallet_handle, poolTxnData):
    stewards = []
    pool_txn_stewards_data = get_data_for_role(poolTxnData, STEWARD)
    for _, steward_seed in pool_txn_stewards_data:
        did_future = create_and_store_my_did(sdk_wallet_handle, json.dumps({"seed": steward_seed}))
        did, _ = looper.loop.run_until_complete(did_future)
        stewards.append(did)
    return stewards
Example #15
0
    def sdk_build_nym(self, identifier=None, sdk_wallet=None):
        sdk_wallet = sdk_wallet or self._wallet_steward
        identifier = identifier or sdk_wallet[1]
        ident, verk = self._looper.loop.run_until_complete(
            did.create_and_store_my_did(self._wallet_steward[0],
                                        json.dumps({'seed': plenum_helper.random_string(32)})))

        request = self._looper.loop.run_until_complete(build_nym_request(identifier, ident, verk, None, None))
        return request
Example #16
0
def sdk_wallet_stewards(looper, sdk_wallet_handle, poolTxnStewardNames, poolTxnData):
    stewards = []
    for name in poolTxnStewardNames:
        seed = poolTxnData["seeds"][name]
        (steward_did, steward_verkey) = looper.loop.run_until_complete(
            create_and_store_my_did(sdk_wallet_handle,
                                    json.dumps({'seed': seed})))
        stewards.append((sdk_wallet_handle, steward_did))

    yield stewards
Example #17
0
def new_client_request(role, name, looper, sdk_wallet):
    wh, did = sdk_wallet
    seed = randomString(32)
    (named_did, named_verkey) = looper.loop.run_until_complete(
        create_and_store_my_did(wh, json.dumps({'seed': seed})))
    nym_request = looper.loop.run_until_complete(
        build_nym_request(did, named_did, named_verkey, name, role))

    return sdk_sign_request_strings(looper, sdk_wallet,
                                    [json.loads(nym_request)])[0]
Example #18
0
def sdk_wallet_stewards(looper, sdk_wallet_handle, poolTxnStewardNames, poolTxnData):
    stewards = []
    for name in poolTxnStewardNames:
        seed = poolTxnData["seeds"][name]
        (steward_did, steward_verkey) = looper.loop.run_until_complete(
            create_and_store_my_did(sdk_wallet_handle,
                                    json.dumps({'seed': seed})))
        stewards.append((sdk_wallet_handle, steward_did))

    yield stewards
Example #19
0
def new_client_request(role, name, looper, sdk_wallet):
    wh, did = sdk_wallet
    seed = randomString(32)
    (named_did, named_verkey) = looper.loop.run_until_complete(
        create_and_store_my_did(wh, json.dumps({'seed': seed})))
    nym_request = looper.loop.run_until_complete(
        build_nym_request(did, named_did, named_verkey,
                          name, role))

    return sdk_sign_request_strings(looper, sdk_wallet,
                                    [json.loads(nym_request)])[0]
def nym_on_ledger(looper, sdk_pool_handle, sdk_wallet_client, sdk_wallet_steward, seed=None):
    did_future = create_and_store_my_did(sdk_wallet_client[0], json.dumps({"seed": seed}) if seed else "{}")
    did, vk = looper.loop.run_until_complete(did_future)
    nym_req_future = build_nym_request(sdk_wallet_steward[1], did, vk, None, None)
    nym_req = looper.loop.run_until_complete(nym_req_future)
    nym_resp_future = sign_and_submit_request(sdk_pool_handle, sdk_wallet_steward[0], sdk_wallet_steward[1], nym_req)
    nym_resp = looper.loop.run_until_complete(nym_resp_future)
    nym = json.loads(nym_resp)
    assert nym["result"]
    assert nym["result"][TXN_METADATA]
    assert nym["result"][TXN_METADATA][TXN_METADATA_SEQ_NO]
    return nym["result"][TXN_METADATA][TXN_METADATA_SEQ_NO]
Example #21
0
    def create_did(self, seed=None, sdk_wallet=None):
        """ Create and store a did in a sdk_wallet. """
        if not seed:
            seed = randomString(32)

        sdk_wallet = sdk_wallet or self._client_wallet

        wallet_handle, _ = sdk_wallet
        config = json.dumps({seed: seed})
        future = did.create_and_store_my_did(wallet_handle, config)

        return self._looper.loop.run_until_complete(future)
Example #22
0
def testSendAttribFailsForNotExistingDest(
        looper, sdk_pool_handle, sdk_wallet_trustee):
    wh, _ = sdk_wallet_trustee
    seed = randomString(32)
    did, _ = looper.loop.run_until_complete(create_and_store_my_did(
        wh, json.dumps({'seed': seed})))

    parameters = json.dumps({'name': 'Alice'})
    with pytest.raises(RequestRejectedException) as e:
        sdk_add_attribute_and_check(looper, sdk_pool_handle, sdk_wallet_trustee,
                                    parameters, dest=did)
    e.match('dest should be added before adding attribute for it')
Example #23
0
def test_steward_cannot_create_endorsers_after_demote(looper, sdk_pool_handle,
                                                      sdk_wallet_trustee,
                                                      sdk_wallet_handle):
    new_steward_did, new_steward_verkey = looper.loop.run_until_complete(
        did.create_and_store_my_did(sdk_wallet_trustee[0], "{}"))
    new_ta_did, new_ta_verkey = looper.loop.run_until_complete(
        did.create_and_store_my_did(sdk_wallet_trustee[0], "{}"))
    new_ta_2_did, new_ta_2_verkey = looper.loop.run_until_complete(
        did.create_and_store_my_did(sdk_wallet_trustee[0], "{}"))
    """Adding new steward"""
    sdk_add_new_nym(looper,
                    sdk_pool_handle,
                    sdk_wallet_trustee,
                    'newSteward',
                    STEWARD_STRING,
                    verkey=new_steward_verkey,
                    dest=new_steward_did)
    """Adding new TA"""
    sdk_add_new_nym(looper,
                    sdk_pool_handle, (sdk_wallet_handle, new_steward_did),
                    'newSteward',
                    ENDORSER_STRING,
                    verkey=new_ta_verkey,
                    dest=new_ta_did)
    """Blacklisting new steward by trustee"""
    op = {'type': '1', 'dest': new_steward_did, 'role': None}
    req = sdk_sign_and_submit_op(looper, sdk_pool_handle, sdk_wallet_trustee,
                                 op)
    sdk_get_and_check_replies(looper, [req])
    """Try to add new TA by previous demoted steward"""
    with pytest.raises(RequestRejectedException):
        sdk_add_new_nym(looper,
                        sdk_pool_handle, (sdk_wallet_handle, new_steward_did),
                        'newSteward',
                        ENDORSER_STRING,
                        verkey=new_ta_2_verkey,
                        dest=new_ta_2_did)
Example #24
0
def test_sigining_without_identifier(looper, txnPoolNodeSet, sdk_pool_handle,
                                     sdk_steward_seed, sdk_wallet_handle):
    req = {TXN_PAYLOAD: {TXN_PAYLOAD_DATA: {"aaa": "BBB"}}}

    steward_did_future = create_and_store_my_did(
        sdk_wallet_handle, json.dumps({"seed": sdk_steward_seed}))
    steward_did, _ = looper.loop.run_until_complete(steward_did_future)

    did_future = create_and_store_my_did(sdk_wallet_handle, json.dumps({}))
    did, verkey = looper.loop.run_until_complete(did_future)

    nym_future = build_nym_request(steward_did, did, verkey, None, None)
    nym = looper.loop.run_until_complete(nym_future)

    resp_future = sign_and_submit_request(sdk_pool_handle, sdk_wallet_handle,
                                          steward_did, nym)
    resp = looper.loop.run_until_complete(resp_future)

    req_future = multi_sign_request(sdk_wallet_handle, did, json.dumps(req))
    req = looper.loop.run_until_complete(req_future)
    req = json.loads(req)

    sigs = txnPoolNodeSet[0].init_core_authenticator().authenticate(req)
    assert sigs == [did]
Example #25
0
def test_get_txn_after_bls_key_rotation(looper, txnPoolNodeSet,
                                        sdk_wallet_stewards,
                                        sdk_wallet_trustee,
                                        sdk_wallet_client,
                                        sdk_pool_handle):
    check_update_bls_key(node_num=0, saved_multi_sigs_count=4,
                         looper=looper, txnPoolNodeSet=txnPoolNodeSet,
                         sdk_wallet_stewards=sdk_wallet_stewards,
                         sdk_wallet_client=sdk_wallet_client,
                         sdk_pool_handle=sdk_pool_handle,
                         pool_refresh=False)
    check_update_bls_key(node_num=1, saved_multi_sigs_count=4,
                         looper=looper, txnPoolNodeSet=txnPoolNodeSet,
                         sdk_wallet_stewards=sdk_wallet_stewards,
                         sdk_wallet_client=sdk_wallet_client,
                         sdk_pool_handle=sdk_pool_handle,
                         pool_refresh=False)
    check_update_bls_key(node_num=2, saved_multi_sigs_count=4,
                         looper=looper, txnPoolNodeSet=txnPoolNodeSet,
                         sdk_wallet_stewards=sdk_wallet_stewards,
                         sdk_wallet_client=sdk_wallet_client,
                         sdk_pool_handle=sdk_pool_handle,
                         pool_refresh=False)
    check_update_bls_key(node_num=3, saved_multi_sigs_count=4,
                         looper=looper, txnPoolNodeSet=txnPoolNodeSet,
                         sdk_wallet_stewards=sdk_wallet_stewards,
                         sdk_wallet_client=sdk_wallet_client,
                         sdk_pool_handle=sdk_pool_handle,
                         pool_refresh=False)

    # Stop receiving of commits in a circle, so all nodes will have different sets of multi signatures
    with delay_rules_without_processing(txnPoolNodeSet[0].nodeIbStasher, cDelay(delay=1200, sender_filter=txnPoolNodeSet[3].name)):
        with delay_rules_without_processing(txnPoolNodeSet[1].nodeIbStasher, cDelay(delay=1200, sender_filter=txnPoolNodeSet[0].name)):
            with delay_rules_without_processing(txnPoolNodeSet[2].nodeIbStasher, cDelay(delay=1200, sender_filter=txnPoolNodeSet[1].name)):
                with delay_rules_without_processing(txnPoolNodeSet[3].nodeIbStasher, cDelay(delay=1200, sender_filter=txnPoolNodeSet[2].name)):
                    did_future = create_and_store_my_did(sdk_wallet_client[0], "{}")
                    did, verkey = looper.loop.run_until_complete(did_future)
                    nym_request_future = ledger.build_nym_request(sdk_wallet_trustee[1], did, verkey, None, None)
                    nym_request = looper.loop.run_until_complete(nym_request_future)
                    nym_response_future = ledger.sign_and_submit_request(sdk_pool_handle, sdk_wallet_trustee[0], sdk_wallet_trustee[1], nym_request)
                    looper.loop.run_until_complete(nym_response_future)

                    get_txn_request_future = ledger.build_get_txn_request(sdk_wallet_client[1], "DOMAIN", 1)
                    get_txn_request = looper.loop.run_until_complete(get_txn_request_future)
                    get_txn_response_future = ledger.submit_request(sdk_pool_handle, get_txn_request)
                    looper.loop.run_until_complete(get_txn_response_future)
Example #26
0
def test_node_txn_promote_by_endorser(txnPoolNodeSet, sdk_pool_handle,
                                      sdk_wallet_trustee, looper,
                                      sdk_wallet_handle):

    validators_before = get_pool_validator_count(txnPoolNodeSet)

    new_end_did, new_end_verkey = looper.loop.run_until_complete(
        did.create_and_store_my_did(sdk_wallet_trustee[0], "{}"))

    # Step 1. Demote node using default auth rule
    demote_node(looper, sdk_wallet_trustee, sdk_pool_handle,
                txnPoolNodeSet[-1])

    # Check, that node was demoted
    assert validators_before - get_pool_validator_count(
        txnPoolNodeSet[:-1]) == 1

    # Step 2. Add new Endorser
    sdk_add_new_nym(looper,
                    sdk_pool_handle,
                    sdk_wallet_trustee,
                    'newEndorser',
                    ENDORSER_STRING,
                    verkey=new_end_verkey,
                    dest=new_end_did)

    new_constraint = AuthConstraint(ENDORSER, 1)

    # Step 3. Change auth rule, to allowing endorser promote node back
    sdk_send_and_check_auth_rule_request(looper,
                                         sdk_pool_handle,
                                         sdk_wallet_trustee,
                                         auth_action=EDIT_PREFIX,
                                         auth_type=promote_action.txn_type,
                                         field=promote_action.field,
                                         new_value=promote_action.new_value,
                                         old_value=promote_action.old_value,
                                         constraint=new_constraint.as_dict)

    # Step 4. Promote node back, using new Endorser
    promote_node(looper, (sdk_wallet_handle, new_end_did), sdk_pool_handle,
                 txnPoolNodeSet[-1])

    # Check, that all other nodes return previous demoted node back
    assert validators_before == get_pool_validator_count(txnPoolNodeSet[:-1])
def test_endorser_required_when_multi_sig_with_off_ledger_signature(
        looper, txnPoolNodeSet, sdk_wallet_client, sdk_pool_handle,
        sdk_wallet_trustee, sdk_wallet_endorser):
    change_new_did_auth_rule(looper,
                             sdk_pool_handle,
                             sdk_wallet_trustee,
                             constraint=AuthConstraint(
                                 role='*',
                                 sig_count=2,
                                 off_ledger_signature=True))

    new_did, verkey = \
        looper.loop.run_until_complete(
            create_and_store_my_did(sdk_wallet_client[0], json.dumps({'seed': randomString(32)})))
    sdk_wallet_new_client = (sdk_wallet_client[0], new_did)
    nym_request = looper.loop.run_until_complete(
        build_nym_request(new_did, new_did, verkey, None, IDENTITY_OWNER))

    # can not send without Endorser
    with pytest.raises(
            RequestRejectedException,
            match=
            "'Endorser' field must be explicitly set for the endorsed transaction"
    ):
        signed_req = sdk_multisign_request_object(looper,
                                                  sdk_wallet_new_client,
                                                  nym_request)
        signed_req = sdk_multisign_request_object(looper, sdk_wallet_endorser,
                                                  signed_req)
        request_couple = sdk_send_signed_requests(sdk_pool_handle,
                                                  [signed_req])[0]
        sdk_get_and_check_replies(looper, [request_couple])

    # can send with Endorser
    sdk_submit_and_check_by_endorser(looper,
                                     sdk_pool_handle,
                                     sdk_wallet_author=sdk_wallet_new_client,
                                     sdk_wallet_endorser=sdk_wallet_endorser,
                                     request_json=nym_request)
    details = get_nym_details(txnPoolNodeSet[0].states[1],
                              new_did,
                              is_committed=True)
    assert details[ROLE] == IDENTITY_OWNER
    assert details[VERKEY] == verkey
def create_new_did(looper, sdk_pool_handle, creator, role, skipverkey=False):

    op = {
        'type': NYM,
        'role': role.value
    }

    new_did_verkey = None

    if skipverkey:
        new_did, _ = createHalfKeyIdentifierAndAbbrevVerkey()
        op.update({'dest': new_did})
    else:
        new_did, new_did_verkey = looper.loop.run_until_complete(
            create_and_store_my_did(creator.wallet_handle, "{}"))

    op.update({'dest': new_did, 'verkey': new_did_verkey})

    req = sdk_sign_and_submit_op(looper, sdk_pool_handle, creator.wallet_did, op)
    sdk_get_and_check_replies(looper, [req])

    return DIDWallet(did=new_did, role=role, verkey=new_did_verkey,
                     creator=creator, wallet_handle=creator.wallet_handle)
Example #29
0
def trust_anchor_did_verkey(looper, sdk_wallet_client):
    wh, _ = sdk_wallet_client
    named_did, verkey = looper.loop.run_until_complete(
        create_and_store_my_did(wh, json.dumps({'seed': TRUST_ANCHOR_SEED})))
    return named_did, verkey
Example #30
0
def sdk_wallet_steward(looper, sdk_wallet_handle, sdk_steward_seed):
    (steward_did, steward_verkey) = looper.loop.run_until_complete(
        create_and_store_my_did(sdk_wallet_handle,
                                json.dumps({'seed': sdk_steward_seed})))
    return sdk_wallet_handle, steward_did
Example #31
0
def trust_anchor_did_verkey(looper, sdk_wallet_client):
    wh, _ = sdk_wallet_client
    named_did, verkey = looper.loop.run_until_complete(
        create_and_store_my_did(wh, json.dumps({'seed': TRUST_ANCHOR_SEED})))
    return named_did, verkey
Example #32
0
def sdk_wallet_trustee(looper, sdk_wallet_handle, sdk_trustee_seed):
    (trustee_did, trustee_verkey) = looper.loop.run_until_complete(
        create_and_store_my_did(sdk_wallet_handle,
                                json.dumps({'seed': sdk_trustee_seed})))
    return sdk_wallet_handle, trustee_did
Example #33
0
def sdk_wallet_steward(looper, sdk_wallet_handle, sdk_steward_seed):
    (steward_did, steward_verkey) = looper.loop.run_until_complete(
        create_and_store_my_did(sdk_wallet_handle,
                                json.dumps({'seed': sdk_steward_seed})))
    return sdk_wallet_handle, steward_did
Example #34
0
def sdk_wallet_trustee(looper, sdk_wallet_handle, sdk_trustee_seed):
    (trustee_did, trustee_verkey) = looper.loop.run_until_complete(
        create_and_store_my_did(sdk_wallet_handle,
                                json.dumps({'seed': sdk_trustee_seed})))
    return sdk_wallet_handle, trustee_did
Example #35
0
def sdk_wallet_client2(looper, sdk_wallet_handle, sdk_client_seed2):
    (client_did, _) = looper.loop.run_until_complete(
        create_and_store_my_did(sdk_wallet_handle,
                                json.dumps({'seed': sdk_client_seed2})))
    return sdk_wallet_handle, client_did
Example #36
0
def sdk_wallet_client2(looper, sdk_wallet_handle, sdk_client_seed2):
    (client_did, _) = looper.loop.run_until_complete(
        create_and_store_my_did(sdk_wallet_handle,
                                json.dumps({'seed': sdk_client_seed2})))
    return sdk_wallet_handle, client_did
Example #37
0
def create_verkey_did(looper, wh):
    seed = randomString(32)
    return looper.loop.run_until_complete(
        create_and_store_my_did(wh, json.dumps({'seed': seed})))