aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/gnunet/util/crypto/EcdsaSignature.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/gnunet/util/crypto/EcdsaSignature.java')
-rw-r--r--src/main/java/org/gnunet/util/crypto/EcdsaSignature.java9
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);