diff --git a/safe_transaction_service/safe_messages/serializers.py b/safe_transaction_service/safe_messages/serializers.py index 05b873abd..6da8ded26 100644 --- a/safe_transaction_service/safe_messages/serializers.py +++ b/safe_transaction_service/safe_messages/serializers.py @@ -16,7 +16,7 @@ from safe_transaction_service.utils.serializers import get_safe_owners from .models import SIGNATURE_LENGTH, SafeMessage, SafeMessageConfirmation -from .utils import get_hash_for_message, get_safe_message_hash_for_message +from .utils import get_hash_for_message, get_safe_message_hash_and_preimage_for_message # Request serializers @@ -109,7 +109,7 @@ def validate(self, attrs): signature = attrs["signature"] attrs["safe"] = safe_address message_hash = get_hash_for_message(message) - safe_message_hash = get_safe_message_hash_for_message( + safe_message_hash, safe_message_preimage = get_safe_message_hash_and_preimage_for_message( safe_address, message_hash ) attrs["message_hash"] = safe_message_hash @@ -120,7 +120,7 @@ def validate(self, attrs): ) safe_signatures = SafeSignature.parse_signature( - signature, safe_message_hash, safe_hash_preimage=message_hash + signature, safe_message_hash, safe_hash_preimage=safe_message_preimage ) owner, signature_type = self.get_valid_owner_from_signatures( safe_signatures, safe_address, None diff --git a/safe_transaction_service/safe_messages/utils.py b/safe_transaction_service/safe_messages/utils.py index 480c182c0..20b2d3db6 100644 --- a/safe_transaction_service/safe_messages/utils.py +++ b/safe_transaction_service/safe_messages/utils.py @@ -1,7 +1,7 @@ from typing import Any, Dict from eth_account.messages import defunct_hash_message -from eth_typing import ChecksumAddress, Hash32 +from eth_typing import ChecksumAddress, Hash32, HexStr from safe_eth.eth import get_auto_ethereum_client from safe_eth.eth.eip712 import eip712_encode_hash from safe_eth.safe import Safe @@ -15,8 +15,8 @@ def get_hash_for_message(message: str | Dict[str, Any]) -> Hash32: ) -def get_safe_message_hash_for_message( +def get_safe_message_hash_and_preimage_for_message( safe_address: ChecksumAddress, message_hash: Hash32 -) -> Hash32: +) -> Tuple[Hash32, HexStr]: safe = Safe(safe_address, get_auto_ethereum_client()) - return safe.get_message_hash(message_hash) + return safe.get_message_hash_and_preimage(message_hash)