Socket
Socket
Sign inDemoInstall

ecdsa-sig-formatter

Package Overview
Dependencies
1
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.0.6 to 1.0.7

2

package.json
{
"name": "ecdsa-sig-formatter",
"version": "1.0.6",
"version": "1.0.7",
"description": "Translate ECDSA signatures between ASN.1/DER and JOSE-style concatenation",

@@ -5,0 +5,0 @@ "main": "src/ecdsa-sig-formatter.js",

@@ -63,4 +63,4 @@ 'use strict';

var r = signature.slice(offset, offset + rLength);
offset += r.length;
var rOffset = offset;
offset += rLength;

@@ -81,4 +81,4 @@ if (signature[offset++] !== ENCODED_TAG_INT) {

var s = signature.slice(offset);
offset += s.length;
var sOffset = offset;
offset += sLength;

@@ -89,11 +89,11 @@ if (offset !== inputLength) {

var rPadding = paramBytes - r.length,
sPadding = paramBytes - s.length;
var rPadding = paramBytes - rLength,
sPadding = paramBytes - sLength;
signature = new Buffer(rPadding + r.length + sPadding + s.length);
var dst = new Buffer(rPadding + rLength + sPadding + sLength);
for (offset = 0; offset < rPadding; ++offset) {
signature[offset] = 0;
dst[offset] = 0;
}
r.copy(signature, offset, Math.max(-rPadding, 0));
signature.copy(dst, offset, rOffset + Math.max(-rPadding, 0), rOffset + rLength);

@@ -103,19 +103,19 @@ offset = paramBytes;

for (var o = offset; offset < o + sPadding; ++offset) {
signature[offset] = 0;
dst[offset] = 0;
}
s.copy(signature, offset, Math.max(-sPadding, 0));
signature.copy(dst, offset, sOffset + Math.max(-sPadding, 0), sOffset + sLength);
signature = signature.toString('base64');
signature = base64Url(signature);
dst = dst.toString('base64');
dst = base64Url(dst);
return signature;
return dst;
}
function countPadding(buf) {
function countPadding(buf, start, stop) {
var padding = 0;
for (var n = buf.length; padding < n && buf[padding] === 0;) {
for (var n = stop; start + padding < n && buf[start + padding] === 0;) {
++padding;
}
var needsSign = buf[padding] >= MAX_OCTET;
var needsSign = buf[start + padding] >= MAX_OCTET;
if (needsSign) {

@@ -137,8 +137,6 @@ --padding;

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 rPadding = countPadding(signature, 0, paramBytes);
var sPadding = countPadding(signature, paramBytes, signature.length);
var rLength = paramBytes - rPadding;
var sLength = paramBytes - sPadding;

@@ -149,35 +147,35 @@ var rsBytes = 1 + 1 + rLength + 1 + 1 + sLength;

signature = new Buffer((shortLength ? 2 : 3) + rsBytes);
var dst = new Buffer((shortLength ? 2 : 3) + rsBytes);
var offset = 0;
signature[offset++] = ENCODED_TAG_SEQ;
dst[offset++] = ENCODED_TAG_SEQ;
if (shortLength) {
// Bit 8 has value "0"
// bits 7-1 give the length.
signature[offset++] = rsBytes;
dst[offset++] = rsBytes;
} else {
// Bit 8 of first octet has value "1"
// bits 7-1 give the number of additional length octets.
signature[offset++] = MAX_OCTET | 1;
dst[offset++] = MAX_OCTET | 1;
// length, base 256
signature[offset++] = rsBytes & 0xff;
dst[offset++] = rsBytes & 0xff;
}
signature[offset++] = ENCODED_TAG_INT;
signature[offset++] = rLength;
dst[offset++] = ENCODED_TAG_INT;
dst[offset++] = rLength;
if (rPadding < 0) {
signature[offset++] = 0;
offset += r.copy(signature, offset);
dst[offset++] = 0;
offset += signature.copy(dst, offset, 0, paramBytes);
} else {
offset += r.copy(signature, offset, rPadding);
offset += signature.copy(dst, offset, rPadding, paramBytes);
}
signature[offset++] = ENCODED_TAG_INT;
signature[offset++] = sLength;
dst[offset++] = ENCODED_TAG_INT;
dst[offset++] = sLength;
if (sPadding < 0) {
signature[offset++] = 0;
s.copy(signature, offset);
dst[offset++] = 0;
signature.copy(dst, offset, paramBytes);
} else {
s.copy(signature, offset, sPadding);
signature.copy(dst, offset, paramBytes + sPadding);
}
return signature;
return dst;
}

@@ -184,0 +182,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc