New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@stablelib/ed25519

Package Overview
Dependencies
Maintainers
1
Versions
16
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@stablelib/ed25519 - npm Package Compare versions

Comparing version 1.0.2 to 1.0.3

22

lib/ed25519.bench.js

@@ -5,14 +5,14 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
var ed25519_1 = require("./ed25519");
var benchmark_1 = require("@stablelib/benchmark");
var k = ed25519_1.generateKeyPair();
var buf = new Uint8Array(256);
var seed = k.secretKey.subarray(0, 32);
var sig = ed25519_1.sign(k.secretKey, buf);
var badsig = new Uint8Array(sig);
const ed25519_1 = require("./ed25519");
const benchmark_1 = require("@stablelib/benchmark");
const k = (0, ed25519_1.generateKeyPair)();
const buf = new Uint8Array(256);
const seed = k.secretKey.subarray(0, 32);
const sig = (0, ed25519_1.sign)(k.secretKey, buf);
const badsig = new Uint8Array(sig);
badsig[0] = 1;
benchmark_1.report("ed25519.generateKeyPairFromSeed", benchmark_1.benchmark(function () { return ed25519_1.generateKeyPairFromSeed(seed); }));
benchmark_1.report("ed25519.sign", benchmark_1.benchmark(function () { return ed25519_1.sign(k.secretKey, buf); }));
benchmark_1.report("ed25519.verify", benchmark_1.benchmark(function () { return ed25519_1.verify(k.publicKey, buf, sig); }));
benchmark_1.report("ed25519.verify (bad)", benchmark_1.benchmark(function () { return ed25519_1.verify(k.publicKey, buf, badsig); }));
(0, benchmark_1.report)("ed25519.generateKeyPairFromSeed", (0, benchmark_1.benchmark)(() => (0, ed25519_1.generateKeyPairFromSeed)(seed)));
(0, benchmark_1.report)("ed25519.sign", (0, benchmark_1.benchmark)(() => (0, ed25519_1.sign)(k.secretKey, buf)));
(0, benchmark_1.report)("ed25519.verify", (0, benchmark_1.benchmark)(() => (0, ed25519_1.verify)(k.publicKey, buf, sig)));
(0, benchmark_1.report)("ed25519.verify (bad)", (0, benchmark_1.benchmark)(() => (0, ed25519_1.verify)(k.publicKey, buf, badsig)));
//# sourceMappingURL=ed25519.bench.js.map

@@ -5,8 +5,9 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.convertSecretKeyToX25519 = exports.convertPublicKeyToX25519 = exports.verify = exports.sign = exports.extractPublicKeyFromSecretKey = exports.generateKeyPair = exports.generateKeyPairFromSeed = exports.SEED_LENGTH = exports.SECRET_KEY_LENGTH = exports.PUBLIC_KEY_LENGTH = exports.SIGNATURE_LENGTH = void 0;
/**
* Package ed25519 implements Ed25519 public-key signature algorithm.
*/
var random_1 = require("@stablelib/random");
var sha512_1 = require("@stablelib/sha512");
var wipe_1 = require("@stablelib/wipe");
const random_1 = require("@stablelib/random");
const sha512_1 = require("@stablelib/sha512");
const wipe_1 = require("@stablelib/wipe");
exports.SIGNATURE_LENGTH = 64;

@@ -23,5 +24,5 @@ exports.PUBLIC_KEY_LENGTH = 32;

function gf(init) {
var r = new Float64Array(16);
const r = new Float64Array(16);
if (init) {
for (var i = 0; i < init.length; i++) {
for (let i = 0; i < init.length; i++) {
r[i] = init[i];

@@ -33,23 +34,23 @@ }

// Base point.
var _9 = new Uint8Array(32);
const _9 = new Uint8Array(32);
_9[0] = 9;
var gf0 = gf();
var gf1 = gf([1]);
var D = gf([
const gf0 = gf();
const gf1 = gf([1]);
const D = gf([
0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070,
0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203
]);
var D2 = gf([
const D2 = gf([
0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0,
0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406
]);
var X = gf([
const X = gf([
0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c,
0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169
]);
var Y = gf([
const Y = gf([
0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666,
0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666
]);
var I = gf([
const I = gf([
0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43,

@@ -59,3 +60,3 @@ 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83

function set25519(r, a) {
for (var i = 0; i < 16; i++) {
for (let i = 0; i < 16; i++) {
r[i] = a[i] | 0;

@@ -65,5 +66,5 @@ }

function car25519(o) {
var c = 1;
for (var i = 0; i < 16; i++) {
var v = o[i] + c + 65535;
let c = 1;
for (let i = 0; i < 16; i++) {
let v = o[i] + c + 65535;
c = Math.floor(v / 65536);

@@ -75,5 +76,5 @@ o[i] = v - c * 65536;

function sel25519(p, q, b) {
var c = ~(b - 1);
for (var i = 0; i < 16; i++) {
var t = c & (p[i] ^ q[i]);
const c = ~(b - 1);
for (let i = 0; i < 16; i++) {
const t = c & (p[i] ^ q[i]);
p[i] ^= t;

@@ -84,5 +85,5 @@ q[i] ^= t;

function pack25519(o, n) {
var m = gf();
var t = gf();
for (var i = 0; i < 16; i++) {
const m = gf();
const t = gf();
for (let i = 0; i < 16; i++) {
t[i] = n[i];

@@ -93,5 +94,5 @@ }

car25519(t);
for (var j = 0; j < 2; j++) {
for (let j = 0; j < 2; j++) {
m[0] = t[0] - 0xffed;
for (var i = 1; i < 15; i++) {
for (let i = 1; i < 15; i++) {
m[i] = t[i] - 0xffff - ((m[i - 1] >> 16) & 1);

@@ -101,7 +102,7 @@ m[i - 1] &= 0xffff;

m[15] = t[15] - 0x7fff - ((m[14] >> 16) & 1);
var b = (m[15] >> 16) & 1;
const b = (m[15] >> 16) & 1;
m[14] &= 0xffff;
sel25519(t, m, 1 - b);
}
for (var i = 0; i < 16; i++) {
for (let i = 0; i < 16; i++) {
o[2 * i] = t[i] & 0xff;

@@ -112,4 +113,4 @@ o[2 * i + 1] = t[i] >> 8;

function verify32(x, y) {
var d = 0;
for (var i = 0; i < 32; i++) {
let d = 0;
for (let i = 0; i < 32; i++) {
d |= x[i] ^ y[i];

@@ -120,4 +121,4 @@ }

function neq25519(a, b) {
var c = new Uint8Array(32);
var d = new Uint8Array(32);
const c = new Uint8Array(32);
const d = new Uint8Array(32);
pack25519(c, a);

@@ -128,3 +129,3 @@ pack25519(d, b);

function par25519(a) {
var d = new Uint8Array(32);
const d = new Uint8Array(32);
pack25519(d, a);

@@ -134,3 +135,3 @@ return d[0] & 1;

function unpack25519(o, n) {
for (var i = 0; i < 16; i++) {
for (let i = 0; i < 16; i++) {
o[i] = n[2 * i] + (n[2 * i + 1] << 8);

@@ -141,3 +142,3 @@ }

function add(o, a, b) {
for (var i = 0; i < 16; i++) {
for (let i = 0; i < 16; i++) {
o[i] = a[i] + b[i];

@@ -147,3 +148,3 @@ }

function sub(o, a, b) {
for (var i = 0; i < 16; i++) {
for (let i = 0; i < 16; i++) {
o[i] = a[i] - b[i];

@@ -153,3 +154,3 @@ }

function mul(o, a, b) {
var v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];
let v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];
v = a[0];

@@ -566,4 +567,4 @@ t0 += v * b0;

function inv25519(o, i) {
var c = gf();
var a;
const c = gf();
let a;
for (a = 0; a < 16; a++) {

@@ -583,4 +584,4 @@ c[a] = i[a];

function pow2523(o, i) {
var c = gf();
var a;
const c = gf();
let a;
for (a = 0; a < 16; a++) {

@@ -600,3 +601,3 @@ c[a] = i[a];

function edadd(p, q) {
var a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf(), g = gf(), h = gf(), t = gf();
const a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf(), g = gf(), h = gf(), t = gf();
sub(a, p[1], p[0]);

@@ -622,3 +623,3 @@ sub(t, q[1], q[0]);

function cswap(p, q, b) {
for (var i = 0; i < 4; i++) {
for (let i = 0; i < 4; i++) {
sel25519(p[i], q[i], b);

@@ -628,3 +629,3 @@ }

function pack(r, p) {
var tx = gf(), ty = gf(), zi = gf();
const tx = gf(), ty = gf(), zi = gf();
inv25519(zi, p[2]);

@@ -641,4 +642,4 @@ mul(tx, p[0], zi);

set25519(p[3], gf0);
for (var i = 255; i >= 0; --i) {
var b = (s[(i / 8) | 0] >> (i & 7)) & 1;
for (let i = 255; i >= 0; --i) {
const b = (s[(i / 8) | 0] >> (i & 7)) & 1;
cswap(p, q, b);

@@ -651,3 +652,3 @@ edadd(q, p);

function scalarbase(p, s) {
var q = [gf(), gf(), gf(), gf()];
const q = [gf(), gf(), gf(), gf()];
set25519(q[0], X);

@@ -662,18 +663,18 @@ set25519(q[1], Y);

if (seed.length !== exports.SEED_LENGTH) {
throw new Error("ed25519: seed must be " + exports.SEED_LENGTH + " bytes");
throw new Error(`ed25519: seed must be ${exports.SEED_LENGTH} bytes`);
}
var d = sha512_1.hash(seed);
const d = (0, sha512_1.hash)(seed);
d[0] &= 248;
d[31] &= 127;
d[31] |= 64;
var publicKey = new Uint8Array(32);
var p = [gf(), gf(), gf(), gf()];
const publicKey = new Uint8Array(32);
const p = [gf(), gf(), gf(), gf()];
scalarbase(p, d);
pack(publicKey, p);
var secretKey = new Uint8Array(64);
const secretKey = new Uint8Array(64);
secretKey.set(seed);
secretKey.set(publicKey, 32);
return {
publicKey: publicKey,
secretKey: secretKey
publicKey,
secretKey
};

@@ -683,5 +684,5 @@ }

function generateKeyPair(prng) {
var seed = random_1.randomBytes(32, prng);
var result = generateKeyPairFromSeed(seed);
wipe_1.wipe(seed);
const seed = (0, random_1.randomBytes)(32, prng);
const result = generateKeyPairFromSeed(seed);
(0, wipe_1.wipe)(seed);
return result;

@@ -692,3 +693,3 @@ }

if (secretKey.length !== exports.SECRET_KEY_LENGTH) {
throw new Error("ed25519: secret key must be " + exports.SECRET_KEY_LENGTH + " bytes");
throw new Error(`ed25519: secret key must be ${exports.SECRET_KEY_LENGTH} bytes`);
}

@@ -698,3 +699,3 @@ return new Uint8Array(secretKey.subarray(32));

exports.extractPublicKeyFromSecretKey = extractPublicKeyFromSecretKey;
var L = new Float64Array([
const L = new Float64Array([
0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2,

@@ -704,6 +705,6 @@ 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10

function modL(r, x) {
var carry;
var i;
var j;
var k;
let carry;
let i;
let j;
let k;
for (i = 63; i >= 32; --i) {

@@ -734,7 +735,7 @@ carry = 0;

function reduce(r) {
var x = new Float64Array(64);
for (var i = 0; i < 64; i++) {
const x = new Float64Array(64);
for (let i = 0; i < 64; i++) {
x[i] = r[i];
}
for (var i = 0; i < 64; i++) {
for (let i = 0; i < 64; i++) {
r[i] = 0;

@@ -746,14 +747,14 @@ }

function sign(secretKey, message) {
var x = new Float64Array(64);
var p = [gf(), gf(), gf(), gf()];
var d = sha512_1.hash(secretKey.subarray(0, 32));
const x = new Float64Array(64);
const p = [gf(), gf(), gf(), gf()];
const d = (0, sha512_1.hash)(secretKey.subarray(0, 32));
d[0] &= 248;
d[31] &= 127;
d[31] |= 64;
var signature = new Uint8Array(64);
const signature = new Uint8Array(64);
signature.set(d.subarray(32), 32);
var hs = new sha512_1.SHA512();
const hs = new sha512_1.SHA512();
hs.update(signature.subarray(32));
hs.update(message);
var r = hs.digest();
const r = hs.digest();
hs.clean();

@@ -767,9 +768,9 @@ reduce(r);

hs.update(message);
var h = hs.digest();
const h = hs.digest();
reduce(h);
for (var i = 0; i < 32; i++) {
for (let i = 0; i < 32; i++) {
x[i] = r[i];
}
for (var i = 0; i < 32; i++) {
for (var j = 0; j < 32; j++) {
for (let i = 0; i < 32; i++) {
for (let j = 0; j < 32; j++) {
x[i + j] += h[i] * d[j];

@@ -783,3 +784,3 @@ }

function unpackneg(r, p) {
var t = gf(), chk = gf(), num = gf(), den = gf(), den2 = gf(), den4 = gf(), den6 = gf();
const t = gf(), chk = gf(), num = gf(), den = gf(), den2 = gf(), den4 = gf(), den6 = gf();
set25519(r[2], gf1);

@@ -818,7 +819,7 @@ unpack25519(r[1], p);

function verify(publicKey, message, signature) {
var t = new Uint8Array(32);
var p = [gf(), gf(), gf(), gf()];
var q = [gf(), gf(), gf(), gf()];
const t = new Uint8Array(32);
const p = [gf(), gf(), gf(), gf()];
const q = [gf(), gf(), gf(), gf()];
if (signature.length !== exports.SIGNATURE_LENGTH) {
throw new Error("ed25519: signature must be " + exports.SIGNATURE_LENGTH + " bytes");
throw new Error(`ed25519: signature must be ${exports.SIGNATURE_LENGTH} bytes`);
}

@@ -828,7 +829,7 @@ if (unpackneg(q, publicKey)) {

}
var hs = new sha512_1.SHA512();
const hs = new sha512_1.SHA512();
hs.update(signature.subarray(0, 32));
hs.update(publicKey);
hs.update(message);
var h = hs.digest();
const h = hs.digest();
reduce(h);

@@ -851,3 +852,3 @@ scalarmult(p, q, h);

function convertPublicKeyToX25519(publicKey) {
var q = [gf(), gf(), gf(), gf()];
let q = [gf(), gf(), gf(), gf()];
if (unpackneg(q, publicKey)) {

@@ -857,5 +858,5 @@ throw new Error("Ed25519: invalid public key");

// Formula: montgomeryX = (edwardsY + 1)*inverse(1 - edwardsY) mod p
var a = gf();
var b = gf();
var y = q[1];
let a = gf();
let b = gf();
let y = q[1];
add(a, gf1, y);

@@ -865,3 +866,3 @@ sub(b, gf1, y);

mul(a, a, b);
var z = new Uint8Array(32);
let z = new Uint8Array(32);
pack25519(z, a);

@@ -875,8 +876,8 @@ return z;

function convertSecretKeyToX25519(secretKey) {
var d = sha512_1.hash(secretKey.subarray(0, 32));
const d = (0, sha512_1.hash)(secretKey.subarray(0, 32));
d[0] &= 248;
d[31] &= 127;
d[31] |= 64;
var o = new Uint8Array(d.subarray(0, 32));
wipe_1.wipe(d);
const o = new Uint8Array(d.subarray(0, 32));
(0, wipe_1.wipe)(d);
return o;

@@ -883,0 +884,0 @@ }

{
"name": "@stablelib/ed25519",
"version": "1.0.2",
"version": "1.0.3",
"description": "Ed25519 public-key signature (EdDSA with Curve25519)",

@@ -22,3 +22,3 @@ "main": "./lib/ed25519.js",

"dependencies": {
"@stablelib/random": "^1.0.1",
"@stablelib/random": "^1.0.2",
"@stablelib/sha512": "^1.0.1",

@@ -31,3 +31,3 @@ "@stablelib/wipe": "^1.0.1"

},
"gitHead": "03dadf27703120d54e6be8436525228ee1c4299b"
"gitHead": "a402dc74f45c6a93a777a0e2840ce50ba68c3010"
}
{
"extends": "../../configs/tsconfig.json",
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"strict": true,
"noUnusedParameters": true,
"noImplicitReturns": true,
"noUnusedLocals": true,
"removeComments": false,
"preserveConstEnums": true,
"moduleResolution": "node",
"newLine": "LF",
"sourceMap": true,
"declaration": true,
"outDir": "lib",
"lib": [
"es5",
"es2015.promise",
"dom",
"scripthost"
]
},

@@ -23,0 +6,0 @@ "exclude": [

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc