public bool VerifySignature(BigInteger hash, ECSignature signature) { hash = Curve.TruncateHash(hash); var w = signature.S.ModInverse(Curve.Order); var u1 = (hash * w) % Curve.Order; var u2 = (signature.R * w) % Curve.Order; var p = Curve.G * u1 + Point * u2; return(BigIntegerExt.ModEqual(signature.R, p.X, Curve.Order)); }
public ECSignature Sign(BigInteger message) { message = Curve.TruncateHash(message); ECSignature signature = null; do { var random = BigIntegerExt.ModRandom(Curve.Order); signature = SignTruncated(message, random); } while (signature == null); return(signature); }
public bool VerifySignature(byte[] hash, ECSignature signature) { return(VerifySignature(BigIntegerExt.FromBigEndianBytes(hash), signature)); }