ecdsa-sig-formatter
Advanced tools
Comparing version 1.0.5 to 1.0.6
{ | ||
"name": "ecdsa-sig-formatter", | ||
"version": "1.0.5", | ||
"version": "1.0.6", | ||
"description": "Translate ECDSA signatures between ASN.1/DER and JOSE-style concatenation", | ||
@@ -36,11 +36,11 @@ "main": "src/ecdsa-sig-formatter.js", | ||
"bench": "^0.3.6", | ||
"chai": "^3.4.1", | ||
"coveralls": "^2.11.6", | ||
"elliptic": "^6.1.0", | ||
"eslint": "^1.10.3", | ||
"eslint-config-brightspace": "^0.1.0", | ||
"istanbul": "^0.4.2", | ||
"jwk-to-pem": "^1.2.4", | ||
"mocha": "^2.3.4" | ||
"chai": "^3.5.0", | ||
"coveralls": "^2.11.9", | ||
"elliptic": "^6.3.1", | ||
"eslint": "^2.12.0", | ||
"eslint-config-brightspace": "^0.2.1", | ||
"istanbul": "^0.4.3", | ||
"jwk-to-pem": "^1.2.5", | ||
"mocha": "^2.5.3" | ||
} | ||
} |
@@ -110,3 +110,3 @@ 'use strict'; | ||
function reduceBuffer(buf) { | ||
function countPadding(buf) { | ||
var padding = 0; | ||
@@ -120,19 +120,5 @@ for (var n = buf.length; padding < n && buf[padding] === 0;) { | ||
--padding; | ||
if (padding < 0) { | ||
var old = buf; | ||
buf = new Buffer(1 + buf.length); | ||
buf[0] = 0; | ||
old.copy(buf, 1); | ||
return buf; | ||
} | ||
} | ||
if (padding === 0) { | ||
return buf; | ||
} | ||
buf = buf.slice(padding); | ||
return buf; | ||
return padding; | ||
} | ||
@@ -149,6 +135,10 @@ | ||
var r = reduceBuffer(signature.slice(0, paramBytes)); | ||
var s = reduceBuffer(signature.slice(paramBytes)); | ||
var r = signature.slice(0, paramBytes); | ||
var s = signature.slice(paramBytes); | ||
var rPadding = countPadding(r); | ||
var sPadding = countPadding(s); | ||
var rLength = r.length - rPadding; | ||
var sLength = s.length - sPadding; | ||
var rsBytes = 1 + 1 + r.length + 1 + 1 + s.length; | ||
var rsBytes = 1 + 1 + rLength + 1 + 1 + sLength; | ||
@@ -173,8 +163,17 @@ var shortLength = rsBytes < MAX_OCTET; | ||
signature[offset++] = ENCODED_TAG_INT; | ||
signature[offset++] = r.length; | ||
r.copy(signature, offset); | ||
offset += r.length; | ||
signature[offset++] = rLength; | ||
if (rPadding < 0) { | ||
signature[offset++] = 0; | ||
offset += r.copy(signature, offset); | ||
} else { | ||
offset += r.copy(signature, offset, rPadding); | ||
} | ||
signature[offset++] = ENCODED_TAG_INT; | ||
signature[offset++] = s.length; | ||
s.copy(signature, offset); | ||
signature[offset++] = sLength; | ||
if (sPadding < 0) { | ||
signature[offset++] = 0; | ||
s.copy(signature, offset); | ||
} else { | ||
s.copy(signature, offset, sPadding); | ||
} | ||
@@ -181,0 +180,0 @@ return signature; |
19728
159