This commit is contained in:
Akko
2025-08-04 18:57:35 +02:00
parent 8cf6e78a79
commit 9495868c2e
5030 changed files with 518594 additions and 17609 deletions

152
node_modules/browserify-sign/browser/algorithms.json generated vendored Normal file
View File

@@ -0,0 +1,152 @@
{
"sha224WithRSAEncryption": {
"sign": "rsa",
"hash": "sha224",
"id": "302d300d06096086480165030402040500041c"
},
"RSA-SHA224": {
"sign": "ecdsa/rsa",
"hash": "sha224",
"id": "302d300d06096086480165030402040500041c"
},
"sha256WithRSAEncryption": {
"sign": "rsa",
"hash": "sha256",
"id": "3031300d060960864801650304020105000420"
},
"RSA-SHA256": {
"sign": "ecdsa/rsa",
"hash": "sha256",
"id": "3031300d060960864801650304020105000420"
},
"sha384WithRSAEncryption": {
"sign": "rsa",
"hash": "sha384",
"id": "3041300d060960864801650304020205000430"
},
"RSA-SHA384": {
"sign": "ecdsa/rsa",
"hash": "sha384",
"id": "3041300d060960864801650304020205000430"
},
"sha512WithRSAEncryption": {
"sign": "rsa",
"hash": "sha512",
"id": "3051300d060960864801650304020305000440"
},
"RSA-SHA512": {
"sign": "ecdsa/rsa",
"hash": "sha512",
"id": "3051300d060960864801650304020305000440"
},
"RSA-SHA1": {
"sign": "rsa",
"hash": "sha1",
"id": "3021300906052b0e03021a05000414"
},
"ecdsa-with-SHA1": {
"sign": "ecdsa",
"hash": "sha1",
"id": ""
},
"sha256": {
"sign": "ecdsa",
"hash": "sha256",
"id": ""
},
"sha224": {
"sign": "ecdsa",
"hash": "sha224",
"id": ""
},
"sha384": {
"sign": "ecdsa",
"hash": "sha384",
"id": ""
},
"sha512": {
"sign": "ecdsa",
"hash": "sha512",
"id": ""
},
"DSA-SHA": {
"sign": "dsa",
"hash": "sha1",
"id": ""
},
"DSA-SHA1": {
"sign": "dsa",
"hash": "sha1",
"id": ""
},
"DSA": {
"sign": "dsa",
"hash": "sha1",
"id": ""
},
"DSA-WITH-SHA224": {
"sign": "dsa",
"hash": "sha224",
"id": ""
},
"DSA-SHA224": {
"sign": "dsa",
"hash": "sha224",
"id": ""
},
"DSA-WITH-SHA256": {
"sign": "dsa",
"hash": "sha256",
"id": ""
},
"DSA-SHA256": {
"sign": "dsa",
"hash": "sha256",
"id": ""
},
"DSA-WITH-SHA384": {
"sign": "dsa",
"hash": "sha384",
"id": ""
},
"DSA-SHA384": {
"sign": "dsa",
"hash": "sha384",
"id": ""
},
"DSA-WITH-SHA512": {
"sign": "dsa",
"hash": "sha512",
"id": ""
},
"DSA-SHA512": {
"sign": "dsa",
"hash": "sha512",
"id": ""
},
"DSA-RIPEMD160": {
"sign": "dsa",
"hash": "rmd160",
"id": ""
},
"ripemd160WithRSA": {
"sign": "rsa",
"hash": "rmd160",
"id": "3021300906052b2403020105000414"
},
"RSA-RIPEMD160": {
"sign": "rsa",
"hash": "rmd160",
"id": "3021300906052b2403020105000414"
},
"md5WithRSAEncryption": {
"sign": "rsa",
"hash": "md5",
"id": "3020300c06082a864886f70d020505000410"
},
"RSA-MD5": {
"sign": "rsa",
"hash": "md5",
"id": "3020300c06082a864886f70d020505000410"
}
}

8
node_modules/browserify-sign/browser/curves.json generated vendored Normal file
View File

@@ -0,0 +1,8 @@
{
"1.3.132.0.10": "secp256k1",
"1.3.132.0.33": "p224",
"1.2.840.10045.3.1.1": "p192",
"1.2.840.10045.3.1.7": "p256",
"1.3.132.0.34": "p384",
"1.3.132.0.35": "p521"
}

92
node_modules/browserify-sign/browser/index.js generated vendored Normal file
View File

@@ -0,0 +1,92 @@
'use strict';
var Buffer = require('safe-buffer').Buffer;
var createHash = require('create-hash');
var stream = require('readable-stream');
var inherits = require('inherits');
var sign = require('./sign');
var verify = require('./verify');
var algorithms = require('./algorithms.json');
Object.keys(algorithms).forEach(function (key) {
algorithms[key].id = Buffer.from(algorithms[key].id, 'hex');
algorithms[key.toLowerCase()] = algorithms[key];
});
function Sign(algorithm) {
stream.Writable.call(this);
var data = algorithms[algorithm];
if (!data) { throw new Error('Unknown message digest'); }
this._hashType = data.hash;
this._hash = createHash(data.hash);
this._tag = data.id;
this._signType = data.sign;
}
inherits(Sign, stream.Writable);
Sign.prototype._write = function _write(data, _, done) {
this._hash.update(data);
done();
};
Sign.prototype.update = function update(data, enc) {
this._hash.update(typeof data === 'string' ? Buffer.from(data, enc) : data);
return this;
};
Sign.prototype.sign = function signMethod(key, enc) {
this.end();
var hash = this._hash.digest();
var sig = sign(hash, key, this._hashType, this._signType, this._tag);
return enc ? sig.toString(enc) : sig;
};
function Verify(algorithm) {
stream.Writable.call(this);
var data = algorithms[algorithm];
if (!data) { throw new Error('Unknown message digest'); }
this._hash = createHash(data.hash);
this._tag = data.id;
this._signType = data.sign;
}
inherits(Verify, stream.Writable);
Verify.prototype._write = function _write(data, _, done) {
this._hash.update(data);
done();
};
Verify.prototype.update = function update(data, enc) {
this._hash.update(typeof data === 'string' ? Buffer.from(data, enc) : data);
return this;
};
Verify.prototype.verify = function verifyMethod(key, sig, enc) {
var sigBuffer = typeof sig === 'string' ? Buffer.from(sig, enc) : sig;
this.end();
var hash = this._hash.digest();
return verify(sigBuffer, hash, key, this._signType, this._tag);
};
function createSign(algorithm) {
return new Sign(algorithm);
}
function createVerify(algorithm) {
return new Verify(algorithm);
}
module.exports = {
Sign: createSign,
Verify: createVerify,
createSign: createSign,
createVerify: createVerify
};

150
node_modules/browserify-sign/browser/sign.js generated vendored Normal file
View File

@@ -0,0 +1,150 @@
'use strict';
// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js
var Buffer = require('safe-buffer').Buffer;
var createHmac = require('create-hmac');
var crt = require('browserify-rsa');
var EC = require('elliptic').ec;
var BN = require('bn.js');
var parseKeys = require('parse-asn1');
var curves = require('./curves.json');
var RSA_PKCS1_PADDING = 1;
function sign(hash, key, hashType, signType, tag) {
var priv = parseKeys(key);
if (priv.curve) {
// rsa keys can be interpreted as ecdsa ones in openssl
if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong private key type'); }
return ecSign(hash, priv);
} else if (priv.type === 'dsa') {
if (signType !== 'dsa') { throw new Error('wrong private key type'); }
return dsaSign(hash, priv, hashType);
}
if (signType !== 'rsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong private key type'); }
if (key.padding !== undefined && key.padding !== RSA_PKCS1_PADDING) { throw new Error('illegal or unsupported padding mode'); }
hash = Buffer.concat([tag, hash]);
var len = priv.modulus.byteLength();
var pad = [0, 1];
while (hash.length + pad.length + 1 < len) { pad.push(0xff); }
pad.push(0x00);
var i = -1;
while (++i < hash.length) { pad.push(hash[i]); }
var out = crt(pad, priv);
return out;
}
function ecSign(hash, priv) {
var curveId = curves[priv.curve.join('.')];
if (!curveId) { throw new Error('unknown curve ' + priv.curve.join('.')); }
var curve = new EC(curveId);
var key = curve.keyFromPrivate(priv.privateKey);
var out = key.sign(hash);
return Buffer.from(out.toDER());
}
function dsaSign(hash, priv, algo) {
var x = priv.params.priv_key;
var p = priv.params.p;
var q = priv.params.q;
var g = priv.params.g;
var r = new BN(0);
var k;
var H = bits2int(hash, q).mod(q);
var s = false;
var kv = getKey(x, q, hash, algo);
while (s === false) {
k = makeKey(q, kv, algo);
r = makeR(g, k, p, q);
s = k.invm(q).imul(H.add(x.mul(r))).mod(q);
if (s.cmpn(0) === 0) {
s = false;
r = new BN(0);
}
}
return toDER(r, s);
}
function toDER(r, s) {
r = r.toArray();
s = s.toArray();
// Pad values
if (r[0] & 0x80) { r = [0].concat(r); }
if (s[0] & 0x80) { s = [0].concat(s); }
var total = r.length + s.length + 4;
var res = [
0x30, total, 0x02, r.length
];
res = res.concat(r, [0x02, s.length], s);
return Buffer.from(res);
}
function getKey(x, q, hash, algo) {
x = Buffer.from(x.toArray());
if (x.length < q.byteLength()) {
var zeros = Buffer.alloc(q.byteLength() - x.length);
x = Buffer.concat([zeros, x]);
}
var hlen = hash.length;
var hbits = bits2octets(hash, q);
var v = Buffer.alloc(hlen);
v.fill(1);
var k = Buffer.alloc(hlen);
k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest();
v = createHmac(algo, k).update(v).digest();
k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest();
v = createHmac(algo, k).update(v).digest();
return { k: k, v: v };
}
function bits2int(obits, q) {
var bits = new BN(obits);
var shift = (obits.length << 3) - q.bitLength();
if (shift > 0) { bits.ishrn(shift); }
return bits;
}
function bits2octets(bits, q) {
bits = bits2int(bits, q);
bits = bits.mod(q);
var out = Buffer.from(bits.toArray());
if (out.length < q.byteLength()) {
var zeros = Buffer.alloc(q.byteLength() - out.length);
out = Buffer.concat([zeros, out]);
}
return out;
}
function makeKey(q, kv, algo) {
var t;
var k;
do {
t = Buffer.alloc(0);
while (t.length * 8 < q.bitLength()) {
kv.v = createHmac(algo, kv.k).update(kv.v).digest();
t = Buffer.concat([t, kv.v]);
}
k = bits2int(t, q);
kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest();
kv.v = createHmac(algo, kv.k).update(kv.v).digest();
} while (k.cmp(q) !== -1);
return k;
}
function makeR(g, k, p, q) {
return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q);
}
module.exports = sign;
module.exports.getKey = getKey;
module.exports.makeKey = makeKey;

86
node_modules/browserify-sign/browser/verify.js generated vendored Normal file
View File

@@ -0,0 +1,86 @@
'use strict';
// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js
var Buffer = require('safe-buffer').Buffer;
var BN = require('bn.js');
var EC = require('elliptic').ec;
var parseKeys = require('parse-asn1');
var curves = require('./curves.json');
function verify(sig, hash, key, signType, tag) {
var pub = parseKeys(key);
if (pub.type === 'ec') {
// rsa keys can be interpreted as ecdsa ones in openssl
if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong public key type'); }
return ecVerify(sig, hash, pub);
} else if (pub.type === 'dsa') {
if (signType !== 'dsa') { throw new Error('wrong public key type'); }
return dsaVerify(sig, hash, pub);
}
if (signType !== 'rsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong public key type'); }
hash = Buffer.concat([tag, hash]);
var len = pub.modulus.byteLength();
var pad = [1];
var padNum = 0;
while (hash.length + pad.length + 2 < len) {
pad.push(0xff);
padNum += 1;
}
pad.push(0x00);
var i = -1;
while (++i < hash.length) {
pad.push(hash[i]);
}
pad = Buffer.from(pad);
var red = BN.mont(pub.modulus);
sig = new BN(sig).toRed(red);
sig = sig.redPow(new BN(pub.publicExponent));
sig = Buffer.from(sig.fromRed().toArray());
var out = padNum < 8 ? 1 : 0;
len = Math.min(sig.length, pad.length);
if (sig.length !== pad.length) { out = 1; }
i = -1;
while (++i < len) { out |= sig[i] ^ pad[i]; }
return out === 0;
}
function ecVerify(sig, hash, pub) {
var curveId = curves[pub.data.algorithm.curve.join('.')];
if (!curveId) { throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.')); }
var curve = new EC(curveId);
var pubkey = pub.data.subjectPrivateKey.data;
return curve.verify(hash, sig, pubkey);
}
function dsaVerify(sig, hash, pub) {
var p = pub.data.p;
var q = pub.data.q;
var g = pub.data.g;
var y = pub.data.pub_key;
var unpacked = parseKeys.signature.decode(sig, 'der');
var s = unpacked.s;
var r = unpacked.r;
checkValue(s, q);
checkValue(r, q);
var montp = BN.mont(p);
var w = s.invm(q);
var v = g.toRed(montp)
.redPow(new BN(hash).mul(w).mod(q))
.fromRed()
.mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())
.mod(p)
.mod(q);
return v.cmp(r) === 0;
}
function checkValue(b, q) {
if (b.cmpn(0) <= 0) { throw new Error('invalid sig'); }
if (b.cmp(q) >= 0) { throw new Error('invalid sig'); }
}
module.exports = verify;