def test_verify_and_deposit_fails_with_incorrect_public_key( proxy_contract, deposit_contract, withdrawal_credentials, signature, deposit_data_root, public_key_witness, signature_witness, deposit_amount, assert_tx_failed, seed, ): assert ( int.from_bytes( deposit_contract.functions.get_deposit_count().call(), byteorder="little" ) == 0 ) assert ( deposit_contract.functions.get_deposit_root().call().hex() == EMPTY_DEPOSIT_ROOT ) another_seed = "another-secret".encode() assert seed != another_seed another_private_key = G2ProofOfPossession.KeyGen(another_seed) public_key = G2ProofOfPossession.SkToPk(another_private_key) group_element = pubkey_to_G1(public_key) normalized_group_element = normalize(group_element) public_key_witness = normalized_group_element[1] public_key_witness_repr = _convert_int_to_fp_repr(public_key_witness) signature_witness_repr = _convert_int_to_fp2_repr(signature_witness) amount_in_wei = deposit_amount * 10 ** 9 txn = proxy_contract.functions.verifyAndDeposit( public_key, withdrawal_credentials, signature, deposit_data_root, public_key_witness_repr, signature_witness_repr, ) assert_tx_failed(lambda: txn.transact({"value": amount_in_wei})) assert ( int.from_bytes( deposit_contract.functions.get_deposit_count().call(), byteorder="little" ) == 0 )
def test_bls_signature_is_valid_fails_with_invalid_public_key( proxy_contract, seed, signing_root, signature, signature_witness ): another_seed = "another-secret".encode() assert seed != another_seed another_private_key = G2ProofOfPossession.KeyGen(another_seed) public_key = G2ProofOfPossession.SkToPk(another_private_key) group_element = pubkey_to_G1(public_key) normalized_group_element = normalize(group_element) public_key_witness = normalized_group_element[1] public_key_witness_repr = _convert_int_to_fp_repr(public_key_witness) signature_witness_repr = _convert_int_to_fp2_repr(signature_witness) assert not proxy_contract.functions.blsSignatureIsValid( signing_root, public_key, signature, public_key_witness_repr, signature_witness_repr, ).call()
def test_hkdf_mod_r_key_info(seed: bytes, key_info: bytes) -> None: assert bls.KeyGen(seed, key_info) == _HKDF_mod_r(IKM=seed, key_info=key_info)
def test_hkdf_mod_r(test) -> None: seed = bytes.fromhex(test['seed']) assert bls.KeyGen(seed) == _HKDF_mod_r(IKM=seed)