Skip to content

Commit 73d8128

Browse files
committed
ecdsa: always enforce types in ecdsa
1 parent b5ff9db commit 73d8128

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

src/ecdsa.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,10 @@ function deterministicGenerateK (curve, hash, d, checkSig) {
7575
}
7676

7777
function sign (curve, hash, d) {
78+
typeForce('Curve', curve)
79+
typeForce('Buffer', hash)
80+
typeForce('BigInteger', d)
81+
7882
var e = BigInteger.fromBuffer(hash)
7983
var n = curve.n
8084
var G = curve.G
@@ -105,6 +109,11 @@ function sign (curve, hash, d) {
105109
}
106110

107111
function verify (curve, hash, signature, Q) {
112+
typeForce('Curve', curve)
113+
typeForce('Buffer', hash)
114+
typeForce('ECSignature', signature)
115+
typeForce('Point', Q)
116+
108117
var n = curve.n
109118
var G = curve.G
110119

@@ -153,6 +162,10 @@ function verify (curve, hash, signature, Q) {
153162
* http://www.secg.org/download/aid-780/sec1-v2.pdf
154163
*/
155164
function recoverPubKey (curve, e, signature, i) {
165+
typeForce('Curve', curve)
166+
typeForce('BigInteger', e)
167+
typeForce('ECSignature', signature)
168+
typeForce('Number', i)
156169
assert.strictEqual(i & 3, i, 'Recovery param is more than two bits')
157170

158171
var n = curve.n
@@ -206,6 +219,11 @@ function recoverPubKey (curve, e, signature, i) {
206219
* that resulted in a successful pubkey recovery.
207220
*/
208221
function calcPubKeyRecoveryParam (curve, e, signature, Q) {
222+
typeForce('Curve', curve)
223+
typeForce('BigInteger', e)
224+
typeForce('ECSignature', signature)
225+
typeForce('Point', Q)
226+
209227
for (var i = 0; i < 4; i++) {
210228
var Qprime = recoverPubKey(curve, e, signature, i)
211229

0 commit comments

Comments
 (0)