using System.Collections.Generic;
using Nethereum.Hex.HexConvertors.Extensions;
namespace SigningAddress {
public int NewAccountID { get; set; }
public string? PubKey { get; set; }
public bool IsETH { get; set; }
public int UserID { get; set; }
public DateTimeOffset CreatedByUser { get; set; }
public static void Main()
@"{""NewAccountID"":5,""PubKey"":""BCT4ALtlDp9SkeQaN9SsLm2rcnhC8IAAwFqHbOYiR2U2vRusCalc2WTyvYjfzcVEv6zWXV+4WDXqgcwSCjVrUNo="",""IsETH"":true,""UserID"":4,""NodeID"":1,""CreatedByUser"":""2022-07-19T02:31:42.4757528Z""}";
Data? dataObject = JsonSerializer.Deserialize<Data>(jsonString);
Console.WriteLine($"Object: {jsonString}");
var address = "0xd864e8c9Eb1525a759503F03aCF03149d344E671";
var privateKey = "0xfaa4bff60e5aca00877a3511da0c56f4caa3047e1987df5879ce4ed3a8c373ea";
Console.WriteLine($"Address {address} with private key: {privateKey}");
var messageToSign = "wee test message 18/09/2017 02:55PM";
Console.WriteLine($"Message to be sign: {messageToSign})");
var signer = new EthereumMessageSigner();
var signature = signer.EncodeUTF8AndSign(messageToSign, new EthECKey(privateKey));
Console.WriteLine($"Signature: {signature}");
var signatureBase64 = System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(signature.Substring(2)));
Console.WriteLine($"Signature in base64: {signatureBase64}");
var addressRecovered = signer.EncodeUTF8AndEcRecover(messageToSign, signature);
Console.WriteLine($"Address recovered: {addressRecovered}");