/// <summary>VerifySign verify ASN.1 DER encoded signature using given public key with data</summary> public static bool VerifySign(AccountPublicKey publicKey, byte[] sign, byte[] data) { var decodedSign = Asn1DecodeSign(sign); var ecdsa = loadECDSAFromPublicKey(publicKey); return(ecdsa.VerifyHash(data, decodedSign)); }
// Set the data path of the account address and private key /// <summary>Set the data path of the account address and private key</summary> /// <param name="path">the folder contains user's address and private key</param> /// <returns>return true if set success</returns> public bool SetAccountByPath(string path) { try { using (StreamReader sr = new StreamReader(path + "/address")) { var addr = sr.ReadToEnd(); this.account.Address = addr; } using (StreamReader sr = new StreamReader(path + "/private.key")) { var privkeyStr = sr.ReadToEnd(); var privkey = new AccountPrivateKey(); privkey.ParseJSON(privkeyStr); this.account.PrivateKey = privkey; } using (StreamReader sr = new StreamReader(path + "/public.key")) { var pubkeyStr = sr.ReadToEnd(); var pubkey = new AccountPublicKey(); pubkey.ParseJSON(pubkeyStr); this.account.PublicKey = pubkey; } } catch (Exception e) { Console.WriteLine("Exception in SetAccountByPath, err=" + e); return(false); } return(true); }
private static ECDsa loadECDSAFromPublicKey(AccountPublicKey publicKey) { var param = new ECParameters { Curve = ECCurve.NamedCurves.nistP256, Q = new ECPoint { X = XConvert.GetECBytesFromBigInteger(publicKey.X), Y = XConvert.GetECBytesFromBigInteger(publicKey.Y), }, }; return(ECDsa.Create(param)); }
private Pb.UtxoOutput SelectUTXO(string bcname, string address, AccountPublicKey pubkey, BigInteger amount) { var reqData = new Pb.UtxoInput() { Header = GetDefaultHeader(), Bcname = bcname, Address = address, TotalNeed = amount.ToString(), NeedLock = false, }; var res = client.SelectUTXO(reqData); if (res.Header.Error != Pb.XChainErrorEnum.Success) { Console.WriteLine("Error in select UTXO, errcode=" + (int)res.Header.Error + ", logid=" + reqData.Header.Logid); return(null); } return(res); }