diff options
Diffstat (limited to 'src/main/java/org/gnunet/util/crypto/EcdsaSignature.java')
-rw-r--r-- | src/main/java/org/gnunet/util/crypto/EcdsaSignature.java | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/main/java/org/gnunet/util/crypto/EcdsaSignature.java b/src/main/java/org/gnunet/util/crypto/EcdsaSignature.java index 9e01a6f..28dfb3e 100644 --- a/src/main/java/org/gnunet/util/crypto/EcdsaSignature.java +++ b/src/main/java/org/gnunet/util/crypto/EcdsaSignature.java | |||
@@ -80,9 +80,16 @@ public class EcdsaSignature implements Message { | |||
80 | HashCode h = HashCode.hash(m); | 80 | HashCode h = HashCode.hash(m); |
81 | BigInteger z = new BigInteger(1, h.data); | 81 | BigInteger z = new BigInteger(1, h.data); |
82 | BigInteger sCoeff = Ed25519.decodeScalar(s); | 82 | BigInteger sCoeff = Ed25519.decodeScalar(s); |
83 | |||
84 | if (sCoeff.equals(BigInteger.ZERO) || sCoeff.compareTo(Ed25519.l) >= 0) { | ||
85 | return false; | ||
86 | } | ||
87 | |||
83 | BigInteger rCoeff = Ed25519.decodeScalar(r); | 88 | BigInteger rCoeff = Ed25519.decodeScalar(r); |
89 | if (rCoeff.equals(BigInteger.ZERO) || rCoeff.compareTo(Ed25519.l) >= 0) { | ||
90 | return false; | ||
91 | } | ||
84 | 92 | ||
85 | // FIXME: check range of s and r | ||
86 | BigInteger w = sCoeff.modInverse(Ed25519.l); | 93 | BigInteger w = sCoeff.modInverse(Ed25519.l); |
87 | BigInteger u1 = z.multiply(w).mod(Ed25519.l); | 94 | BigInteger u1 = z.multiply(w).mod(Ed25519.l); |
88 | BigInteger u2 = rCoeff.multiply(w).mod(Ed25519.l); | 95 | BigInteger u2 = rCoeff.multiply(w).mod(Ed25519.l); |