|
1 | 1 | import sys |
2 | 2 |
|
3 | | -from eth_keys.datatypes import PublicKey |
4 | | -from web3 import Web3 |
5 | | - |
| 3 | +from celo_sdk.celo_account.account import Account |
| 4 | +from celo_sdk.celo_account.messages import encode_defunct |
6 | 5 | from celo_sdk.celo_account.datastructures import SignedMessage |
7 | | -from celo_sdk.utils import hash_utils |
8 | 6 | from celo_sdk.contracts.base_wrapper import BaseWrapper |
9 | 7 | from celo_sdk.registry import Registry |
| 8 | +from celo_sdk.utils import hash_utils |
| 9 | + |
| 10 | +from eth_keys.datatypes import PublicKey |
| 11 | +from web3 import Web3 |
10 | 12 |
|
11 | 13 |
|
12 | 14 | class Accounts(BaseWrapper): |
@@ -234,8 +236,8 @@ def authorize_validator_signer(self, signer: str, proof_of_signing_key_possessio |
234 | 236 | message = self.web3.soliditySha3(['address'], [account]).hex() |
235 | 237 | prefixed_message_hash = hash_utils.hash_message_with_prefix( |
236 | 238 | self.web3, message) |
237 | | - pub_key = PublicKey.recover_from_msg_hash( |
238 | | - prefixed_message_hash, proof_of_signing_key_possession).to_hex() |
| 239 | + prefixed_message_hash = encode_defunct(hexstr=prefixed_message_hash) |
| 240 | + pub_key = Account.recover_hash_to_pub(prefixed_message_hash, vrs=proof_of_signing_key_possession.vrs).to_hex() |
239 | 241 | func_call = self._contract.functions.authorizeValidatorSignerWithPublicKey( |
240 | 242 | signer, proof_of_signing_key_possession.v, self.web3.toBytes(proof_of_signing_key_possession.r), self.web3.toBytes(proof_of_signing_key_possession.s), pub_key) |
241 | 243 | return self.__wallet.send_transaction(func_call) |
@@ -264,17 +266,20 @@ def authorize_validator_signer_and_bls(self, signer: str, proof_of_signing_key_p |
264 | 266 | message = self.web3.soliditySha3(['address'], [account]).hex() |
265 | 267 | prefixed_message_hash = hash_utils.hash_message_with_prefix( |
266 | 268 | self.web3, message) |
267 | | - pub_key = PublicKey.recover_from_msg_hash( |
268 | | - prefixed_message_hash, proof_of_signing_key_possession).to_hex() |
| 269 | + prefixed_message_hash = encode_defunct(hexstr=prefixed_message_hash) |
| 270 | + pub_key = Account.recover_hash_to_pub(prefixed_message_hash, vrs=proof_of_signing_key_possession.vrs).to_hex() |
269 | 271 |
|
270 | 272 | func_call = self._contract.functions.authorizeValidatorSignerWithKeys(signer, proof_of_signing_key_possession.v, self.web3.toBytes(proof_of_signing_key_possession.r), |
271 | 273 | self.web3.toBytes(proof_of_signing_key_possession.s), pub_key, hash_utils.is_leading_with_0x(bls_public_key), hash_utils.is_leading_with_0x(bls_pop)) |
272 | 274 | return self.__wallet.send_transaction(func_call) |
273 | 275 |
|
274 | 276 | def generate_proof_of_key_possession(self, account: str, signer: str) -> SignedMessage: |
275 | 277 | message = self.web3.soliditySha3(['address'], [account]).hex() |
| 278 | + prefixed_message_hash = hash_utils.hash_message_with_prefix( |
| 279 | + self.web3, message) |
| 280 | + prefixed_message_hash = encode_defunct(hexstr=prefixed_message_hash) |
276 | 281 | signer_acc = self.__wallet.accounts[signer] |
277 | | - signature = signer_acc.sign_message(message) |
| 282 | + signature = signer_acc.sign_message(prefixed_message_hash) |
278 | 283 | return signature |
279 | 284 |
|
280 | 285 | def get_name(self, account: str, block_number: int = None) -> str: |
|
0 commit comments