msg.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #!/usr/bin/env python3
  2. #
  3. # mmgen = Multi-Mode GENerator, a command-line cryptocurrency wallet
  4. # Copyright (C)2013-2022 The MMGen Project <mmgen@tuta.io>
  5. # Licensed under the GNU General Public License, Version 3:
  6. # https://www.gnu.org/licenses
  7. # Public project repositories:
  8. # https://github.com/mmgen/mmgen
  9. # https://gitlab.com/mmgen/mmgen
  10. """
  11. base_proto.ethereum.msg: Ethereum base protocol message signing classes
  12. """
  13. from ...msg import coin_msg
  14. class coin_msg(coin_msg):
  15. class base(coin_msg.base): pass
  16. class new(base,coin_msg.new): pass
  17. class completed(base,coin_msg.completed): pass
  18. class unsigned(completed,coin_msg.unsigned):
  19. async def do_sign(self,wif,message):
  20. from .misc import ec_sign_message_with_privkey
  21. return ec_sign_message_with_privkey( message, bytes.fromhex(wif) )
  22. class signed(completed,coin_msg.signed): pass
  23. class signed_online(signed,coin_msg.signed_online):
  24. async def do_verify(self,addr,sig,message):
  25. from ...tool.coin import tool_cmd
  26. from .misc import ec_recover_pubkey
  27. return tool_cmd(proto=self.proto).pubhex2addr(ec_recover_pubkey( message, sig )) == addr
  28. class exported_sigs(coin_msg.exported_sigs,signed_online): pass