Ejemplo n.º 1
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])
Ejemplo n.º 2
0
def test_authentication(looper, pre_reqs, registration, sdk_wallet_client,
                        sdk_pool_handle):
    _, core_authnr, req_authnr = pre_reqs

    # Remove simple_authnr
    req_authnr._authenticators = req_authnr._authenticators[:-1]

    # Exception for unknown txn type
    op = {
        TXN_TYPE: 'random_txn_type',
        f.LEDGER_ID.nm: DOMAIN_LEDGER_ID,
        DATA: 1
    }
    # Just creating the request
    req = sdk_sign_and_submit_op(looper, sdk_pool_handle, sdk_wallet_client,
                                 op)
    with pytest.raises(NoAuthenticatorFound):
        req_authnr.authenticate(req[0])

    # Empty set for query txn type
    op = {TXN_TYPE: GET_TXN, f.LEDGER_ID.nm: DOMAIN_LEDGER_ID, DATA: 1}
    # Just creating the request
    req = sdk_sign_and_submit_op(looper, sdk_pool_handle, sdk_wallet_client,
                                 op)
    assert set() == req_authnr.authenticate(req[0])

    # identifier for write type
    wh, did = sdk_wallet_client
    req = new_client_request(None, randomString(), looper, sdk_wallet_client)
    core_authnr.addIdr(
        did,
        looper.loop.run_until_complete(key_for_did(sdk_pool_handle, wh, did)))
    assert req_authnr.authenticate(json.loads(req)) == {
        did,
    }
Ejemplo n.º 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])
Ejemplo n.º 4
0
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])
Ejemplo n.º 5
0
def test_nym_addition_fails_with_empty_verkey(looper, sdk_pool_handle,
                                              sdk_wallet_trustee):
    op = add_nym_operation(seed=b'a secret trust anchor seed......')
    op[VERKEY] = ''
    req = sdk_sign_and_submit_op(looper, sdk_pool_handle, sdk_wallet_trustee, op)
    sdk_get_bad_response(looper, [req], RequestNackedException,
                         'Neither a full verkey nor an abbreviated one')
Ejemplo n.º 6
0
 def do_edit_revoc_reg_def(self, origin_rrd_req, wallet):
     origin_rrd_req[OPERATION][VALUE][TAILS_HASH] = randomString(20)
     resp = sdk_sign_and_submit_op(self.looper,
                                   self.sdk_pool_handle,
                                   wallet,
                                   op=origin_rrd_req[OPERATION])
     sdk_get_and_check_replies(self.looper, [resp])
Ejemplo n.º 7
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)
Ejemplo n.º 8
0
def sign_submit_check(looper, sdk_pool_handle, signer, dest, action_id, op):
    req = sdk_sign_and_submit_op(looper, sdk_pool_handle, signer.wallet_did, op)

    if auth_check(action_id, signer, dest):
        sdk_get_and_check_replies(looper, [req])
    else:
        with pytest.raises(RequestRejectedException) as excinfo:
            sdk_get_and_check_replies(looper, [req])
        excinfo.match('UnauthorizedClientRequest')
Ejemplo n.º 9
0
 def do_edit_claim_def(self, wallet, tag, schema_json):
     reply = sdk_send_claim_def(self.looper, self.sdk_pool_handle, wallet,
                                tag, schema_json)
     req = reply[0][0]
     req[OPERATION][DATA]['primary']['n'] = 'abc'
     resp = sdk_sign_and_submit_op(self.looper,
                                   self.sdk_pool_handle,
                                   wallet,
                                   op=req[OPERATION])
     sdk_get_and_check_replies(self.looper, [resp])
def test_authentication(looper, pre_reqs, registration,
                        sdk_wallet_client,
                        sdk_pool_handle):
    _, core_authnr, req_authnr = pre_reqs

    # Remove simple_authnr
    req_authnr._authenticators = req_authnr._authenticators[:-1]

    # Exception for unknown txn type
    op = {
        TXN_TYPE: 'random_txn_type',
        f.LEDGER_ID.nm: DOMAIN_LEDGER_ID,
        DATA: 1
    }
    # Just creating the request
    req = sdk_sign_and_submit_op(looper, sdk_pool_handle,
                                 sdk_wallet_client, op)
    with pytest.raises(NoAuthenticatorFound):
        req_authnr.authenticate(req[0])

    # Empty set for query txn type
    op = {
        TXN_TYPE: GET_TXN,
        f.LEDGER_ID.nm: DOMAIN_LEDGER_ID,
        DATA: 1
    }
    # Just creating the request
    req = sdk_sign_and_submit_op(looper, sdk_pool_handle,
                                 sdk_wallet_client, op)
    assert set() == req_authnr.authenticate(req[0])

    # identifier for write type
    wh, did = sdk_wallet_client
    req = new_client_request(None, randomString(), looper, sdk_wallet_client)
    core_authnr.addIdr(did,
                       looper.loop.run_until_complete(key_for_did(sdk_pool_handle, wh, did)))
    assert req_authnr.authenticate(json.loads(req)) == {did, }
def test_check_rule_for_edit_action_changing(looper, sdk_wallet_trustee,
                                             sdk_wallet_steward,
                                             sdk_pool_handle):
    wh, _ = sdk_wallet_trustee
    new_steward_did, new_steward_verkey = create_verkey_did(looper, wh)
    """Adding new steward for old auth rules"""
    sdk_add_new_nym(looper,
                    sdk_pool_handle,
                    sdk_wallet_trustee,
                    'newSteward1',
                    STEWARD_STRING,
                    dest=new_steward_did,
                    verkey=new_steward_verkey)

    constraint = AuthConstraint(role=STEWARD, sig_count=1)
    """Change role from steward to '' (blacklisting STEWARD) can only STEWARD"""
    sdk_send_and_check_auth_rule_request(looper,
                                         sdk_pool_handle,
                                         sdk_wallet_trustee,
                                         auth_action=EDIT_PREFIX,
                                         auth_type=NYM,
                                         field=ROLE,
                                         new_value='',
                                         old_value=STEWARD,
                                         constraint=constraint.as_dict)
    op = {'type': '1', 'dest': new_steward_did, 'role': None}
    with pytest.raises(RequestRejectedException,
                       match="Not enough STEWARD signatures"):
        """Blacklisting new steward by TRUSTEE"""
        req = sdk_sign_and_submit_op(looper, sdk_pool_handle,
                                     sdk_wallet_trustee, op)
        sdk_get_and_check_replies(looper, [req])
    """We change auth rules and for now only steward can add new steward"""
    req = sdk_sign_and_submit_op(looper, sdk_pool_handle, sdk_wallet_steward,
                                 op)
    sdk_get_and_check_replies(looper, [req])
def test_auth_rule_transaction_for_edit(looper, txnPoolNodeSet,
                                        sdk_wallet_trustee, sdk_wallet_steward,
                                        sdk_pool_handle):
    constraint = AuthConstraint(role=STEWARD,
                                sig_count=1,
                                need_to_be_owner=False)
    req1 = build_auth_rule_request_json(looper,
                                        sdk_wallet_trustee[1],
                                        auth_action=ADD_PREFIX,
                                        auth_type=CLAIM_DEF,
                                        field='*',
                                        new_value='*',
                                        constraint=constraint.as_dict)

    send_and_check(looper, sdk_pool_handle, req1, wallet=sdk_wallet_trustee)

    constraint = AuthConstraint(role=TRUSTEE,
                                sig_count=1,
                                need_to_be_owner=False)
    req2 = build_auth_rule_request_json(looper,
                                        sdk_wallet_trustee[1],
                                        auth_action=EDIT_PREFIX,
                                        auth_type=CLAIM_DEF,
                                        field='*',
                                        old_value='*',
                                        new_value='*',
                                        constraint=constraint.as_dict)

    send_and_check(looper, sdk_pool_handle, req2, wallet=sdk_wallet_trustee)

    schema_json = get_schema_json(looper, sdk_pool_handle, sdk_wallet_trustee)

    reply = sdk_send_claim_def(looper, sdk_pool_handle, sdk_wallet_steward,
                               'tag_1', schema_json)

    req = reply[0][0]
    req[OPERATION][DATA]['primary']['n'] = 'abc'

    with pytest.raises(RequestRejectedException):
        resp = sdk_sign_and_submit_op(looper,
                                      sdk_pool_handle,
                                      sdk_wallet_steward,
                                      op=req[OPERATION])
        sdk_get_and_check_replies(looper, [resp])
Ejemplo n.º 13
0
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)
Ejemplo n.º 14
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)
Ejemplo n.º 15
0
def sdk_suspend_role(looper, sdk_pool_handle, sdk_wallet_sender, susp_did):
    op = {'type': '1',
          'dest': susp_did,
          'role': None}
    req = sdk_sign_and_submit_op(looper, sdk_pool_handle, sdk_wallet_sender, op)
    sdk_get_and_check_replies(looper, [req])
Ejemplo n.º 16
0
def sdk_suspend_role(looper, sdk_pool_handle, sdk_wallet_sender, susp_did):
    op = {'type': '1', 'dest': susp_did, 'role': None}
    req = sdk_sign_and_submit_op(looper, sdk_pool_handle, sdk_wallet_sender,
                                 op)
    sdk_get_and_check_replies(looper, [req])
Ejemplo n.º 17
0
def sdk_submit_operation_and_get_replies(looper, sdk_pool_handle, sdk_wallet_sender, operation):
    req = sdk_sign_and_submit_op(looper, sdk_pool_handle, sdk_wallet_sender, operation)
    return sdk_get_and_check_replies(looper, [req])
Ejemplo n.º 18
0
def sdk_submit_operation_and_get_result(looper, sdk_pool_handle, sdk_wallet_sender, operation):
    req = sdk_sign_and_submit_op(looper, sdk_pool_handle, sdk_wallet_sender, operation)
    replies = sdk_get_and_check_replies(looper, [req])
    assert len(replies) == 1
    return replies[0][1]['result']