|
243 | 243 | PWStatus,
|
244 | 244 | PWStatusResponse,
|
245 | 245 | SetWalletResyncOnStartup,
|
| 246 | + SignMessageByAddress, |
| 247 | + SignMessageByAddressResponse, |
246 | 248 | SplitCoins,
|
247 | 249 | SplitCoinsResponse,
|
248 | 250 | SubmitTransactions,
|
@@ -2021,35 +2023,29 @@ async def verify_signature(self, request: VerifySignature) -> VerifySignatureRes
|
2021 | 2023 | else:
|
2022 | 2024 | return VerifySignatureResponse(isValid=False, error="Signature is invalid.")
|
2023 | 2025 |
|
2024 |
| - async def sign_message_by_address(self, request: dict[str, Any]) -> EndpointResult: |
| 2026 | + @marshal |
| 2027 | + async def sign_message_by_address(self, request: SignMessageByAddress) -> SignMessageByAddressResponse: |
2025 | 2028 | """
|
2026 | 2029 | Given a derived P2 address, sign the message by its private key.
|
2027 | 2030 | :param request:
|
2028 | 2031 | :return:
|
2029 | 2032 | """
|
2030 |
| - puzzle_hash: bytes32 = decode_puzzle_hash(request["address"]) |
2031 |
| - is_hex: bool = request.get("is_hex", False) |
2032 |
| - if isinstance(is_hex, str): |
2033 |
| - is_hex = True if is_hex.lower() == "true" else False |
2034 |
| - safe_mode: bool = request.get("safe_mode", True) |
2035 |
| - if isinstance(safe_mode, str): |
2036 |
| - safe_mode = True if safe_mode.lower() == "true" else False |
| 2033 | + puzzle_hash: bytes32 = decode_puzzle_hash(request.address) |
2037 | 2034 | mode: SigningMode = SigningMode.CHIP_0002
|
2038 |
| - if is_hex and safe_mode: |
| 2035 | + if request.is_hex and request.safe_mode: |
2039 | 2036 | mode = SigningMode.CHIP_0002_HEX_INPUT
|
2040 |
| - elif not is_hex and not safe_mode: |
| 2037 | + elif not request.is_hex and not request.safe_mode: |
2041 | 2038 | mode = SigningMode.BLS_MESSAGE_AUGMENTATION_UTF8_INPUT
|
2042 |
| - elif is_hex and not safe_mode: |
| 2039 | + elif request.is_hex and not request.safe_mode: |
2043 | 2040 | mode = SigningMode.BLS_MESSAGE_AUGMENTATION_HEX_INPUT
|
2044 | 2041 | pubkey, signature = await self.service.wallet_state_manager.main_wallet.sign_message(
|
2045 |
| - request["message"], puzzle_hash, mode |
| 2042 | + request.message, puzzle_hash, mode |
| 2043 | + ) |
| 2044 | + return SignMessageByAddressResponse( |
| 2045 | + pubkey=pubkey, |
| 2046 | + signature=signature, |
| 2047 | + signing_mode=mode.value, |
2046 | 2048 | )
|
2047 |
| - return { |
2048 |
| - "success": True, |
2049 |
| - "pubkey": str(pubkey), |
2050 |
| - "signature": str(signature), |
2051 |
| - "signing_mode": mode.value, |
2052 |
| - } |
2053 | 2049 |
|
2054 | 2050 | async def sign_message_by_id(self, request: dict[str, Any]) -> EndpointResult:
|
2055 | 2051 | """
|
|
0 commit comments