@blamejs/pki 0.6.20 → 0.6.21

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 CHANGED
@@ -4,6 +4,14 @@ All notable changes to `@blamejs/pki` are documented here. The format
4
4
  follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this
5
5
  project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## v0.6.21 — 2026-09-01
8
+
9
+ WebCrypto and the signing and format builders refuse an algorithm, curve, digest, or profile name that collides with an inherited Object.prototype property name.
10
+
11
+ ### Fixed
12
+
13
+ - pki.webcrypto (generateKey, sign, verify, encrypt, decrypt, deriveBits, deriveKey, wrapKey, unwrapKey, importKey, encapsulateBits, decapsulateBits) refuses an algorithm name or namedCurve that collides with an inherited Object.prototype property name, returning webcrypto/not-supported instead of a bare Node error. The digest, PBMAC1 PRF, CMP body, PKCS#12 MAC hash, PBES2 PRF, and lint-profile lookups behind pki.tsp.sign, pki.cmp.build, pki.pkcs12.build, pki.key.encrypt, pki.lint.certificate, and the RSA-PSS and C509 builders are hardened the same way, each returning the verb's typed error for such a name.
14
+
7
15
  ## v0.6.20 — 2026-09-01
8
16
 
9
17
  A vulnerable build-time dependency is refreshed; it is not part of the published package.
package/lib/cmp-build.js CHANGED
@@ -75,18 +75,18 @@ var KNOWN_HEADER_KEYS = {
75
75
  sender: 1, recipient: 1, pvno: 1, messageTime: 1, senderKID: 1, recipKID: 1,
76
76
  transactionID: 1, senderNonce: 1, recipNonce: 1, freeText: 1, generalInfo: 1,
77
77
  };
78
- var KNOWN_BODY_KEYS = {
78
+ var KNOWN_BODY_KEYS = intrinsic.assign(intrinsic.create(null), {
79
79
  ir: 1, cr: 1, kur: 1, krr: 1, ccr: 1, p10cr: 1, certConf: 1, pollReq: 1, genm: 1, rr: 1,
80
80
  ip: 1, cp: 1, kup: 1, ccp: 1, krp: 1, rp: 1, genp: 1, error: 1, pollRep: 1, pkiconf: 1,
81
81
  nested: 1,
82
- };
83
- var BODY_TAG = {
82
+ });
83
+ var BODY_TAG = intrinsic.assign(intrinsic.create(null), {
84
84
  ir: 0, cr: 2, p10cr: 4, kur: 7, krr: 9, ccr: 13, rr: 11, genm: 21, certConf: 24, pollReq: 25,
85
85
  ip: 1, cp: 3, kup: 8, krp: 10, rp: 12, ccp: 14, pkiconf: 19, genp: 22, error: 23, pollRep: 26,
86
86
  nested: 20,
87
- };
88
- var CRMF_BODY = { ir: 1, cr: 1, kur: 1, krr: 1, ccr: 1 };
89
- var CERT_REP_ARM = { ip: 1, cp: 1, kup: 1, ccp: 1 };
87
+ });
88
+ var CRMF_BODY = intrinsic.assign(intrinsic.create(null), { ir: 1, cr: 1, kur: 1, krr: 1, ccr: 1 });
89
+ var CERT_REP_ARM = intrinsic.assign(intrinsic.create(null), { ip: 1, cp: 1, kup: 1, ccp: 1 });
90
90
  var KNOWN_OPTS_KEYS = { key: 1, cert: 1, mac: 1, extraCerts: 1, pem: 1, pss: 1, digestAlgorithm: 1 };
91
91
  var KNOWN_OPTS_SIG_KEYS = { key: 1, cert: 1, extraCerts: 1, pem: 1, pss: 1, digestAlgorithm: 1 };
92
92
  var KNOWN_OPTS_MAC_KEYS = { mac: 1, extraCerts: 1, pem: 1 };
@@ -100,17 +100,17 @@ var PBMAC1_DEFAULT_KEYLEN = 32;
100
100
  var PBMAC1_MIN_KEYLEN = 20;
101
101
  var PBMAC1_MAX_KEYLEN = 1024;
102
102
  var PBMAC1_MIN_ITER = 1000;
103
- var PBMAC1_PRF = { "SHA-256": "hmacWithSHA256", "SHA-384": "hmacWithSHA384", "SHA-512": "hmacWithSHA512" };
104
- var PBMAC1_MAC_OID = { "SHA-256": "hmacWithSHA256", "SHA-384": "hmacWithSHA384", "SHA-512": "hmacWithSHA512" };
103
+ var PBMAC1_PRF = intrinsic.assign(intrinsic.create(null), { "SHA-256": "hmacWithSHA256", "SHA-384": "hmacWithSHA384", "SHA-512": "hmacWithSHA512" });
104
+ var PBMAC1_MAC_OID = intrinsic.assign(intrinsic.create(null), { "SHA-256": "hmacWithSHA256", "SHA-384": "hmacWithSHA384", "SHA-512": "hmacWithSHA512" });
105
105
  var PBMAC1_PRF_HLEN = { "SHA-256": 32, "SHA-384": 48, "SHA-512": 64 };
106
106
  var FAIL_INFO_NAMES = ["badAlg", "badMessageCheck", "badRequest", "badTime", "badCertId", "badDataFormat",
107
107
  "wrongAuthority", "incorrectData", "missingTimeStamp", "badPOP", "certRevoked", "certConfirmed",
108
108
  "wrongIntegrity", "badRecipientNonce", "timeNotAvailable", "unacceptedPolicy", "unacceptedExtension",
109
109
  "addInfoNotAvailable", "badSenderNonce", "badCertTemplate", "signerNotTrusted", "transactionIdInUse",
110
110
  "unsupportedVersion", "notAuthorized", "systemUnavail", "systemFailure", "duplicateCertReq"];
111
- var FAIL_INFO_INDEX = {};
111
+ var FAIL_INFO_INDEX = intrinsic.create(null);
112
112
  FAIL_INFO_NAMES.forEach(function (n, i) { FAIL_INFO_INDEX[n] = i; });
113
- var CERT_CONF_HASH_ALGS = { sha1: 1, sha256: 1, sha384: 1, sha512: 1, "sha3-256": 1, "sha3-512": 1 };
113
+ var CERT_CONF_HASH_ALGS = intrinsic.assign(intrinsic.create(null), { sha1: 1, sha256: 1, sha384: 1, sha512: 1, "sha3-256": 1, "sha3-512": 1 });
114
114
 
115
115
 
116
116
  function _reqOctets(v, what) {
package/lib/lint.js CHANGED
@@ -44,7 +44,7 @@ var EXT_DECODERS = pkix.certExtensionDecoders(NS).byOid;
44
44
 
45
45
 
46
46
 
47
- var SEVERITY = { fatal: 5, error: 4, warn: 3, notice: 2, pass: 1 };
47
+ var SEVERITY = Object.assign(Object.create(null), { fatal: 5, error: 4, warn: 3, notice: 2, pass: 1 });
48
48
  var VALID_SEVERITY = Object.keys(SEVERITY);
49
49
 
50
50
  function _worst(findings) {
@@ -191,7 +191,7 @@ function _rsaModulusBits(spki) {
191
191
  return mod.toString(2).length;
192
192
  } catch (_e) { return null; }
193
193
  }
194
- var RSA_KEY_ALGS = { rsaEncryption: 1, rsassaPss: 1, rsaesOaep: 1 };
194
+ var RSA_KEY_ALGS = Object.assign(Object.create(null), { rsaEncryption: 1, rsassaPss: 1, rsaesOaep: 1 });
195
195
  var APPROVED_EC_CURVES = ["prime256v1", "secp384r1", "secp521r1"];
196
196
  function _ecCurveName(spki) {
197
197
  try {
@@ -476,7 +476,7 @@ var CABF_TLS_RULES = [
476
476
  },
477
477
  ];
478
478
 
479
- var ML_KEM_EK_LEN = {};
479
+ var ML_KEM_EK_LEN = Object.create(null);
480
480
  ["id-ml-kem-512", "id-ml-kem-768", "id-ml-kem-1024"].forEach(function (n) { ML_KEM_EK_LEN[n] = oid.kemParams(n).ek; });
481
481
  function _isMlKem(cert) {
482
482
  var spki = cert.subjectPublicKeyInfo;
@@ -510,11 +510,11 @@ var RFC9935_RULES = [
510
510
  },
511
511
  ];
512
512
 
513
- var PROFILES = {
513
+ var PROFILES = Object.assign(Object.create(null), {
514
514
  "rfc5280": RFC5280_RULES,
515
515
  "rfc9935": RFC9935_RULES,
516
516
  "cabf-tls": CABF_TLS_RULES,
517
- };
517
+ });
518
518
  var ALL_RULES = RFC5280_RULES.concat(RFC9935_RULES).concat(CABF_TLS_RULES);
519
519
 
520
520
  function _selectRules(profile) {
package/lib/pbes2.js CHANGED
@@ -13,7 +13,7 @@ var C = require("./constants");
13
13
  var b = asn1.build;
14
14
  function O(n) { return oid.byName(n); }
15
15
 
16
- var PRF_NODE_BY_NAME = { hmacWithSHA1: "sha1", hmacWithSHA256: "sha256", hmacWithSHA384: "sha384", hmacWithSHA512: "sha512" };
16
+ var PRF_NODE_BY_NAME = Object.assign(Object.create(null), { hmacWithSHA1: "sha1", hmacWithSHA256: "sha256", hmacWithSHA384: "sha384", hmacWithSHA512: "sha512" });
17
17
  var PRF_NODE_BY_OID = {}; Object.keys(PRF_NODE_BY_NAME).forEach(function (n) { PRF_NODE_BY_OID[O(n)] = PRF_NODE_BY_NAME[n]; });
18
18
 
19
19
  var CONTENT_KEYBITS = {}, CONTENT_MODE = {};
@@ -51,18 +51,18 @@ var MAX_PBMAC1_KEYLEN = 1024;
51
51
  var CLASSIC_MAC_MAX_ITERATIONS = 1000000;
52
52
  var KDF_MAX_ROUNDS = CLASSIC_MAC_MAX_ITERATIONS;
53
53
 
54
- var P12_KDF_UV = {
54
+ var P12_KDF_UV = intrinsic.assign(intrinsic.create(null), {
55
55
  sha1: { u: 20, v: 64 }, sha224: { u: 28, v: 64 }, sha256: { u: 32, v: 64 },
56
56
  sha384: { u: 48, v: 128 }, sha512: { u: 64, v: 128 },
57
- };
58
- var PBMAC1_PRF = {
57
+ });
58
+ var PBMAC1_PRF = intrinsic.assign(intrinsic.create(null), {
59
59
  sha256: { prfName: "hmacWithSHA256", wc: "SHA-256", keyLen: 32 },
60
60
  sha384: { prfName: "hmacWithSHA384", wc: "SHA-384", keyLen: 48 },
61
61
  sha512: { prfName: "hmacWithSHA512", wc: "SHA-512", keyLen: 64 },
62
- };
63
- var PRF_WC = { hmacWithSHA1: "SHA-1", hmacWithSHA256: "SHA-256", hmacWithSHA384: "SHA-384", hmacWithSHA512: "SHA-512" };
64
- var CIPHER_NAME = { "aes-128-cbc": "aes128-CBC", "aes-192-cbc": "aes192-CBC", "aes-256-cbc": "aes256-CBC" };
65
- var DIGEST_NAME = { sha1: "sha1", sha256: "sha256", sha384: "sha384", sha512: "sha512" };
62
+ });
63
+ var PRF_WC = intrinsic.assign(intrinsic.create(null), { hmacWithSHA1: "SHA-1", hmacWithSHA256: "SHA-256", hmacWithSHA384: "SHA-384", hmacWithSHA512: "SHA-512" });
64
+ var CIPHER_NAME = intrinsic.assign(intrinsic.create(null), { "aes-128-cbc": "aes128-CBC", "aes-192-cbc": "aes192-CBC", "aes-256-cbc": "aes256-CBC" });
65
+ var DIGEST_NAME = intrinsic.assign(intrinsic.create(null), { sha1: "sha1", sha256: "sha256", sha384: "sha384", sha512: "sha512" });
66
66
 
67
67
 
68
68
 
@@ -77,14 +77,14 @@ var _BUILD_OPTS_SHORTHAND = { integrity: 1, mac: 1, password: 1, pem: 1, recipie
77
77
  var _SAFE_RECIPIENTS_KEYS = { bags: 1, recipients: 1, contentEncryptionAlgorithm: 1 };
78
78
  var _SAFE_PASSWORD_KEYS = { bags: 1, encrypt: 1 };
79
79
  var _SAFE_PLAINTEXT_KEYS = { bags: 1 };
80
- var _BAG_KEYS_BY_TYPE = {
80
+ var _BAG_KEYS_BY_TYPE = intrinsic.assign(intrinsic.create(null), {
81
81
  key: { type: 1, friendlyName: 1, localKeyId: 1, key: 1 },
82
82
  shroudedKey: { type: 1, friendlyName: 1, localKeyId: 1, key: 1, encrypt: 1 },
83
83
  cert: { type: 1, friendlyName: 1, localKeyId: 1, cert: 1 },
84
84
  crl: { type: 1, friendlyName: 1, localKeyId: 1, crl: 1 },
85
85
  secret: { type: 1, friendlyName: 1, localKeyId: 1, secretTypeId: 1, secretValue: 1 },
86
86
  safeContents: { type: 1, friendlyName: 1, localKeyId: 1, nested: 1 },
87
- };
87
+ });
88
88
  var _ENCRYPT_KEYS = { password: 1, cipher: 1, salt: 1, iterations: 1, prf: 1 };
89
89
  var _MAC_KEYS = { algorithm: 1, hash: 1, salt: 1, iterations: 1, keyLength: 1, password: 1 };
90
90
  var _MAC_KEYS_HMAC = { algorithm: 1, hash: 1, salt: 1, iterations: 1, password: 1 };
@@ -47,7 +47,7 @@ var PK_ALG_BY_INT = {
47
47
  2: { alg: _name("ecPublicKey"), curve: _name("secp384r1") },
48
48
  3: { alg: _name("ecPublicKey"), curve: _name("secp521r1") },
49
49
  };
50
- var EC_FIELD_BYTES = { "prime256v1": 32, "secp384r1": 48, "secp521r1": 66 };
50
+ var EC_FIELD_BYTES = Object.assign(Object.create(null), { "prime256v1": 32, "secp384r1": 48, "secp521r1": 66 });
51
51
 
52
52
  var ATTR_BY_INT = {
53
53
  0: _name("emailAddress"),
@@ -87,14 +87,14 @@ var EXT_BY_INT = {
87
87
  36: _name("ocspNoCheck"),
88
88
  38: _name("tlsFeature"),
89
89
  };
90
- var EXT_COMPACT = {
90
+ var EXT_COMPACT = Object.assign(Object.create(null), {
91
91
  subjectKeyIdentifier: 1, keyUsage: 1, basicConstraints: 1, authorityKeyIdentifier: 1,
92
92
  extKeyUsage: 1, inhibitAnyPolicy: 1, ocspNoCheck: 1, tlsFeature: 1,
93
93
  subjectAltName: 1, issuerAltName: 1, nameConstraints: 1, cRLDistributionPoints: 1,
94
94
  freshestCRL: 1, authorityInfoAccess: 1, subjectInfoAccess: 1, certificatePolicies: 1,
95
95
  policyMappings: 1, policyConstraints: 1, subjectDirectoryAttributes: 1,
96
96
  ipAddrBlocks: 1, autonomousSysIds: 1, ipAddrBlocksV2: 1, autonomousSysIdsV2: 1,
97
- };
97
+ });
98
98
  var EKU_BY_INT = {
99
99
  0: _name("anyExtendedKeyUsage"), 1: _name("serverAuth"), 2: _name("clientAuth"),
100
100
  3: _name("codeSigning"), 4: _name("emailProtection"), 8: _name("timeStamping"), 9: _name("ocspSigning"),
@@ -1561,11 +1561,11 @@ function matches(node) {
1561
1561
  }
1562
1562
 
1563
1563
 
1564
- var SIG_ALG_TO_INT = { ecdsaWithSHA256: 0, ecdsaWithSHA384: 1, ecdsaWithSHA512: 2 };
1565
- var PK_ALG_TO_INT = { rsaEncryption: 0, "ecPublicKey|prime256v1": 1, "ecPublicKey|secp384r1": 2, "ecPublicKey|secp521r1": 3 };
1566
- var ATTR_TO_INT = {};
1564
+ var SIG_ALG_TO_INT = Object.assign(Object.create(null), { ecdsaWithSHA256: 0, ecdsaWithSHA384: 1, ecdsaWithSHA512: 2 });
1565
+ var PK_ALG_TO_INT = Object.assign(Object.create(null), { rsaEncryption: 0, "ecPublicKey|prime256v1": 1, "ecPublicKey|secp384r1": 2, "ecPublicKey|secp521r1": 3 });
1566
+ var ATTR_TO_INT = Object.create(null);
1567
1567
  Object.keys(ATTR_BY_INT).forEach(function (k) { ATTR_TO_INT[ATTR_BY_INT[k]] = Number(k); });
1568
- var EXT_TO_INT = {};
1568
+ var EXT_TO_INT = Object.create(null);
1569
1569
  Object.keys(EXT_BY_INT).forEach(function (k) { if (EXT_COMPACT[EXT_BY_INT[k]]) EXT_TO_INT[EXT_BY_INT[k]] = Number(k); });
1570
1570
 
1571
1571
  function _minBytes(n) {
@@ -1754,9 +1754,9 @@ function _keyUsageBitsFromDer(extnValue) {
1754
1754
  return _namedBitsFromContent(bs.bytes, bs.unusedBits);
1755
1755
  }
1756
1756
  var _NO_EXPIRY = Date.UTC(9999, 11, 31, 23, 59, 59);
1757
- var NODE_TO_WEBCRYPTO = { "prime256v1": "P-256", "secp384r1": "P-384", "secp521r1": "P-521" };
1758
- var WEBCRYPTO_FIELD_BYTES = { "P-256": 32, "P-384": 48, "P-521": 66 };
1759
- var SIG_ALG_TO_CURVE = { "ecdsaWithSHA256": "P-256", "ecdsaWithSHA384": "P-384", "ecdsaWithSHA512": "P-521" };
1757
+ var NODE_TO_WEBCRYPTO = Object.assign(Object.create(null), { "prime256v1": "P-256", "secp384r1": "P-384", "secp521r1": "P-521" });
1758
+ var WEBCRYPTO_FIELD_BYTES = Object.assign(Object.create(null), { "P-256": 32, "P-384": 48, "P-521": 66 });
1759
+ var SIG_ALG_TO_CURVE = Object.assign(Object.create(null), { "ecdsaWithSHA256": "P-256", "ecdsaWithSHA384": "P-384", "ecdsaWithSHA512": "P-521" });
1760
1760
  function _magBytes(intNode) {
1761
1761
  var c = intNode.content, i = 0;
1762
1762
  while (i < c.length - 1 && c[i] === 0x00) i++;
@@ -24,8 +24,8 @@ var _isBuffer = intrinsic.isBuffer;
24
24
  var _bufferFrom = intrinsic.bufferFrom;
25
25
  var _isU8 = intrinsic.types.isUint8Array;
26
26
 
27
- var HASH = { sha256: "SHA-256", sha384: "SHA-384", sha512: "SHA-512" };
28
- var NODE_DIGEST = { sha256: "sha256", sha384: "sha384", sha512: "sha512", shake128: "shake128", shake256: "shake256" };
27
+ var HASH = intrinsic.assign(intrinsic.create(null), { sha256: "SHA-256", sha384: "SHA-384", sha512: "SHA-512" });
28
+ var NODE_DIGEST = intrinsic.assign(intrinsic.create(null), { sha256: "sha256", sha384: "sha384", sha512: "sha512", shake128: "shake128", shake256: "shake256" });
29
29
  var PSS_SALT = { "SHA-256": 32, "SHA-384": 48, "SHA-512": 64 };
30
30
  var ECDSA_ALG = { sha256: "ecdsaWithSHA256", sha384: "ecdsaWithSHA384", sha512: "ecdsaWithSHA512" };
31
31
  var RSA_PKCS1_SIG = { sha256: "sha256WithRSAEncryption", sha384: "sha384WithRSAEncryption", sha512: "sha512WithRSAEncryption" };
package/lib/tsp-sign.js CHANGED
@@ -47,7 +47,7 @@ var _b = pkiBuild.makeBuilder({
47
47
  NAME_SCHEMA: pkix.name(_NS), SPKI_SCHEMA: pkix.spki(_NS),
48
48
  });
49
49
 
50
- var NODE_DIGEST = { sha256: "sha256", sha384: "sha384", sha512: "sha512" };
50
+ var NODE_DIGEST = intrinsic.assign(intrinsic.create(null), { sha256: "sha256", sha384: "sha384", sha512: "sha512" });
51
51
  var HASH_LEN = { sha256: 32, sha384: 48, sha512: 64 };
52
52
 
53
53
  var _REVOCATION_RANK = { "false": 0, "undetermined": 1, "waived": 2, "determined": 3 };
@@ -397,9 +397,9 @@ function response(token, opts) {
397
397
  function parseResponse(input) { return schemaTsp.parse(input); }
398
398
 
399
399
 
400
- var _VERIFY_DIGEST = { sha256: "sha256", sha384: "sha384", sha512: "sha512", sha1: "sha1" };
401
- var _VERIFY_DIGEST_LEN = { sha1: 20, sha256: 32, sha384: 48, sha512: 64 };
402
- var _BIND_DIGEST = { sha256: "sha256", sha384: "sha384", sha512: "sha512" };
400
+ var _VERIFY_DIGEST = intrinsic.assign(intrinsic.create(null), { sha256: "sha256", sha384: "sha384", sha512: "sha512", sha1: "sha1" });
401
+ var _VERIFY_DIGEST_LEN = intrinsic.assign(intrinsic.create(null), { sha1: 20, sha256: 32, sha384: 48, sha512: 64 });
402
+ var _BIND_DIGEST = intrinsic.assign(intrinsic.create(null), { sha256: "sha256", sha384: "sha384", sha512: "sha512" });
403
403
 
404
404
  function _imprintMatches(mi, data) {
405
405
  var name = mi.hashAlgorithm && mi.hashAlgorithm.name;
package/lib/webcrypto.js CHANGED
@@ -122,7 +122,7 @@ function _normalizeAlg(algorithm, who) {
122
122
  return out;
123
123
  }
124
124
 
125
- var _STD_ALG_NAME = { "RSASSA-PKCS1-V1_5": "RSASSA-PKCS1-v1_5", "ED25519": "Ed25519", "ED448": "Ed448" };
125
+ var _STD_ALG_NAME = intrinsic.assign(intrinsic.create(null), { "RSASSA-PKCS1-V1_5": "RSASSA-PKCS1-v1_5", "ED25519": "Ed25519", "ED448": "Ed448" });
126
126
  function _stdName(name) { return _STD_ALG_NAME[name] || name; }
127
127
 
128
128
  var HASH_NODE = {
@@ -164,24 +164,24 @@ function _hmacLengthBits(alg, who) {
164
164
  return alg.length;
165
165
  }
166
166
 
167
- var CURVE_NODE = { "P-256": "prime256v1", "P-384": "secp384r1", "P-521": "secp521r1" };
168
- var CURVE_FIELD_BYTES = { "P-256": 32, "P-384": 48, "P-521": 66 };
167
+ var CURVE_NODE = intrinsic.assign(intrinsic.create(null), { "P-256": "prime256v1", "P-384": "secp384r1", "P-521": "secp521r1" });
168
+ var CURVE_FIELD_BYTES = intrinsic.assign(intrinsic.create(null), { "P-256": 32, "P-384": 48, "P-521": 66 });
169
169
 
170
- var ML_DSA_NODE = { "ML-DSA-44": "ml-dsa-44", "ML-DSA-65": "ml-dsa-65", "ML-DSA-87": "ml-dsa-87" };
171
- var ML_KEM_NODE = { "ML-KEM-512": "ml-kem-512", "ML-KEM-768": "ml-kem-768", "ML-KEM-1024": "ml-kem-1024" };
170
+ var ML_DSA_NODE = intrinsic.assign(intrinsic.create(null), { "ML-DSA-44": "ml-dsa-44", "ML-DSA-65": "ml-dsa-65", "ML-DSA-87": "ml-dsa-87" });
171
+ var ML_KEM_NODE = intrinsic.assign(intrinsic.create(null), { "ML-KEM-512": "ml-kem-512", "ML-KEM-768": "ml-kem-768", "ML-KEM-1024": "ml-kem-1024" });
172
172
 
173
- var SLH_DSA_NODE = {};
173
+ var SLH_DSA_NODE = intrinsic.create(null);
174
174
  ["sha2-128s", "sha2-128f", "sha2-192s", "sha2-192f", "sha2-256s", "sha2-256f",
175
175
  "shake-128s", "shake-128f", "shake-192s", "shake-192f", "shake-256s", "shake-256f"
176
176
  ].forEach(function (s) { SLH_DSA_NODE["SLH-DSA-" + _toUpperCase(s)] = "slh-dsa-" + s; });
177
177
 
178
- var SIGN_VERIFY_NAMES = {};
178
+ var SIGN_VERIFY_NAMES = intrinsic.create(null);
179
179
  ["RSASSA-PKCS1-V1_5", "RSA-PSS", "ECDSA", "ED25519", "ED448", "HMAC"]
180
180
  .concat(_keys(ML_DSA_NODE), _keys(SLH_DSA_NODE))
181
181
  .forEach(function (n) { SIGN_VERIFY_NAMES[n] = true; });
182
- var ENCRYPT_DECRYPT_NAMES = { "RSA-OAEP": true, "AES-GCM": true, "AES-CBC": true, "AES-CTR": true };
183
- var DERIVE_NAMES = { "ECDH": true, "X25519": true, "X448": true, "HKDF": true, "PBKDF2": true, "X963KDF": true };
184
- var SECRET_KEY_NAMES = { "AES-GCM": true, "AES-CBC": true, "AES-CTR": true, "AES-KW": true, "HMAC": true, "HKDF": true, "PBKDF2": true, "X963KDF": true };
182
+ var ENCRYPT_DECRYPT_NAMES = intrinsic.assign(intrinsic.create(null), { "RSA-OAEP": true, "AES-GCM": true, "AES-CBC": true, "AES-CTR": true });
183
+ var DERIVE_NAMES = intrinsic.assign(intrinsic.create(null), { "ECDH": true, "X25519": true, "X448": true, "HKDF": true, "PBKDF2": true, "X963KDF": true });
184
+ var SECRET_KEY_NAMES = intrinsic.assign(intrinsic.create(null), { "AES-GCM": true, "AES-CBC": true, "AES-CTR": true, "AES-KW": true, "HMAC": true, "HKDF": true, "PBKDF2": true, "X963KDF": true });
185
185
 
186
186
 
187
187
  /**
@@ -974,12 +974,12 @@ function _importRawPublic(name, alg, raw, extractable, usages) {
974
974
  throw new WebCryptoError("webcrypto/not-supported", "importKey raw: unsupported public-key algorithm " + _stringify(name));
975
975
  }
976
976
 
977
- var IMPORT_KEY_TYPE = {
977
+ var IMPORT_KEY_TYPE = intrinsic.assign(intrinsic.create(null), {
978
978
  "RSASSA-PKCS1-V1_5": { rsa: 1 }, "RSA-PSS": { rsa: 1, "rsa-pss": 1 }, "RSA-OAEP": { rsa: 1 },
979
979
  "ECDSA": { ec: 1 }, "ECDH": { ec: 1 },
980
980
  "ED25519": { ed25519: 1 }, "ED448": { ed448: 1 },
981
981
  "X25519": { x25519: 1 }, "X448": { x448: 1 },
982
- };
982
+ });
983
983
  [ML_DSA_NODE, ML_KEM_NODE, SLH_DSA_NODE].forEach(function (m) {
984
984
  _forEach(_keys(m), function (webName) { var t = {}; t[m[webName]] = 1; IMPORT_KEY_TYPE[webName] = t; });
985
985
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blamejs/pki",
3
- "version": "0.6.20",
3
+ "version": "0.6.21",
4
4
  "description": "Pure-JavaScript PKI toolkit that owns its stack — X.509, ASN.1/DER, CMS, PQC-first.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "blamejs contributors",
package/sbom.cdx.json CHANGED
@@ -2,10 +2,10 @@
2
2
  "$schema": "http://cyclonedx.org/schema/bom-1.5.schema.json",
3
3
  "bomFormat": "CycloneDX",
4
4
  "specVersion": "1.5",
5
- "serialNumber": "urn:uuid:40b50089-a128-40ea-a5a2-b82960272544",
5
+ "serialNumber": "urn:uuid:ba3e8f6b-69f8-4691-b5ee-3d227fe61113",
6
6
  "version": 1,
7
7
  "metadata": {
8
- "timestamp": "2026-09-01T19:36:06.284Z",
8
+ "timestamp": "2026-09-01T20:36:49.754Z",
9
9
  "lifecycles": [
10
10
  {
11
11
  "phase": "build"
@@ -19,14 +19,14 @@
19
19
  }
20
20
  ],
21
21
  "component": {
22
- "bom-ref": "@blamejs/pki@0.6.20",
22
+ "bom-ref": "@blamejs/pki@0.6.21",
23
23
  "type": "application",
24
24
  "name": "pki",
25
- "version": "0.6.20",
25
+ "version": "0.6.21",
26
26
  "scope": "required",
27
27
  "author": "blamejs contributors",
28
28
  "description": "Pure-JavaScript PKI toolkit that owns its stack — X.509, ASN.1/DER, CMS, PQC-first.",
29
- "purl": "pkg:npm/%40blamejs/pki@0.6.20",
29
+ "purl": "pkg:npm/%40blamejs/pki@0.6.21",
30
30
  "properties": [],
31
31
  "externalReferences": [
32
32
  {
@@ -54,7 +54,7 @@
54
54
  "components": [],
55
55
  "dependencies": [
56
56
  {
57
- "ref": "@blamejs/pki@0.6.20",
57
+ "ref": "@blamejs/pki@0.6.21",
58
58
  "dependsOn": []
59
59
  }
60
60
  ]