ecdsa: always enforce types in ecdsa
This commit is contained in:
parent
b5ff9db8fd
commit
73d8128f0f
1 changed files with 18 additions and 0 deletions
18
src/ecdsa.js
18
src/ecdsa.js
|
@ -75,6 +75,10 @@ function deterministicGenerateK (curve, hash, d, checkSig) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function sign (curve, hash, d) {
|
function sign (curve, hash, d) {
|
||||||
|
typeForce('Curve', curve)
|
||||||
|
typeForce('Buffer', hash)
|
||||||
|
typeForce('BigInteger', d)
|
||||||
|
|
||||||
var e = BigInteger.fromBuffer(hash)
|
var e = BigInteger.fromBuffer(hash)
|
||||||
var n = curve.n
|
var n = curve.n
|
||||||
var G = curve.G
|
var G = curve.G
|
||||||
|
@ -105,6 +109,11 @@ function sign (curve, hash, d) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function verify (curve, hash, signature, Q) {
|
function verify (curve, hash, signature, Q) {
|
||||||
|
typeForce('Curve', curve)
|
||||||
|
typeForce('Buffer', hash)
|
||||||
|
typeForce('ECSignature', signature)
|
||||||
|
typeForce('Point', Q)
|
||||||
|
|
||||||
var n = curve.n
|
var n = curve.n
|
||||||
var G = curve.G
|
var G = curve.G
|
||||||
|
|
||||||
|
@ -153,6 +162,10 @@ function verify (curve, hash, signature, Q) {
|
||||||
* http://www.secg.org/download/aid-780/sec1-v2.pdf
|
* http://www.secg.org/download/aid-780/sec1-v2.pdf
|
||||||
*/
|
*/
|
||||||
function recoverPubKey (curve, e, signature, i) {
|
function recoverPubKey (curve, e, signature, i) {
|
||||||
|
typeForce('Curve', curve)
|
||||||
|
typeForce('BigInteger', e)
|
||||||
|
typeForce('ECSignature', signature)
|
||||||
|
typeForce('Number', i)
|
||||||
assert.strictEqual(i & 3, i, 'Recovery param is more than two bits')
|
assert.strictEqual(i & 3, i, 'Recovery param is more than two bits')
|
||||||
|
|
||||||
var n = curve.n
|
var n = curve.n
|
||||||
|
@ -206,6 +219,11 @@ function recoverPubKey (curve, e, signature, i) {
|
||||||
* that resulted in a successful pubkey recovery.
|
* that resulted in a successful pubkey recovery.
|
||||||
*/
|
*/
|
||||||
function calcPubKeyRecoveryParam (curve, e, signature, Q) {
|
function calcPubKeyRecoveryParam (curve, e, signature, Q) {
|
||||||
|
typeForce('Curve', curve)
|
||||||
|
typeForce('BigInteger', e)
|
||||||
|
typeForce('ECSignature', signature)
|
||||||
|
typeForce('Point', Q)
|
||||||
|
|
||||||
for (var i = 0; i < 4; i++) {
|
for (var i = 0; i < 4; i++) {
|
||||||
var Qprime = recoverPubKey(curve, e, signature, i)
|
var Qprime = recoverPubKey(curve, e, signature, i)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue