Example #1
0
        public bool VerifySignature(ECPoint publicKey, byte[] hash, BigInteger r, BigInteger s)
        {
            if (r >= Secp256k1.N || r.IsZero || s >= Secp256k1.N || s.IsZero)
            {
                return(false);
            }

            var z    = hash.ToBigIntegerUnsigned(true);
            var w    = s.ModInverse(Secp256k1.N);
            var u1   = (z * w) % Secp256k1.N;
            var u2   = (r * w) % Secp256k1.N;
            var pt   = Secp256k1.G.Multiply(u1).Add(publicKey.Multiply(u2)).Normalize();
            var pmod = pt.X % Secp256k1.N;

            return(pmod == r);
        }
Example #2
0
        public bool VerifySignature(ECPoint publicKey, byte[] hash, BigInteger r, BigInteger s)
        {
            if (r >= Secp256k1.N || r.IsZero || s >= Secp256k1.N || s.IsZero)
            {
                return false;
            }

            var z = hash.ToBigIntegerUnsigned(true);
            var w = s.ModInverse(Secp256k1.N);
            var u1 = (z * w) % Secp256k1.N;
            var u2 = (r * w) % Secp256k1.N;
            var pt = Secp256k1.G.Multiply(u1).Add(publicKey.Multiply(u2));
            var pmod = pt.X % Secp256k1.N;

            return pmod == r;
        }