Skip to content

Commit 32d86f3

Browse files
Accept typed_data param as TypedData dataclass (#1362)
1 parent 5ba387d commit 32d86f3

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

starknet_py/net/account/account.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
InvokeV3,
3737
TypeAccountTransaction,
3838
)
39-
from starknet_py.net.models.typed_data import TypedData
39+
from starknet_py.net.models.typed_data import TypedData as TypedDataDict
4040
from starknet_py.net.signer import BaseSigner
4141
from starknet_py.net.signer.stark_curve_signer import KeyPair, StarkCurveSigner
4242
from starknet_py.serialization.data_serializers.array_serializer import ArraySerializer
@@ -49,7 +49,7 @@
4949
)
5050
from starknet_py.utils.iterable import ensure_iterable
5151
from starknet_py.utils.sync import add_sync_methods
52-
from starknet_py.utils.typed_data import TypedData as TypedDataDataclass
52+
from starknet_py.utils.typed_data import TypedData
5353

5454

5555
@add_sync_methods
@@ -584,13 +584,18 @@ async def execute_v3(
584584
)
585585
return await self._client.send_transaction(execute_transaction)
586586

587-
def sign_message(self, typed_data: TypedData) -> List[int]:
588-
typed_data_dataclass = TypedDataDataclass.from_dict(typed_data)
587+
def sign_message(self, typed_data: Union[TypedData, TypedDataDict]) -> List[int]:
588+
if isinstance(typed_data, TypedData):
589+
return self.signer.sign_message(typed_data, self.address)
590+
typed_data_dataclass = TypedData.from_dict(typed_data)
589591
return self.signer.sign_message(typed_data_dataclass, self.address)
590592

591-
def verify_message(self, typed_data: TypedData, signature: List[int]) -> bool:
592-
typed_data_dataclass = TypedDataDataclass.from_dict(typed_data)
593-
message_hash = typed_data_dataclass.message_hash(account_address=self.address)
593+
def verify_message(
594+
self, typed_data: Union[TypedData, TypedDataDict], signature: List[int]
595+
) -> bool:
596+
if not isinstance(typed_data, TypedData):
597+
typed_data = TypedData.from_dict(typed_data)
598+
message_hash = typed_data.message_hash(account_address=self.address)
594599
return verify_message_signature(message_hash, signature, self.signer.public_key)
595600

596601
@staticmethod

0 commit comments

Comments
 (0)