Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion dev-setup/ubuntu/ubuntu-2004/SetupVMTest.txt
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,9 @@
python-dateutil==2.6.1 \
python-rocksdb==0.7.0 \
python-ursa==0.1.1 \
python3-indy==1.13.0 \
indy_vdr==0.4.0.dev5 \
aries-askar==0.2.7 \
indy-credx==0.3.1 \
Comment on lines +75 to +77
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Latest releases are:
indy-vdr: 0.4.3
askar: 0.4.3
indy-credx: 1.1.1

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dont we drop the dev-setup directory ?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we keep it should we change the ubuntu-2204 file instead of the ubuntu-2004

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, sorry, I was not paying attention to the location of the file, just the changes

pyzmq==22.3.0 --install-option=--zmq=bundled \
rlp==0.6.0 \
semver==2.13.0 \
Expand Down
5 changes: 3 additions & 2 deletions plenum/test/common/test_digest_validation.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
import types

import pytest
from indy.did import create_and_store_my_did

from plenum.test.wallet_helper import create_and_store_did

from plenum.server.consensus.ordering_service import OrderingService

Expand All @@ -28,7 +29,7 @@ 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})))
create_and_store_did(wh, seed))
op = {'type': '1',
'dest': new_did,
'verkey': new_verkey,
Expand Down
40 changes: 20 additions & 20 deletions plenum/test/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@

from indy.pool import create_pool_ledger_config, open_pool_ledger, close_pool_ledger
from indy.wallet import create_wallet, open_wallet, close_wallet
from indy.did import create_and_store_my_did
from plenum.test.wallet_helper import create_and_store_did, wallet_helper
from indy_vdr import set_protocol_version

from ledger.genesis_txn.genesis_txn_file_util import create_genesis_txn_init_ledger
from plenum.bls.bls_crypto_factory import create_default_bls_crypto_factory
Expand Down Expand Up @@ -77,6 +78,7 @@
ROCKSDB_WRITE_BUFFER_SIZE = 256 * 1024



def get_data_for_role(pool_txn_data, role):
name_and_seeds = []
for txn in pool_txn_data['txns']:
Expand Down Expand Up @@ -897,18 +899,21 @@ def sdk_pool_handle(looper, txnPoolNodeSet, tdirWithPoolTxns, sdk_pool_data):
logger.debug("Unhandled exception: {}".format(e))


async def _gen_wallet_handler(wallet_data):
wallet_config, wallet_credentials = wallet_data
await create_wallet(wallet_config, wallet_credentials)
wallet_handle = await open_wallet(wallet_config, wallet_credentials)
return wallet_handle
@pytest.fixture(scope="session", autouse=True)
def set_proto_ver():
"""
Sets sdk protocol version to 2
"""
yield set_protocol_version(2)


@pytest.fixture(scope='module')
def sdk_wallet_handle(looper, sdk_wallet_data):
wallet_handle = looper.loop.run_until_complete(_gen_wallet_handler(sdk_wallet_data))
@pytest.fixture(scope="module")
async def sdk_wallet_handle(set_proto_ver):
"""
Creates a wallet handle and yields it
"""
wallet_handle, _, _ = await wallet_helper()
yield wallet_handle
looper.loop.run_until_complete(close_wallet(wallet_handle))


@pytest.fixture(scope='module')
Expand Down Expand Up @@ -944,16 +949,14 @@ def sdk_new_client_seed():
@pytest.fixture(scope='module')
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})))
create_and_store_did(sdk_wallet_handle,sdk_trustee_seed))
return sdk_wallet_handle, trustee_did


@pytest.fixture(scope='module')
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})))
create_and_store_did(sdk_wallet_handle,sdk_steward_seed))
return sdk_wallet_handle, steward_did


Expand All @@ -972,8 +975,7 @@ def sdk_wallet_stewards(looper, sdk_wallet_handle, poolTxnStewardNames, poolTxnD
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})))
create_and_store_did(sdk_wallet_handle,seed))
stewards.append((sdk_wallet_handle, steward_did))

yield stewards
Expand All @@ -982,16 +984,14 @@ def sdk_wallet_stewards(looper, sdk_wallet_handle, poolTxnStewardNames, poolTxnD
@pytest.fixture(scope='module')
def sdk_wallet_client(looper, sdk_wallet_handle, sdk_client_seed):
(client_did, _) = looper.loop.run_until_complete(
create_and_store_my_did(sdk_wallet_handle,
json.dumps({'seed': sdk_client_seed})))
create_and_store_did(sdk_wallet_handle, sdk_client_seed))
return sdk_wallet_handle, client_did


@pytest.fixture(scope='module')
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})))
create_and_store_did(sdk_wallet_handle, sdk_client_seed2))
return sdk_wallet_handle, client_did


Expand Down
6 changes: 3 additions & 3 deletions plenum/test/pool_transactions/helper.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import json

from indy.did import create_and_store_my_did
from plenum.test.wallet_helper import create_and_store_did
from indy.ledger import build_node_request, build_nym_request, \
build_get_txn_request
from indy.pool import refresh_pool_ledger
Expand Down Expand Up @@ -34,7 +34,7 @@ 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})))
create_and_store_did(wh, seed))
nym_request = looper.loop.run_until_complete(
build_nym_request(did, named_did, named_verkey,
name, role))
Expand Down Expand Up @@ -263,7 +263,7 @@ async def prepare_nym_request(wallet, named_seed, alias,
role, dest=None, verkey=None, skipverkey=False):
wh, submitter_did = wallet
(named_did, named_verkey) = \
await create_and_store_my_did(wh, json.dumps({'seed': named_seed}))
await create_and_store_did(wh, named_seed)
named_did = dest or named_did
named_verkey = verkey or named_verkey
named_verkey = None if skipverkey else named_verkey
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import json

import pytest
from indy.did import create_and_store_my_did
from plenum.test.node_catchup.helper import ensure_all_nodes_have_same_data

from plenum.test.node_catchup.test_config_ledger import start_stopped_node
Expand Down
4 changes: 2 additions & 2 deletions plenum/test/signing/test_create_did_without_endorser.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import types

import pytest
from indy.did import create_and_store_my_did
from plenum.test.wallet_helper import create_and_store_did
from indy.ledger import build_nym_request

from plenum.common.constants import NYM, STEWARD, ROLE, VERKEY
Expand Down Expand Up @@ -45,7 +45,7 @@ def nym_txn_data(looper, sdk_wallet_client):

wh, _ = sdk_wallet_client
sender_did, sender_verkey = \
looper.loop.run_until_complete(create_and_store_my_did(wh, json.dumps({'seed': seed})))
looper.loop.run_until_complete(create_and_store_did(wh, seed))
return wh, randomString(5), sender_did, sender_verkey


Expand Down
6 changes: 3 additions & 3 deletions plenum/test/signing/test_signing_without_identifier.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from plenum.common.constants import TXN_PAYLOAD, TXN_PAYLOAD_DATA
from indy.ledger import multi_sign_request, build_nym_request, sign_and_submit_request
from indy.did import create_and_store_my_did
from plenum.test.wallet_helper import create_and_store_did


def test_sigining_without_identifier(looper, txnPoolNodeSet, sdk_pool_handle, sdk_steward_seed, sdk_wallet_handle):
Expand All @@ -14,10 +14,10 @@ def test_sigining_without_identifier(looper, txnPoolNodeSet, sdk_pool_handle, sd
}
}

steward_did_future = create_and_store_my_did(sdk_wallet_handle, json.dumps({"seed": sdk_steward_seed}))
steward_did_future = create_and_store_did(sdk_wallet_handle, 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_future = create_and_store_did(sdk_wallet_handle)
did, verkey = looper.loop.run_until_complete(did_future)

nym_future = build_nym_request(steward_did, did, verkey, None, None)
Expand Down
4 changes: 2 additions & 2 deletions plenum/test/test_get_txn_after_bls_key_rotation.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from plenum.test.bls.helper import check_update_bls_key
from indy import ledger
from indy.did import create_and_store_my_did
from plenum.test.wallet_helper import create_and_store_did

from plenum.test.delayers import cDelay
from plenum.test.stasher import delay_rules, delay_rules_without_processing
Expand Down Expand Up @@ -43,7 +43,7 @@ def test_get_txn_after_bls_key_rotation(looper, txnPoolNodeSet,
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_future = create_and_store_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)
Expand Down
5 changes: 3 additions & 2 deletions plenum/test/test_get_txn_state_proof.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,13 @@
from plenum.common.constants import TXN_METADATA, TXN_METADATA_SEQ_NO, OP_FIELD_NAME
from plenum.test.delayers import req_delay
from plenum.test.stasher import delay_rules
from indy.did import create_and_store_my_did

from plenum.test.wallet_helper import create_and_store_did
from indy.ledger import build_nym_request, build_get_txn_request, sign_and_submit_request, submit_request, build_attrib_request, build_acceptance_mechanisms_request


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_future = create_and_store_did(sdk_wallet_client[0], seed)
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)
Expand Down
80 changes: 80 additions & 0 deletions plenum/test/wallet_helper.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
import base58
import json

from indy_vdr import ledger, open_pool
from aries_askar import Store, Key, KeyAlg, AskarError, AskarErrorCode
from indy_credx import Schema, CredentialDefinition, RevocationRegistryDefinition
from indy_vdr.error import VdrError

# TODO: This code is copied from indy-test-automation, we should move it to a common place
# and use it from there in both places


def key_helper(seed=None):
"""
Generate a new keypair and DID
"""
alg = KeyAlg.ED25519
if seed:
keypair = Key.from_secret_bytes(alg, seed)
else:
keypair = Key.generate(alg)
verkey_bytes = keypair.get_public_bytes()
verkey = base58.b58encode(verkey_bytes).decode("ascii")
did = base58.b58encode(verkey_bytes[:16]).decode("ascii")
return keypair, did, verkey


async def key_insert_helper(wallet_handle, keypair, did, verkey):
'''
Insert a keypair into the wallet
'''
try:
await wallet_handle.insert_key(verkey, keypair, metadata=json.dumps({}))
except AskarError as err:
if err.code == AskarErrorCode.DUPLICATE:
pass
else:
raise err
item = await wallet_handle.fetch("did", did, for_update=True)
if item:
did_info = item.value_json
if did_info.get("verkey") != verkey:
raise Exception("DID already present in wallet")
did_info["metadata"] = {}
await wallet_handle.replace("did", did, value_json=did_info, tags=item.tags)
else:
await wallet_handle.insert(
"did",
did,
value_json={
"did": did,
"method": "sov",
"verkey": verkey,
"verkey_type": "ed25519",
"metadata": {},
},
tags={
"method": "sov",
"verkey": verkey,
"verkey_type": "ed25519",
},
)


async def create_and_store_did(wallet_handle, seed=None):
'''
Create a new DID and store it in the wallet
'''
keypair, did, verkey = key_helper(seed=seed)
await key_insert_helper(wallet_handle, keypair, did, verkey)
return did, verkey

async def wallet_helper(wallet_key='', wallet_key_derivation_method='kdf:argon2i:mod'):
wuri = "sqlite://:memory:"
wallet_h = await Store.provision(wuri, wallet_key_derivation_method, wallet_key, recreate=False)
session_handle = await wallet_h.session()
wallet_config = json.dumps({"id": wuri})
wallet_credentials = json.dumps({"key": wallet_key, "key_derivation_method": wallet_key_derivation_method})

return session_handle, wallet_config, wallet_credentials
8 changes: 5 additions & 3 deletions scripts/generate_txns.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from contextlib import ExitStack
from typing import Sequence

from plenum.test.wallet_helper import create_and_store_did
from indy import did, wallet
from indy.ledger import sign_request

Expand All @@ -33,10 +34,11 @@ async def get_wallet_and_pool():
await wallet.create_wallet(pool_name, their_wallet_name, None, None, None)
their_wallet_handle = await wallet.open_wallet(their_wallet_name, None, None)

await did.create_and_store_my_did(my_wallet_handle, "{}")
await create_and_store_did(my_wallet_handle)

(their_did, their_verkey) = await did.create_and_store_my_did(their_wallet_handle,
json.dumps({"seed": seed_trustee1}))
(their_did, their_verkey) = await create_and_store_did(
their_wallet_handle, seed_trustee1
)

await did.store_their_did(my_wallet_handle, json.dumps({'did': their_did, 'verkey': their_verkey}))

Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
exec(f.read(), metadata)

tests_require = ['attrs==20.3.0', 'pytest==6.2.5', 'pytest-xdist==2.2.1', 'pytest-forked==1.3.0',
'python3-indy==1.16.0.post236', 'pytest-asyncio==0.14.0']
'pytest-asyncio==0.14.0', 'indy_vdr==0.4.0.dev5', 'aries-askar==0.2.7', 'indy-credx==0.3.1']
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Latest releases are:
indy-vdr: 0.4.3
askar: 0.4.3
indy-credx: 1.1.1

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ERROR: Could not find a version that satisfies the requirement indy_vdr==0.4.3 (from indy-node[tests]) (from versions: 0.2.0, 0.3.0, 0.3.1, 0.3.2, 0.3.3, 0.3.4, 0.4.0.dev1, 0.4.0.dev2, 0.4.0.dev3, 0.4.0.dev4, 0.4.0.dev5, 0.4.0.dev10, 0.4.0.dev11, 0.4.0.dev12, 0.4.0.dev13, 0.4.0.dev14, 0.4.0.dev15, 0.4.0.dev16, 0.4.0, 0.4.1, 0.4.2)
ERROR: No matching distribution found for indy_vdr==0.4.3

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use 0.4.2 for now.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Created an issue for the publishing issue here; hyperledger/indy-vdr#335



class PyZMQCommand(distutils.cmd.Command):
Expand Down
Loading