Web3WalletSignVerify.cs 1.0 KB

1234567891011121314151617181920212223242526272829
  1. using System.Text;
  2. using Nethereum.Signer;
  3. using Nethereum.Util;
  4. using UnityEngine;
  5. using Web3Unity.Scripts.Library.Web3Wallet;
  6. public class Web3WalletSignVerify : MonoBehaviour
  7. {
  8. // Start is called before the first frame update
  9. async void Start()
  10. {
  11. string message = "hello";
  12. string signature = await Web3Wallet.Sign(message);
  13. //verification
  14. SignVerifySignature(signature, message);
  15. }
  16. public void SignVerifySignature(string signatureString, string originalMessage)
  17. {
  18. string msg = "\x19" + "Ethereum Signed Message:\n" + originalMessage.Length + originalMessage;
  19. byte[] msgHash = new Sha3Keccack().CalculateHash(Encoding.UTF8.GetBytes(msg));
  20. EthECDSASignature signature = MessageSigner.ExtractEcdsaSignature(signatureString);
  21. EthECKey key = EthECKey.RecoverFromSignature(signature, msgHash);
  22. bool isValid = key.Verify(msgHash, signature);
  23. Debug.Log("Address Returned: " + key.GetPublicAddress());
  24. Debug.Log("Is Valid: " + isValid);
  25. }
  26. }