Skip to content

Commit a221bd1

Browse files
committed
ecdsa: split steps up further as per sec1-v2.pdf
1 parent 4f8c7f4 commit a221bd1

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

src/ecdsa.js

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -115,21 +115,27 @@ function verifyRaw (curve, e, signature, Q) {
115115
if (r.signum() <= 0 || r.compareTo(n) >= 0) return false
116116
if (s.signum() <= 0 || s.compareTo(n) >= 0) return false
117117

118-
// c = s^-1 mod n
119-
var c = s.modInverse(n)
118+
// Compute s^-1
119+
var sInv = s.modInverse(n)
120120

121121
// 1.4.4 Compute u1 = es^−1 mod n
122122
// u2 = rs^−1 mod n
123-
var u1 = e.multiply(c).mod(n)
124-
var u2 = r.multiply(c).mod(n)
123+
var u1 = e.multiply(sInv).mod(n)
124+
var u2 = r.multiply(sInv).mod(n)
125125

126-
// 1.4.5 Compute R = (xR, yR) = u1G + u2Q
126+
// 1.4.5 Compute R = (xR, yR)
127+
// R = u1G + u2Q
127128
var R = G.multiplyTwo(u1, Q, u2)
128-
var v = R.affineX.mod(n)
129129

130130
// 1.4.5 (cont.) Enforce R is not at infinity
131131
if (curve.isInfinity(R)) return false
132132

133+
// 1.4.6 Convert the field element R.x to an integer
134+
var xR = R.affineX
135+
136+
// 1.4.7 Set v = xR mod n
137+
var v = xR.mod(n)
138+
133139
// 1.4.8 If v = r, output "valid", and if v != r, output "invalid"
134140
return v.equals(r)
135141
}

0 commit comments

Comments
 (0)