def test_agreement_hash(): """ This test verifies generating agreement hash using fixed inputs and ddo example. This will make it easier to compare the hash generated from different languages. """ did = "did:op:0bc278fee025464f8012b811d1bce8e22094d0984e4e49139df5d5ff7a028bdf" template_id = '0x34219511357c43f4af90a4896b972a32809379bfbe8148eab3878e8406e75836' agreement_id = '0xf136d6fadecb48fdb2fc1fb420f5a5d1c32d22d9424e47ab9461556e058fefaa' ddo = get_ddo_sample() sa = ServiceAgreement.from_json( ddo.get_service(ServiceTypes.ASSET_ACCESS).as_dictionary()) assert did == ddo.did # Don't generate condition ids, use fixed ids so we get consistent hash # (access_id, lock_id, escrow_id) = sa.generate_agreement_condition_ids( # agreement_id, ddo.asset_id, consumer, publisher, keeper) access_id = '0x2d7c1d60dc0c3f52aa9bd71ffdbe434a0e58435571e64c893bc9646fea7f6ec1' lock_id = '0x1e265c434c14e668695dda1555088f0ea4356f596bdecb8058812e7dcba9ee73' escrow_id = '0xe487fa6d435c2f09ef14b65b34521302f1532ac82ba8f6c86116acd8566e2da3' print(f'condition ids: \n' f'{access_id} \n' f'{lock_id} \n' f'{escrow_id}') agreement_hash = ServiceAgreement.generate_service_agreement_hash( template_id, (access_id, lock_id, escrow_id), sa.conditions_timelocks, sa.conditions_timeouts, agreement_id, generate_multi_value_hash ) print('agreement hash: ', agreement_hash.hex()) expected = '0xc1bc6cdb161b9d04d5b48bceba51b9092c4da8db08003b96b93647fbe86e330c' print('expected hash: ', expected) assert agreement_hash.hex() == expected, 'hash does not match.'
def test_agreement(): template_id = '0xda558ceb3abd482db04ea813810ae9c6cea5bf13ef9943908b1a8b51c4e56c7f' agreement_id = '0x' + ('e' * 64) access_id = '0x' + ('a' * 64) lock_id = '0x' + ('b' * 64) escrow_id = '0x' + ('c' * 64) signature = ServiceAgreement.generate_service_agreement_hash( template_id, [access_id, lock_id, escrow_id], [0, 0, 0], [0, 0, 0], agreement_id, generate_multi_value_hash ) print({signature}) assert ( signature == Web3.toBytes( hexstr="0x3450be8127dbe156fad90956fd351df42ffcfabba89d230406a301ceb5b40f92" )), "The signature is not correct."