@blamejs/pki 0.6.39 → 0.6.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/lib/acme.js +24 -13
- package/lib/asn1-der.js +5 -5
- package/lib/attrcert-sign.js +16 -16
- package/lib/cbor-det.js +2 -2
- package/lib/cmc-build.js +16 -16
- package/lib/cmc-verify.js +5 -5
- package/lib/cmp-build.js +29 -19
- package/lib/cmp-session.js +25 -20
- package/lib/cmp-verify.js +8 -12
- package/lib/cms-decrypt.js +8 -8
- package/lib/cms-encrypt.js +22 -22
- package/lib/cms-sign.js +17 -17
- package/lib/cms-verify.js +13 -13
- package/lib/composite-kem.js +1 -1
- package/lib/composite-sig.js +4 -4
- package/lib/constants.js +13 -9
- package/lib/crl-sign.js +25 -25
- package/lib/crmf-sign.js +11 -11
- package/lib/csr-sign.js +4 -4
- package/lib/ct.js +33 -25
- package/lib/edwards-point.js +2 -2
- package/lib/est.js +74 -43
- package/lib/guard-async.js +17 -1
- package/lib/guard-bytes.js +3 -3
- package/lib/guard-compress.js +5 -5
- package/lib/guard-identifier.js +46 -2
- package/lib/guard-json.js +1 -1
- package/lib/guard-list.js +16 -0
- package/lib/guard-name.js +1 -1
- package/lib/guard-parsed.js +1 -1
- package/lib/guard-time.js +3 -1
- package/lib/guard-verdict.js +7 -1
- package/lib/hpke.js +10 -10
- package/lib/http-digest.js +2 -2
- package/lib/http-transport.js +3 -3
- package/lib/inspect.js +9 -9
- package/lib/ip-utils.js +1 -1
- package/lib/jose.js +14 -14
- package/lib/key.js +7 -7
- package/lib/lint.js +6 -4
- package/lib/merkle.js +2 -2
- package/lib/mime.js +2 -2
- package/lib/ocsp-verify.js +1 -1
- package/lib/ocsp.js +5 -5
- package/lib/oid.js +3 -3
- package/lib/path-validate.js +127 -117
- package/lib/pbes2.js +2 -2
- package/lib/pkcs12-build.js +26 -24
- package/lib/pki-build.js +2 -2
- package/lib/scep.js +47 -16
- package/lib/schema-all.js +1 -1
- package/lib/schema-attrcert.js +4 -3
- package/lib/schema-c509.js +23 -23
- package/lib/schema-cmc.js +6 -6
- package/lib/schema-cmp.js +3 -3
- package/lib/schema-cms.js +15 -8
- package/lib/schema-crmf.js +1 -1
- package/lib/schema-csr.js +1 -1
- package/lib/schema-engine.js +2 -1
- package/lib/schema-pkcs12.js +1 -1
- package/lib/schema-pkix.js +3 -0
- package/lib/schema-tsp.js +2 -2
- package/lib/shbs.js +2 -2
- package/lib/sign-scheme.js +9 -9
- package/lib/sigstore.js +24 -14
- package/lib/smime.js +16 -16
- package/lib/tls-cert-compress.js +6 -6
- package/lib/trust.js +9 -9
- package/lib/tsp-sign.js +30 -30
- package/lib/validator-attcert.js +2 -2
- package/lib/validator-cose.js +5 -5
- package/lib/validator-sig.js +3 -3
- package/lib/validator-tpm.js +5 -4
- package/lib/webauthn.js +58 -54
- package/lib/webcrypto.js +22 -14
- package/lib/x509-sign.js +8 -8
- package/package.json +1 -1
- package/sbom.cdx.json +6 -6
package/lib/http-transport.js
CHANGED
|
@@ -440,7 +440,7 @@ function httpsTransport(defaults) {
|
|
|
440
440
|
var bodyIsFn = typeof body === "function";
|
|
441
441
|
if (!bodyIsFn && guard.bytes.isByteSource(body)) body = guard.bytes.source(body, E, C("bad-input"), "the request body");
|
|
442
442
|
|
|
443
|
-
var reqHeaders = Object.assign(
|
|
443
|
+
var reqHeaders = Object.assign(Object.create(null), request.headers || {});
|
|
444
444
|
Object.keys(reqHeaders).forEach(function (k) { var lk = k.toLowerCase(); if (lk === "proxy-authorization" || lk === "proxy-connection") delete reqHeaders[k]; });
|
|
445
445
|
if (bodyIsFn) {
|
|
446
446
|
Object.keys(reqHeaders).forEach(function (k) { var lk = k.toLowerCase(); if (lk === "content-length" || lk === "transfer-encoding" || lk === "expect") delete reqHeaders[k]; });
|
|
@@ -553,7 +553,7 @@ function httpsTransport(defaults) {
|
|
|
553
553
|
if (settled) return;
|
|
554
554
|
settled = true;
|
|
555
555
|
clearTimer();
|
|
556
|
-
var lower =
|
|
556
|
+
var lower = Object.create(null);
|
|
557
557
|
Object.keys(res.headers || {}).forEach(function (k) { lower[k.toLowerCase()] = res.headers[k]; });
|
|
558
558
|
resolve({
|
|
559
559
|
status: res.statusCode,
|
|
@@ -595,7 +595,7 @@ function httpsTransport(defaults) {
|
|
|
595
595
|
if (!prep.proxy) { issue(prep.options); return; }
|
|
596
596
|
|
|
597
597
|
var pinfo = prep.proxy;
|
|
598
|
-
var pheaders = { Host: pinfo.originAuthority, Connection: "keep-alive" };
|
|
598
|
+
var pheaders = Object.assign(Object.create(null), { Host: pinfo.originAuthority, Connection: "keep-alive" });
|
|
599
599
|
if (pinfo.auth) pheaders["Proxy-Authorization"] = _basicProxyHeader(pinfo.auth);
|
|
600
600
|
var connectOpts = { host: pinfo.host, port: pinfo.port, method: "CONNECT", path: pinfo.originAuthority, headers: pheaders, agent: false };
|
|
601
601
|
var cr;
|
package/lib/inspect.js
CHANGED
|
@@ -95,9 +95,9 @@ function _serial(cert, indent) {
|
|
|
95
95
|
return "Serial Number:\n" + " ".repeat(indent) + _hexColon(buf, {});
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
-
var CURVE_BITS = { "P-256": 256, "P-384": 384, "P-521": 521, "prime256v1": 256, "secp384r1": 384, "secp521r1": 521 };
|
|
98
|
+
var CURVE_BITS = Object.assign(Object.create(null), { "P-256": 256, "P-384": 384, "P-521": 521, "prime256v1": 256, "secp384r1": 384, "secp521r1": 521 });
|
|
99
99
|
var NIST_NAME = NAMES.NIST_CURVE;
|
|
100
|
-
var RSA_KEY_ALGS = { rsaEncryption: 1, rsassaPss: 1, rsaesOaep: 1 };
|
|
100
|
+
var RSA_KEY_ALGS = Object.assign(Object.create(null), { rsaEncryption: 1, rsassaPss: 1, rsaesOaep: 1 });
|
|
101
101
|
function _keyBlock(spki, pad) {
|
|
102
102
|
var algName = _algName(spki.algorithm);
|
|
103
103
|
var out = [pad + "Public Key Algorithm: " + algName];
|
|
@@ -214,7 +214,7 @@ function _renderCrlDp(decoded, inner) {
|
|
|
214
214
|
}
|
|
215
215
|
|
|
216
216
|
|
|
217
|
-
var EXT_RENDERERS = {
|
|
217
|
+
var EXT_RENDERERS = Object.assign(Object.create(null), {
|
|
218
218
|
keyUsage: function (decoded, inner) {
|
|
219
219
|
return inner + Object.keys(KU_LABEL).filter(function (k) { return decoded[k]; }).map(function (k) { return KU_LABEL[k]; }).join(", ");
|
|
220
220
|
},
|
|
@@ -301,7 +301,7 @@ var EXT_RENDERERS = {
|
|
|
301
301
|
cRLDistributionPoints: _renderCrlDp,
|
|
302
302
|
freshestCRL: _renderCrlDp,
|
|
303
303
|
authorityInfoAccess: function (decoded, inner) {
|
|
304
|
-
var LABEL = { caIssuers: "CA Issuers", ocsp: "OCSP" };
|
|
304
|
+
var LABEL = Object.assign(Object.create(null), { caIssuers: "CA Issuers", ocsp: "OCSP" });
|
|
305
305
|
return (decoded || []).map(function (ad) {
|
|
306
306
|
var m = null;
|
|
307
307
|
try { m = oid.name(ad.accessMethod); } catch (_e) { /* allow:swallow-unverified display best-effort: an unregistered accessMethod OID falls back to the raw dotted OID below (inspection is best-effort, never a verdict) */ }
|
|
@@ -369,7 +369,7 @@ var EXT_RENDERERS = {
|
|
|
369
369
|
}
|
|
370
370
|
return akiLines.length ? akiLines.join("\n") : inner + "keyid:(none)";
|
|
371
371
|
},
|
|
372
|
-
};
|
|
372
|
+
});
|
|
373
373
|
EXT_RENDERERS.msApplicationPolicies = EXT_RENDERERS.certificatePolicies;
|
|
374
374
|
|
|
375
375
|
|
|
@@ -378,7 +378,7 @@ function _renderExtValue(ext, decoded, inner) {
|
|
|
378
378
|
return fn ? fn(decoded, inner) : null;
|
|
379
379
|
}
|
|
380
380
|
|
|
381
|
-
var _STRING_TAGS = { 12: 1, 19: 1, 22: 1, 20: 1, 26: 1, 27: 1, 30: 1 };
|
|
381
|
+
var _STRING_TAGS = Object.assign(Object.create(null), { 12: 1, 19: 1, 22: 1, 20: 1, 26: 1, 27: 1, 30: 1 });
|
|
382
382
|
function _printable(buf) {
|
|
383
383
|
return buf.length > 0 && buf.every(function (b) { return b >= 0x20 && b < 0x7f; });
|
|
384
384
|
}
|
|
@@ -499,7 +499,7 @@ function _looksParsedCms(o) {
|
|
|
499
499
|
var shape = _CMS_SHAPE[o.contentType];
|
|
500
500
|
return shape ? shape(o) : false;
|
|
501
501
|
}
|
|
502
|
-
var _INSPECT_ENTRY = { pemLabel: null, PemError: InspectError, ErrorClass: InspectError, prefix: "inspect" };
|
|
502
|
+
var _INSPECT_ENTRY = Object.assign(Object.create(null), { pemLabel: null, PemError: InspectError, ErrorClass: InspectError, prefix: "inspect" });
|
|
503
503
|
function _coerce(input, spec) {
|
|
504
504
|
if (input && typeof input === "object" && !Buffer.isBuffer(input) && !(input instanceof Uint8Array) && input[spec.marker] !== undefined) {
|
|
505
505
|
if (!spec.looksParsed(input)) throw _err("inspect/bad-input", "input has a " + spec.marker + " property but is not a complete " + spec.parsedName + " result");
|
|
@@ -657,7 +657,7 @@ function csrReport(input) {
|
|
|
657
657
|
|
|
658
658
|
var OID_SIGNED_DATA = oid.byName("signedData");
|
|
659
659
|
function _isObj(x) { return !!x && typeof x === "object"; }
|
|
660
|
-
var _CMS_SHAPE =
|
|
660
|
+
var _CMS_SHAPE = Object.create(null);
|
|
661
661
|
_CMS_SHAPE[OID_SIGNED_DATA] = function (o) { return Array.isArray(o.digestAlgorithms) && _isObj(o.encapContentInfo) && Array.isArray(o.signerInfos); };
|
|
662
662
|
_CMS_SHAPE[oid.byName("envelopedData")] = function (o) { return Array.isArray(o.recipientInfos) && _isObj(o.encryptedContentInfo); };
|
|
663
663
|
_CMS_SHAPE[oid.byName("encryptedData")] = function (o) { return _isObj(o.encryptedContentInfo); };
|
|
@@ -784,7 +784,7 @@ function cmsReport(input) {
|
|
|
784
784
|
}
|
|
785
785
|
|
|
786
786
|
|
|
787
|
-
var _INSPECT_BY_FORMAT = { x509: certificate, crl: crlReport, csr: csrReport, cms: cmsReport };
|
|
787
|
+
var _INSPECT_BY_FORMAT = Object.assign(Object.create(null), { x509: certificate, crl: crlReport, csr: csrReport, cms: cmsReport });
|
|
788
788
|
|
|
789
789
|
/**
|
|
790
790
|
* @primitive pki.inspect.any
|
package/lib/ip-utils.js
CHANGED
|
@@ -15,7 +15,7 @@ var _bufferFrom = intrinsic.bufferFrom;
|
|
|
15
15
|
var _bufferAlloc = intrinsic.bufferAlloc;
|
|
16
16
|
var _defineProperty = intrinsic.defineProperty;
|
|
17
17
|
var _Number = intrinsic.Number;
|
|
18
|
-
|
|
18
|
+
var _push = require("./guard-list").append;
|
|
19
19
|
function _splitOn(str, sep) {
|
|
20
20
|
var out = [], from = 0, at;
|
|
21
21
|
while ((at = _indexOf(str, sep, from)) !== -1) { _push(out, _slice(str, from, at)); from = at + sep.length; }
|
package/lib/jose.js
CHANGED
|
@@ -129,7 +129,7 @@ function parseJson(input) {
|
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
|
|
132
|
-
var SIG_ALGS = {
|
|
132
|
+
var SIG_ALGS = intrinsic.assign(intrinsic.create(null), {
|
|
133
133
|
ES256: { kty: "EC", crv: "P-256", hash: "SHA-256", subtle: "ECDSA", sigBytes: 64 },
|
|
134
134
|
ES384: { kty: "EC", crv: "P-384", hash: "SHA-384", subtle: "ECDSA", sigBytes: 96 },
|
|
135
135
|
ES512: { kty: "EC", crv: "P-521", hash: "SHA-512", subtle: "ECDSA", sigBytes: 132 },
|
|
@@ -139,26 +139,26 @@ var SIG_ALGS = {
|
|
|
139
139
|
PS256: { kty: "RSA", hash: "SHA-256", subtle: "RSA-PSS", saltLength: 32 },
|
|
140
140
|
PS384: { kty: "RSA", hash: "SHA-384", subtle: "RSA-PSS", saltLength: 48 },
|
|
141
141
|
PS512: { kty: "RSA", hash: "SHA-512", subtle: "RSA-PSS", saltLength: 64 },
|
|
142
|
-
EdDSA: { kty: "OKP", subtle: "EdDSA", sigBytesByCrv: { Ed25519: 64, Ed448: 114 } },
|
|
142
|
+
EdDSA: { kty: "OKP", subtle: "EdDSA", sigBytesByCrv: intrinsic.assign(intrinsic.create(null), { Ed25519: 64, Ed448: 114 }) },
|
|
143
143
|
"ML-DSA-44": { kty: "AKP", subtle: "ML-DSA-44", sigBytes: 2420 },
|
|
144
144
|
"ML-DSA-65": { kty: "AKP", subtle: "ML-DSA-65", sigBytes: 3309 },
|
|
145
145
|
"ML-DSA-87": { kty: "AKP", subtle: "ML-DSA-87", sigBytes: 4627 },
|
|
146
|
-
};
|
|
146
|
+
});
|
|
147
147
|
|
|
148
|
-
var MAC_ALGS = {
|
|
148
|
+
var MAC_ALGS = intrinsic.assign(intrinsic.create(null), {
|
|
149
149
|
HS256: { kty: "oct", hash: "SHA-256", sigBytes: 32 },
|
|
150
150
|
HS384: { kty: "oct", hash: "SHA-384", sigBytes: 48 },
|
|
151
151
|
HS512: { kty: "oct", hash: "SHA-512", sigBytes: 64 },
|
|
152
|
-
};
|
|
152
|
+
});
|
|
153
153
|
|
|
154
|
-
var UNDERSTOOD_HEADER = { alg: 1, nonce: 1, url: 1, jwk: 1, kid: 1, crit: 1 };
|
|
154
|
+
var UNDERSTOOD_HEADER = intrinsic.assign(intrinsic.create(null), { alg: 1, nonce: 1, url: 1, jwk: 1, kid: 1, crit: 1 });
|
|
155
155
|
|
|
156
156
|
|
|
157
|
-
var PROFILES = {
|
|
157
|
+
var PROFILES = intrinsic.assign(intrinsic.create(null), {
|
|
158
158
|
"acme-outer": { algs: SIG_ALGS, nonce: "required", keyId: "one-of", requireUrl: true },
|
|
159
159
|
"eab-inner": { algs: MAC_ALGS, nonce: "forbidden", keyId: "kid", requireUrl: true },
|
|
160
160
|
"keychange-inner": { algs: SIG_ALGS, nonce: "forbidden", keyId: "jwk", requireUrl: true },
|
|
161
|
-
};
|
|
161
|
+
});
|
|
162
162
|
|
|
163
163
|
function _checkHeader(header, profileName) {
|
|
164
164
|
var profile = PROFILES[profileName];
|
|
@@ -192,7 +192,7 @@ function _checkHeader(header, profileName) {
|
|
|
192
192
|
if (_hasOwn(header, "crit")) {
|
|
193
193
|
var crit = header.crit;
|
|
194
194
|
if (!_isArray(crit) || crit.length === 0) throw E("jose/bad-crit", "crit must be a non-empty array");
|
|
195
|
-
var seen =
|
|
195
|
+
var seen = intrinsic.create(null);
|
|
196
196
|
for (var c = 0; c < crit.length; c++) {
|
|
197
197
|
var name = crit[c];
|
|
198
198
|
if (typeof name !== "string") throw E("jose/bad-crit", "crit entries must be strings");
|
|
@@ -315,7 +315,7 @@ function assertPublicJwk(jwk) {
|
|
|
315
315
|
* var v = await pki.jose.verify(jws, { profile: "acme-outer", key: accountJwk });
|
|
316
316
|
* v.header.alg; // -> "ES256"
|
|
317
317
|
*/
|
|
318
|
-
var _VERIFY_KEYS = { key: 1, profile: 1 };
|
|
318
|
+
var _VERIFY_KEYS = intrinsic.assign(intrinsic.create(null), { key: 1, profile: 1 });
|
|
319
319
|
async function verify(jws, opts) {
|
|
320
320
|
opts = opts || {};
|
|
321
321
|
guard.identifier.assertKnownKeys(opts, _VERIFY_KEYS, E, "jose/bad-input", "unknown pki.jose.verify option ");
|
|
@@ -395,8 +395,8 @@ async function verify(jws, opts) {
|
|
|
395
395
|
* nonce: "oFvnlFP1wIhRlYS2jTaXbA", url: "https://ca.example/acme/new-acct" };
|
|
396
396
|
* var jws = await pki.jose.sign({ protected: hdr, payload: Buffer.from("{}"), key: priv });
|
|
397
397
|
*/
|
|
398
|
-
var _SIGN_KEYS = { protected: 1, payload: 1, key: 1, jwk: 1, profile: 1 };
|
|
399
|
-
var _SIGN_KEYS_EMBEDDED_JWK = { protected: 1, payload: 1, key: 1, profile: 1 };
|
|
398
|
+
var _SIGN_KEYS = intrinsic.assign(intrinsic.create(null), { protected: 1, payload: 1, key: 1, jwk: 1, profile: 1 });
|
|
399
|
+
var _SIGN_KEYS_EMBEDDED_JWK = intrinsic.assign(intrinsic.create(null), { protected: 1, payload: 1, key: 1, profile: 1 });
|
|
400
400
|
async function sign(opts) {
|
|
401
401
|
opts = opts || {};
|
|
402
402
|
guard.identifier.assertKnownKeys(opts, _SIGN_KEYS, E, "jose/bad-input", "unknown pki.jose.sign option ");
|
|
@@ -442,13 +442,13 @@ async function sign(opts) {
|
|
|
442
442
|
}
|
|
443
443
|
|
|
444
444
|
|
|
445
|
-
var THUMBPRINT_MEMBERS = {
|
|
445
|
+
var THUMBPRINT_MEMBERS = intrinsic.assign(intrinsic.create(null), {
|
|
446
446
|
EC: ["crv", "kty", "x", "y"],
|
|
447
447
|
RSA: ["e", "kty", "n"],
|
|
448
448
|
oct: ["k", "kty"],
|
|
449
449
|
OKP: ["crv", "kty", "x"],
|
|
450
450
|
AKP: ["alg", "kty", "pub"],
|
|
451
|
-
};
|
|
451
|
+
});
|
|
452
452
|
|
|
453
453
|
/**
|
|
454
454
|
* @primitive pki.jose.thumbprint
|
package/lib/key.js
CHANGED
|
@@ -38,7 +38,7 @@ function _err(code, msg, cause) { return new KeyError(code, msg, cause); }
|
|
|
38
38
|
|
|
39
39
|
var CIPHER_NAME = Object.assign(Object.create(null), { "aes-128-cbc": "aes128-CBC", "aes-192-cbc": "aes192-CBC", "aes-256-cbc": "aes256-CBC" });
|
|
40
40
|
|
|
41
|
-
var INFER_ALG =
|
|
41
|
+
var INFER_ALG = Object.create(null);
|
|
42
42
|
["Ed25519", "Ed448", "X25519", "X448"].forEach(function (n) { INFER_ALG[O(n)] = { name: n }; });
|
|
43
43
|
[["id-ml-dsa-44", "ML-DSA-44"], ["id-ml-dsa-65", "ML-DSA-65"], ["id-ml-dsa-87", "ML-DSA-87"],
|
|
44
44
|
["id-ml-kem-512", "ML-KEM-512"], ["id-ml-kem-768", "ML-KEM-768"], ["id-ml-kem-1024", "ML-KEM-1024"]
|
|
@@ -88,7 +88,7 @@ async function _toPrivateKeyDer(input) {
|
|
|
88
88
|
* var enc = await pki.key.encrypt(der, "s3cr3t", { pem: true });
|
|
89
89
|
* var back = await pki.key.decrypt(enc, "s3cr3t");
|
|
90
90
|
*/
|
|
91
|
-
var _ENCRYPT_OPTS = { cipher: 1, iterations: 1, pem: 1, prf: 1, salt: 1 };
|
|
91
|
+
var _ENCRYPT_OPTS = Object.assign(Object.create(null), { cipher: 1, iterations: 1, pem: 1, prf: 1, salt: 1 });
|
|
92
92
|
|
|
93
93
|
async function encrypt(privateKey, password, opts) {
|
|
94
94
|
opts = guard.identifier.optionsObject(opts, _err, "key/bad-input", "pki.key.encrypt options");
|
|
@@ -147,7 +147,7 @@ async function encrypt(privateKey, password, opts) {
|
|
|
147
147
|
* var enc = await pki.key.encrypt(await pki.key.export(pair.privateKey), "s3cr3t", { pem: true });
|
|
148
148
|
* var der = await pki.key.decrypt(enc, "s3cr3t");
|
|
149
149
|
*/
|
|
150
|
-
var _DECRYPT_OPTS = { maxIterations: 1, pem: 1 };
|
|
150
|
+
var _DECRYPT_OPTS = Object.assign(Object.create(null), { maxIterations: 1, pem: 1 });
|
|
151
151
|
|
|
152
152
|
async function decrypt(encrypted, password, opts) {
|
|
153
153
|
opts = guard.identifier.optionsObject(opts, _err, "key/bad-input", "pki.key.decrypt options");
|
|
@@ -203,7 +203,7 @@ function _decryptPbes2(encAlg, ciphertext, password, opts) {
|
|
|
203
203
|
* var pair = await pki.key.generate("Ed25519");
|
|
204
204
|
* var spkiPem = await pki.key.export(pair.publicKey, { format: "pem" });
|
|
205
205
|
*/
|
|
206
|
-
var _EXPORT_OPTS = { format: 1, label: 1 };
|
|
206
|
+
var _EXPORT_OPTS = Object.assign(Object.create(null), { format: 1, label: 1 });
|
|
207
207
|
|
|
208
208
|
async function export_(key, opts) {
|
|
209
209
|
opts = guard.identifier.optionsObject(opts, _err, "key/bad-input", "pki.key.export options");
|
|
@@ -246,7 +246,7 @@ async function export_(key, opts) {
|
|
|
246
246
|
* var spki = await pki.key.export(pair.publicKey);
|
|
247
247
|
* var pub = await pki.key.import(spki); // Ed25519 -- algorithm inferred
|
|
248
248
|
*/
|
|
249
|
-
var _IMPORT_OPTS = { algorithm: 1, extractable: 1, password: 1, usages: 1 };
|
|
249
|
+
var _IMPORT_OPTS = Object.assign(Object.create(null), { algorithm: 1, extractable: 1, password: 1, usages: 1 });
|
|
250
250
|
|
|
251
251
|
async function import_(input, opts) {
|
|
252
252
|
opts = guard.identifier.optionsObject(opts, _err, "key/bad-input", "pki.key.import options");
|
|
@@ -290,7 +290,7 @@ async function import_(input, opts) {
|
|
|
290
290
|
* var pair = await pki.key.generate("Ed25519");
|
|
291
291
|
* var pkcs8 = await pki.key.export(pair.privateKey);
|
|
292
292
|
*/
|
|
293
|
-
var _GENERATE_OPTS = { extractable: 1, usages: 1 };
|
|
293
|
+
var _GENERATE_OPTS = Object.assign(Object.create(null), { extractable: 1, usages: 1 });
|
|
294
294
|
|
|
295
295
|
async function generate(algorithm, opts) {
|
|
296
296
|
opts = guard.identifier.optionsObject(opts, _err, "key/bad-input", "pki.key.generate options");
|
|
@@ -325,7 +325,7 @@ async function generate(algorithm, opts) {
|
|
|
325
325
|
* var pair = await pki.key.generate("Ed25519");
|
|
326
326
|
* var spki = await pki.key.publicFromPrivate(await pki.key.export(pair.privateKey));
|
|
327
327
|
*/
|
|
328
|
-
var _PUBLIC_FROM_PRIVATE_OPTS = { pem: 1 };
|
|
328
|
+
var _PUBLIC_FROM_PRIVATE_OPTS = Object.assign(Object.create(null), { pem: 1 });
|
|
329
329
|
|
|
330
330
|
async function publicFromPrivate(privateKey, opts) {
|
|
331
331
|
opts = guard.identifier.optionsObject(opts, _err, "key/bad-input", "pki.key.publicFromPrivate options");
|
package/lib/lint.js
CHANGED
|
@@ -129,7 +129,8 @@ function _effective(rule, cert) {
|
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
function _runLints(rules, cert, ctx) {
|
|
132
|
-
var findings = [],
|
|
132
|
+
var findings = [], ran = [];
|
|
133
|
+
var counts = Object.assign(Object.create(null), { fatal: 0, error: 0, warn: 0, notice: 0, pass: 0, na: 0, ne: 0 });
|
|
133
134
|
rules.forEach(function (rule) {
|
|
134
135
|
if (rule.appliesTo && !rule.appliesTo(cert, ctx)) { counts.na++; return; }
|
|
135
136
|
if (!_effective(rule, cert)) { counts.ne++; return; }
|
|
@@ -172,7 +173,7 @@ function _subjectCNs(cert) {
|
|
|
172
173
|
return out;
|
|
173
174
|
}
|
|
174
175
|
|
|
175
|
-
var _CRITICAL_LEGIT =
|
|
176
|
+
var _CRITICAL_LEGIT = Object.create(null);
|
|
176
177
|
_CRITICAL_LEGIT[oid.byName("precertificatePoison")] = true;
|
|
177
178
|
function _isUnknownExtension(extOid) {
|
|
178
179
|
if (path.PROCESSED_EXTENSIONS[extOid] !== true) return _CRITICAL_LEGIT[extOid] !== true;
|
|
@@ -560,7 +561,7 @@ function _applyThreshold(report, severity) {
|
|
|
560
561
|
* report.worst; // "notice" | "error" | ...
|
|
561
562
|
* report.findings.map(function (f) { return f.id; });
|
|
562
563
|
*/
|
|
563
|
-
var _CERTIFICATE_OPTS = { profile: 1, severity: 1 };
|
|
564
|
+
var _CERTIFICATE_OPTS = Object.assign(Object.create(null), { profile: 1, severity: 1 });
|
|
564
565
|
|
|
565
566
|
function certificate(input, opts) {
|
|
566
567
|
opts = guard.identifier.optionsObject(opts, _cfg, "lint/bad-input", "pki.lint options");
|
|
@@ -573,7 +574,8 @@ function certificate(input, opts) {
|
|
|
573
574
|
var ingested = _ingest(input);
|
|
574
575
|
var report;
|
|
575
576
|
if (ingested.fatal) {
|
|
576
|
-
report = { findings: [ingested.fatal],
|
|
577
|
+
report = { findings: [ingested.fatal], ran: [],
|
|
578
|
+
counts: Object.assign(Object.create(null), { fatal: 1, error: 0, warn: 0, notice: 0, pass: 0, na: 0, ne: 0 }) };
|
|
577
579
|
} else {
|
|
578
580
|
var ctx = _makeCtx(ingested.cert, opts.profile);
|
|
579
581
|
report = _runLints(rules, ingested.cert, ctx);
|
package/lib/merkle.js
CHANGED
|
@@ -180,7 +180,7 @@ function emptyRootHash() {
|
|
|
180
180
|
* var lh = pki.merkle.leafHash(Buffer.from([0]));
|
|
181
181
|
* pki.merkle.verifyInclusion({ leafIndex: 0, treeSize: 1, leafHash: lh, proof: [], rootHash: lh }); // -> true
|
|
182
182
|
*/
|
|
183
|
-
var _INCLUSION_KEYS = { leafIndex: 1, treeSize: 1, leafHash: 1, rootHash: 1, proof: 1 };
|
|
183
|
+
var _INCLUSION_KEYS = Object.assign(Object.create(null), { leafIndex: 1, treeSize: 1, leafHash: 1, rootHash: 1, proof: 1 });
|
|
184
184
|
function verifyInclusion(opts) {
|
|
185
185
|
opts = opts || {};
|
|
186
186
|
guard.identifier.assertKnownKeys(opts, _INCLUSION_KEYS, function (c, m) { return new MerkleError(c, m); },
|
|
@@ -252,7 +252,7 @@ function verifyInclusion(opts) {
|
|
|
252
252
|
* var r = pki.merkle.leafHash(Buffer.from([0]));
|
|
253
253
|
* pki.merkle.verifyConsistency({ oldSize: 1, newSize: 1, oldRoot: r, newRoot: r, proof: [] }); // -> true
|
|
254
254
|
*/
|
|
255
|
-
var _CONSISTENCY_KEYS = { oldSize: 1, newSize: 1, oldRoot: 1, newRoot: 1, proof: 1 };
|
|
255
|
+
var _CONSISTENCY_KEYS = Object.assign(Object.create(null), { oldSize: 1, newSize: 1, oldRoot: 1, newRoot: 1, proof: 1 });
|
|
256
256
|
function verifyConsistency(opts) {
|
|
257
257
|
opts = opts || {};
|
|
258
258
|
guard.identifier.assertKnownKeys(opts, _CONSISTENCY_KEYS, function (c, m) { return new MerkleError(c, m); },
|
package/lib/mime.js
CHANGED
|
@@ -68,7 +68,7 @@ function _unfoldHeaders(headerText) {
|
|
|
68
68
|
function _parseStructured(headerValue) {
|
|
69
69
|
var parts = _splitSemicolons(headerValue);
|
|
70
70
|
var type = _stripComments(parts[0]).trim().toLowerCase();
|
|
71
|
-
var params =
|
|
71
|
+
var params = Object.create(null);
|
|
72
72
|
for (var i = 1; i < parts.length; i++) {
|
|
73
73
|
var p = _stripComments(parts[i]);
|
|
74
74
|
var eq = p.indexOf("=");
|
|
@@ -131,7 +131,7 @@ function parse(input, E, code) {
|
|
|
131
131
|
var cte = (header("content-transfer-encoding") || "").trim().toLowerCase() || "7bit";
|
|
132
132
|
return {
|
|
133
133
|
headers: headers, header: header,
|
|
134
|
-
contentType: ctv != null ? _parseStructured(ctv) : { value: "text/plain", type: "text/plain", params:
|
|
134
|
+
contentType: ctv != null ? _parseStructured(ctv) : { value: "text/plain", type: "text/plain", params: Object.create(null) },
|
|
135
135
|
cte: cte,
|
|
136
136
|
headerBytes: headerBytes, bodyBytes: bodyBytes, body: bodyBytes, bytes: bytes,
|
|
137
137
|
};
|
package/lib/ocsp-verify.js
CHANGED
|
@@ -12,7 +12,7 @@ var compositeSig = require("./composite-sig");
|
|
|
12
12
|
var webcrypto = require("./webcrypto");
|
|
13
13
|
var subtle = webcrypto.webcrypto.subtle;
|
|
14
14
|
|
|
15
|
-
var OCSP_CERTID_HASHES =
|
|
15
|
+
var OCSP_CERTID_HASHES = intrinsic.create(null);
|
|
16
16
|
OCSP_CERTID_HASHES[oid.byName("sha1")] = "SHA-1";
|
|
17
17
|
OCSP_CERTID_HASHES[oid.byName("sha256")] = "SHA-256";
|
|
18
18
|
OCSP_CERTID_HASHES[oid.byName("sha384")] = "SHA-384";
|
package/lib/ocsp.js
CHANGED
|
@@ -139,9 +139,9 @@ function buildRequest(query, opts) {
|
|
|
139
139
|
], _buildRequest);
|
|
140
140
|
}
|
|
141
141
|
|
|
142
|
-
var _BUILD_REQUEST_OPTS = {
|
|
142
|
+
var _BUILD_REQUEST_OPTS = Object.assign(Object.create(null), {
|
|
143
143
|
hashAlgorithm: 1, nonce: 1, pem: 1, profile: 1, requestorName: 1, signer: 1
|
|
144
|
-
};
|
|
144
|
+
});
|
|
145
145
|
|
|
146
146
|
function _buildRequest(query, opts) {
|
|
147
147
|
opts = guard.identifier.optionsObject(opts, _err, "ocsp/bad-input", "pki.ocsp.buildRequest options");
|
|
@@ -250,7 +250,7 @@ function sign(responseData, responder, opts) {
|
|
|
250
250
|
], _sign);
|
|
251
251
|
}
|
|
252
252
|
|
|
253
|
-
var _SIGN_OPTS = { embedCert: 1, extendedRevoke: 1, nonce: 1, pem: 1 };
|
|
253
|
+
var _SIGN_OPTS = Object.assign(Object.create(null), { embedCert: 1, extendedRevoke: 1, nonce: 1, pem: 1 });
|
|
254
254
|
|
|
255
255
|
function _sign(responseData, responder, opts) {
|
|
256
256
|
opts = guard.identifier.optionsObject(opts, _err, "ocsp/bad-input", "pki.ocsp.sign options");
|
|
@@ -425,7 +425,7 @@ function buildErrorResponse(status) {
|
|
|
425
425
|
* var res = await pki.ocsp.verify(responseDer, { cert: leafDer, issuer: caDer });
|
|
426
426
|
* res.status; // "good" | "revoked" | "unknown"
|
|
427
427
|
*/
|
|
428
|
-
var _VERIFY_OPTS = { cert: 1, historicalMode: 1, issuer: 1, requestNonce: 1, time: 1 };
|
|
428
|
+
var _VERIFY_OPTS = Object.assign(Object.create(null), { cert: 1, historicalMode: 1, issuer: 1, requestNonce: 1, time: 1 });
|
|
429
429
|
|
|
430
430
|
function verify(response, opts) {
|
|
431
431
|
try {
|
|
@@ -465,7 +465,7 @@ function _responseNonce(parsed) {
|
|
|
465
465
|
return null;
|
|
466
466
|
}
|
|
467
467
|
|
|
468
|
-
var _VERIFY_REQUEST_OPTS = { certs: 1 };
|
|
468
|
+
var _VERIFY_REQUEST_OPTS = Object.assign(Object.create(null), { certs: 1 });
|
|
469
469
|
function _requestFromBytes(request) {
|
|
470
470
|
if (guard.bytes.isByteSource(request)) request = guard.bytes.snapshotSource(request, OcspError, "ocsp/bad-input", "the OCSP request");
|
|
471
471
|
return ocspSchema.parseRequest(request);
|
package/lib/oid.js
CHANGED
|
@@ -42,7 +42,7 @@ var OidError = frameworkError.OidError;
|
|
|
42
42
|
|
|
43
43
|
function _oidError(c, m) { return new OidError(c, m); }
|
|
44
44
|
|
|
45
|
-
var FAMILIES = {
|
|
45
|
+
var FAMILIES = Object.assign(Object.create(null), {
|
|
46
46
|
attributeType: { base: [2, 5, 4], of: {
|
|
47
47
|
commonName: 3, surname: 4, serialNumber: 5, countryName: 6,
|
|
48
48
|
localityName: 7, stateOrProvinceName: 8, streetAddress: 9,
|
|
@@ -335,7 +335,7 @@ var FAMILIES = {
|
|
|
335
335
|
scepMessageType: 2, scepPkiStatus: 3, scepFailInfo: 4,
|
|
336
336
|
scepSenderNonce: 5, scepRecipientNonce: 6, scepTransactionId: 7 } },
|
|
337
337
|
scep: { base: [1, 3, 6, 1, 5, 5, 7, 24], of: { scepFailInfoText: 1 } },
|
|
338
|
-
};
|
|
338
|
+
});
|
|
339
339
|
|
|
340
340
|
var _byOid = new Map();
|
|
341
341
|
var _byName = new Map();
|
|
@@ -483,7 +483,7 @@ function registerFamily(base, members) {
|
|
|
483
483
|
}
|
|
484
484
|
|
|
485
485
|
function all() {
|
|
486
|
-
var out =
|
|
486
|
+
var out = Object.create(null);
|
|
487
487
|
_byOid.forEach(function (v, k) { out[k] = v; });
|
|
488
488
|
return out;
|
|
489
489
|
}
|