private static bool VerifySignature(string message, byte[] public_key_bytes, string signature) { var curve = SecNamedCurves.GetByName("secp256r1"); var domain = new ECDomainParameters(curve.Curve, curve.G, curve.N, curve.H); //var publicKeyBytes = Base58Encoding.Decode(publicKey); //var publicKeyBytes = Base58Encoding.DecodeWithCheckSum(publicKey); //var publicKeyBytes = Base58Encoding.DecodePublicKey(publicKey); var q = curve.Curve.DecodePoint(public_key_bytes); var keyParameters = new Org.BouncyCastle.Crypto.Parameters.ECPublicKeyParameters(q, domain); ISigner signer = SignerUtilities.GetSigner("SHA-256withECDSA"); signer.Init(false, keyParameters); signer.BlockUpdate(Encoding.UTF8.GetBytes(message), 0, message.Length); var signatureBytes = Base58Encoding.Decode(signature); var derSign = SignatureHelper.derSign(signatureBytes); return(signer.VerifySignature(derSign)); }
public SignatureHolder(string signature) { var buff = Base58Encoding.Decode(signature); var b1 = new byte[buff[0]]; var b2 = new byte[buff[1]]; Buffer.BlockCopy(buff, 2, b1, 0, b1.Length); Buffer.BlockCopy(buff, 2 + b1.Length, b2, 0, b2.Length); R = new BigInteger(b1); S = new BigInteger(b2); }
private static bool VerifySignature(string message, string AccountId, string signature) { try { var signatureBytes = Base58Encoding.Decode(signature); var publicKeyBytes = Base58Encoding.DecodeAccountId(AccountId); var result = Neo.Cryptography.Crypto.Default.VerifySignature(Encoding.UTF8.GetBytes(message), signatureBytes, publicKeyBytes); return(result); } catch (Exception ex) { _log?.LogError("VerifySignature failed: " + ex.Message); return(false); } }
private static bool VerifySignature(string message, string AccountId, string signature) { try { var signatureBytes = Base58Encoding.Decode(signature); var publicKeyBytes = Base58Encoding.DecodeAccountId(AccountId); //return Neo.Cryptography.Crypto.Default.VerifySignature(Encoding.UTF8.GetBytes(message), signatureBytes, publicKeyBytes); Neo.Cryptography.ECC.ECDsa sa = new Neo.Cryptography.ECC.ECDsa(Neo.Cryptography.ECC.ECPoint.FromBytes(publicKeyBytes, Neo.Cryptography.ECC.ECCurve.Secp256r1)); var sh = new SignatureHolder(signature); return(sa.VerifySignature(Encoding.ASCII.GetBytes(message), sh.R, sh.S)); } catch (Exception ex) { _log.LogError("VerifySignature failed: " + ex.Message); return(false); } }