Skip to content

Commit

Permalink
Accept typed_data param as TypedData dataclass (#1362)
Browse files Browse the repository at this point in the history
  • Loading branch information
franciszekjob authored Jun 20, 2024
1 parent 5ba387d commit 32d86f3
Showing 1 changed file with 12 additions and 7 deletions.
19 changes: 12 additions & 7 deletions starknet_py/net/account/account.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
InvokeV3,
TypeAccountTransaction,
)
from starknet_py.net.models.typed_data import TypedData
from starknet_py.net.models.typed_data import TypedData as TypedDataDict
from starknet_py.net.signer import BaseSigner
from starknet_py.net.signer.stark_curve_signer import KeyPair, StarkCurveSigner
from starknet_py.serialization.data_serializers.array_serializer import ArraySerializer
Expand All @@ -49,7 +49,7 @@
)
from starknet_py.utils.iterable import ensure_iterable
from starknet_py.utils.sync import add_sync_methods
from starknet_py.utils.typed_data import TypedData as TypedDataDataclass
from starknet_py.utils.typed_data import TypedData


@add_sync_methods
Expand Down Expand Up @@ -584,13 +584,18 @@ async def execute_v3(
)
return await self._client.send_transaction(execute_transaction)

def sign_message(self, typed_data: TypedData) -> List[int]:
typed_data_dataclass = TypedDataDataclass.from_dict(typed_data)
def sign_message(self, typed_data: Union[TypedData, TypedDataDict]) -> List[int]:
if isinstance(typed_data, TypedData):
return self.signer.sign_message(typed_data, self.address)
typed_data_dataclass = TypedData.from_dict(typed_data)
return self.signer.sign_message(typed_data_dataclass, self.address)

def verify_message(self, typed_data: TypedData, signature: List[int]) -> bool:
typed_data_dataclass = TypedDataDataclass.from_dict(typed_data)
message_hash = typed_data_dataclass.message_hash(account_address=self.address)
def verify_message(
self, typed_data: Union[TypedData, TypedDataDict], signature: List[int]
) -> bool:
if not isinstance(typed_data, TypedData):
typed_data = TypedData.from_dict(typed_data)
message_hash = typed_data.message_hash(account_address=self.address)
return verify_message_signature(message_hash, signature, self.signer.public_key)

@staticmethod
Expand Down

0 comments on commit 32d86f3

Please sign in to comment.