@smartledger/keys 1.0.1 → 1.2.0

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.
Files changed (48) hide show
  1. package/dist/cjs/browser.d.ts +20 -0
  2. package/dist/cjs/browser.d.ts.map +1 -0
  3. package/dist/cjs/browser.js.map +1 -0
  4. package/dist/cjs/index.d.ts +9 -0
  5. package/dist/cjs/index.d.ts.map +1 -0
  6. package/dist/cjs/index.js.map +1 -0
  7. package/dist/cjs/sdk.d.ts +69 -0
  8. package/dist/cjs/sdk.d.ts.map +1 -0
  9. package/dist/cjs/sdk.js.map +1 -0
  10. package/dist/cjs/types.d.ts +117 -0
  11. package/dist/cjs/types.d.ts.map +1 -0
  12. package/dist/cjs/types.js.map +1 -0
  13. package/dist/esm/browser.d.ts +20 -0
  14. package/dist/esm/browser.d.ts.map +1 -0
  15. package/dist/esm/browser.js +41 -0
  16. package/dist/esm/browser.js.map +1 -0
  17. package/dist/esm/index.d.ts +9 -0
  18. package/dist/esm/index.d.ts.map +1 -0
  19. package/dist/esm/index.js +8 -0
  20. package/dist/esm/index.js.map +1 -0
  21. package/dist/esm/package.json +1 -0
  22. package/dist/esm/sdk.d.ts +69 -0
  23. package/dist/esm/sdk.d.ts.map +1 -0
  24. package/dist/esm/sdk.js +186 -0
  25. package/dist/esm/sdk.js.map +1 -0
  26. package/dist/esm/types.d.ts +117 -0
  27. package/dist/esm/types.d.ts.map +1 -0
  28. package/dist/esm/types.js +8 -0
  29. package/dist/esm/types.js.map +1 -0
  30. package/dist/lumen-keys.js +1566 -2685
  31. package/dist/lumen-keys.js.map +4 -4
  32. package/dist/lumen-keys.min.js +2 -2
  33. package/dist/lumen-keys.min.js.map +4 -4
  34. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  35. package/dist/tsconfig.tsbuildinfo +1 -0
  36. package/package.json +23 -7
  37. package/dist/browser.d.ts.map +0 -1
  38. package/dist/browser.js.map +0 -1
  39. package/dist/index.d.ts.map +0 -1
  40. package/dist/index.js.map +0 -1
  41. package/dist/sdk.d.ts.map +0 -1
  42. package/dist/sdk.js.map +0 -1
  43. package/dist/types.d.ts.map +0 -1
  44. package/dist/types.js.map +0 -1
  45. /package/dist/{browser.js → cjs/browser.js} +0 -0
  46. /package/dist/{index.js → cjs/index.js} +0 -0
  47. /package/dist/{sdk.js → cjs/sdk.js} +0 -0
  48. /package/dist/{types.js → cjs/types.js} +0 -0
@@ -83,76 +83,6 @@ var LumenKeys = (() => {
83
83
  }
84
84
  });
85
85
 
86
- // ../crypto/dist/types.js
87
- var require_types = __commonJS({
88
- "../crypto/dist/types.js"(exports2) {
89
- "use strict";
90
- init_esbuild_shims();
91
- Object.defineProperty(exports2, "__esModule", { value: true });
92
- }
93
- });
94
-
95
- // ../crypto/dist/registry.js
96
- var require_registry = __commonJS({
97
- "../crypto/dist/registry.js"(exports2) {
98
- "use strict";
99
- init_esbuild_shims();
100
- Object.defineProperty(exports2, "__esModule", { value: true });
101
- exports2.globalRegistry = exports2.SignatureSuiteRegistry = void 0;
102
- var SignatureSuiteRegistry3 = class {
103
- constructor() {
104
- __publicField(this, "suites", /* @__PURE__ */ new Map());
105
- }
106
- /**
107
- * Register a signature suite implementation
108
- */
109
- register(suite) {
110
- if (this.suites.has(suite.suiteId)) {
111
- throw new Error(`Signature suite already registered: ${suite.suiteId}`);
112
- }
113
- this.suites.set(suite.suiteId, suite);
114
- }
115
- /**
116
- * Get a signature suite by ID
117
- * @throws Error if suite is not registered
118
- */
119
- getSuite(suiteId) {
120
- const suite = this.suites.get(suiteId);
121
- if (!suite) {
122
- throw new Error(`Unknown signature suite: ${suiteId}. Available: ${this.listSuites().join(", ")}`);
123
- }
124
- return suite;
125
- }
126
- /**
127
- * Check if a suite is registered
128
- */
129
- hasSuite(suiteId) {
130
- return this.suites.has(suiteId);
131
- }
132
- /**
133
- * List all registered suite IDs
134
- */
135
- listSuites() {
136
- return [...this.suites.keys()];
137
- }
138
- /**
139
- * Unregister a suite (primarily for testing)
140
- */
141
- unregister(suiteId) {
142
- return this.suites.delete(suiteId);
143
- }
144
- /**
145
- * Clear all registered suites (primarily for testing)
146
- */
147
- clear() {
148
- this.suites.clear();
149
- }
150
- };
151
- exports2.SignatureSuiteRegistry = SignatureSuiteRegistry3;
152
- exports2.globalRegistry = new SignatureSuiteRegistry3();
153
- }
154
- });
155
-
156
86
  // node_modules/@noble/hashes/utils.js
157
87
  function isBytes(a2) {
158
88
  return a2 instanceof Uint8Array || ArrayBuffer.isView(a2) && a2.constructor.name === "Uint8Array";
@@ -1027,2441 +957,130 @@ var LumenKeys = (() => {
1027
957
  }
1028
958
  });
1029
959
 
1030
- // ../crypto/dist/utils.js
1031
- var require_utils = __commonJS({
1032
- "../crypto/dist/utils.js"(exports2) {
1033
- "use strict";
1034
- init_esbuild_shims();
1035
- var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o2, m2, k2, k22) {
1036
- if (k22 === void 0) k22 = k2;
1037
- var desc = Object.getOwnPropertyDescriptor(m2, k2);
1038
- if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {
1039
- desc = { enumerable: true, get: function() {
1040
- return m2[k2];
1041
- } };
1042
- }
1043
- Object.defineProperty(o2, k22, desc);
1044
- }) : (function(o2, m2, k2, k22) {
1045
- if (k22 === void 0) k22 = k2;
1046
- o2[k22] = m2[k2];
1047
- }));
1048
- var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o2, v2) {
1049
- Object.defineProperty(o2, "default", { enumerable: true, value: v2 });
1050
- }) : function(o2, v2) {
1051
- o2["default"] = v2;
1052
- });
1053
- var __importStar = exports2 && exports2.__importStar || /* @__PURE__ */ (function() {
1054
- var ownKeys = function(o2) {
1055
- ownKeys = Object.getOwnPropertyNames || function(o3) {
1056
- var ar = [];
1057
- for (var k2 in o3) if (Object.prototype.hasOwnProperty.call(o3, k2)) ar[ar.length] = k2;
1058
- return ar;
1059
- };
1060
- return ownKeys(o2);
1061
- };
1062
- return function(mod) {
1063
- if (mod && mod.__esModule) return mod;
1064
- var result = {};
1065
- if (mod != null) {
1066
- for (var k2 = ownKeys(mod), i2 = 0; i2 < k2.length; i2++) if (k2[i2] !== "default") __createBinding(result, mod, k2[i2]);
1067
- }
1068
- __setModuleDefault(result, mod);
1069
- return result;
1070
- };
1071
- })();
1072
- Object.defineProperty(exports2, "__esModule", { value: true });
1073
- exports2.canonicalizeJson = canonicalizeJson;
1074
- exports2.stringToBytes = stringToBytes;
1075
- exports2.bytesToString = bytesToString;
1076
- exports2.bytesToHex = bytesToHex2;
1077
- exports2.hexToBytes = hexToBytes2;
1078
- exports2.bytesToBase64Url = bytesToBase64Url;
1079
- exports2.base64UrlToBytes = base64UrlToBytes;
1080
- exports2.constantTimeEqual = constantTimeEqual;
1081
- exports2.zeroBytes = zeroBytes;
1082
- exports2.hashBytes = hashBytes2;
1083
- function canonicalizeJson(obj) {
1084
- if (obj === null)
1085
- return "null";
1086
- if (typeof obj !== "object")
1087
- return JSON.stringify(obj);
1088
- if (Array.isArray(obj)) {
1089
- return "[" + obj.map(canonicalizeJson).join(",") + "]";
1090
- }
1091
- const keys = Object.keys(obj).sort();
1092
- const pairs = keys.map((key) => `"${key}":${canonicalizeJson(obj[key])}`);
1093
- return "{" + pairs.join(",") + "}";
1094
- }
1095
- function stringToBytes(str) {
1096
- return new TextEncoder().encode(str);
1097
- }
1098
- function bytesToString(bytes) {
1099
- return new TextDecoder().decode(bytes);
1100
- }
1101
- function bytesToHex2(bytes) {
1102
- return Array.from(bytes).map((b2) => b2.toString(16).padStart(2, "0")).join("");
1103
- }
1104
- function hexToBytes2(hex) {
1105
- if (hex.length % 2 !== 0) {
1106
- throw new Error("Hex string must have even length");
1107
- }
1108
- const bytes = new Uint8Array(hex.length / 2);
1109
- for (let i2 = 0; i2 < hex.length; i2 += 2) {
1110
- bytes[i2 / 2] = parseInt(hex.slice(i2, i2 + 2), 16);
1111
- }
1112
- return bytes;
1113
- }
1114
- function bytesToBase64Url(bytes) {
1115
- const base64 = Buffer.from(bytes).toString("base64");
1116
- return base64.replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "");
1117
- }
1118
- function base64UrlToBytes(base64url) {
1119
- let base64 = base64url.replace(/-/g, "+").replace(/_/g, "/");
1120
- const padding = base64.length % 4;
1121
- if (padding) {
1122
- base64 += "=".repeat(4 - padding);
1123
- }
1124
- return new Uint8Array(Buffer.from(base64, "base64"));
1125
- }
1126
- function constantTimeEqual(a2, b2) {
1127
- if (a2.length !== b2.length)
1128
- return false;
1129
- let result = 0;
1130
- for (let i2 = 0; i2 < a2.length; i2++) {
1131
- result |= a2[i2] ^ b2[i2];
1132
- }
1133
- return result === 0;
1134
- }
1135
- function zeroBytes(bytes) {
1136
- bytes.fill(0);
1137
- }
1138
- async function hashBytes2(bytes, algorithm) {
1139
- if (algorithm === "sha256") {
1140
- const crypto = await Promise.resolve().then(() => __importStar((init_crypto_browser_shim(), __toCommonJS(crypto_browser_shim_exports))));
1141
- return new Uint8Array(crypto.createHash("sha256").update(bytes).digest());
1142
- } else if (algorithm === "sha512") {
1143
- const crypto = await Promise.resolve().then(() => __importStar((init_crypto_browser_shim(), __toCommonJS(crypto_browser_shim_exports))));
1144
- return new Uint8Array(crypto.createHash("sha512").update(bytes).digest());
1145
- } else if (algorithm === "sha3-256") {
1146
- const crypto = await Promise.resolve().then(() => __importStar((init_crypto_browser_shim(), __toCommonJS(crypto_browser_shim_exports))));
1147
- return new Uint8Array(crypto.createHash("sha3-256").update(bytes).digest());
1148
- }
1149
- throw new Error(`Unsupported hash algorithm: ${algorithm}`);
1150
- }
1151
- }
1152
- });
1153
-
1154
- // ../crypto/dist/signing.js
1155
- var require_signing = __commonJS({
1156
- "../crypto/dist/signing.js"(exports2) {
1157
- "use strict";
960
+ // ../../node_modules/dilithium-crystals/dist/index.js
961
+ var require_dist = __commonJS({
962
+ "../../node_modules/dilithium-crystals/dist/index.js"(exports, module) {
1158
963
  init_esbuild_shims();
1159
- Object.defineProperty(exports2, "__esModule", { value: true });
1160
- exports2.signAgentResponse = signAgentResponse;
1161
- exports2.verifySignedEnvelope = verifySignedEnvelope;
1162
- var utils_1 = require_utils();
1163
- async function signAgentResponse(agentMeta, payload, primaryKey, primaryKeyBytes, registry, secondaryKey, secondaryKeyBytes) {
1164
- const canonicalPayload = (0, utils_1.canonicalizeJson)(payload);
1165
- const payloadBytes = (0, utils_1.stringToBytes)(canonicalPayload);
1166
- const signatures = [];
1167
- const primarySuite = registry.getSuite(primaryKey.suiteId);
1168
- const primaryHashAlg = getHashAlgorithm(primaryKey.suiteId);
1169
- const primaryHash = await (0, utils_1.hashBytes)(payloadBytes, primaryHashAlg);
1170
- const primarySig = await primarySuite.sign(primaryKeyBytes, primaryHash);
1171
- signatures.push({
1172
- suiteId: primaryKey.suiteId,
1173
- keyId: primaryKey.keyId,
1174
- hashAlgorithm: primaryHashAlg,
1175
- payloadHash: (0, utils_1.bytesToBase64Url)(primaryHash),
1176
- signature: (0, utils_1.bytesToBase64Url)(primarySig)
1177
- });
1178
- if (secondaryKey && secondaryKeyBytes) {
1179
- const secondarySuite = registry.getSuite(secondaryKey.suiteId);
1180
- const secondaryHashAlg = getHashAlgorithm(secondaryKey.suiteId);
1181
- const secondaryHash = await (0, utils_1.hashBytes)(payloadBytes, secondaryHashAlg);
1182
- const secondarySig = await secondarySuite.sign(secondaryKeyBytes, secondaryHash);
1183
- signatures.push({
1184
- suiteId: secondaryKey.suiteId,
1185
- keyId: secondaryKey.keyId,
1186
- hashAlgorithm: secondaryHashAlg,
1187
- payloadHash: (0, utils_1.bytesToBase64Url)(secondaryHash),
1188
- signature: (0, utils_1.bytesToBase64Url)(secondarySig)
1189
- });
964
+ var dilithium = (function() {
965
+ var A, I, g, C = {};
966
+ function B(A2, I3) {
967
+ if (0 === A2) return I3;
968
+ throw new Error("Dilithium error: " + A2);
1190
969
  }
1191
- const signatureMetadata = {
1192
- format: "lumen.signature.v1",
1193
- mode: signatures.length > 1 ? "hybrid" : "single",
1194
- signatures
1195
- };
1196
- if (signatures.length > 1 && agentMeta.cryptoProfile.primarySignatureSuite) {
1197
- signatureMetadata.policy = {
1198
- threshold: "all",
1199
- requiredSuites: [agentMeta.cryptoProfile.primarySignatureSuite]
1200
- };
970
+ function Q(A2, I3) {
971
+ return new Uint8Array(new Uint8Array(C.HEAPU8.buffer, A2, I3));
1201
972
  }
1202
- return {
1203
- agent: agentMeta.agentId,
1204
- version: agentMeta.version,
1205
- timestamp: (/* @__PURE__ */ new Date()).toISOString(),
1206
- payload,
1207
- _signature: signatureMetadata
1208
- };
1209
- }
1210
- async function verifySignedEnvelope(envelope, registry, publicKeys) {
1211
- const results = [];
1212
- const canonicalPayload = (0, utils_1.canonicalizeJson)(envelope.payload);
1213
- const payloadBytes = (0, utils_1.stringToBytes)(canonicalPayload);
1214
- for (const sigEntry of envelope._signature.signatures) {
973
+ function i(A2) {
1215
974
  try {
1216
- const suite = registry.getSuite(sigEntry.suiteId);
1217
- const publicKey = publicKeys.get(sigEntry.keyId);
1218
- if (!publicKey) {
1219
- results.push({
1220
- suiteId: sigEntry.suiteId,
1221
- keyId: sigEntry.keyId,
1222
- valid: false,
1223
- error: "Public key not found"
1224
- });
1225
- continue;
1226
- }
1227
- const computedHash = await (0, utils_1.hashBytes)(payloadBytes, sigEntry.hashAlgorithm);
1228
- const expectedHash = (0, utils_1.base64UrlToBytes)(sigEntry.payloadHash);
1229
- if (!arraysEqual(computedHash, expectedHash)) {
1230
- results.push({
1231
- suiteId: sigEntry.suiteId,
1232
- keyId: sigEntry.keyId,
1233
- valid: false,
1234
- error: "Payload hash mismatch"
1235
- });
1236
- continue;
1237
- }
1238
- const signature = (0, utils_1.base64UrlToBytes)(sigEntry.signature);
1239
- const valid = await suite.verify(publicKey, computedHash, signature);
1240
- results.push({
1241
- suiteId: sigEntry.suiteId,
1242
- keyId: sigEntry.keyId,
1243
- valid,
1244
- error: valid ? void 0 : "Signature verification failed"
1245
- });
1246
- } catch (error) {
1247
- results.push({
1248
- suiteId: sigEntry.suiteId,
1249
- keyId: sigEntry.keyId,
1250
- valid: false,
1251
- error: error instanceof Error ? error.message : String(error)
1252
- });
1253
- }
1254
- }
1255
- const policyMet = checkPolicy(envelope._signature, results);
1256
- return {
1257
- valid: policyMet && results.every((r2) => r2.valid),
1258
- details: {
1259
- signatureResults: results,
1260
- policyMet,
1261
- timestamp: (/* @__PURE__ */ new Date()).toISOString()
1262
- }
1263
- };
1264
- }
1265
- function checkPolicy(signature, results) {
1266
- const policy = signature.policy;
1267
- if (!policy) {
1268
- return results.every((r2) => r2.valid);
1269
- }
1270
- const validResults = results.filter((r2) => r2.valid);
1271
- if (policy.requiredSuites) {
1272
- const requiredValid = policy.requiredSuites.every((suiteId) => validResults.some((r2) => r2.suiteId === suiteId));
1273
- if (!requiredValid)
1274
- return false;
1275
- }
1276
- switch (policy.threshold) {
1277
- case "any":
1278
- return validResults.length > 0;
1279
- case "all":
1280
- return validResults.length === results.length;
1281
- case "quorum":
1282
- return validResults.length >= (policy.quorumCount || 0);
1283
- default:
1284
- return validResults.length === results.length;
1285
- }
1286
- }
1287
- function getHashAlgorithm(suiteId) {
1288
- if (suiteId.startsWith("bsv-ecdsa"))
1289
- return "sha256";
1290
- if (suiteId.startsWith("ml-dsa"))
1291
- return "sha3-256";
1292
- if (suiteId.startsWith("fn-dsa"))
1293
- return "sha3-256";
1294
- if (suiteId.startsWith("slh-dsa"))
1295
- return "sha256";
1296
- return "sha256";
1297
- }
1298
- function arraysEqual(a2, b2) {
1299
- if (a2.length !== b2.length)
1300
- return false;
1301
- for (let i2 = 0; i2 < a2.length; i2++) {
1302
- if (a2[i2] !== b2[i2])
1303
- return false;
1304
- }
1305
- return true;
1306
- }
1307
- }
1308
- });
1309
-
1310
- // ../crypto/dist/key-registry.js
1311
- var require_key_registry = __commonJS({
1312
- "../crypto/dist/key-registry.js"(exports2) {
1313
- "use strict";
1314
- init_esbuild_shims();
1315
- Object.defineProperty(exports2, "__esModule", { value: true });
1316
- exports2.KeyRegistry = exports2.InMemoryKeyStorage = void 0;
1317
- var InMemoryKeyStorage3 = class {
1318
- constructor() {
1319
- __publicField(this, "keys", /* @__PURE__ */ new Map());
1320
- }
1321
- async store(keyId, keypair, meta) {
1322
- this.keys.set(keyId, { keypair, meta });
1323
- }
1324
- async load(keyId) {
1325
- return this.keys.get(keyId) || null;
1326
- }
1327
- async list(filter) {
1328
- const allMeta = Array.from(this.keys.values()).map((k2) => k2.meta);
1329
- if (!filter) {
1330
- return allMeta;
975
+ C._free(A2);
976
+ } catch (A3) {
977
+ setTimeout((function() {
978
+ throw A3;
979
+ }), 0);
1331
980
  }
1332
- return allMeta.filter((meta) => {
1333
- return Object.entries(filter).every(([key, value]) => {
1334
- if (key === "usage" && Array.isArray(value)) {
1335
- return value.some((u2) => meta.usage.includes(u2));
1336
- }
1337
- return meta[key] === value;
1338
- });
1339
- });
1340
981
  }
1341
- async delete(keyId) {
1342
- this.keys.delete(keyId);
1343
- }
1344
- async updateMeta(keyId, updates) {
1345
- const existing = this.keys.get(keyId);
1346
- if (!existing) {
1347
- throw new Error(`Key not found: ${keyId}`);
982
+ C.ready = new Promise((function(A, I) {
983
+ function g(A2) {
984
+ return g = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(A3) {
985
+ return typeof A3;
986
+ } : function(A3) {
987
+ return A3 && "function" == typeof Symbol && A3.constructor === Symbol && A3 !== Symbol.prototype ? "symbol" : typeof A3;
988
+ }, g(A2);
1348
989
  }
1349
- this.keys.set(keyId, {
1350
- keypair: existing.keypair,
1351
- meta: { ...existing.meta, ...updates }
1352
- });
1353
- }
1354
- /**
1355
- * Clear all keys (testing only).
1356
- */
1357
- clear() {
1358
- this.keys.clear();
1359
- }
1360
- };
1361
- exports2.InMemoryKeyStorage = InMemoryKeyStorage3;
1362
- var KeyRegistry3 = class {
1363
- constructor(storage = new InMemoryKeyStorage3()) {
1364
- __publicField(this, "storage");
1365
- this.storage = storage;
1366
- }
1367
- /**
1368
- * Register a new keypair with metadata.
1369
- */
1370
- async registerKey(keyId, keypair, suiteId, options = {}) {
1371
- const meta = {
1372
- keyId,
1373
- suiteId,
1374
- createdAt: (/* @__PURE__ */ new Date()).toISOString(),
1375
- expiresAt: options.expiresAt,
1376
- usage: options.usage || ["signing"],
1377
- cryptoProfileVersion: options.cryptoProfileVersion || "1.0.0",
1378
- status: options.status || "active"
1379
- };
1380
- await this.storage.store(keyId, keypair, meta);
1381
- return meta;
1382
- }
1383
- /**
1384
- * Get a keypair and its metadata.
1385
- */
1386
- async getKey(keyId) {
1387
- return await this.storage.load(keyId);
1388
- }
1389
- /**
1390
- * Get only the public key (no private key).
1391
- */
1392
- async getPublicKey(keyId) {
1393
- const result = await this.storage.load(keyId);
1394
- if (!result)
1395
- return null;
1396
- return {
1397
- publicKey: result.keypair.publicKey,
1398
- meta: result.meta
990
+ (Q = {}).onAbort = I, Q.onRuntimeInitialized = function() {
991
+ try {
992
+ Q._dilithiumjs_public_key_bytes(), A(Q);
993
+ } catch (A2) {
994
+ I(A2);
995
+ }
1399
996
  };
1400
- }
1401
- /**
1402
- * List all keys matching optional filter.
1403
- */
1404
- async listKeys(filter) {
1405
- return await this.storage.list(filter);
1406
- }
1407
- /**
1408
- * List only active, non-expired keys.
1409
- */
1410
- async listActiveKeys(filter) {
1411
- const allKeys = await this.storage.list(filter);
1412
- const now = /* @__PURE__ */ new Date();
1413
- return allKeys.filter((meta) => {
1414
- if (meta.status && meta.status !== "active") {
1415
- return false;
997
+ var C, B, Q = void 0 !== Q ? Q : {}, i = Object.assign({}, Q), E = function(A2, I3) {
998
+ throw I3;
999
+ }, o = "object" == ("undefined" == typeof window ? "undefined" : g(window)), n = "function" == typeof importScripts, r = "object" == ("undefined" == typeof process ? "undefined" : g(process)) && "object" == g(process.versions) && "string" == typeof process.versions.node, t = "";
1000
+ if (r) {
1001
+ var a = eval("require")("fs"), e = eval("require")("path");
1002
+ t = n ? e.dirname(t) + "/" : __dirname + "/", C = function(A2, I3) {
1003
+ var g2 = x(A2);
1004
+ return g2 ? I3 ? g2 : g2.toString() : (A2 = q(A2) ? new URL(A2) : e.normalize(A2), a.readFileSync(A2, I3 ? void 0 : "utf8"));
1005
+ }, B = function(A2) {
1006
+ var I3 = C(A2, true);
1007
+ return I3.buffer || (I3 = new Uint8Array(I3)), I3;
1008
+ }, function(A2, I3, g2) {
1009
+ var C3 = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3], B2 = x(A2);
1010
+ B2 && I3(B2), A2 = q(A2) ? new URL(A2) : e.normalize(A2), a.readFile(A2, C3 ? void 0 : "utf8", (function(A3, B3) {
1011
+ A3 ? g2(A3) : I3(C3 ? B3.buffer : B3);
1012
+ }));
1013
+ }, !Q.thisProgram && process.argv.length > 1 && process.argv[1].replace(/\\/g, "/"), process.argv.slice(2), "undefined" != typeof module && (module.exports = Q), process.on("uncaughtException", (function(A2) {
1014
+ if (!("unwind" === A2 || A2 instanceof p || A2.context instanceof p)) throw A2;
1015
+ })), E = function(A2, I3) {
1016
+ throw process.exitCode = A2, I3;
1017
+ }, Q.inspect = function() {
1018
+ return "[Emscripten Module object]";
1019
+ };
1020
+ } else (o || n) && (n ? t = self.location.href : "undefined" != typeof document && document.currentScript && (t = document.currentScript.src), t = 0 !== t.indexOf("blob:") ? t.substr(0, t.replace(/[?#].*/, "").lastIndexOf("/") + 1) : "", C = function(A2) {
1021
+ try {
1022
+ var I3 = new XMLHttpRequest();
1023
+ return I3.open("GET", A2, false), I3.send(null), I3.responseText;
1024
+ } catch (I4) {
1025
+ var g2 = x(A2);
1026
+ if (g2) return (function(A3) {
1027
+ for (var I5 = [], g3 = 0; g3 < A3.length; g3++) {
1028
+ var C3 = A3[g3];
1029
+ C3 > 255 && (C3 &= 255), I5.push(String.fromCharCode(C3));
1030
+ }
1031
+ return I5.join("");
1032
+ })(g2);
1033
+ throw I4;
1416
1034
  }
1417
- if (meta.expiresAt && new Date(meta.expiresAt) < now) {
1418
- return false;
1035
+ }, n && (B = function(A2) {
1036
+ try {
1037
+ var I3 = new XMLHttpRequest();
1038
+ return I3.open("GET", A2, false), I3.responseType = "arraybuffer", I3.send(null), new Uint8Array(I3.response);
1039
+ } catch (I4) {
1040
+ var g2 = x(A2);
1041
+ if (g2) return g2;
1042
+ throw I4;
1419
1043
  }
1420
- return true;
1421
- });
1422
- }
1423
- /**
1424
- * Rotate a key: generate new keypair, mark old as 'rotated'.
1425
- *
1426
- * Returns the new key's metadata.
1427
- */
1428
- async rotateKey(oldKeyId, newKeyId, newKeypair) {
1429
- const oldKey = await this.storage.load(oldKeyId);
1430
- if (!oldKey) {
1431
- throw new Error(`Cannot rotate: key not found: ${oldKeyId}`);
1432
- }
1433
- await this.storage.updateMeta(oldKeyId, {
1434
- status: "rotated"
1435
- });
1436
- await this.registerKey(newKeyId, newKeypair, oldKey.meta.suiteId, {
1437
- usage: oldKey.meta.usage,
1438
- cryptoProfileVersion: oldKey.meta.cryptoProfileVersion,
1439
- expiresAt: oldKey.meta.expiresAt,
1440
- status: "active"
1441
- });
1442
- await this.storage.updateMeta(newKeyId, {
1443
- rotatedFrom: oldKeyId
1444
- });
1445
- const result = await this.storage.load(newKeyId);
1446
- return result.meta;
1447
- }
1448
- /**
1449
- * Revoke a key (marks as unusable, but doesn't delete).
1450
- */
1451
- async revokeKey(keyId, reason) {
1452
- await this.storage.updateMeta(keyId, {
1453
- status: "revoked",
1454
- revokedAt: (/* @__PURE__ */ new Date()).toISOString()
1044
+ }), function(A2, I3, g2) {
1045
+ var C3 = new XMLHttpRequest();
1046
+ C3.open("GET", A2, true), C3.responseType = "arraybuffer", C3.onload = function() {
1047
+ if (200 == C3.status || 0 == C3.status && C3.response) I3(C3.response);
1048
+ else {
1049
+ var B2 = x(A2);
1050
+ B2 ? I3(B2.buffer) : g2();
1051
+ }
1052
+ }, C3.onerror = g2, C3.send(null);
1053
+ }, function(A2) {
1054
+ return document.title = A2;
1455
1055
  });
1456
- }
1457
- /**
1458
- * Delete a key permanently (use with caution).
1459
- */
1460
- async deleteKey(keyId) {
1461
- await this.storage.delete(keyId);
1462
- }
1463
- /**
1464
- * Mark expired keys as 'expired' status.
1465
- * Returns count of keys marked expired.
1466
- */
1467
- async markExpiredKeys() {
1468
- const allKeys = await this.storage.list();
1469
- const now = /* @__PURE__ */ new Date();
1470
- let count = 0;
1471
- for (const meta of allKeys) {
1472
- if (meta.expiresAt && new Date(meta.expiresAt) < now && meta.status === "active") {
1473
- await this.storage.updateMeta(meta.keyId, {
1474
- status: "expired"
1475
- });
1476
- count++;
1477
- }
1056
+ Q.print || console.log.bind(console);
1057
+ var f, D = Q.printErr || console.error.bind(console);
1058
+ Object.assign(Q, i), i = null, Q.arguments && Q.arguments, Q.thisProgram && Q.thisProgram, Q.quit && (E = Q.quit), Q.wasmBinary && (f = Q.wasmBinary);
1059
+ var c, G = Q.noExitRuntime || true;
1060
+ "object" != ("undefined" == typeof WebAssembly ? "undefined" : g(WebAssembly)) && U("no native wasm support detected");
1061
+ var h, y, u, s, F = false;
1062
+ var Y = [], N = [], w = [];
1063
+ var S = 0, k = null, H = null;
1064
+ function U(A2) {
1065
+ throw Q.onAbort && Q.onAbort(A2), D(A2 = "Aborted(" + A2 + ")"), F = true, 1, A2 += ". Build with -sASSERTIONS for more info.", new WebAssembly.RuntimeError(A2);
1478
1066
  }
1479
- return count;
1480
- }
1481
- /**
1482
- * Cleanup: delete keys that have been revoked/expired for longer than retention period.
1483
- *
1484
- * @param retentionDays How many days to keep revoked/expired keys (default: 90)
1485
- */
1486
- async pruneOldKeys(retentionDays = 90) {
1487
- const allKeys = await this.storage.list();
1488
- const cutoffDate = /* @__PURE__ */ new Date();
1489
- cutoffDate.setDate(cutoffDate.getDate() - retentionDays);
1490
- let count = 0;
1491
- for (const meta of allKeys) {
1492
- const shouldPrune = meta.status === "revoked" && meta.revokedAt && new Date(meta.revokedAt) < cutoffDate || meta.status === "expired" && meta.expiresAt && new Date(meta.expiresAt) < cutoffDate;
1493
- if (shouldPrune) {
1494
- await this.storage.delete(meta.keyId);
1495
- count++;
1496
- }
1067
+ var R, d, M = "data:application/octet-stream;base64,";
1068
+ function J(A2) {
1069
+ return A2.startsWith(M);
1497
1070
  }
1498
- return count;
1499
- }
1500
- };
1501
- exports2.KeyRegistry = KeyRegistry3;
1502
- }
1503
- });
1504
-
1505
- // ../../node_modules/@noble/secp256k1/index.js
1506
- var secp256k1_exports = {};
1507
- __export(secp256k1_exports, {
1508
- CURVE: () => secp256k1_CURVE,
1509
- Point: () => Point,
1510
- ProjectivePoint: () => Point,
1511
- Signature: () => Signature,
1512
- etc: () => etc,
1513
- getPublicKey: () => getPublicKey,
1514
- getSharedSecret: () => getSharedSecret,
1515
- sign: () => sign,
1516
- signAsync: () => signAsync,
1517
- utils: () => utils,
1518
- verify: () => verify
1519
- });
1520
- var secp256k1_CURVE, P2, N2, Gx, Gy, _b, L2, L22, err, isBig, isStr, isBytes2, abytes2, u8n, u8fr, padh, bytesToHex, C2, _ch, hexToBytes, toU8, cr, subtle, concatBytes, randomBytes, big, arange, M2, modN, invert, callHash, apoint, koblitz, afield0, afield, agroup, isEven, u8of, getPrefix, lift_x, _Point, Point, G2, I2, doubleScalarMulUns, bytesToNumBE, sliceBytesNumBE, B256, numTo32b, toPrivScalar, highS, getPublicKey, Signature, bits2int, bits2int_modN, signOpts, veriOpts, prepSig, hmacDrbg, signAsync, sign, verify, recoverPublicKey, getSharedSecret, hashToPrivateKey, randomPrivateKey, _sha, etc, utils, W2, scalarBits, pwindows, pwindowSize, precompute, Gpows, ctneg, wNAF;
1521
- var init_secp256k1 = __esm({
1522
- "../../node_modules/@noble/secp256k1/index.js"() {
1523
- init_esbuild_shims();
1524
- secp256k1_CURVE = {
1525
- p: 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2fn,
1526
- n: 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141n,
1527
- h: 1n,
1528
- a: 0n,
1529
- b: 7n,
1530
- Gx: 0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798n,
1531
- Gy: 0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8n
1532
- };
1533
- ({ p: P2, n: N2, Gx, Gy, b: _b } = secp256k1_CURVE);
1534
- L2 = 32;
1535
- L22 = 64;
1536
- err = (m2 = "") => {
1537
- throw new Error(m2);
1538
- };
1539
- isBig = (n2) => typeof n2 === "bigint";
1540
- isStr = (s2) => typeof s2 === "string";
1541
- isBytes2 = (a2) => a2 instanceof Uint8Array || ArrayBuffer.isView(a2) && a2.constructor.name === "Uint8Array";
1542
- abytes2 = (a2, l2) => !isBytes2(a2) || typeof l2 === "number" && l2 > 0 && a2.length !== l2 ? err("Uint8Array expected") : a2;
1543
- u8n = (len) => new Uint8Array(len);
1544
- u8fr = (buf) => Uint8Array.from(buf);
1545
- padh = (n2, pad) => n2.toString(16).padStart(pad, "0");
1546
- bytesToHex = (b2) => Array.from(abytes2(b2)).map((e2) => padh(e2, 2)).join("");
1547
- C2 = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 };
1548
- _ch = (ch) => {
1549
- if (ch >= C2._0 && ch <= C2._9)
1550
- return ch - C2._0;
1551
- if (ch >= C2.A && ch <= C2.F)
1552
- return ch - (C2.A - 10);
1553
- if (ch >= C2.a && ch <= C2.f)
1554
- return ch - (C2.a - 10);
1555
- return;
1556
- };
1557
- hexToBytes = (hex) => {
1558
- const e2 = "hex invalid";
1559
- if (!isStr(hex))
1560
- return err(e2);
1561
- const hl = hex.length;
1562
- const al = hl / 2;
1563
- if (hl % 2)
1564
- return err(e2);
1565
- const array = u8n(al);
1566
- for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {
1567
- const n1 = _ch(hex.charCodeAt(hi));
1568
- const n2 = _ch(hex.charCodeAt(hi + 1));
1569
- if (n1 === void 0 || n2 === void 0)
1570
- return err(e2);
1571
- array[ai] = n1 * 16 + n2;
1572
- }
1573
- return array;
1574
- };
1575
- toU8 = (a2, len) => abytes2(isStr(a2) ? hexToBytes(a2) : u8fr(abytes2(a2)), len);
1576
- cr = () => globalThis?.crypto;
1577
- subtle = () => cr()?.subtle ?? err("crypto.subtle must be defined");
1578
- concatBytes = (...arrs) => {
1579
- const r2 = u8n(arrs.reduce((sum, a2) => sum + abytes2(a2).length, 0));
1580
- let pad = 0;
1581
- arrs.forEach((a2) => {
1582
- r2.set(a2, pad);
1583
- pad += a2.length;
1584
- });
1585
- return r2;
1586
- };
1587
- randomBytes = (len = L2) => {
1588
- const c2 = cr();
1589
- return c2.getRandomValues(u8n(len));
1590
- };
1591
- big = BigInt;
1592
- arange = (n2, min, max, msg = "bad number: out of range") => isBig(n2) && min <= n2 && n2 < max ? n2 : err(msg);
1593
- M2 = (a2, b2 = P2) => {
1594
- const r2 = a2 % b2;
1595
- return r2 >= 0n ? r2 : b2 + r2;
1596
- };
1597
- modN = (a2) => M2(a2, N2);
1598
- invert = (num, md) => {
1599
- if (num === 0n || md <= 0n)
1600
- err("no inverse n=" + num + " mod=" + md);
1601
- let a2 = M2(num, md), b2 = md, x2 = 0n, y2 = 1n, u2 = 1n, v2 = 0n;
1602
- while (a2 !== 0n) {
1603
- const q2 = b2 / a2, r2 = b2 % a2;
1604
- const m2 = x2 - u2 * q2, n2 = y2 - v2 * q2;
1605
- b2 = a2, a2 = r2, x2 = u2, y2 = v2, u2 = m2, v2 = n2;
1606
- }
1607
- return b2 === 1n ? M2(x2, md) : err("no inverse");
1608
- };
1609
- callHash = (name) => {
1610
- const fn = etc[name];
1611
- if (typeof fn !== "function")
1612
- err("hashes." + name + " not set");
1613
- return fn;
1614
- };
1615
- apoint = (p2) => p2 instanceof Point ? p2 : err("Point expected");
1616
- koblitz = (x2) => M2(M2(x2 * x2) * x2 + _b);
1617
- afield0 = (n2) => arange(n2, 0n, P2);
1618
- afield = (n2) => arange(n2, 1n, P2);
1619
- agroup = (n2) => arange(n2, 1n, N2);
1620
- isEven = (y2) => (y2 & 1n) === 0n;
1621
- u8of = (n2) => Uint8Array.of(n2);
1622
- getPrefix = (y2) => u8of(isEven(y2) ? 2 : 3);
1623
- lift_x = (x2) => {
1624
- const c2 = koblitz(afield(x2));
1625
- let r2 = 1n;
1626
- for (let num = c2, e2 = (P2 + 1n) / 4n; e2 > 0n; e2 >>= 1n) {
1627
- if (e2 & 1n)
1628
- r2 = r2 * num % P2;
1629
- num = num * num % P2;
1630
- }
1631
- return M2(r2 * r2) === c2 ? r2 : err("sqrt invalid");
1632
- };
1633
- _Point = class _Point {
1634
- constructor(px, py, pz) {
1635
- __publicField(this, "px");
1636
- __publicField(this, "py");
1637
- __publicField(this, "pz");
1638
- this.px = afield0(px);
1639
- this.py = afield(py);
1640
- this.pz = afield0(pz);
1641
- Object.freeze(this);
1642
- }
1643
- /** Convert Uint8Array or hex string to Point. */
1644
- static fromBytes(bytes) {
1645
- abytes2(bytes);
1646
- let p2 = void 0;
1647
- const head = bytes[0];
1648
- const tail = bytes.subarray(1);
1649
- const x2 = sliceBytesNumBE(tail, 0, L2);
1650
- const len = bytes.length;
1651
- if (len === L2 + 1 && [2, 3].includes(head)) {
1652
- let y2 = lift_x(x2);
1653
- const evenY = isEven(y2);
1654
- const evenH = isEven(big(head));
1655
- if (evenH !== evenY)
1656
- y2 = M2(-y2);
1657
- p2 = new _Point(x2, y2, 1n);
1071
+ function q(A2) {
1072
+ return A2.startsWith("file://");
1658
1073
  }
1659
- if (len === L22 + 1 && head === 4)
1660
- p2 = new _Point(x2, sliceBytesNumBE(tail, L2, L22), 1n);
1661
- return p2 ? p2.assertValidity() : err("bad point: not on curve");
1662
- }
1663
- /** Equality check: compare points P&Q. */
1664
- equals(other) {
1665
- const { px: X1, py: Y1, pz: Z1 } = this;
1666
- const { px: X2, py: Y2, pz: Z2 } = apoint(other);
1667
- const X1Z2 = M2(X1 * Z2);
1668
- const X2Z1 = M2(X2 * Z1);
1669
- const Y1Z2 = M2(Y1 * Z2);
1670
- const Y2Z1 = M2(Y2 * Z1);
1671
- return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;
1672
- }
1673
- is0() {
1674
- return this.equals(I2);
1675
- }
1676
- /** Flip point over y coordinate. */
1677
- negate() {
1678
- return new _Point(this.px, M2(-this.py), this.pz);
1679
- }
1680
- /** Point doubling: P+P, complete formula. */
1681
- double() {
1682
- return this.add(this);
1683
- }
1684
- /**
1685
- * Point addition: P+Q, complete, exception-free formula
1686
- * (Renes-Costello-Batina, algo 1 of [2015/1060](https://eprint.iacr.org/2015/1060)).
1687
- * Cost: `12M + 0S + 3*a + 3*b3 + 23add`.
1688
- */
1689
- // prettier-ignore
1690
- add(other) {
1691
- const { px: X1, py: Y1, pz: Z1 } = this;
1692
- const { px: X2, py: Y2, pz: Z2 } = apoint(other);
1693
- const a2 = 0n;
1694
- const b2 = _b;
1695
- let X3 = 0n, Y3 = 0n, Z3 = 0n;
1696
- const b3 = M2(b2 * 3n);
1697
- let t0 = M2(X1 * X2), t1 = M2(Y1 * Y2), t2 = M2(Z1 * Z2), t3 = M2(X1 + Y1);
1698
- let t4 = M2(X2 + Y2);
1699
- t3 = M2(t3 * t4);
1700
- t4 = M2(t0 + t1);
1701
- t3 = M2(t3 - t4);
1702
- t4 = M2(X1 + Z1);
1703
- let t5 = M2(X2 + Z2);
1704
- t4 = M2(t4 * t5);
1705
- t5 = M2(t0 + t2);
1706
- t4 = M2(t4 - t5);
1707
- t5 = M2(Y1 + Z1);
1708
- X3 = M2(Y2 + Z2);
1709
- t5 = M2(t5 * X3);
1710
- X3 = M2(t1 + t2);
1711
- t5 = M2(t5 - X3);
1712
- Z3 = M2(a2 * t4);
1713
- X3 = M2(b3 * t2);
1714
- Z3 = M2(X3 + Z3);
1715
- X3 = M2(t1 - Z3);
1716
- Z3 = M2(t1 + Z3);
1717
- Y3 = M2(X3 * Z3);
1718
- t1 = M2(t0 + t0);
1719
- t1 = M2(t1 + t0);
1720
- t2 = M2(a2 * t2);
1721
- t4 = M2(b3 * t4);
1722
- t1 = M2(t1 + t2);
1723
- t2 = M2(t0 - t2);
1724
- t2 = M2(a2 * t2);
1725
- t4 = M2(t4 + t2);
1726
- t0 = M2(t1 * t4);
1727
- Y3 = M2(Y3 + t0);
1728
- t0 = M2(t5 * t4);
1729
- X3 = M2(t3 * X3);
1730
- X3 = M2(X3 - t0);
1731
- t0 = M2(t3 * t1);
1732
- Z3 = M2(t5 * Z3);
1733
- Z3 = M2(Z3 + t0);
1734
- return new _Point(X3, Y3, Z3);
1735
- }
1736
- /**
1737
- * Point-by-scalar multiplication. Scalar must be in range 1 <= n < CURVE.n.
1738
- * Uses {@link wNAF} for base point.
1739
- * Uses fake point to mitigate side-channel leakage.
1740
- * @param n scalar by which point is multiplied
1741
- * @param safe safe mode guards against timing attacks; unsafe mode is faster
1742
- */
1743
- multiply(n2, safe = true) {
1744
- if (!safe && n2 === 0n)
1745
- return I2;
1746
- agroup(n2);
1747
- if (n2 === 1n)
1748
- return this;
1749
- if (this.equals(G2))
1750
- return wNAF(n2).p;
1751
- let p2 = I2;
1752
- let f2 = G2;
1753
- for (let d2 = this; n2 > 0n; d2 = d2.double(), n2 >>= 1n) {
1754
- if (n2 & 1n)
1755
- p2 = p2.add(d2);
1756
- else if (safe)
1757
- f2 = f2.add(d2);
1758
- }
1759
- return p2;
1760
- }
1761
- /** Convert point to 2d xy affine point. (X, Y, Z) ∋ (x=X/Z, y=Y/Z) */
1762
- toAffine() {
1763
- const { px: x2, py: y2, pz: z } = this;
1764
- if (this.equals(I2))
1765
- return { x: 0n, y: 0n };
1766
- if (z === 1n)
1767
- return { x: x2, y: y2 };
1768
- const iz = invert(z, P2);
1769
- if (M2(z * iz) !== 1n)
1770
- err("inverse invalid");
1771
- return { x: M2(x2 * iz), y: M2(y2 * iz) };
1772
- }
1773
- /** Checks if the point is valid and on-curve. */
1774
- assertValidity() {
1775
- const { x: x2, y: y2 } = this.toAffine();
1776
- afield(x2);
1777
- afield(y2);
1778
- return M2(y2 * y2) === koblitz(x2) ? this : err("bad point: not on curve");
1779
- }
1780
- /** Converts point to 33/65-byte Uint8Array. */
1781
- toBytes(isCompressed = true) {
1782
- const { x: x2, y: y2 } = this.assertValidity().toAffine();
1783
- const x32b = numTo32b(x2);
1784
- if (isCompressed)
1785
- return concatBytes(getPrefix(y2), x32b);
1786
- return concatBytes(u8of(4), x32b, numTo32b(y2));
1787
- }
1788
- /** Create 3d xyz point from 2d xy. (0, 0) => (0, 1, 0), not (0, 0, 1) */
1789
- static fromAffine(ap) {
1790
- const { x: x2, y: y2 } = ap;
1791
- return x2 === 0n && y2 === 0n ? I2 : new _Point(x2, y2, 1n);
1792
- }
1793
- toHex(isCompressed) {
1794
- return bytesToHex(this.toBytes(isCompressed));
1795
- }
1796
- static fromPrivateKey(k2) {
1797
- return G2.multiply(toPrivScalar(k2));
1798
- }
1799
- static fromHex(hex) {
1800
- return _Point.fromBytes(toU8(hex));
1801
- }
1802
- get x() {
1803
- return this.toAffine().x;
1804
- }
1805
- get y() {
1806
- return this.toAffine().y;
1807
- }
1808
- toRawBytes(isCompressed) {
1809
- return this.toBytes(isCompressed);
1810
- }
1811
- };
1812
- __publicField(_Point, "BASE");
1813
- __publicField(_Point, "ZERO");
1814
- Point = _Point;
1815
- G2 = new Point(Gx, Gy, 1n);
1816
- I2 = new Point(0n, 1n, 0n);
1817
- Point.BASE = G2;
1818
- Point.ZERO = I2;
1819
- doubleScalarMulUns = (R2, u1, u2) => {
1820
- return G2.multiply(u1, false).add(R2.multiply(u2, false)).assertValidity();
1821
- };
1822
- bytesToNumBE = (b2) => big("0x" + (bytesToHex(b2) || "0"));
1823
- sliceBytesNumBE = (b2, from, to) => bytesToNumBE(b2.subarray(from, to));
1824
- B256 = 2n ** 256n;
1825
- numTo32b = (num) => hexToBytes(padh(arange(num, 0n, B256), L22));
1826
- toPrivScalar = (pr) => {
1827
- const num = isBig(pr) ? pr : bytesToNumBE(toU8(pr, L2));
1828
- return arange(num, 1n, N2, "private key invalid 3");
1829
- };
1830
- highS = (n2) => n2 > N2 >> 1n;
1831
- getPublicKey = (privKey, isCompressed = true) => {
1832
- return G2.multiply(toPrivScalar(privKey)).toBytes(isCompressed);
1833
- };
1834
- Signature = class _Signature {
1835
- constructor(r2, s2, recovery) {
1836
- __publicField(this, "r");
1837
- __publicField(this, "s");
1838
- __publicField(this, "recovery");
1839
- this.r = agroup(r2);
1840
- this.s = agroup(s2);
1841
- if (recovery != null)
1842
- this.recovery = recovery;
1843
- Object.freeze(this);
1844
- }
1845
- /** Create signature from 64b compact (r || s) representation. */
1846
- static fromBytes(b2) {
1847
- abytes2(b2, L22);
1848
- const r2 = sliceBytesNumBE(b2, 0, L2);
1849
- const s2 = sliceBytesNumBE(b2, L2, L22);
1850
- return new _Signature(r2, s2);
1851
- }
1852
- toBytes() {
1853
- const { r: r2, s: s2 } = this;
1854
- return concatBytes(numTo32b(r2), numTo32b(s2));
1855
- }
1856
- /** Copy signature, with newly added recovery bit. */
1857
- addRecoveryBit(bit) {
1858
- return new _Signature(this.r, this.s, bit);
1859
- }
1860
- hasHighS() {
1861
- return highS(this.s);
1862
- }
1863
- toCompactRawBytes() {
1864
- return this.toBytes();
1865
- }
1866
- toCompactHex() {
1867
- return bytesToHex(this.toBytes());
1868
- }
1869
- recoverPublicKey(msg) {
1870
- return recoverPublicKey(this, msg);
1871
- }
1872
- static fromCompact(hex) {
1873
- return _Signature.fromBytes(toU8(hex, L22));
1874
- }
1875
- assertValidity() {
1876
- return this;
1877
- }
1878
- normalizeS() {
1879
- const { r: r2, s: s2, recovery } = this;
1880
- return highS(s2) ? new _Signature(r2, modN(-s2), recovery) : this;
1881
- }
1882
- };
1883
- bits2int = (bytes) => {
1884
- const delta = bytes.length * 8 - 256;
1885
- if (delta > 1024)
1886
- err("msg invalid");
1887
- const num = bytesToNumBE(bytes);
1888
- return delta > 0 ? num >> big(delta) : num;
1889
- };
1890
- bits2int_modN = (bytes) => modN(bits2int(abytes2(bytes)));
1891
- signOpts = { lowS: true };
1892
- veriOpts = { lowS: true };
1893
- prepSig = (msgh, priv, opts = signOpts) => {
1894
- if (["der", "recovered", "canonical"].some((k2) => k2 in opts))
1895
- err("option not supported");
1896
- let { lowS, extraEntropy } = opts;
1897
- if (lowS == null)
1898
- lowS = true;
1899
- const i2o = numTo32b;
1900
- const h1i = bits2int_modN(toU8(msgh));
1901
- const h1o = i2o(h1i);
1902
- const d2 = toPrivScalar(priv);
1903
- const seed = [i2o(d2), h1o];
1904
- if (extraEntropy)
1905
- seed.push(extraEntropy === true ? randomBytes(L2) : toU8(extraEntropy));
1906
- const m2 = h1i;
1907
- const k2sig = (kBytes) => {
1908
- const k2 = bits2int(kBytes);
1909
- if (!(1n <= k2 && k2 < N2))
1910
- return;
1911
- const q2 = G2.multiply(k2).toAffine();
1912
- const r2 = modN(q2.x);
1913
- if (r2 === 0n)
1914
- return;
1915
- const ik = invert(k2, N2);
1916
- const s2 = modN(ik * modN(m2 + modN(d2 * r2)));
1917
- if (s2 === 0n)
1918
- return;
1919
- let normS = s2;
1920
- let recovery = (q2.x === r2 ? 0 : 2) | Number(q2.y & 1n);
1921
- if (lowS && highS(s2)) {
1922
- normS = modN(-s2);
1923
- recovery ^= 1;
1924
- }
1925
- return new Signature(r2, normS, recovery);
1926
- };
1927
- return { seed: concatBytes(...seed), k2sig };
1928
- };
1929
- hmacDrbg = (asynchronous) => {
1930
- let v2 = u8n(L2);
1931
- let k2 = u8n(L2);
1932
- let i2 = 0;
1933
- const NULL = u8n(0);
1934
- const reset = () => {
1935
- v2.fill(1);
1936
- k2.fill(0);
1937
- i2 = 0;
1938
- };
1939
- const max = 1e3;
1940
- const _e = "drbg: tried 1000 values";
1941
- if (asynchronous) {
1942
- const h2 = (...b2) => etc.hmacSha256Async(k2, v2, ...b2);
1943
- const reseed = async (seed = NULL) => {
1944
- k2 = await h2(u8of(0), seed);
1945
- v2 = await h2();
1946
- if (seed.length === 0)
1947
- return;
1948
- k2 = await h2(u8of(1), seed);
1949
- v2 = await h2();
1950
- };
1951
- const gen = async () => {
1952
- if (i2++ >= max)
1953
- err(_e);
1954
- v2 = await h2();
1955
- return v2;
1956
- };
1957
- return async (seed, pred) => {
1958
- reset();
1959
- await reseed(seed);
1960
- let res = void 0;
1961
- while (!(res = pred(await gen())))
1962
- await reseed();
1963
- reset();
1964
- return res;
1965
- };
1966
- } else {
1967
- const h2 = (...b2) => callHash("hmacSha256Sync")(k2, v2, ...b2);
1968
- const reseed = (seed = NULL) => {
1969
- k2 = h2(u8of(0), seed);
1970
- v2 = h2();
1971
- if (seed.length === 0)
1972
- return;
1973
- k2 = h2(u8of(1), seed);
1974
- v2 = h2();
1975
- };
1976
- const gen = () => {
1977
- if (i2++ >= max)
1978
- err(_e);
1979
- v2 = h2();
1980
- return v2;
1981
- };
1982
- return (seed, pred) => {
1983
- reset();
1984
- reseed(seed);
1985
- let res = void 0;
1986
- while (!(res = pred(gen())))
1987
- reseed();
1988
- reset();
1989
- return res;
1990
- };
1991
- }
1992
- };
1993
- signAsync = async (msgh, priv, opts = signOpts) => {
1994
- const { seed, k2sig } = prepSig(msgh, priv, opts);
1995
- const sig = await hmacDrbg(true)(seed, k2sig);
1996
- return sig;
1997
- };
1998
- sign = (msgh, priv, opts = signOpts) => {
1999
- const { seed, k2sig } = prepSig(msgh, priv, opts);
2000
- const sig = hmacDrbg(false)(seed, k2sig);
2001
- return sig;
2002
- };
2003
- verify = (sig, msgh, pub, opts = veriOpts) => {
2004
- let { lowS } = opts;
2005
- if (lowS == null)
2006
- lowS = true;
2007
- if ("strict" in opts)
2008
- err("option not supported");
2009
- let sigg;
2010
- const rs = sig && typeof sig === "object" && "r" in sig;
2011
- if (!rs && toU8(sig).length !== L22)
2012
- err("signature must be 64 bytes");
2013
- try {
2014
- sigg = rs ? new Signature(sig.r, sig.s) : Signature.fromCompact(sig);
2015
- const h2 = bits2int_modN(toU8(msgh));
2016
- const P3 = Point.fromBytes(toU8(pub));
2017
- const { r: r2, s: s2 } = sigg;
2018
- if (lowS && highS(s2))
2019
- return false;
2020
- const is = invert(s2, N2);
2021
- const u1 = modN(h2 * is);
2022
- const u2 = modN(r2 * is);
2023
- const R2 = doubleScalarMulUns(P3, u1, u2).toAffine();
2024
- const v2 = modN(R2.x);
2025
- return v2 === r2;
2026
- } catch (error) {
2027
- return false;
2028
- }
2029
- };
2030
- recoverPublicKey = (sig, msgh) => {
2031
- const { r: r2, s: s2, recovery } = sig;
2032
- if (![0, 1, 2, 3].includes(recovery))
2033
- err("recovery id invalid");
2034
- const h2 = bits2int_modN(toU8(msgh, L2));
2035
- const radj = recovery === 2 || recovery === 3 ? r2 + N2 : r2;
2036
- afield(radj);
2037
- const head = getPrefix(big(recovery));
2038
- const Rb = concatBytes(head, numTo32b(radj));
2039
- const R2 = Point.fromBytes(Rb);
2040
- const ir = invert(radj, N2);
2041
- const u1 = modN(-h2 * ir);
2042
- const u2 = modN(s2 * ir);
2043
- return doubleScalarMulUns(R2, u1, u2);
2044
- };
2045
- getSharedSecret = (privA, pubB, isCompressed = true) => {
2046
- return Point.fromBytes(toU8(pubB)).multiply(toPrivScalar(privA)).toBytes(isCompressed);
2047
- };
2048
- hashToPrivateKey = (hash) => {
2049
- hash = toU8(hash);
2050
- if (hash.length < L2 + 8 || hash.length > 1024)
2051
- err("expected 40-1024b");
2052
- const num = M2(bytesToNumBE(hash), N2 - 1n);
2053
- return numTo32b(num + 1n);
2054
- };
2055
- randomPrivateKey = () => hashToPrivateKey(randomBytes(L2 + 16));
2056
- _sha = "SHA-256";
2057
- etc = {
2058
- hexToBytes,
2059
- bytesToHex,
2060
- concatBytes,
2061
- bytesToNumberBE: bytesToNumBE,
2062
- numberToBytesBE: numTo32b,
2063
- mod: M2,
2064
- invert,
2065
- // math utilities
2066
- hmacSha256Async: async (key, ...msgs) => {
2067
- const s2 = subtle();
2068
- const name = "HMAC";
2069
- const k2 = await s2.importKey("raw", key, { name, hash: { name: _sha } }, false, ["sign"]);
2070
- return u8n(await s2.sign(name, k2, concatBytes(...msgs)));
2071
- },
2072
- hmacSha256Sync: void 0,
2073
- // For TypeScript. Actual logic is below
2074
- hashToPrivateKey,
2075
- randomBytes
2076
- };
2077
- utils = {
2078
- normPrivateKeyToScalar: toPrivScalar,
2079
- isValidPrivateKey: (key) => {
2080
- try {
2081
- return !!toPrivScalar(key);
2082
- } catch (e2) {
2083
- return false;
2084
- }
2085
- },
2086
- randomPrivateKey,
2087
- precompute: (w2 = 8, p2 = G2) => {
2088
- p2.multiply(3n);
2089
- w2;
2090
- return p2;
2091
- }
2092
- };
2093
- W2 = 8;
2094
- scalarBits = 256;
2095
- pwindows = Math.ceil(scalarBits / W2) + 1;
2096
- pwindowSize = 2 ** (W2 - 1);
2097
- precompute = () => {
2098
- const points = [];
2099
- let p2 = G2;
2100
- let b2 = p2;
2101
- for (let w2 = 0; w2 < pwindows; w2++) {
2102
- b2 = p2;
2103
- points.push(b2);
2104
- for (let i2 = 1; i2 < pwindowSize; i2++) {
2105
- b2 = b2.add(p2);
2106
- points.push(b2);
2107
- }
2108
- p2 = b2.double();
2109
- }
2110
- return points;
2111
- };
2112
- Gpows = void 0;
2113
- ctneg = (cnd, p2) => {
2114
- const n2 = p2.negate();
2115
- return cnd ? n2 : p2;
2116
- };
2117
- wNAF = (n2) => {
2118
- const comp = Gpows || (Gpows = precompute());
2119
- let p2 = I2;
2120
- let f2 = G2;
2121
- const pow_2_w = 2 ** W2;
2122
- const maxNum = pow_2_w;
2123
- const mask = big(pow_2_w - 1);
2124
- const shiftBy = big(W2);
2125
- for (let w2 = 0; w2 < pwindows; w2++) {
2126
- let wbits = Number(n2 & mask);
2127
- n2 >>= shiftBy;
2128
- if (wbits > pwindowSize) {
2129
- wbits -= maxNum;
2130
- n2 += 1n;
2131
- }
2132
- const off = w2 * pwindowSize;
2133
- const offF = off;
2134
- const offP = off + Math.abs(wbits) - 1;
2135
- const isEven2 = w2 % 2 !== 0;
2136
- const isNeg = wbits < 0;
2137
- if (wbits === 0) {
2138
- f2 = f2.add(ctneg(isEven2, comp[offF]));
2139
- } else {
2140
- p2 = p2.add(ctneg(isNeg, comp[offP]));
2141
- }
2142
- }
2143
- return { p: p2, f: f2 };
2144
- };
2145
- }
2146
- });
2147
-
2148
- // ../../node_modules/@noble/hashes/crypto.js
2149
- var require_crypto = __commonJS({
2150
- "../../node_modules/@noble/hashes/crypto.js"(exports2) {
2151
- "use strict";
2152
- init_esbuild_shims();
2153
- Object.defineProperty(exports2, "__esModule", { value: true });
2154
- exports2.crypto = void 0;
2155
- exports2.crypto = typeof globalThis === "object" && "crypto" in globalThis ? globalThis.crypto : void 0;
2156
- }
2157
- });
2158
-
2159
- // ../../node_modules/@noble/hashes/utils.js
2160
- var require_utils2 = __commonJS({
2161
- "../../node_modules/@noble/hashes/utils.js"(exports2) {
2162
- "use strict";
2163
- init_esbuild_shims();
2164
- Object.defineProperty(exports2, "__esModule", { value: true });
2165
- exports2.wrapXOFConstructorWithOpts = exports2.wrapConstructorWithOpts = exports2.wrapConstructor = exports2.Hash = exports2.nextTick = exports2.swap32IfBE = exports2.byteSwapIfBE = exports2.swap8IfBE = exports2.isLE = void 0;
2166
- exports2.isBytes = isBytes3;
2167
- exports2.anumber = anumber2;
2168
- exports2.abytes = abytes3;
2169
- exports2.ahash = ahash;
2170
- exports2.aexists = aexists2;
2171
- exports2.aoutput = aoutput2;
2172
- exports2.u8 = u8;
2173
- exports2.u32 = u322;
2174
- exports2.clean = clean2;
2175
- exports2.createView = createView2;
2176
- exports2.rotr = rotr2;
2177
- exports2.rotl = rotl;
2178
- exports2.byteSwap = byteSwap2;
2179
- exports2.byteSwap32 = byteSwap322;
2180
- exports2.bytesToHex = bytesToHex2;
2181
- exports2.hexToBytes = hexToBytes2;
2182
- exports2.asyncLoop = asyncLoop;
2183
- exports2.utf8ToBytes = utf8ToBytes;
2184
- exports2.bytesToUtf8 = bytesToUtf8;
2185
- exports2.toBytes = toBytes;
2186
- exports2.kdfInputToBytes = kdfInputToBytes;
2187
- exports2.concatBytes = concatBytes2;
2188
- exports2.checkOpts = checkOpts;
2189
- exports2.createHasher = createHasher2;
2190
- exports2.createOptHasher = createOptHasher;
2191
- exports2.createXOFer = createXOFer;
2192
- exports2.randomBytes = randomBytes2;
2193
- var crypto_1 = require_crypto();
2194
- function isBytes3(a2) {
2195
- return a2 instanceof Uint8Array || ArrayBuffer.isView(a2) && a2.constructor.name === "Uint8Array";
2196
- }
2197
- function anumber2(n2) {
2198
- if (!Number.isSafeInteger(n2) || n2 < 0)
2199
- throw new Error("positive integer expected, got " + n2);
2200
- }
2201
- function abytes3(b2, ...lengths) {
2202
- if (!isBytes3(b2))
2203
- throw new Error("Uint8Array expected");
2204
- if (lengths.length > 0 && !lengths.includes(b2.length))
2205
- throw new Error("Uint8Array expected of length " + lengths + ", got length=" + b2.length);
2206
- }
2207
- function ahash(h2) {
2208
- if (typeof h2 !== "function" || typeof h2.create !== "function")
2209
- throw new Error("Hash should be wrapped by utils.createHasher");
2210
- anumber2(h2.outputLen);
2211
- anumber2(h2.blockLen);
2212
- }
2213
- function aexists2(instance, checkFinished = true) {
2214
- if (instance.destroyed)
2215
- throw new Error("Hash instance has been destroyed");
2216
- if (checkFinished && instance.finished)
2217
- throw new Error("Hash#digest() has already been called");
2218
- }
2219
- function aoutput2(out, instance) {
2220
- abytes3(out);
2221
- const min = instance.outputLen;
2222
- if (out.length < min) {
2223
- throw new Error("digestInto() expects output buffer of length at least " + min);
2224
- }
2225
- }
2226
- function u8(arr) {
2227
- return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);
2228
- }
2229
- function u322(arr) {
2230
- return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));
2231
- }
2232
- function clean2(...arrays) {
2233
- for (let i2 = 0; i2 < arrays.length; i2++) {
2234
- arrays[i2].fill(0);
2235
- }
2236
- }
2237
- function createView2(arr) {
2238
- return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);
2239
- }
2240
- function rotr2(word, shift) {
2241
- return word << 32 - shift | word >>> shift;
2242
- }
2243
- function rotl(word, shift) {
2244
- return word << shift | word >>> 32 - shift >>> 0;
2245
- }
2246
- exports2.isLE = (() => new Uint8Array(new Uint32Array([287454020]).buffer)[0] === 68)();
2247
- function byteSwap2(word) {
2248
- return word << 24 & 4278190080 | word << 8 & 16711680 | word >>> 8 & 65280 | word >>> 24 & 255;
2249
- }
2250
- exports2.swap8IfBE = exports2.isLE ? (n2) => n2 : (n2) => byteSwap2(n2);
2251
- exports2.byteSwapIfBE = exports2.swap8IfBE;
2252
- function byteSwap322(arr) {
2253
- for (let i2 = 0; i2 < arr.length; i2++) {
2254
- arr[i2] = byteSwap2(arr[i2]);
2255
- }
2256
- return arr;
2257
- }
2258
- exports2.swap32IfBE = exports2.isLE ? (u2) => u2 : byteSwap322;
2259
- var hasHexBuiltin = /* @__PURE__ */ (() => (
2260
- // @ts-ignore
2261
- typeof Uint8Array.from([]).toHex === "function" && typeof Uint8Array.fromHex === "function"
2262
- ))();
2263
- var hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i2) => i2.toString(16).padStart(2, "0"));
2264
- function bytesToHex2(bytes) {
2265
- abytes3(bytes);
2266
- if (hasHexBuiltin)
2267
- return bytes.toHex();
2268
- let hex = "";
2269
- for (let i2 = 0; i2 < bytes.length; i2++) {
2270
- hex += hexes[bytes[i2]];
2271
- }
2272
- return hex;
2273
- }
2274
- var asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 };
2275
- function asciiToBase16(ch) {
2276
- if (ch >= asciis._0 && ch <= asciis._9)
2277
- return ch - asciis._0;
2278
- if (ch >= asciis.A && ch <= asciis.F)
2279
- return ch - (asciis.A - 10);
2280
- if (ch >= asciis.a && ch <= asciis.f)
2281
- return ch - (asciis.a - 10);
2282
- return;
2283
- }
2284
- function hexToBytes2(hex) {
2285
- if (typeof hex !== "string")
2286
- throw new Error("hex string expected, got " + typeof hex);
2287
- if (hasHexBuiltin)
2288
- return Uint8Array.fromHex(hex);
2289
- const hl = hex.length;
2290
- const al = hl / 2;
2291
- if (hl % 2)
2292
- throw new Error("hex string expected, got unpadded hex of length " + hl);
2293
- const array = new Uint8Array(al);
2294
- for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {
2295
- const n1 = asciiToBase16(hex.charCodeAt(hi));
2296
- const n2 = asciiToBase16(hex.charCodeAt(hi + 1));
2297
- if (n1 === void 0 || n2 === void 0) {
2298
- const char = hex[hi] + hex[hi + 1];
2299
- throw new Error('hex string expected, got non-hex character "' + char + '" at index ' + hi);
2300
- }
2301
- array[ai] = n1 * 16 + n2;
2302
- }
2303
- return array;
2304
- }
2305
- var nextTick = async () => {
2306
- };
2307
- exports2.nextTick = nextTick;
2308
- async function asyncLoop(iters, tick, cb) {
2309
- let ts = Date.now();
2310
- for (let i2 = 0; i2 < iters; i2++) {
2311
- cb(i2);
2312
- const diff = Date.now() - ts;
2313
- if (diff >= 0 && diff < tick)
2314
- continue;
2315
- await (0, exports2.nextTick)();
2316
- ts += diff;
2317
- }
2318
- }
2319
- function utf8ToBytes(str) {
2320
- if (typeof str !== "string")
2321
- throw new Error("string expected");
2322
- return new Uint8Array(new TextEncoder().encode(str));
2323
- }
2324
- function bytesToUtf8(bytes) {
2325
- return new TextDecoder().decode(bytes);
2326
- }
2327
- function toBytes(data) {
2328
- if (typeof data === "string")
2329
- data = utf8ToBytes(data);
2330
- abytes3(data);
2331
- return data;
2332
- }
2333
- function kdfInputToBytes(data) {
2334
- if (typeof data === "string")
2335
- data = utf8ToBytes(data);
2336
- abytes3(data);
2337
- return data;
2338
- }
2339
- function concatBytes2(...arrays) {
2340
- let sum = 0;
2341
- for (let i2 = 0; i2 < arrays.length; i2++) {
2342
- const a2 = arrays[i2];
2343
- abytes3(a2);
2344
- sum += a2.length;
2345
- }
2346
- const res = new Uint8Array(sum);
2347
- for (let i2 = 0, pad = 0; i2 < arrays.length; i2++) {
2348
- const a2 = arrays[i2];
2349
- res.set(a2, pad);
2350
- pad += a2.length;
2351
- }
2352
- return res;
2353
- }
2354
- function checkOpts(defaults, opts) {
2355
- if (opts !== void 0 && {}.toString.call(opts) !== "[object Object]")
2356
- throw new Error("options should be object or undefined");
2357
- const merged = Object.assign(defaults, opts);
2358
- return merged;
2359
- }
2360
- var Hash = class {
2361
- };
2362
- exports2.Hash = Hash;
2363
- function createHasher2(hashCons) {
2364
- const hashC = (msg) => hashCons().update(toBytes(msg)).digest();
2365
- const tmp = hashCons();
2366
- hashC.outputLen = tmp.outputLen;
2367
- hashC.blockLen = tmp.blockLen;
2368
- hashC.create = () => hashCons();
2369
- return hashC;
2370
- }
2371
- function createOptHasher(hashCons) {
2372
- const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();
2373
- const tmp = hashCons({});
2374
- hashC.outputLen = tmp.outputLen;
2375
- hashC.blockLen = tmp.blockLen;
2376
- hashC.create = (opts) => hashCons(opts);
2377
- return hashC;
2378
- }
2379
- function createXOFer(hashCons) {
2380
- const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();
2381
- const tmp = hashCons({});
2382
- hashC.outputLen = tmp.outputLen;
2383
- hashC.blockLen = tmp.blockLen;
2384
- hashC.create = (opts) => hashCons(opts);
2385
- return hashC;
2386
- }
2387
- exports2.wrapConstructor = createHasher2;
2388
- exports2.wrapConstructorWithOpts = createOptHasher;
2389
- exports2.wrapXOFConstructorWithOpts = createXOFer;
2390
- function randomBytes2(bytesLength = 32) {
2391
- if (crypto_1.crypto && typeof crypto_1.crypto.getRandomValues === "function") {
2392
- return crypto_1.crypto.getRandomValues(new Uint8Array(bytesLength));
2393
- }
2394
- if (crypto_1.crypto && typeof crypto_1.crypto.randomBytes === "function") {
2395
- return Uint8Array.from(crypto_1.crypto.randomBytes(bytesLength));
2396
- }
2397
- throw new Error("crypto.getRandomValues must be defined");
2398
- }
2399
- }
2400
- });
2401
-
2402
- // ../../node_modules/@noble/hashes/hmac.js
2403
- var require_hmac = __commonJS({
2404
- "../../node_modules/@noble/hashes/hmac.js"(exports2) {
2405
- "use strict";
2406
- init_esbuild_shims();
2407
- Object.defineProperty(exports2, "__esModule", { value: true });
2408
- exports2.hmac = exports2.HMAC = void 0;
2409
- var utils_ts_1 = require_utils2();
2410
- var HMAC = class extends utils_ts_1.Hash {
2411
- constructor(hash, _key) {
2412
- super();
2413
- this.finished = false;
2414
- this.destroyed = false;
2415
- (0, utils_ts_1.ahash)(hash);
2416
- const key = (0, utils_ts_1.toBytes)(_key);
2417
- this.iHash = hash.create();
2418
- if (typeof this.iHash.update !== "function")
2419
- throw new Error("Expected instance of class which extends utils.Hash");
2420
- this.blockLen = this.iHash.blockLen;
2421
- this.outputLen = this.iHash.outputLen;
2422
- const blockLen = this.blockLen;
2423
- const pad = new Uint8Array(blockLen);
2424
- pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);
2425
- for (let i2 = 0; i2 < pad.length; i2++)
2426
- pad[i2] ^= 54;
2427
- this.iHash.update(pad);
2428
- this.oHash = hash.create();
2429
- for (let i2 = 0; i2 < pad.length; i2++)
2430
- pad[i2] ^= 54 ^ 92;
2431
- this.oHash.update(pad);
2432
- (0, utils_ts_1.clean)(pad);
2433
- }
2434
- update(buf) {
2435
- (0, utils_ts_1.aexists)(this);
2436
- this.iHash.update(buf);
2437
- return this;
2438
- }
2439
- digestInto(out) {
2440
- (0, utils_ts_1.aexists)(this);
2441
- (0, utils_ts_1.abytes)(out, this.outputLen);
2442
- this.finished = true;
2443
- this.iHash.digestInto(out);
2444
- this.oHash.update(out);
2445
- this.oHash.digestInto(out);
2446
- this.destroy();
2447
- }
2448
- digest() {
2449
- const out = new Uint8Array(this.oHash.outputLen);
2450
- this.digestInto(out);
2451
- return out;
2452
- }
2453
- _cloneInto(to) {
2454
- to || (to = Object.create(Object.getPrototypeOf(this), {}));
2455
- const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;
2456
- to = to;
2457
- to.finished = finished;
2458
- to.destroyed = destroyed;
2459
- to.blockLen = blockLen;
2460
- to.outputLen = outputLen;
2461
- to.oHash = oHash._cloneInto(to.oHash);
2462
- to.iHash = iHash._cloneInto(to.iHash);
2463
- return to;
2464
- }
2465
- clone() {
2466
- return this._cloneInto();
2467
- }
2468
- destroy() {
2469
- this.destroyed = true;
2470
- this.oHash.destroy();
2471
- this.iHash.destroy();
2472
- }
2473
- };
2474
- exports2.HMAC = HMAC;
2475
- var hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();
2476
- exports2.hmac = hmac;
2477
- exports2.hmac.create = (hash, key) => new HMAC(hash, key);
2478
- }
2479
- });
2480
-
2481
- // ../../node_modules/@noble/hashes/_md.js
2482
- var require_md = __commonJS({
2483
- "../../node_modules/@noble/hashes/_md.js"(exports2) {
2484
- "use strict";
2485
- init_esbuild_shims();
2486
- Object.defineProperty(exports2, "__esModule", { value: true });
2487
- exports2.SHA512_IV = exports2.SHA384_IV = exports2.SHA224_IV = exports2.SHA256_IV = exports2.HashMD = void 0;
2488
- exports2.setBigUint64 = setBigUint64;
2489
- exports2.Chi = Chi2;
2490
- exports2.Maj = Maj2;
2491
- var utils_ts_1 = require_utils2();
2492
- function setBigUint64(view, byteOffset, value, isLE2) {
2493
- if (typeof view.setBigUint64 === "function")
2494
- return view.setBigUint64(byteOffset, value, isLE2);
2495
- const _32n2 = BigInt(32);
2496
- const _u32_max = BigInt(4294967295);
2497
- const wh = Number(value >> _32n2 & _u32_max);
2498
- const wl = Number(value & _u32_max);
2499
- const h2 = isLE2 ? 4 : 0;
2500
- const l2 = isLE2 ? 0 : 4;
2501
- view.setUint32(byteOffset + h2, wh, isLE2);
2502
- view.setUint32(byteOffset + l2, wl, isLE2);
2503
- }
2504
- function Chi2(a2, b2, c2) {
2505
- return a2 & b2 ^ ~a2 & c2;
2506
- }
2507
- function Maj2(a2, b2, c2) {
2508
- return a2 & b2 ^ a2 & c2 ^ b2 & c2;
2509
- }
2510
- var HashMD2 = class extends utils_ts_1.Hash {
2511
- constructor(blockLen, outputLen, padOffset, isLE2) {
2512
- super();
2513
- this.finished = false;
2514
- this.length = 0;
2515
- this.pos = 0;
2516
- this.destroyed = false;
2517
- this.blockLen = blockLen;
2518
- this.outputLen = outputLen;
2519
- this.padOffset = padOffset;
2520
- this.isLE = isLE2;
2521
- this.buffer = new Uint8Array(blockLen);
2522
- this.view = (0, utils_ts_1.createView)(this.buffer);
2523
- }
2524
- update(data) {
2525
- (0, utils_ts_1.aexists)(this);
2526
- data = (0, utils_ts_1.toBytes)(data);
2527
- (0, utils_ts_1.abytes)(data);
2528
- const { view, buffer, blockLen } = this;
2529
- const len = data.length;
2530
- for (let pos = 0; pos < len; ) {
2531
- const take = Math.min(blockLen - this.pos, len - pos);
2532
- if (take === blockLen) {
2533
- const dataView = (0, utils_ts_1.createView)(data);
2534
- for (; blockLen <= len - pos; pos += blockLen)
2535
- this.process(dataView, pos);
2536
- continue;
2537
- }
2538
- buffer.set(data.subarray(pos, pos + take), this.pos);
2539
- this.pos += take;
2540
- pos += take;
2541
- if (this.pos === blockLen) {
2542
- this.process(view, 0);
2543
- this.pos = 0;
2544
- }
2545
- }
2546
- this.length += data.length;
2547
- this.roundClean();
2548
- return this;
2549
- }
2550
- digestInto(out) {
2551
- (0, utils_ts_1.aexists)(this);
2552
- (0, utils_ts_1.aoutput)(out, this);
2553
- this.finished = true;
2554
- const { buffer, view, blockLen, isLE: isLE2 } = this;
2555
- let { pos } = this;
2556
- buffer[pos++] = 128;
2557
- (0, utils_ts_1.clean)(this.buffer.subarray(pos));
2558
- if (this.padOffset > blockLen - pos) {
2559
- this.process(view, 0);
2560
- pos = 0;
2561
- }
2562
- for (let i2 = pos; i2 < blockLen; i2++)
2563
- buffer[i2] = 0;
2564
- setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE2);
2565
- this.process(view, 0);
2566
- const oview = (0, utils_ts_1.createView)(out);
2567
- const len = this.outputLen;
2568
- if (len % 4)
2569
- throw new Error("_sha2: outputLen should be aligned to 32bit");
2570
- const outLen = len / 4;
2571
- const state = this.get();
2572
- if (outLen > state.length)
2573
- throw new Error("_sha2: outputLen bigger than state");
2574
- for (let i2 = 0; i2 < outLen; i2++)
2575
- oview.setUint32(4 * i2, state[i2], isLE2);
2576
- }
2577
- digest() {
2578
- const { buffer, outputLen } = this;
2579
- this.digestInto(buffer);
2580
- const res = buffer.slice(0, outputLen);
2581
- this.destroy();
2582
- return res;
2583
- }
2584
- _cloneInto(to) {
2585
- to || (to = new this.constructor());
2586
- to.set(...this.get());
2587
- const { blockLen, buffer, length, finished, destroyed, pos } = this;
2588
- to.destroyed = destroyed;
2589
- to.finished = finished;
2590
- to.length = length;
2591
- to.pos = pos;
2592
- if (length % blockLen)
2593
- to.buffer.set(buffer);
2594
- return to;
2595
- }
2596
- clone() {
2597
- return this._cloneInto();
2598
- }
2599
- };
2600
- exports2.HashMD = HashMD2;
2601
- exports2.SHA256_IV = Uint32Array.from([
2602
- 1779033703,
2603
- 3144134277,
2604
- 1013904242,
2605
- 2773480762,
2606
- 1359893119,
2607
- 2600822924,
2608
- 528734635,
2609
- 1541459225
2610
- ]);
2611
- exports2.SHA224_IV = Uint32Array.from([
2612
- 3238371032,
2613
- 914150663,
2614
- 812702999,
2615
- 4144912697,
2616
- 4290775857,
2617
- 1750603025,
2618
- 1694076839,
2619
- 3204075428
2620
- ]);
2621
- exports2.SHA384_IV = Uint32Array.from([
2622
- 3418070365,
2623
- 3238371032,
2624
- 1654270250,
2625
- 914150663,
2626
- 2438529370,
2627
- 812702999,
2628
- 355462360,
2629
- 4144912697,
2630
- 1731405415,
2631
- 4290775857,
2632
- 2394180231,
2633
- 1750603025,
2634
- 3675008525,
2635
- 1694076839,
2636
- 1203062813,
2637
- 3204075428
2638
- ]);
2639
- exports2.SHA512_IV = Uint32Array.from([
2640
- 1779033703,
2641
- 4089235720,
2642
- 3144134277,
2643
- 2227873595,
2644
- 1013904242,
2645
- 4271175723,
2646
- 2773480762,
2647
- 1595750129,
2648
- 1359893119,
2649
- 2917565137,
2650
- 2600822924,
2651
- 725511199,
2652
- 528734635,
2653
- 4215389547,
2654
- 1541459225,
2655
- 327033209
2656
- ]);
2657
- }
2658
- });
2659
-
2660
- // ../../node_modules/@noble/hashes/_u64.js
2661
- var require_u64 = __commonJS({
2662
- "../../node_modules/@noble/hashes/_u64.js"(exports2) {
2663
- "use strict";
2664
- init_esbuild_shims();
2665
- Object.defineProperty(exports2, "__esModule", { value: true });
2666
- exports2.toBig = exports2.shrSL = exports2.shrSH = exports2.rotrSL = exports2.rotrSH = exports2.rotrBL = exports2.rotrBH = exports2.rotr32L = exports2.rotr32H = exports2.rotlSL = exports2.rotlSH = exports2.rotlBL = exports2.rotlBH = exports2.add5L = exports2.add5H = exports2.add4L = exports2.add4H = exports2.add3L = exports2.add3H = void 0;
2667
- exports2.add = add2;
2668
- exports2.fromBig = fromBig2;
2669
- exports2.split = split2;
2670
- var U32_MASK642 = /* @__PURE__ */ BigInt(2 ** 32 - 1);
2671
- var _32n2 = /* @__PURE__ */ BigInt(32);
2672
- function fromBig2(n2, le = false) {
2673
- if (le)
2674
- return { h: Number(n2 & U32_MASK642), l: Number(n2 >> _32n2 & U32_MASK642) };
2675
- return { h: Number(n2 >> _32n2 & U32_MASK642) | 0, l: Number(n2 & U32_MASK642) | 0 };
2676
- }
2677
- function split2(lst, le = false) {
2678
- const len = lst.length;
2679
- let Ah = new Uint32Array(len);
2680
- let Al = new Uint32Array(len);
2681
- for (let i2 = 0; i2 < len; i2++) {
2682
- const { h: h2, l: l2 } = fromBig2(lst[i2], le);
2683
- [Ah[i2], Al[i2]] = [h2, l2];
2684
- }
2685
- return [Ah, Al];
2686
- }
2687
- var toBig = (h2, l2) => BigInt(h2 >>> 0) << _32n2 | BigInt(l2 >>> 0);
2688
- exports2.toBig = toBig;
2689
- var shrSH2 = (h2, _l, s2) => h2 >>> s2;
2690
- exports2.shrSH = shrSH2;
2691
- var shrSL2 = (h2, l2, s2) => h2 << 32 - s2 | l2 >>> s2;
2692
- exports2.shrSL = shrSL2;
2693
- var rotrSH2 = (h2, l2, s2) => h2 >>> s2 | l2 << 32 - s2;
2694
- exports2.rotrSH = rotrSH2;
2695
- var rotrSL2 = (h2, l2, s2) => h2 << 32 - s2 | l2 >>> s2;
2696
- exports2.rotrSL = rotrSL2;
2697
- var rotrBH2 = (h2, l2, s2) => h2 << 64 - s2 | l2 >>> s2 - 32;
2698
- exports2.rotrBH = rotrBH2;
2699
- var rotrBL2 = (h2, l2, s2) => h2 >>> s2 - 32 | l2 << 64 - s2;
2700
- exports2.rotrBL = rotrBL2;
2701
- var rotr32H = (_h, l2) => l2;
2702
- exports2.rotr32H = rotr32H;
2703
- var rotr32L = (h2, _l) => h2;
2704
- exports2.rotr32L = rotr32L;
2705
- var rotlSH2 = (h2, l2, s2) => h2 << s2 | l2 >>> 32 - s2;
2706
- exports2.rotlSH = rotlSH2;
2707
- var rotlSL2 = (h2, l2, s2) => l2 << s2 | h2 >>> 32 - s2;
2708
- exports2.rotlSL = rotlSL2;
2709
- var rotlBH2 = (h2, l2, s2) => l2 << s2 - 32 | h2 >>> 64 - s2;
2710
- exports2.rotlBH = rotlBH2;
2711
- var rotlBL2 = (h2, l2, s2) => h2 << s2 - 32 | l2 >>> 64 - s2;
2712
- exports2.rotlBL = rotlBL2;
2713
- function add2(Ah, Al, Bh, Bl) {
2714
- const l2 = (Al >>> 0) + (Bl >>> 0);
2715
- return { h: Ah + Bh + (l2 / 2 ** 32 | 0) | 0, l: l2 | 0 };
2716
- }
2717
- var add3L2 = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);
2718
- exports2.add3L = add3L2;
2719
- var add3H2 = (low, Ah, Bh, Ch) => Ah + Bh + Ch + (low / 2 ** 32 | 0) | 0;
2720
- exports2.add3H = add3H2;
2721
- var add4L2 = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);
2722
- exports2.add4L = add4L2;
2723
- var add4H2 = (low, Ah, Bh, Ch, Dh) => Ah + Bh + Ch + Dh + (low / 2 ** 32 | 0) | 0;
2724
- exports2.add4H = add4H2;
2725
- var add5L2 = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);
2726
- exports2.add5L = add5L2;
2727
- var add5H2 = (low, Ah, Bh, Ch, Dh, Eh) => Ah + Bh + Ch + Dh + Eh + (low / 2 ** 32 | 0) | 0;
2728
- exports2.add5H = add5H2;
2729
- var u64 = {
2730
- fromBig: fromBig2,
2731
- split: split2,
2732
- toBig,
2733
- shrSH: shrSH2,
2734
- shrSL: shrSL2,
2735
- rotrSH: rotrSH2,
2736
- rotrSL: rotrSL2,
2737
- rotrBH: rotrBH2,
2738
- rotrBL: rotrBL2,
2739
- rotr32H,
2740
- rotr32L,
2741
- rotlSH: rotlSH2,
2742
- rotlSL: rotlSL2,
2743
- rotlBH: rotlBH2,
2744
- rotlBL: rotlBL2,
2745
- add: add2,
2746
- add3L: add3L2,
2747
- add3H: add3H2,
2748
- add4L: add4L2,
2749
- add4H: add4H2,
2750
- add5H: add5H2,
2751
- add5L: add5L2
2752
- };
2753
- exports2.default = u64;
2754
- }
2755
- });
2756
-
2757
- // ../../node_modules/@noble/hashes/sha2.js
2758
- var require_sha2 = __commonJS({
2759
- "../../node_modules/@noble/hashes/sha2.js"(exports2) {
2760
- "use strict";
2761
- init_esbuild_shims();
2762
- Object.defineProperty(exports2, "__esModule", { value: true });
2763
- exports2.sha512_224 = exports2.sha512_256 = exports2.sha384 = exports2.sha512 = exports2.sha224 = exports2.sha256 = exports2.SHA512_256 = exports2.SHA512_224 = exports2.SHA384 = exports2.SHA512 = exports2.SHA224 = exports2.SHA256 = void 0;
2764
- var _md_ts_1 = require_md();
2765
- var u64 = require_u64();
2766
- var utils_ts_1 = require_utils2();
2767
- var SHA256_K2 = /* @__PURE__ */ Uint32Array.from([
2768
- 1116352408,
2769
- 1899447441,
2770
- 3049323471,
2771
- 3921009573,
2772
- 961987163,
2773
- 1508970993,
2774
- 2453635748,
2775
- 2870763221,
2776
- 3624381080,
2777
- 310598401,
2778
- 607225278,
2779
- 1426881987,
2780
- 1925078388,
2781
- 2162078206,
2782
- 2614888103,
2783
- 3248222580,
2784
- 3835390401,
2785
- 4022224774,
2786
- 264347078,
2787
- 604807628,
2788
- 770255983,
2789
- 1249150122,
2790
- 1555081692,
2791
- 1996064986,
2792
- 2554220882,
2793
- 2821834349,
2794
- 2952996808,
2795
- 3210313671,
2796
- 3336571891,
2797
- 3584528711,
2798
- 113926993,
2799
- 338241895,
2800
- 666307205,
2801
- 773529912,
2802
- 1294757372,
2803
- 1396182291,
2804
- 1695183700,
2805
- 1986661051,
2806
- 2177026350,
2807
- 2456956037,
2808
- 2730485921,
2809
- 2820302411,
2810
- 3259730800,
2811
- 3345764771,
2812
- 3516065817,
2813
- 3600352804,
2814
- 4094571909,
2815
- 275423344,
2816
- 430227734,
2817
- 506948616,
2818
- 659060556,
2819
- 883997877,
2820
- 958139571,
2821
- 1322822218,
2822
- 1537002063,
2823
- 1747873779,
2824
- 1955562222,
2825
- 2024104815,
2826
- 2227730452,
2827
- 2361852424,
2828
- 2428436474,
2829
- 2756734187,
2830
- 3204031479,
2831
- 3329325298
2832
- ]);
2833
- var SHA256_W2 = /* @__PURE__ */ new Uint32Array(64);
2834
- var SHA256 = class extends _md_ts_1.HashMD {
2835
- constructor(outputLen = 32) {
2836
- super(64, outputLen, 8, false);
2837
- this.A = _md_ts_1.SHA256_IV[0] | 0;
2838
- this.B = _md_ts_1.SHA256_IV[1] | 0;
2839
- this.C = _md_ts_1.SHA256_IV[2] | 0;
2840
- this.D = _md_ts_1.SHA256_IV[3] | 0;
2841
- this.E = _md_ts_1.SHA256_IV[4] | 0;
2842
- this.F = _md_ts_1.SHA256_IV[5] | 0;
2843
- this.G = _md_ts_1.SHA256_IV[6] | 0;
2844
- this.H = _md_ts_1.SHA256_IV[7] | 0;
2845
- }
2846
- get() {
2847
- const { A: A2, B: B2, C: C3, D: D2, E: E2, F: F2, G: G3, H: H2 } = this;
2848
- return [A2, B2, C3, D2, E2, F2, G3, H2];
2849
- }
2850
- // prettier-ignore
2851
- set(A2, B2, C3, D2, E2, F2, G3, H2) {
2852
- this.A = A2 | 0;
2853
- this.B = B2 | 0;
2854
- this.C = C3 | 0;
2855
- this.D = D2 | 0;
2856
- this.E = E2 | 0;
2857
- this.F = F2 | 0;
2858
- this.G = G3 | 0;
2859
- this.H = H2 | 0;
2860
- }
2861
- process(view, offset) {
2862
- for (let i2 = 0; i2 < 16; i2++, offset += 4)
2863
- SHA256_W2[i2] = view.getUint32(offset, false);
2864
- for (let i2 = 16; i2 < 64; i2++) {
2865
- const W15 = SHA256_W2[i2 - 15];
2866
- const W22 = SHA256_W2[i2 - 2];
2867
- const s0 = (0, utils_ts_1.rotr)(W15, 7) ^ (0, utils_ts_1.rotr)(W15, 18) ^ W15 >>> 3;
2868
- const s1 = (0, utils_ts_1.rotr)(W22, 17) ^ (0, utils_ts_1.rotr)(W22, 19) ^ W22 >>> 10;
2869
- SHA256_W2[i2] = s1 + SHA256_W2[i2 - 7] + s0 + SHA256_W2[i2 - 16] | 0;
2870
- }
2871
- let { A: A2, B: B2, C: C3, D: D2, E: E2, F: F2, G: G3, H: H2 } = this;
2872
- for (let i2 = 0; i2 < 64; i2++) {
2873
- const sigma1 = (0, utils_ts_1.rotr)(E2, 6) ^ (0, utils_ts_1.rotr)(E2, 11) ^ (0, utils_ts_1.rotr)(E2, 25);
2874
- const T1 = H2 + sigma1 + (0, _md_ts_1.Chi)(E2, F2, G3) + SHA256_K2[i2] + SHA256_W2[i2] | 0;
2875
- const sigma0 = (0, utils_ts_1.rotr)(A2, 2) ^ (0, utils_ts_1.rotr)(A2, 13) ^ (0, utils_ts_1.rotr)(A2, 22);
2876
- const T2 = sigma0 + (0, _md_ts_1.Maj)(A2, B2, C3) | 0;
2877
- H2 = G3;
2878
- G3 = F2;
2879
- F2 = E2;
2880
- E2 = D2 + T1 | 0;
2881
- D2 = C3;
2882
- C3 = B2;
2883
- B2 = A2;
2884
- A2 = T1 + T2 | 0;
2885
- }
2886
- A2 = A2 + this.A | 0;
2887
- B2 = B2 + this.B | 0;
2888
- C3 = C3 + this.C | 0;
2889
- D2 = D2 + this.D | 0;
2890
- E2 = E2 + this.E | 0;
2891
- F2 = F2 + this.F | 0;
2892
- G3 = G3 + this.G | 0;
2893
- H2 = H2 + this.H | 0;
2894
- this.set(A2, B2, C3, D2, E2, F2, G3, H2);
2895
- }
2896
- roundClean() {
2897
- (0, utils_ts_1.clean)(SHA256_W2);
2898
- }
2899
- destroy() {
2900
- this.set(0, 0, 0, 0, 0, 0, 0, 0);
2901
- (0, utils_ts_1.clean)(this.buffer);
2902
- }
2903
- };
2904
- exports2.SHA256 = SHA256;
2905
- var SHA224 = class extends SHA256 {
2906
- constructor() {
2907
- super(28);
2908
- this.A = _md_ts_1.SHA224_IV[0] | 0;
2909
- this.B = _md_ts_1.SHA224_IV[1] | 0;
2910
- this.C = _md_ts_1.SHA224_IV[2] | 0;
2911
- this.D = _md_ts_1.SHA224_IV[3] | 0;
2912
- this.E = _md_ts_1.SHA224_IV[4] | 0;
2913
- this.F = _md_ts_1.SHA224_IV[5] | 0;
2914
- this.G = _md_ts_1.SHA224_IV[6] | 0;
2915
- this.H = _md_ts_1.SHA224_IV[7] | 0;
2916
- }
2917
- };
2918
- exports2.SHA224 = SHA224;
2919
- var K5122 = /* @__PURE__ */ (() => u64.split([
2920
- "0x428a2f98d728ae22",
2921
- "0x7137449123ef65cd",
2922
- "0xb5c0fbcfec4d3b2f",
2923
- "0xe9b5dba58189dbbc",
2924
- "0x3956c25bf348b538",
2925
- "0x59f111f1b605d019",
2926
- "0x923f82a4af194f9b",
2927
- "0xab1c5ed5da6d8118",
2928
- "0xd807aa98a3030242",
2929
- "0x12835b0145706fbe",
2930
- "0x243185be4ee4b28c",
2931
- "0x550c7dc3d5ffb4e2",
2932
- "0x72be5d74f27b896f",
2933
- "0x80deb1fe3b1696b1",
2934
- "0x9bdc06a725c71235",
2935
- "0xc19bf174cf692694",
2936
- "0xe49b69c19ef14ad2",
2937
- "0xefbe4786384f25e3",
2938
- "0x0fc19dc68b8cd5b5",
2939
- "0x240ca1cc77ac9c65",
2940
- "0x2de92c6f592b0275",
2941
- "0x4a7484aa6ea6e483",
2942
- "0x5cb0a9dcbd41fbd4",
2943
- "0x76f988da831153b5",
2944
- "0x983e5152ee66dfab",
2945
- "0xa831c66d2db43210",
2946
- "0xb00327c898fb213f",
2947
- "0xbf597fc7beef0ee4",
2948
- "0xc6e00bf33da88fc2",
2949
- "0xd5a79147930aa725",
2950
- "0x06ca6351e003826f",
2951
- "0x142929670a0e6e70",
2952
- "0x27b70a8546d22ffc",
2953
- "0x2e1b21385c26c926",
2954
- "0x4d2c6dfc5ac42aed",
2955
- "0x53380d139d95b3df",
2956
- "0x650a73548baf63de",
2957
- "0x766a0abb3c77b2a8",
2958
- "0x81c2c92e47edaee6",
2959
- "0x92722c851482353b",
2960
- "0xa2bfe8a14cf10364",
2961
- "0xa81a664bbc423001",
2962
- "0xc24b8b70d0f89791",
2963
- "0xc76c51a30654be30",
2964
- "0xd192e819d6ef5218",
2965
- "0xd69906245565a910",
2966
- "0xf40e35855771202a",
2967
- "0x106aa07032bbd1b8",
2968
- "0x19a4c116b8d2d0c8",
2969
- "0x1e376c085141ab53",
2970
- "0x2748774cdf8eeb99",
2971
- "0x34b0bcb5e19b48a8",
2972
- "0x391c0cb3c5c95a63",
2973
- "0x4ed8aa4ae3418acb",
2974
- "0x5b9cca4f7763e373",
2975
- "0x682e6ff3d6b2b8a3",
2976
- "0x748f82ee5defb2fc",
2977
- "0x78a5636f43172f60",
2978
- "0x84c87814a1f0ab72",
2979
- "0x8cc702081a6439ec",
2980
- "0x90befffa23631e28",
2981
- "0xa4506cebde82bde9",
2982
- "0xbef9a3f7b2c67915",
2983
- "0xc67178f2e372532b",
2984
- "0xca273eceea26619c",
2985
- "0xd186b8c721c0c207",
2986
- "0xeada7dd6cde0eb1e",
2987
- "0xf57d4f7fee6ed178",
2988
- "0x06f067aa72176fba",
2989
- "0x0a637dc5a2c898a6",
2990
- "0x113f9804bef90dae",
2991
- "0x1b710b35131c471b",
2992
- "0x28db77f523047d84",
2993
- "0x32caab7b40c72493",
2994
- "0x3c9ebe0a15c9bebc",
2995
- "0x431d67c49c100d4c",
2996
- "0x4cc5d4becb3e42b6",
2997
- "0x597f299cfc657e2a",
2998
- "0x5fcb6fab3ad6faec",
2999
- "0x6c44198c4a475817"
3000
- ].map((n2) => BigInt(n2))))();
3001
- var SHA512_Kh2 = /* @__PURE__ */ (() => K5122[0])();
3002
- var SHA512_Kl2 = /* @__PURE__ */ (() => K5122[1])();
3003
- var SHA512_W_H2 = /* @__PURE__ */ new Uint32Array(80);
3004
- var SHA512_W_L2 = /* @__PURE__ */ new Uint32Array(80);
3005
- var SHA512 = class extends _md_ts_1.HashMD {
3006
- constructor(outputLen = 64) {
3007
- super(128, outputLen, 16, false);
3008
- this.Ah = _md_ts_1.SHA512_IV[0] | 0;
3009
- this.Al = _md_ts_1.SHA512_IV[1] | 0;
3010
- this.Bh = _md_ts_1.SHA512_IV[2] | 0;
3011
- this.Bl = _md_ts_1.SHA512_IV[3] | 0;
3012
- this.Ch = _md_ts_1.SHA512_IV[4] | 0;
3013
- this.Cl = _md_ts_1.SHA512_IV[5] | 0;
3014
- this.Dh = _md_ts_1.SHA512_IV[6] | 0;
3015
- this.Dl = _md_ts_1.SHA512_IV[7] | 0;
3016
- this.Eh = _md_ts_1.SHA512_IV[8] | 0;
3017
- this.El = _md_ts_1.SHA512_IV[9] | 0;
3018
- this.Fh = _md_ts_1.SHA512_IV[10] | 0;
3019
- this.Fl = _md_ts_1.SHA512_IV[11] | 0;
3020
- this.Gh = _md_ts_1.SHA512_IV[12] | 0;
3021
- this.Gl = _md_ts_1.SHA512_IV[13] | 0;
3022
- this.Hh = _md_ts_1.SHA512_IV[14] | 0;
3023
- this.Hl = _md_ts_1.SHA512_IV[15] | 0;
3024
- }
3025
- // prettier-ignore
3026
- get() {
3027
- const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;
3028
- return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];
3029
- }
3030
- // prettier-ignore
3031
- set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {
3032
- this.Ah = Ah | 0;
3033
- this.Al = Al | 0;
3034
- this.Bh = Bh | 0;
3035
- this.Bl = Bl | 0;
3036
- this.Ch = Ch | 0;
3037
- this.Cl = Cl | 0;
3038
- this.Dh = Dh | 0;
3039
- this.Dl = Dl | 0;
3040
- this.Eh = Eh | 0;
3041
- this.El = El | 0;
3042
- this.Fh = Fh | 0;
3043
- this.Fl = Fl | 0;
3044
- this.Gh = Gh | 0;
3045
- this.Gl = Gl | 0;
3046
- this.Hh = Hh | 0;
3047
- this.Hl = Hl | 0;
3048
- }
3049
- process(view, offset) {
3050
- for (let i2 = 0; i2 < 16; i2++, offset += 4) {
3051
- SHA512_W_H2[i2] = view.getUint32(offset);
3052
- SHA512_W_L2[i2] = view.getUint32(offset += 4);
3053
- }
3054
- for (let i2 = 16; i2 < 80; i2++) {
3055
- const W15h = SHA512_W_H2[i2 - 15] | 0;
3056
- const W15l = SHA512_W_L2[i2 - 15] | 0;
3057
- const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);
3058
- const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);
3059
- const W2h = SHA512_W_H2[i2 - 2] | 0;
3060
- const W2l = SHA512_W_L2[i2 - 2] | 0;
3061
- const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);
3062
- const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);
3063
- const SUMl = u64.add4L(s0l, s1l, SHA512_W_L2[i2 - 7], SHA512_W_L2[i2 - 16]);
3064
- const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H2[i2 - 7], SHA512_W_H2[i2 - 16]);
3065
- SHA512_W_H2[i2] = SUMh | 0;
3066
- SHA512_W_L2[i2] = SUMl | 0;
3067
- }
3068
- let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;
3069
- for (let i2 = 0; i2 < 80; i2++) {
3070
- const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);
3071
- const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);
3072
- const CHIh = Eh & Fh ^ ~Eh & Gh;
3073
- const CHIl = El & Fl ^ ~El & Gl;
3074
- const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl2[i2], SHA512_W_L2[i2]);
3075
- const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh2[i2], SHA512_W_H2[i2]);
3076
- const T1l = T1ll | 0;
3077
- const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);
3078
- const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);
3079
- const MAJh = Ah & Bh ^ Ah & Ch ^ Bh & Ch;
3080
- const MAJl = Al & Bl ^ Al & Cl ^ Bl & Cl;
3081
- Hh = Gh | 0;
3082
- Hl = Gl | 0;
3083
- Gh = Fh | 0;
3084
- Gl = Fl | 0;
3085
- Fh = Eh | 0;
3086
- Fl = El | 0;
3087
- ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));
3088
- Dh = Ch | 0;
3089
- Dl = Cl | 0;
3090
- Ch = Bh | 0;
3091
- Cl = Bl | 0;
3092
- Bh = Ah | 0;
3093
- Bl = Al | 0;
3094
- const All = u64.add3L(T1l, sigma0l, MAJl);
3095
- Ah = u64.add3H(All, T1h, sigma0h, MAJh);
3096
- Al = All | 0;
3097
- }
3098
- ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));
3099
- ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));
3100
- ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));
3101
- ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));
3102
- ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));
3103
- ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));
3104
- ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));
3105
- ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));
3106
- this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);
3107
- }
3108
- roundClean() {
3109
- (0, utils_ts_1.clean)(SHA512_W_H2, SHA512_W_L2);
3110
- }
3111
- destroy() {
3112
- (0, utils_ts_1.clean)(this.buffer);
3113
- this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
3114
- }
3115
- };
3116
- exports2.SHA512 = SHA512;
3117
- var SHA384 = class extends SHA512 {
3118
- constructor() {
3119
- super(48);
3120
- this.Ah = _md_ts_1.SHA384_IV[0] | 0;
3121
- this.Al = _md_ts_1.SHA384_IV[1] | 0;
3122
- this.Bh = _md_ts_1.SHA384_IV[2] | 0;
3123
- this.Bl = _md_ts_1.SHA384_IV[3] | 0;
3124
- this.Ch = _md_ts_1.SHA384_IV[4] | 0;
3125
- this.Cl = _md_ts_1.SHA384_IV[5] | 0;
3126
- this.Dh = _md_ts_1.SHA384_IV[6] | 0;
3127
- this.Dl = _md_ts_1.SHA384_IV[7] | 0;
3128
- this.Eh = _md_ts_1.SHA384_IV[8] | 0;
3129
- this.El = _md_ts_1.SHA384_IV[9] | 0;
3130
- this.Fh = _md_ts_1.SHA384_IV[10] | 0;
3131
- this.Fl = _md_ts_1.SHA384_IV[11] | 0;
3132
- this.Gh = _md_ts_1.SHA384_IV[12] | 0;
3133
- this.Gl = _md_ts_1.SHA384_IV[13] | 0;
3134
- this.Hh = _md_ts_1.SHA384_IV[14] | 0;
3135
- this.Hl = _md_ts_1.SHA384_IV[15] | 0;
3136
- }
3137
- };
3138
- exports2.SHA384 = SHA384;
3139
- var T224_IV = /* @__PURE__ */ Uint32Array.from([
3140
- 2352822216,
3141
- 424955298,
3142
- 1944164710,
3143
- 2312950998,
3144
- 502970286,
3145
- 855612546,
3146
- 1738396948,
3147
- 1479516111,
3148
- 258812777,
3149
- 2077511080,
3150
- 2011393907,
3151
- 79989058,
3152
- 1067287976,
3153
- 1780299464,
3154
- 286451373,
3155
- 2446758561
3156
- ]);
3157
- var T256_IV = /* @__PURE__ */ Uint32Array.from([
3158
- 573645204,
3159
- 4230739756,
3160
- 2673172387,
3161
- 3360449730,
3162
- 596883563,
3163
- 1867755857,
3164
- 2520282905,
3165
- 1497426621,
3166
- 2519219938,
3167
- 2827943907,
3168
- 3193839141,
3169
- 1401305490,
3170
- 721525244,
3171
- 746961066,
3172
- 246885852,
3173
- 2177182882
3174
- ]);
3175
- var SHA512_224 = class extends SHA512 {
3176
- constructor() {
3177
- super(28);
3178
- this.Ah = T224_IV[0] | 0;
3179
- this.Al = T224_IV[1] | 0;
3180
- this.Bh = T224_IV[2] | 0;
3181
- this.Bl = T224_IV[3] | 0;
3182
- this.Ch = T224_IV[4] | 0;
3183
- this.Cl = T224_IV[5] | 0;
3184
- this.Dh = T224_IV[6] | 0;
3185
- this.Dl = T224_IV[7] | 0;
3186
- this.Eh = T224_IV[8] | 0;
3187
- this.El = T224_IV[9] | 0;
3188
- this.Fh = T224_IV[10] | 0;
3189
- this.Fl = T224_IV[11] | 0;
3190
- this.Gh = T224_IV[12] | 0;
3191
- this.Gl = T224_IV[13] | 0;
3192
- this.Hh = T224_IV[14] | 0;
3193
- this.Hl = T224_IV[15] | 0;
3194
- }
3195
- };
3196
- exports2.SHA512_224 = SHA512_224;
3197
- var SHA512_256 = class extends SHA512 {
3198
- constructor() {
3199
- super(32);
3200
- this.Ah = T256_IV[0] | 0;
3201
- this.Al = T256_IV[1] | 0;
3202
- this.Bh = T256_IV[2] | 0;
3203
- this.Bl = T256_IV[3] | 0;
3204
- this.Ch = T256_IV[4] | 0;
3205
- this.Cl = T256_IV[5] | 0;
3206
- this.Dh = T256_IV[6] | 0;
3207
- this.Dl = T256_IV[7] | 0;
3208
- this.Eh = T256_IV[8] | 0;
3209
- this.El = T256_IV[9] | 0;
3210
- this.Fh = T256_IV[10] | 0;
3211
- this.Fl = T256_IV[11] | 0;
3212
- this.Gh = T256_IV[12] | 0;
3213
- this.Gl = T256_IV[13] | 0;
3214
- this.Hh = T256_IV[14] | 0;
3215
- this.Hl = T256_IV[15] | 0;
3216
- }
3217
- };
3218
- exports2.SHA512_256 = SHA512_256;
3219
- exports2.sha256 = (0, utils_ts_1.createHasher)(() => new SHA256());
3220
- exports2.sha224 = (0, utils_ts_1.createHasher)(() => new SHA224());
3221
- exports2.sha512 = (0, utils_ts_1.createHasher)(() => new SHA512());
3222
- exports2.sha384 = (0, utils_ts_1.createHasher)(() => new SHA384());
3223
- exports2.sha512_256 = (0, utils_ts_1.createHasher)(() => new SHA512_256());
3224
- exports2.sha512_224 = (0, utils_ts_1.createHasher)(() => new SHA512_224());
3225
- }
3226
- });
3227
-
3228
- // ../../node_modules/@noble/hashes/sha256.js
3229
- var require_sha256 = __commonJS({
3230
- "../../node_modules/@noble/hashes/sha256.js"(exports2) {
3231
- "use strict";
3232
- init_esbuild_shims();
3233
- Object.defineProperty(exports2, "__esModule", { value: true });
3234
- exports2.sha224 = exports2.SHA224 = exports2.sha256 = exports2.SHA256 = void 0;
3235
- var sha2_ts_1 = require_sha2();
3236
- exports2.SHA256 = sha2_ts_1.SHA256;
3237
- exports2.sha256 = sha2_ts_1.sha256;
3238
- exports2.SHA224 = sha2_ts_1.SHA224;
3239
- exports2.sha224 = sha2_ts_1.sha224;
3240
- }
3241
- });
3242
-
3243
- // ../crypto/dist/suites/bsv-ecdsa.js
3244
- var require_bsv_ecdsa = __commonJS({
3245
- "../crypto/dist/suites/bsv-ecdsa.js"(exports2) {
3246
- "use strict";
3247
- init_esbuild_shims();
3248
- var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o2, m2, k2, k22) {
3249
- if (k22 === void 0) k22 = k2;
3250
- var desc = Object.getOwnPropertyDescriptor(m2, k2);
3251
- if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {
3252
- desc = { enumerable: true, get: function() {
3253
- return m2[k2];
3254
- } };
3255
- }
3256
- Object.defineProperty(o2, k22, desc);
3257
- }) : (function(o2, m2, k2, k22) {
3258
- if (k22 === void 0) k22 = k2;
3259
- o2[k22] = m2[k2];
3260
- }));
3261
- var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o2, v2) {
3262
- Object.defineProperty(o2, "default", { enumerable: true, value: v2 });
3263
- }) : function(o2, v2) {
3264
- o2["default"] = v2;
3265
- });
3266
- var __importStar = exports2 && exports2.__importStar || /* @__PURE__ */ (function() {
3267
- var ownKeys = function(o2) {
3268
- ownKeys = Object.getOwnPropertyNames || function(o3) {
3269
- var ar = [];
3270
- for (var k2 in o3) if (Object.prototype.hasOwnProperty.call(o3, k2)) ar[ar.length] = k2;
3271
- return ar;
3272
- };
3273
- return ownKeys(o2);
3274
- };
3275
- return function(mod) {
3276
- if (mod && mod.__esModule) return mod;
3277
- var result = {};
3278
- if (mod != null) {
3279
- for (var k2 = ownKeys(mod), i2 = 0; i2 < k2.length; i2++) if (k2[i2] !== "default") __createBinding(result, mod, k2[i2]);
3280
- }
3281
- __setModuleDefault(result, mod);
3282
- return result;
3283
- };
3284
- })();
3285
- Object.defineProperty(exports2, "__esModule", { value: true });
3286
- exports2.BsvEcdsaSuite = void 0;
3287
- var secp256k1 = __importStar((init_secp256k1(), __toCommonJS(secp256k1_exports)));
3288
- var hmac_1 = require_hmac();
3289
- var sha256_1 = require_sha256();
3290
- var utils_1 = require_utils();
3291
- secp256k1.etc.hmacSha256Sync = (key, ...msgs) => (0, hmac_1.hmac)(sha256_1.sha256, key, secp256k1.etc.concatBytes(...msgs));
3292
- var BsvEcdsaSuite2 = class {
3293
- constructor() {
3294
- __publicField(this, "suiteId", "bsv-ecdsa-secp256k1");
3295
- __publicField(this, "version", "1.0.0");
3296
- }
3297
- async generateKeypair() {
3298
- const privateKey = secp256k1.utils.randomPrivateKey();
3299
- const publicKey = secp256k1.getPublicKey(privateKey, true);
3300
- return {
3301
- privateKey,
3302
- publicKey
3303
- };
3304
- }
3305
- async sign(privateKey, message) {
3306
- try {
3307
- const signature = await secp256k1.sign(message, privateKey);
3308
- return signature.toCompactRawBytes();
3309
- } catch (error) {
3310
- throw new Error(`BsvEcdsaSuite signing failed: ${error instanceof Error ? error.message : String(error)}`);
3311
- }
3312
- }
3313
- async verify(publicKey, message, signature) {
3314
- try {
3315
- return secp256k1.verify(signature, message, publicKey);
3316
- } catch (error) {
3317
- return false;
3318
- }
3319
- }
3320
- exportPublicKey(pub) {
3321
- return (0, utils_1.bytesToHex)(pub);
3322
- }
3323
- importPublicKey(encoded) {
3324
- return (0, utils_1.hexToBytes)(encoded);
3325
- }
3326
- exportPrivateKey(priv) {
3327
- return (0, utils_1.bytesToHex)(priv);
3328
- }
3329
- importPrivateKey(encoded) {
3330
- const bytes = (0, utils_1.hexToBytes)(encoded);
3331
- if (bytes.length !== 32) {
3332
- throw new Error("Private key must be 32 bytes");
3333
- }
3334
- return bytes;
3335
- }
3336
- };
3337
- exports2.BsvEcdsaSuite = BsvEcdsaSuite2;
3338
- }
3339
- });
3340
-
3341
- // ../../node_modules/dilithium-crystals/dist/index.js
3342
- var require_dist = __commonJS({
3343
- "../../node_modules/dilithium-crystals/dist/index.js"(exports, module) {
3344
- init_esbuild_shims();
3345
- var dilithium = (function() {
3346
- var A, I, g, C = {};
3347
- function B(A2, I3) {
3348
- if (0 === A2) return I3;
3349
- throw new Error("Dilithium error: " + A2);
3350
- }
3351
- function Q(A2, I3) {
3352
- return new Uint8Array(new Uint8Array(C.HEAPU8.buffer, A2, I3));
3353
- }
3354
- function i(A2) {
3355
- try {
3356
- C._free(A2);
3357
- } catch (A3) {
3358
- setTimeout((function() {
3359
- throw A3;
3360
- }), 0);
3361
- }
3362
- }
3363
- C.ready = new Promise((function(A, I) {
3364
- function g(A2) {
3365
- return g = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(A3) {
3366
- return typeof A3;
3367
- } : function(A3) {
3368
- return A3 && "function" == typeof Symbol && A3.constructor === Symbol && A3 !== Symbol.prototype ? "symbol" : typeof A3;
3369
- }, g(A2);
3370
- }
3371
- (Q = {}).onAbort = I, Q.onRuntimeInitialized = function() {
3372
- try {
3373
- Q._dilithiumjs_public_key_bytes(), A(Q);
3374
- } catch (A2) {
3375
- I(A2);
3376
- }
3377
- };
3378
- var C, B, Q = void 0 !== Q ? Q : {}, i = Object.assign({}, Q), E = function(A2, I3) {
3379
- throw I3;
3380
- }, o = "object" == ("undefined" == typeof window ? "undefined" : g(window)), n = "function" == typeof importScripts, r = "object" == ("undefined" == typeof process ? "undefined" : g(process)) && "object" == g(process.versions) && "string" == typeof process.versions.node, t = "";
3381
- if (r) {
3382
- var a = eval("require")("fs"), e = eval("require")("path");
3383
- t = n ? e.dirname(t) + "/" : __dirname + "/", C = function(A2, I3) {
3384
- var g2 = x(A2);
3385
- return g2 ? I3 ? g2 : g2.toString() : (A2 = q(A2) ? new URL(A2) : e.normalize(A2), a.readFileSync(A2, I3 ? void 0 : "utf8"));
3386
- }, B = function(A2) {
3387
- var I3 = C(A2, true);
3388
- return I3.buffer || (I3 = new Uint8Array(I3)), I3;
3389
- }, function(A2, I3, g2) {
3390
- var C3 = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3], B2 = x(A2);
3391
- B2 && I3(B2), A2 = q(A2) ? new URL(A2) : e.normalize(A2), a.readFile(A2, C3 ? void 0 : "utf8", (function(A3, B3) {
3392
- A3 ? g2(A3) : I3(C3 ? B3.buffer : B3);
3393
- }));
3394
- }, !Q.thisProgram && process.argv.length > 1 && process.argv[1].replace(/\\/g, "/"), process.argv.slice(2), "undefined" != typeof module && (module.exports = Q), process.on("uncaughtException", (function(A2) {
3395
- if (!("unwind" === A2 || A2 instanceof p || A2.context instanceof p)) throw A2;
3396
- })), E = function(A2, I3) {
3397
- throw process.exitCode = A2, I3;
3398
- }, Q.inspect = function() {
3399
- return "[Emscripten Module object]";
3400
- };
3401
- } else (o || n) && (n ? t = self.location.href : "undefined" != typeof document && document.currentScript && (t = document.currentScript.src), t = 0 !== t.indexOf("blob:") ? t.substr(0, t.replace(/[?#].*/, "").lastIndexOf("/") + 1) : "", C = function(A2) {
3402
- try {
3403
- var I3 = new XMLHttpRequest();
3404
- return I3.open("GET", A2, false), I3.send(null), I3.responseText;
3405
- } catch (I4) {
3406
- var g2 = x(A2);
3407
- if (g2) return (function(A3) {
3408
- for (var I5 = [], g3 = 0; g3 < A3.length; g3++) {
3409
- var C3 = A3[g3];
3410
- C3 > 255 && (C3 &= 255), I5.push(String.fromCharCode(C3));
3411
- }
3412
- return I5.join("");
3413
- })(g2);
3414
- throw I4;
3415
- }
3416
- }, n && (B = function(A2) {
3417
- try {
3418
- var I3 = new XMLHttpRequest();
3419
- return I3.open("GET", A2, false), I3.responseType = "arraybuffer", I3.send(null), new Uint8Array(I3.response);
3420
- } catch (I4) {
3421
- var g2 = x(A2);
3422
- if (g2) return g2;
3423
- throw I4;
3424
- }
3425
- }), function(A2, I3, g2) {
3426
- var C3 = new XMLHttpRequest();
3427
- C3.open("GET", A2, true), C3.responseType = "arraybuffer", C3.onload = function() {
3428
- if (200 == C3.status || 0 == C3.status && C3.response) I3(C3.response);
3429
- else {
3430
- var B2 = x(A2);
3431
- B2 ? I3(B2.buffer) : g2();
3432
- }
3433
- }, C3.onerror = g2, C3.send(null);
3434
- }, function(A2) {
3435
- return document.title = A2;
3436
- });
3437
- Q.print || console.log.bind(console);
3438
- var f, D = Q.printErr || console.error.bind(console);
3439
- Object.assign(Q, i), i = null, Q.arguments && Q.arguments, Q.thisProgram && Q.thisProgram, Q.quit && (E = Q.quit), Q.wasmBinary && (f = Q.wasmBinary);
3440
- var c, G = Q.noExitRuntime || true;
3441
- "object" != ("undefined" == typeof WebAssembly ? "undefined" : g(WebAssembly)) && U("no native wasm support detected");
3442
- var h, y, u, s, F = false;
3443
- var Y = [], N = [], w = [];
3444
- var S = 0, k = null, H = null;
3445
- function U(A2) {
3446
- throw Q.onAbort && Q.onAbort(A2), D(A2 = "Aborted(" + A2 + ")"), F = true, 1, A2 += ". Build with -sASSERTIONS for more info.", new WebAssembly.RuntimeError(A2);
3447
- }
3448
- var R, d, M = "data:application/octet-stream;base64,";
3449
- function J(A2) {
3450
- return A2.startsWith(M);
3451
- }
3452
- function q(A2) {
3453
- return A2.startsWith("file://");
3454
- }
3455
- function l(A2) {
3456
- return Promise.resolve().then((function() {
3457
- return (function(A3) {
3458
- if (A3 == R && f) return new Uint8Array(f);
3459
- var I3 = x(A3);
3460
- if (I3) return I3;
3461
- if (B) return B(A3);
3462
- throw "both async and sync fetching of the wasm failed";
3463
- })(A2);
3464
- }));
1074
+ function l(A2) {
1075
+ return Promise.resolve().then((function() {
1076
+ return (function(A3) {
1077
+ if (A3 == R && f) return new Uint8Array(f);
1078
+ var I3 = x(A3);
1079
+ if (I3) return I3;
1080
+ if (B) return B(A3);
1081
+ throw "both async and sync fetching of the wasm failed";
1082
+ })(A2);
1083
+ }));
3465
1084
  }
3466
1085
  function m(A2, I3, g2, C3) {
3467
1086
  return (function(A3, I4, g3) {
@@ -4796,204 +2415,1470 @@ var LumenKeys = (() => {
4796
2415
  }
4797
2416
  });
4798
2417
 
4799
- // ../crypto/dist/suites/ml-dsa.js
4800
- var require_ml_dsa = __commonJS({
4801
- "../crypto/dist/suites/ml-dsa.js"(exports2) {
4802
- "use strict";
4803
- init_esbuild_shims();
4804
- var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o2, m2, k2, k22) {
4805
- if (k22 === void 0) k22 = k2;
4806
- var desc = Object.getOwnPropertyDescriptor(m2, k2);
4807
- if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {
4808
- desc = { enumerable: true, get: function() {
4809
- return m2[k2];
4810
- } };
4811
- }
4812
- Object.defineProperty(o2, k22, desc);
4813
- }) : (function(o2, m2, k2, k22) {
4814
- if (k22 === void 0) k22 = k2;
4815
- o2[k22] = m2[k2];
4816
- }));
4817
- var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o2, v2) {
4818
- Object.defineProperty(o2, "default", { enumerable: true, value: v2 });
4819
- }) : function(o2, v2) {
4820
- o2["default"] = v2;
4821
- });
4822
- var __importStar = exports2 && exports2.__importStar || /* @__PURE__ */ (function() {
4823
- var ownKeys = function(o2) {
4824
- ownKeys = Object.getOwnPropertyNames || function(o3) {
4825
- var ar = [];
4826
- for (var k2 in o3) if (Object.prototype.hasOwnProperty.call(o3, k2)) ar[ar.length] = k2;
4827
- return ar;
4828
- };
4829
- return ownKeys(o2);
4830
- };
4831
- return function(mod) {
4832
- if (mod && mod.__esModule) return mod;
4833
- var result = {};
4834
- if (mod != null) {
4835
- for (var k2 = ownKeys(mod), i2 = 0; i2 < k2.length; i2++) if (k2[i2] !== "default") __createBinding(result, mod, k2[i2]);
4836
- }
4837
- __setModuleDefault(result, mod);
4838
- return result;
4839
- };
4840
- })();
4841
- Object.defineProperty(exports2, "__esModule", { value: true });
4842
- exports2.MlDsaSuite = exports2.MlDsa87Suite = void 0;
4843
- var utils_1 = require_utils();
4844
- var dilithiumLib = null;
4845
- async function getDilithium() {
4846
- if (!dilithiumLib) {
4847
- dilithiumLib = await Promise.resolve().then(() => __importStar(require_dist()));
4848
- }
4849
- return dilithiumLib;
2418
+ // src/browser.ts
2419
+ var browser_exports = {};
2420
+ __export(browser_exports, {
2421
+ InMemoryKeyStorage: () => InMemoryKeyStorage,
2422
+ createKeySDK: () => createKeySDK,
2423
+ default: () => browser_default
2424
+ });
2425
+ init_esbuild_shims();
2426
+
2427
+ // src/sdk.ts
2428
+ init_esbuild_shims();
2429
+
2430
+ // ../crypto/dist/esm/index.js
2431
+ init_esbuild_shims();
2432
+
2433
+ // ../crypto/dist/esm/types.js
2434
+ init_esbuild_shims();
2435
+
2436
+ // ../crypto/dist/esm/registry.js
2437
+ init_esbuild_shims();
2438
+ var SignatureSuiteRegistry = class {
2439
+ constructor() {
2440
+ __publicField(this, "suites", /* @__PURE__ */ new Map());
2441
+ }
2442
+ /**
2443
+ * Register a signature suite implementation
2444
+ */
2445
+ register(suite) {
2446
+ if (this.suites.has(suite.suiteId)) {
2447
+ throw new Error(`Signature suite already registered: ${suite.suiteId}`);
4850
2448
  }
4851
- var MlDsa87Suite = class {
4852
- constructor() {
4853
- __publicField(this, "suiteId", "ml-dsa-87");
4854
- __publicField(this, "version", "1.0.0");
4855
- }
4856
- async generateKeypair() {
4857
- try {
4858
- const dilithium2 = await getDilithium();
4859
- const keypair = await dilithium2.keyPair();
4860
- return {
4861
- publicKey: new Uint8Array(keypair.publicKey),
4862
- privateKey: new Uint8Array(keypair.privateKey)
4863
- };
4864
- } catch (error) {
4865
- throw new Error(`ML-DSA-87 key generation failed: ${error instanceof Error ? error.message : String(error)}`);
4866
- }
4867
- }
4868
- async sign(privateKey, message) {
4869
- try {
4870
- const dilithium2 = await getDilithium();
4871
- const signature = await dilithium2.signDetached(Buffer.from(message), Buffer.from(privateKey));
4872
- return new Uint8Array(signature);
4873
- } catch (error) {
4874
- throw new Error(`ML-DSA-87 signing failed: ${error instanceof Error ? error.message : String(error)}`);
4875
- }
4876
- }
4877
- async verify(publicKey, message, signature) {
4878
- try {
4879
- const dilithium2 = await getDilithium();
4880
- return await dilithium2.verifyDetached(Buffer.from(signature), Buffer.from(message), Buffer.from(publicKey));
4881
- } catch (error) {
4882
- return false;
4883
- }
4884
- }
4885
- exportPublicKey(pub) {
4886
- return (0, utils_1.bytesToHex)(pub);
4887
- }
4888
- importPublicKey(encoded) {
4889
- const bytes = (0, utils_1.hexToBytes)(encoded);
4890
- if (bytes.length !== 2592) {
4891
- throw new Error(`ML-DSA-87 public key must be 2592 bytes, got ${bytes.length}`);
4892
- }
4893
- return bytes;
4894
- }
4895
- exportPrivateKey(priv) {
4896
- return (0, utils_1.bytesToHex)(priv);
4897
- }
4898
- importPrivateKey(encoded) {
4899
- const bytes = (0, utils_1.hexToBytes)(encoded);
4900
- if (bytes.length !== 4864) {
4901
- throw new Error(`ML-DSA-87 private key must be 4864 bytes, got ${bytes.length}`);
2449
+ this.suites.set(suite.suiteId, suite);
2450
+ }
2451
+ /**
2452
+ * Get a signature suite by ID
2453
+ * @throws Error if suite is not registered
2454
+ */
2455
+ getSuite(suiteId) {
2456
+ const suite = this.suites.get(suiteId);
2457
+ if (!suite) {
2458
+ throw new Error(`Unknown signature suite: ${suiteId}. Available: ${this.listSuites().join(", ")}`);
2459
+ }
2460
+ return suite;
2461
+ }
2462
+ /**
2463
+ * Check if a suite is registered
2464
+ */
2465
+ hasSuite(suiteId) {
2466
+ return this.suites.has(suiteId);
2467
+ }
2468
+ /**
2469
+ * List all registered suite IDs
2470
+ */
2471
+ listSuites() {
2472
+ return [...this.suites.keys()];
2473
+ }
2474
+ /**
2475
+ * Unregister a suite (primarily for testing)
2476
+ */
2477
+ unregister(suiteId) {
2478
+ return this.suites.delete(suiteId);
2479
+ }
2480
+ /**
2481
+ * Clear all registered suites (primarily for testing)
2482
+ */
2483
+ clear() {
2484
+ this.suites.clear();
2485
+ }
2486
+ };
2487
+ var globalRegistry = new SignatureSuiteRegistry();
2488
+
2489
+ // ../crypto/dist/esm/utils.js
2490
+ init_esbuild_shims();
2491
+ function bytesToHex(bytes) {
2492
+ return Array.from(bytes).map((b2) => b2.toString(16).padStart(2, "0")).join("");
2493
+ }
2494
+ function hexToBytes(hex) {
2495
+ if (hex.length % 2 !== 0) {
2496
+ throw new Error("Hex string must have even length");
2497
+ }
2498
+ const bytes = new Uint8Array(hex.length / 2);
2499
+ for (let i2 = 0; i2 < hex.length; i2 += 2) {
2500
+ bytes[i2 / 2] = parseInt(hex.slice(i2, i2 + 2), 16);
2501
+ }
2502
+ return bytes;
2503
+ }
2504
+ async function hashBytes(bytes, algorithm) {
2505
+ if (algorithm === "sha256") {
2506
+ const crypto = await Promise.resolve().then(() => (init_crypto_browser_shim(), crypto_browser_shim_exports));
2507
+ return new Uint8Array(crypto.createHash("sha256").update(bytes).digest());
2508
+ } else if (algorithm === "sha512") {
2509
+ const crypto = await Promise.resolve().then(() => (init_crypto_browser_shim(), crypto_browser_shim_exports));
2510
+ return new Uint8Array(crypto.createHash("sha512").update(bytes).digest());
2511
+ } else if (algorithm === "sha3-256") {
2512
+ const crypto = await Promise.resolve().then(() => (init_crypto_browser_shim(), crypto_browser_shim_exports));
2513
+ return new Uint8Array(crypto.createHash("sha3-256").update(bytes).digest());
2514
+ }
2515
+ throw new Error(`Unsupported hash algorithm: ${algorithm}`);
2516
+ }
2517
+
2518
+ // ../crypto/dist/esm/signing.js
2519
+ init_esbuild_shims();
2520
+
2521
+ // ../crypto/dist/esm/key-registry.js
2522
+ init_esbuild_shims();
2523
+ var InMemoryKeyStorage = class {
2524
+ constructor() {
2525
+ __publicField(this, "keys", /* @__PURE__ */ new Map());
2526
+ }
2527
+ async store(keyId, keypair, meta) {
2528
+ this.keys.set(keyId, { keypair, meta });
2529
+ }
2530
+ async load(keyId) {
2531
+ return this.keys.get(keyId) || null;
2532
+ }
2533
+ async list(filter) {
2534
+ const allMeta = Array.from(this.keys.values()).map((k2) => k2.meta);
2535
+ if (!filter) {
2536
+ return allMeta;
2537
+ }
2538
+ return allMeta.filter((meta) => {
2539
+ return Object.entries(filter).every(([key, value]) => {
2540
+ if (key === "usage" && Array.isArray(value)) {
2541
+ return value.some((u2) => meta.usage.includes(u2));
4902
2542
  }
4903
- return bytes;
4904
- }
2543
+ return meta[key] === value;
2544
+ });
2545
+ });
2546
+ }
2547
+ async delete(keyId) {
2548
+ this.keys.delete(keyId);
2549
+ }
2550
+ async updateMeta(keyId, updates) {
2551
+ const existing = this.keys.get(keyId);
2552
+ if (!existing) {
2553
+ throw new Error(`Key not found: ${keyId}`);
2554
+ }
2555
+ this.keys.set(keyId, {
2556
+ keypair: existing.keypair,
2557
+ meta: { ...existing.meta, ...updates }
2558
+ });
2559
+ }
2560
+ /**
2561
+ * Clear all keys (testing only).
2562
+ */
2563
+ clear() {
2564
+ this.keys.clear();
2565
+ }
2566
+ };
2567
+ var KeyRegistry = class {
2568
+ constructor(storage = new InMemoryKeyStorage()) {
2569
+ __publicField(this, "storage");
2570
+ this.storage = storage;
2571
+ }
2572
+ /**
2573
+ * Register a new keypair with metadata.
2574
+ */
2575
+ async registerKey(keyId, keypair, suiteId, options = {}) {
2576
+ const meta = {
2577
+ keyId,
2578
+ suiteId,
2579
+ createdAt: (/* @__PURE__ */ new Date()).toISOString(),
2580
+ expiresAt: options.expiresAt,
2581
+ usage: options.usage || ["signing"],
2582
+ cryptoProfileVersion: options.cryptoProfileVersion || "1.0.0",
2583
+ status: options.status || "active"
4905
2584
  };
4906
- exports2.MlDsa87Suite = MlDsa87Suite;
4907
- var MlDsaSuite2 = class {
4908
- constructor() {
4909
- __publicField(this, "suiteId", "ml-dsa-65");
4910
- __publicField(this, "version", "1.0.0");
4911
- __publicField(this, "impl", new MlDsa87Suite());
4912
- }
4913
- async generateKeypair() {
4914
- return this.impl.generateKeypair();
4915
- }
4916
- async sign(privateKey, message) {
4917
- return this.impl.sign(privateKey, message);
4918
- }
4919
- async verify(publicKey, message, signature) {
4920
- return this.impl.verify(publicKey, message, signature);
4921
- }
4922
- exportPublicKey(pub) {
4923
- return this.impl.exportPublicKey(pub);
4924
- }
4925
- importPublicKey(encoded) {
4926
- return this.impl.importPublicKey(encoded);
2585
+ await this.storage.store(keyId, keypair, meta);
2586
+ return meta;
2587
+ }
2588
+ /**
2589
+ * Get a keypair and its metadata.
2590
+ */
2591
+ async getKey(keyId) {
2592
+ return await this.storage.load(keyId);
2593
+ }
2594
+ /**
2595
+ * Get only the public key (no private key).
2596
+ */
2597
+ async getPublicKey(keyId) {
2598
+ const result = await this.storage.load(keyId);
2599
+ if (!result)
2600
+ return null;
2601
+ return {
2602
+ publicKey: result.keypair.publicKey,
2603
+ meta: result.meta
2604
+ };
2605
+ }
2606
+ /**
2607
+ * List all keys matching optional filter.
2608
+ */
2609
+ async listKeys(filter) {
2610
+ return await this.storage.list(filter);
2611
+ }
2612
+ /**
2613
+ * List only active, non-expired keys.
2614
+ */
2615
+ async listActiveKeys(filter) {
2616
+ const allKeys = await this.storage.list(filter);
2617
+ const now = /* @__PURE__ */ new Date();
2618
+ return allKeys.filter((meta) => {
2619
+ if (meta.status && meta.status !== "active") {
2620
+ return false;
4927
2621
  }
4928
- exportPrivateKey(priv) {
4929
- return this.impl.exportPrivateKey(priv);
2622
+ if (meta.expiresAt && new Date(meta.expiresAt) < now) {
2623
+ return false;
4930
2624
  }
4931
- importPrivateKey(encoded) {
4932
- return this.impl.importPrivateKey(encoded);
2625
+ return true;
2626
+ });
2627
+ }
2628
+ /**
2629
+ * Rotate a key: generate new keypair, mark old as 'rotated'.
2630
+ *
2631
+ * Returns the new key's metadata.
2632
+ */
2633
+ async rotateKey(oldKeyId, newKeyId, newKeypair) {
2634
+ const oldKey = await this.storage.load(oldKeyId);
2635
+ if (!oldKey) {
2636
+ throw new Error(`Cannot rotate: key not found: ${oldKeyId}`);
2637
+ }
2638
+ await this.storage.updateMeta(oldKeyId, {
2639
+ status: "rotated"
2640
+ });
2641
+ await this.registerKey(newKeyId, newKeypair, oldKey.meta.suiteId, {
2642
+ usage: oldKey.meta.usage,
2643
+ cryptoProfileVersion: oldKey.meta.cryptoProfileVersion,
2644
+ expiresAt: oldKey.meta.expiresAt,
2645
+ status: "active"
2646
+ });
2647
+ await this.storage.updateMeta(newKeyId, {
2648
+ rotatedFrom: oldKeyId
2649
+ });
2650
+ const result = await this.storage.load(newKeyId);
2651
+ return result.meta;
2652
+ }
2653
+ /**
2654
+ * Revoke a key (marks as unusable, but doesn't delete).
2655
+ */
2656
+ async revokeKey(keyId, reason) {
2657
+ await this.storage.updateMeta(keyId, {
2658
+ status: "revoked",
2659
+ revokedAt: (/* @__PURE__ */ new Date()).toISOString()
2660
+ });
2661
+ }
2662
+ /**
2663
+ * Delete a key permanently (use with caution).
2664
+ */
2665
+ async deleteKey(keyId) {
2666
+ await this.storage.delete(keyId);
2667
+ }
2668
+ /**
2669
+ * Mark expired keys as 'expired' status.
2670
+ * Returns count of keys marked expired.
2671
+ */
2672
+ async markExpiredKeys() {
2673
+ const allKeys = await this.storage.list();
2674
+ const now = /* @__PURE__ */ new Date();
2675
+ let count = 0;
2676
+ for (const meta of allKeys) {
2677
+ if (meta.expiresAt && new Date(meta.expiresAt) < now && meta.status === "active") {
2678
+ await this.storage.updateMeta(meta.keyId, {
2679
+ status: "expired"
2680
+ });
2681
+ count++;
4933
2682
  }
2683
+ }
2684
+ return count;
2685
+ }
2686
+ /**
2687
+ * Cleanup: delete keys that have been revoked/expired for longer than retention period.
2688
+ *
2689
+ * @param retentionDays How many days to keep revoked/expired keys (default: 90)
2690
+ */
2691
+ async pruneOldKeys(retentionDays = 90) {
2692
+ const allKeys = await this.storage.list();
2693
+ const cutoffDate = /* @__PURE__ */ new Date();
2694
+ cutoffDate.setDate(cutoffDate.getDate() - retentionDays);
2695
+ let count = 0;
2696
+ for (const meta of allKeys) {
2697
+ const shouldPrune = meta.status === "revoked" && meta.revokedAt && new Date(meta.revokedAt) < cutoffDate || meta.status === "expired" && meta.expiresAt && new Date(meta.expiresAt) < cutoffDate;
2698
+ if (shouldPrune) {
2699
+ await this.storage.delete(meta.keyId);
2700
+ count++;
2701
+ }
2702
+ }
2703
+ return count;
2704
+ }
2705
+ };
2706
+
2707
+ // ../crypto/dist/esm/errors.js
2708
+ init_esbuild_shims();
2709
+
2710
+ // ../crypto/dist/esm/stateless.js
2711
+ init_esbuild_shims();
2712
+
2713
+ // ../crypto/dist/esm/suites/bsv-ecdsa.js
2714
+ init_esbuild_shims();
2715
+
2716
+ // ../../node_modules/@noble/secp256k1/index.js
2717
+ init_esbuild_shims();
2718
+ var secp256k1_CURVE = {
2719
+ p: 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2fn,
2720
+ n: 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141n,
2721
+ h: 1n,
2722
+ a: 0n,
2723
+ b: 7n,
2724
+ Gx: 0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798n,
2725
+ Gy: 0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8n
2726
+ };
2727
+ var { p: P2, n: N2, Gx, Gy, b: _b } = secp256k1_CURVE;
2728
+ var L2 = 32;
2729
+ var L22 = 64;
2730
+ var err = (m2 = "") => {
2731
+ throw new Error(m2);
2732
+ };
2733
+ var isBig = (n2) => typeof n2 === "bigint";
2734
+ var isStr = (s2) => typeof s2 === "string";
2735
+ var isBytes2 = (a2) => a2 instanceof Uint8Array || ArrayBuffer.isView(a2) && a2.constructor.name === "Uint8Array";
2736
+ var abytes2 = (a2, l2) => !isBytes2(a2) || typeof l2 === "number" && l2 > 0 && a2.length !== l2 ? err("Uint8Array expected") : a2;
2737
+ var u8n = (len) => new Uint8Array(len);
2738
+ var u8fr = (buf) => Uint8Array.from(buf);
2739
+ var padh = (n2, pad) => n2.toString(16).padStart(pad, "0");
2740
+ var bytesToHex2 = (b2) => Array.from(abytes2(b2)).map((e2) => padh(e2, 2)).join("");
2741
+ var C2 = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 };
2742
+ var _ch = (ch) => {
2743
+ if (ch >= C2._0 && ch <= C2._9)
2744
+ return ch - C2._0;
2745
+ if (ch >= C2.A && ch <= C2.F)
2746
+ return ch - (C2.A - 10);
2747
+ if (ch >= C2.a && ch <= C2.f)
2748
+ return ch - (C2.a - 10);
2749
+ return;
2750
+ };
2751
+ var hexToBytes2 = (hex) => {
2752
+ const e2 = "hex invalid";
2753
+ if (!isStr(hex))
2754
+ return err(e2);
2755
+ const hl = hex.length;
2756
+ const al = hl / 2;
2757
+ if (hl % 2)
2758
+ return err(e2);
2759
+ const array = u8n(al);
2760
+ for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {
2761
+ const n1 = _ch(hex.charCodeAt(hi));
2762
+ const n2 = _ch(hex.charCodeAt(hi + 1));
2763
+ if (n1 === void 0 || n2 === void 0)
2764
+ return err(e2);
2765
+ array[ai] = n1 * 16 + n2;
2766
+ }
2767
+ return array;
2768
+ };
2769
+ var toU8 = (a2, len) => abytes2(isStr(a2) ? hexToBytes2(a2) : u8fr(abytes2(a2)), len);
2770
+ var cr = () => globalThis?.crypto;
2771
+ var subtle = () => cr()?.subtle ?? err("crypto.subtle must be defined");
2772
+ var concatBytes = (...arrs) => {
2773
+ const r2 = u8n(arrs.reduce((sum, a2) => sum + abytes2(a2).length, 0));
2774
+ let pad = 0;
2775
+ arrs.forEach((a2) => {
2776
+ r2.set(a2, pad);
2777
+ pad += a2.length;
2778
+ });
2779
+ return r2;
2780
+ };
2781
+ var randomBytes = (len = L2) => {
2782
+ const c2 = cr();
2783
+ return c2.getRandomValues(u8n(len));
2784
+ };
2785
+ var big = BigInt;
2786
+ var arange = (n2, min, max, msg = "bad number: out of range") => isBig(n2) && min <= n2 && n2 < max ? n2 : err(msg);
2787
+ var M2 = (a2, b2 = P2) => {
2788
+ const r2 = a2 % b2;
2789
+ return r2 >= 0n ? r2 : b2 + r2;
2790
+ };
2791
+ var modN = (a2) => M2(a2, N2);
2792
+ var invert = (num, md) => {
2793
+ if (num === 0n || md <= 0n)
2794
+ err("no inverse n=" + num + " mod=" + md);
2795
+ let a2 = M2(num, md), b2 = md, x2 = 0n, y2 = 1n, u2 = 1n, v2 = 0n;
2796
+ while (a2 !== 0n) {
2797
+ const q2 = b2 / a2, r2 = b2 % a2;
2798
+ const m2 = x2 - u2 * q2, n2 = y2 - v2 * q2;
2799
+ b2 = a2, a2 = r2, x2 = u2, y2 = v2, u2 = m2, v2 = n2;
2800
+ }
2801
+ return b2 === 1n ? M2(x2, md) : err("no inverse");
2802
+ };
2803
+ var callHash = (name) => {
2804
+ const fn = etc[name];
2805
+ if (typeof fn !== "function")
2806
+ err("hashes." + name + " not set");
2807
+ return fn;
2808
+ };
2809
+ var apoint = (p2) => p2 instanceof Point ? p2 : err("Point expected");
2810
+ var koblitz = (x2) => M2(M2(x2 * x2) * x2 + _b);
2811
+ var afield0 = (n2) => arange(n2, 0n, P2);
2812
+ var afield = (n2) => arange(n2, 1n, P2);
2813
+ var agroup = (n2) => arange(n2, 1n, N2);
2814
+ var isEven = (y2) => (y2 & 1n) === 0n;
2815
+ var u8of = (n2) => Uint8Array.of(n2);
2816
+ var getPrefix = (y2) => u8of(isEven(y2) ? 2 : 3);
2817
+ var lift_x = (x2) => {
2818
+ const c2 = koblitz(afield(x2));
2819
+ let r2 = 1n;
2820
+ for (let num = c2, e2 = (P2 + 1n) / 4n; e2 > 0n; e2 >>= 1n) {
2821
+ if (e2 & 1n)
2822
+ r2 = r2 * num % P2;
2823
+ num = num * num % P2;
2824
+ }
2825
+ return M2(r2 * r2) === c2 ? r2 : err("sqrt invalid");
2826
+ };
2827
+ var _Point = class _Point {
2828
+ constructor(px, py, pz) {
2829
+ __publicField(this, "px");
2830
+ __publicField(this, "py");
2831
+ __publicField(this, "pz");
2832
+ this.px = afield0(px);
2833
+ this.py = afield(py);
2834
+ this.pz = afield0(pz);
2835
+ Object.freeze(this);
2836
+ }
2837
+ /** Convert Uint8Array or hex string to Point. */
2838
+ static fromBytes(bytes) {
2839
+ abytes2(bytes);
2840
+ let p2 = void 0;
2841
+ const head = bytes[0];
2842
+ const tail = bytes.subarray(1);
2843
+ const x2 = sliceBytesNumBE(tail, 0, L2);
2844
+ const len = bytes.length;
2845
+ if (len === L2 + 1 && [2, 3].includes(head)) {
2846
+ let y2 = lift_x(x2);
2847
+ const evenY = isEven(y2);
2848
+ const evenH = isEven(big(head));
2849
+ if (evenH !== evenY)
2850
+ y2 = M2(-y2);
2851
+ p2 = new _Point(x2, y2, 1n);
2852
+ }
2853
+ if (len === L22 + 1 && head === 4)
2854
+ p2 = new _Point(x2, sliceBytesNumBE(tail, L2, L22), 1n);
2855
+ return p2 ? p2.assertValidity() : err("bad point: not on curve");
2856
+ }
2857
+ /** Equality check: compare points P&Q. */
2858
+ equals(other) {
2859
+ const { px: X1, py: Y1, pz: Z1 } = this;
2860
+ const { px: X2, py: Y2, pz: Z2 } = apoint(other);
2861
+ const X1Z2 = M2(X1 * Z2);
2862
+ const X2Z1 = M2(X2 * Z1);
2863
+ const Y1Z2 = M2(Y1 * Z2);
2864
+ const Y2Z1 = M2(Y2 * Z1);
2865
+ return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;
2866
+ }
2867
+ is0() {
2868
+ return this.equals(I2);
2869
+ }
2870
+ /** Flip point over y coordinate. */
2871
+ negate() {
2872
+ return new _Point(this.px, M2(-this.py), this.pz);
2873
+ }
2874
+ /** Point doubling: P+P, complete formula. */
2875
+ double() {
2876
+ return this.add(this);
2877
+ }
2878
+ /**
2879
+ * Point addition: P+Q, complete, exception-free formula
2880
+ * (Renes-Costello-Batina, algo 1 of [2015/1060](https://eprint.iacr.org/2015/1060)).
2881
+ * Cost: `12M + 0S + 3*a + 3*b3 + 23add`.
2882
+ */
2883
+ // prettier-ignore
2884
+ add(other) {
2885
+ const { px: X1, py: Y1, pz: Z1 } = this;
2886
+ const { px: X2, py: Y2, pz: Z2 } = apoint(other);
2887
+ const a2 = 0n;
2888
+ const b2 = _b;
2889
+ let X3 = 0n, Y3 = 0n, Z3 = 0n;
2890
+ const b3 = M2(b2 * 3n);
2891
+ let t0 = M2(X1 * X2), t1 = M2(Y1 * Y2), t2 = M2(Z1 * Z2), t3 = M2(X1 + Y1);
2892
+ let t4 = M2(X2 + Y2);
2893
+ t3 = M2(t3 * t4);
2894
+ t4 = M2(t0 + t1);
2895
+ t3 = M2(t3 - t4);
2896
+ t4 = M2(X1 + Z1);
2897
+ let t5 = M2(X2 + Z2);
2898
+ t4 = M2(t4 * t5);
2899
+ t5 = M2(t0 + t2);
2900
+ t4 = M2(t4 - t5);
2901
+ t5 = M2(Y1 + Z1);
2902
+ X3 = M2(Y2 + Z2);
2903
+ t5 = M2(t5 * X3);
2904
+ X3 = M2(t1 + t2);
2905
+ t5 = M2(t5 - X3);
2906
+ Z3 = M2(a2 * t4);
2907
+ X3 = M2(b3 * t2);
2908
+ Z3 = M2(X3 + Z3);
2909
+ X3 = M2(t1 - Z3);
2910
+ Z3 = M2(t1 + Z3);
2911
+ Y3 = M2(X3 * Z3);
2912
+ t1 = M2(t0 + t0);
2913
+ t1 = M2(t1 + t0);
2914
+ t2 = M2(a2 * t2);
2915
+ t4 = M2(b3 * t4);
2916
+ t1 = M2(t1 + t2);
2917
+ t2 = M2(t0 - t2);
2918
+ t2 = M2(a2 * t2);
2919
+ t4 = M2(t4 + t2);
2920
+ t0 = M2(t1 * t4);
2921
+ Y3 = M2(Y3 + t0);
2922
+ t0 = M2(t5 * t4);
2923
+ X3 = M2(t3 * X3);
2924
+ X3 = M2(X3 - t0);
2925
+ t0 = M2(t3 * t1);
2926
+ Z3 = M2(t5 * Z3);
2927
+ Z3 = M2(Z3 + t0);
2928
+ return new _Point(X3, Y3, Z3);
2929
+ }
2930
+ /**
2931
+ * Point-by-scalar multiplication. Scalar must be in range 1 <= n < CURVE.n.
2932
+ * Uses {@link wNAF} for base point.
2933
+ * Uses fake point to mitigate side-channel leakage.
2934
+ * @param n scalar by which point is multiplied
2935
+ * @param safe safe mode guards against timing attacks; unsafe mode is faster
2936
+ */
2937
+ multiply(n2, safe = true) {
2938
+ if (!safe && n2 === 0n)
2939
+ return I2;
2940
+ agroup(n2);
2941
+ if (n2 === 1n)
2942
+ return this;
2943
+ if (this.equals(G2))
2944
+ return wNAF(n2).p;
2945
+ let p2 = I2;
2946
+ let f2 = G2;
2947
+ for (let d2 = this; n2 > 0n; d2 = d2.double(), n2 >>= 1n) {
2948
+ if (n2 & 1n)
2949
+ p2 = p2.add(d2);
2950
+ else if (safe)
2951
+ f2 = f2.add(d2);
2952
+ }
2953
+ return p2;
2954
+ }
2955
+ /** Convert point to 2d xy affine point. (X, Y, Z) ∋ (x=X/Z, y=Y/Z) */
2956
+ toAffine() {
2957
+ const { px: x2, py: y2, pz: z } = this;
2958
+ if (this.equals(I2))
2959
+ return { x: 0n, y: 0n };
2960
+ if (z === 1n)
2961
+ return { x: x2, y: y2 };
2962
+ const iz = invert(z, P2);
2963
+ if (M2(z * iz) !== 1n)
2964
+ err("inverse invalid");
2965
+ return { x: M2(x2 * iz), y: M2(y2 * iz) };
2966
+ }
2967
+ /** Checks if the point is valid and on-curve. */
2968
+ assertValidity() {
2969
+ const { x: x2, y: y2 } = this.toAffine();
2970
+ afield(x2);
2971
+ afield(y2);
2972
+ return M2(y2 * y2) === koblitz(x2) ? this : err("bad point: not on curve");
2973
+ }
2974
+ /** Converts point to 33/65-byte Uint8Array. */
2975
+ toBytes(isCompressed = true) {
2976
+ const { x: x2, y: y2 } = this.assertValidity().toAffine();
2977
+ const x32b = numTo32b(x2);
2978
+ if (isCompressed)
2979
+ return concatBytes(getPrefix(y2), x32b);
2980
+ return concatBytes(u8of(4), x32b, numTo32b(y2));
2981
+ }
2982
+ /** Create 3d xyz point from 2d xy. (0, 0) => (0, 1, 0), not (0, 0, 1) */
2983
+ static fromAffine(ap) {
2984
+ const { x: x2, y: y2 } = ap;
2985
+ return x2 === 0n && y2 === 0n ? I2 : new _Point(x2, y2, 1n);
2986
+ }
2987
+ toHex(isCompressed) {
2988
+ return bytesToHex2(this.toBytes(isCompressed));
2989
+ }
2990
+ static fromPrivateKey(k2) {
2991
+ return G2.multiply(toPrivScalar(k2));
2992
+ }
2993
+ static fromHex(hex) {
2994
+ return _Point.fromBytes(toU8(hex));
2995
+ }
2996
+ get x() {
2997
+ return this.toAffine().x;
2998
+ }
2999
+ get y() {
3000
+ return this.toAffine().y;
3001
+ }
3002
+ toRawBytes(isCompressed) {
3003
+ return this.toBytes(isCompressed);
3004
+ }
3005
+ };
3006
+ __publicField(_Point, "BASE");
3007
+ __publicField(_Point, "ZERO");
3008
+ var Point = _Point;
3009
+ var G2 = new Point(Gx, Gy, 1n);
3010
+ var I2 = new Point(0n, 1n, 0n);
3011
+ Point.BASE = G2;
3012
+ Point.ZERO = I2;
3013
+ var doubleScalarMulUns = (R2, u1, u2) => {
3014
+ return G2.multiply(u1, false).add(R2.multiply(u2, false)).assertValidity();
3015
+ };
3016
+ var bytesToNumBE = (b2) => big("0x" + (bytesToHex2(b2) || "0"));
3017
+ var sliceBytesNumBE = (b2, from, to) => bytesToNumBE(b2.subarray(from, to));
3018
+ var B256 = 2n ** 256n;
3019
+ var numTo32b = (num) => hexToBytes2(padh(arange(num, 0n, B256), L22));
3020
+ var toPrivScalar = (pr) => {
3021
+ const num = isBig(pr) ? pr : bytesToNumBE(toU8(pr, L2));
3022
+ return arange(num, 1n, N2, "private key invalid 3");
3023
+ };
3024
+ var highS = (n2) => n2 > N2 >> 1n;
3025
+ var getPublicKey = (privKey, isCompressed = true) => {
3026
+ return G2.multiply(toPrivScalar(privKey)).toBytes(isCompressed);
3027
+ };
3028
+ var Signature = class _Signature {
3029
+ constructor(r2, s2, recovery) {
3030
+ __publicField(this, "r");
3031
+ __publicField(this, "s");
3032
+ __publicField(this, "recovery");
3033
+ this.r = agroup(r2);
3034
+ this.s = agroup(s2);
3035
+ if (recovery != null)
3036
+ this.recovery = recovery;
3037
+ Object.freeze(this);
3038
+ }
3039
+ /** Create signature from 64b compact (r || s) representation. */
3040
+ static fromBytes(b2) {
3041
+ abytes2(b2, L22);
3042
+ const r2 = sliceBytesNumBE(b2, 0, L2);
3043
+ const s2 = sliceBytesNumBE(b2, L2, L22);
3044
+ return new _Signature(r2, s2);
3045
+ }
3046
+ toBytes() {
3047
+ const { r: r2, s: s2 } = this;
3048
+ return concatBytes(numTo32b(r2), numTo32b(s2));
3049
+ }
3050
+ /** Copy signature, with newly added recovery bit. */
3051
+ addRecoveryBit(bit) {
3052
+ return new _Signature(this.r, this.s, bit);
3053
+ }
3054
+ hasHighS() {
3055
+ return highS(this.s);
3056
+ }
3057
+ toCompactRawBytes() {
3058
+ return this.toBytes();
3059
+ }
3060
+ toCompactHex() {
3061
+ return bytesToHex2(this.toBytes());
3062
+ }
3063
+ recoverPublicKey(msg) {
3064
+ return recoverPublicKey(this, msg);
3065
+ }
3066
+ static fromCompact(hex) {
3067
+ return _Signature.fromBytes(toU8(hex, L22));
3068
+ }
3069
+ assertValidity() {
3070
+ return this;
3071
+ }
3072
+ normalizeS() {
3073
+ const { r: r2, s: s2, recovery } = this;
3074
+ return highS(s2) ? new _Signature(r2, modN(-s2), recovery) : this;
3075
+ }
3076
+ };
3077
+ var bits2int = (bytes) => {
3078
+ const delta = bytes.length * 8 - 256;
3079
+ if (delta > 1024)
3080
+ err("msg invalid");
3081
+ const num = bytesToNumBE(bytes);
3082
+ return delta > 0 ? num >> big(delta) : num;
3083
+ };
3084
+ var bits2int_modN = (bytes) => modN(bits2int(abytes2(bytes)));
3085
+ var signOpts = { lowS: true };
3086
+ var veriOpts = { lowS: true };
3087
+ var prepSig = (msgh, priv, opts = signOpts) => {
3088
+ if (["der", "recovered", "canonical"].some((k2) => k2 in opts))
3089
+ err("option not supported");
3090
+ let { lowS, extraEntropy } = opts;
3091
+ if (lowS == null)
3092
+ lowS = true;
3093
+ const i2o = numTo32b;
3094
+ const h1i = bits2int_modN(toU8(msgh));
3095
+ const h1o = i2o(h1i);
3096
+ const d2 = toPrivScalar(priv);
3097
+ const seed = [i2o(d2), h1o];
3098
+ if (extraEntropy)
3099
+ seed.push(extraEntropy === true ? randomBytes(L2) : toU8(extraEntropy));
3100
+ const m2 = h1i;
3101
+ const k2sig = (kBytes) => {
3102
+ const k2 = bits2int(kBytes);
3103
+ if (!(1n <= k2 && k2 < N2))
3104
+ return;
3105
+ const q2 = G2.multiply(k2).toAffine();
3106
+ const r2 = modN(q2.x);
3107
+ if (r2 === 0n)
3108
+ return;
3109
+ const ik = invert(k2, N2);
3110
+ const s2 = modN(ik * modN(m2 + modN(d2 * r2)));
3111
+ if (s2 === 0n)
3112
+ return;
3113
+ let normS = s2;
3114
+ let recovery = (q2.x === r2 ? 0 : 2) | Number(q2.y & 1n);
3115
+ if (lowS && highS(s2)) {
3116
+ normS = modN(-s2);
3117
+ recovery ^= 1;
3118
+ }
3119
+ return new Signature(r2, normS, recovery);
3120
+ };
3121
+ return { seed: concatBytes(...seed), k2sig };
3122
+ };
3123
+ var hmacDrbg = (asynchronous) => {
3124
+ let v2 = u8n(L2);
3125
+ let k2 = u8n(L2);
3126
+ let i2 = 0;
3127
+ const NULL = u8n(0);
3128
+ const reset = () => {
3129
+ v2.fill(1);
3130
+ k2.fill(0);
3131
+ i2 = 0;
3132
+ };
3133
+ const max = 1e3;
3134
+ const _e = "drbg: tried 1000 values";
3135
+ if (asynchronous) {
3136
+ const h2 = (...b2) => etc.hmacSha256Async(k2, v2, ...b2);
3137
+ const reseed = async (seed = NULL) => {
3138
+ k2 = await h2(u8of(0), seed);
3139
+ v2 = await h2();
3140
+ if (seed.length === 0)
3141
+ return;
3142
+ k2 = await h2(u8of(1), seed);
3143
+ v2 = await h2();
3144
+ };
3145
+ const gen = async () => {
3146
+ if (i2++ >= max)
3147
+ err(_e);
3148
+ v2 = await h2();
3149
+ return v2;
3150
+ };
3151
+ return async (seed, pred) => {
3152
+ reset();
3153
+ await reseed(seed);
3154
+ let res = void 0;
3155
+ while (!(res = pred(await gen())))
3156
+ await reseed();
3157
+ reset();
3158
+ return res;
3159
+ };
3160
+ } else {
3161
+ const h2 = (...b2) => callHash("hmacSha256Sync")(k2, v2, ...b2);
3162
+ const reseed = (seed = NULL) => {
3163
+ k2 = h2(u8of(0), seed);
3164
+ v2 = h2();
3165
+ if (seed.length === 0)
3166
+ return;
3167
+ k2 = h2(u8of(1), seed);
3168
+ v2 = h2();
3169
+ };
3170
+ const gen = () => {
3171
+ if (i2++ >= max)
3172
+ err(_e);
3173
+ v2 = h2();
3174
+ return v2;
3175
+ };
3176
+ return (seed, pred) => {
3177
+ reset();
3178
+ reseed(seed);
3179
+ let res = void 0;
3180
+ while (!(res = pred(gen())))
3181
+ reseed();
3182
+ reset();
3183
+ return res;
4934
3184
  };
4935
- exports2.MlDsaSuite = MlDsaSuite2;
4936
3185
  }
4937
- });
3186
+ };
3187
+ var sign = (msgh, priv, opts = signOpts) => {
3188
+ const { seed, k2sig } = prepSig(msgh, priv, opts);
3189
+ const sig = hmacDrbg(false)(seed, k2sig);
3190
+ return sig;
3191
+ };
3192
+ var verify = (sig, msgh, pub, opts = veriOpts) => {
3193
+ let { lowS } = opts;
3194
+ if (lowS == null)
3195
+ lowS = true;
3196
+ if ("strict" in opts)
3197
+ err("option not supported");
3198
+ let sigg;
3199
+ const rs = sig && typeof sig === "object" && "r" in sig;
3200
+ if (!rs && toU8(sig).length !== L22)
3201
+ err("signature must be 64 bytes");
3202
+ try {
3203
+ sigg = rs ? new Signature(sig.r, sig.s) : Signature.fromCompact(sig);
3204
+ const h2 = bits2int_modN(toU8(msgh));
3205
+ const P3 = Point.fromBytes(toU8(pub));
3206
+ const { r: r2, s: s2 } = sigg;
3207
+ if (lowS && highS(s2))
3208
+ return false;
3209
+ const is = invert(s2, N2);
3210
+ const u1 = modN(h2 * is);
3211
+ const u2 = modN(r2 * is);
3212
+ const R2 = doubleScalarMulUns(P3, u1, u2).toAffine();
3213
+ const v2 = modN(R2.x);
3214
+ return v2 === r2;
3215
+ } catch (error) {
3216
+ return false;
3217
+ }
3218
+ };
3219
+ var recoverPublicKey = (sig, msgh) => {
3220
+ const { r: r2, s: s2, recovery } = sig;
3221
+ if (![0, 1, 2, 3].includes(recovery))
3222
+ err("recovery id invalid");
3223
+ const h2 = bits2int_modN(toU8(msgh, L2));
3224
+ const radj = recovery === 2 || recovery === 3 ? r2 + N2 : r2;
3225
+ afield(radj);
3226
+ const head = getPrefix(big(recovery));
3227
+ const Rb = concatBytes(head, numTo32b(radj));
3228
+ const R2 = Point.fromBytes(Rb);
3229
+ const ir = invert(radj, N2);
3230
+ const u1 = modN(-h2 * ir);
3231
+ const u2 = modN(s2 * ir);
3232
+ return doubleScalarMulUns(R2, u1, u2);
3233
+ };
3234
+ var hashToPrivateKey = (hash) => {
3235
+ hash = toU8(hash);
3236
+ if (hash.length < L2 + 8 || hash.length > 1024)
3237
+ err("expected 40-1024b");
3238
+ const num = M2(bytesToNumBE(hash), N2 - 1n);
3239
+ return numTo32b(num + 1n);
3240
+ };
3241
+ var randomPrivateKey = () => hashToPrivateKey(randomBytes(L2 + 16));
3242
+ var _sha = "SHA-256";
3243
+ var etc = {
3244
+ hexToBytes: hexToBytes2,
3245
+ bytesToHex: bytesToHex2,
3246
+ concatBytes,
3247
+ bytesToNumberBE: bytesToNumBE,
3248
+ numberToBytesBE: numTo32b,
3249
+ mod: M2,
3250
+ invert,
3251
+ // math utilities
3252
+ hmacSha256Async: async (key, ...msgs) => {
3253
+ const s2 = subtle();
3254
+ const name = "HMAC";
3255
+ const k2 = await s2.importKey("raw", key, { name, hash: { name: _sha } }, false, ["sign"]);
3256
+ return u8n(await s2.sign(name, k2, concatBytes(...msgs)));
3257
+ },
3258
+ hmacSha256Sync: void 0,
3259
+ // For TypeScript. Actual logic is below
3260
+ hashToPrivateKey,
3261
+ randomBytes
3262
+ };
3263
+ var utils = {
3264
+ normPrivateKeyToScalar: toPrivScalar,
3265
+ isValidPrivateKey: (key) => {
3266
+ try {
3267
+ return !!toPrivScalar(key);
3268
+ } catch (e2) {
3269
+ return false;
3270
+ }
3271
+ },
3272
+ randomPrivateKey,
3273
+ precompute: (w2 = 8, p2 = G2) => {
3274
+ p2.multiply(3n);
3275
+ w2;
3276
+ return p2;
3277
+ }
3278
+ };
3279
+ var W2 = 8;
3280
+ var scalarBits = 256;
3281
+ var pwindows = Math.ceil(scalarBits / W2) + 1;
3282
+ var pwindowSize = 2 ** (W2 - 1);
3283
+ var precompute = () => {
3284
+ const points = [];
3285
+ let p2 = G2;
3286
+ let b2 = p2;
3287
+ for (let w2 = 0; w2 < pwindows; w2++) {
3288
+ b2 = p2;
3289
+ points.push(b2);
3290
+ for (let i2 = 1; i2 < pwindowSize; i2++) {
3291
+ b2 = b2.add(p2);
3292
+ points.push(b2);
3293
+ }
3294
+ p2 = b2.double();
3295
+ }
3296
+ return points;
3297
+ };
3298
+ var Gpows = void 0;
3299
+ var ctneg = (cnd, p2) => {
3300
+ const n2 = p2.negate();
3301
+ return cnd ? n2 : p2;
3302
+ };
3303
+ var wNAF = (n2) => {
3304
+ const comp = Gpows || (Gpows = precompute());
3305
+ let p2 = I2;
3306
+ let f2 = G2;
3307
+ const pow_2_w = 2 ** W2;
3308
+ const maxNum = pow_2_w;
3309
+ const mask = big(pow_2_w - 1);
3310
+ const shiftBy = big(W2);
3311
+ for (let w2 = 0; w2 < pwindows; w2++) {
3312
+ let wbits = Number(n2 & mask);
3313
+ n2 >>= shiftBy;
3314
+ if (wbits > pwindowSize) {
3315
+ wbits -= maxNum;
3316
+ n2 += 1n;
3317
+ }
3318
+ const off = w2 * pwindowSize;
3319
+ const offF = off;
3320
+ const offP = off + Math.abs(wbits) - 1;
3321
+ const isEven2 = w2 % 2 !== 0;
3322
+ const isNeg = wbits < 0;
3323
+ if (wbits === 0) {
3324
+ f2 = f2.add(ctneg(isEven2, comp[offF]));
3325
+ } else {
3326
+ p2 = p2.add(ctneg(isNeg, comp[offP]));
3327
+ }
3328
+ }
3329
+ return { p: p2, f: f2 };
3330
+ };
4938
3331
 
4939
- // ../crypto/dist/index.js
4940
- var require_dist2 = __commonJS({
4941
- "../crypto/dist/index.js"(exports2) {
4942
- "use strict";
4943
- init_esbuild_shims();
4944
- var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o2, m2, k2, k22) {
4945
- if (k22 === void 0) k22 = k2;
4946
- var desc = Object.getOwnPropertyDescriptor(m2, k2);
4947
- if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {
4948
- desc = { enumerable: true, get: function() {
4949
- return m2[k2];
4950
- } };
3332
+ // ../../node_modules/@noble/hashes/esm/hmac.js
3333
+ init_esbuild_shims();
3334
+
3335
+ // ../../node_modules/@noble/hashes/esm/utils.js
3336
+ init_esbuild_shims();
3337
+ function isBytes3(a2) {
3338
+ return a2 instanceof Uint8Array || ArrayBuffer.isView(a2) && a2.constructor.name === "Uint8Array";
3339
+ }
3340
+ function anumber2(n2) {
3341
+ if (!Number.isSafeInteger(n2) || n2 < 0)
3342
+ throw new Error("positive integer expected, got " + n2);
3343
+ }
3344
+ function abytes3(b2, ...lengths) {
3345
+ if (!isBytes3(b2))
3346
+ throw new Error("Uint8Array expected");
3347
+ if (lengths.length > 0 && !lengths.includes(b2.length))
3348
+ throw new Error("Uint8Array expected of length " + lengths + ", got length=" + b2.length);
3349
+ }
3350
+ function ahash(h2) {
3351
+ if (typeof h2 !== "function" || typeof h2.create !== "function")
3352
+ throw new Error("Hash should be wrapped by utils.createHasher");
3353
+ anumber2(h2.outputLen);
3354
+ anumber2(h2.blockLen);
3355
+ }
3356
+ function aexists2(instance, checkFinished = true) {
3357
+ if (instance.destroyed)
3358
+ throw new Error("Hash instance has been destroyed");
3359
+ if (checkFinished && instance.finished)
3360
+ throw new Error("Hash#digest() has already been called");
3361
+ }
3362
+ function aoutput2(out, instance) {
3363
+ abytes3(out);
3364
+ const min = instance.outputLen;
3365
+ if (out.length < min) {
3366
+ throw new Error("digestInto() expects output buffer of length at least " + min);
3367
+ }
3368
+ }
3369
+ function clean2(...arrays) {
3370
+ for (let i2 = 0; i2 < arrays.length; i2++) {
3371
+ arrays[i2].fill(0);
3372
+ }
3373
+ }
3374
+ function createView2(arr) {
3375
+ return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);
3376
+ }
3377
+ function rotr2(word, shift) {
3378
+ return word << 32 - shift | word >>> shift;
3379
+ }
3380
+ function utf8ToBytes(str) {
3381
+ if (typeof str !== "string")
3382
+ throw new Error("string expected");
3383
+ return new Uint8Array(new TextEncoder().encode(str));
3384
+ }
3385
+ function toBytes(data) {
3386
+ if (typeof data === "string")
3387
+ data = utf8ToBytes(data);
3388
+ abytes3(data);
3389
+ return data;
3390
+ }
3391
+ var Hash = class {
3392
+ };
3393
+ function createHasher2(hashCons) {
3394
+ const hashC = (msg) => hashCons().update(toBytes(msg)).digest();
3395
+ const tmp = hashCons();
3396
+ hashC.outputLen = tmp.outputLen;
3397
+ hashC.blockLen = tmp.blockLen;
3398
+ hashC.create = () => hashCons();
3399
+ return hashC;
3400
+ }
3401
+
3402
+ // ../../node_modules/@noble/hashes/esm/hmac.js
3403
+ var HMAC = class extends Hash {
3404
+ constructor(hash, _key) {
3405
+ super();
3406
+ this.finished = false;
3407
+ this.destroyed = false;
3408
+ ahash(hash);
3409
+ const key = toBytes(_key);
3410
+ this.iHash = hash.create();
3411
+ if (typeof this.iHash.update !== "function")
3412
+ throw new Error("Expected instance of class which extends utils.Hash");
3413
+ this.blockLen = this.iHash.blockLen;
3414
+ this.outputLen = this.iHash.outputLen;
3415
+ const blockLen = this.blockLen;
3416
+ const pad = new Uint8Array(blockLen);
3417
+ pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);
3418
+ for (let i2 = 0; i2 < pad.length; i2++)
3419
+ pad[i2] ^= 54;
3420
+ this.iHash.update(pad);
3421
+ this.oHash = hash.create();
3422
+ for (let i2 = 0; i2 < pad.length; i2++)
3423
+ pad[i2] ^= 54 ^ 92;
3424
+ this.oHash.update(pad);
3425
+ clean2(pad);
3426
+ }
3427
+ update(buf) {
3428
+ aexists2(this);
3429
+ this.iHash.update(buf);
3430
+ return this;
3431
+ }
3432
+ digestInto(out) {
3433
+ aexists2(this);
3434
+ abytes3(out, this.outputLen);
3435
+ this.finished = true;
3436
+ this.iHash.digestInto(out);
3437
+ this.oHash.update(out);
3438
+ this.oHash.digestInto(out);
3439
+ this.destroy();
3440
+ }
3441
+ digest() {
3442
+ const out = new Uint8Array(this.oHash.outputLen);
3443
+ this.digestInto(out);
3444
+ return out;
3445
+ }
3446
+ _cloneInto(to) {
3447
+ to || (to = Object.create(Object.getPrototypeOf(this), {}));
3448
+ const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;
3449
+ to = to;
3450
+ to.finished = finished;
3451
+ to.destroyed = destroyed;
3452
+ to.blockLen = blockLen;
3453
+ to.outputLen = outputLen;
3454
+ to.oHash = oHash._cloneInto(to.oHash);
3455
+ to.iHash = iHash._cloneInto(to.iHash);
3456
+ return to;
3457
+ }
3458
+ clone() {
3459
+ return this._cloneInto();
3460
+ }
3461
+ destroy() {
3462
+ this.destroyed = true;
3463
+ this.oHash.destroy();
3464
+ this.iHash.destroy();
3465
+ }
3466
+ };
3467
+ var hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();
3468
+ hmac.create = (hash, key) => new HMAC(hash, key);
3469
+
3470
+ // ../../node_modules/@noble/hashes/esm/sha256.js
3471
+ init_esbuild_shims();
3472
+
3473
+ // ../../node_modules/@noble/hashes/esm/sha2.js
3474
+ init_esbuild_shims();
3475
+
3476
+ // ../../node_modules/@noble/hashes/esm/_md.js
3477
+ init_esbuild_shims();
3478
+ function setBigUint64(view, byteOffset, value, isLE2) {
3479
+ if (typeof view.setBigUint64 === "function")
3480
+ return view.setBigUint64(byteOffset, value, isLE2);
3481
+ const _32n2 = BigInt(32);
3482
+ const _u32_max = BigInt(4294967295);
3483
+ const wh = Number(value >> _32n2 & _u32_max);
3484
+ const wl = Number(value & _u32_max);
3485
+ const h2 = isLE2 ? 4 : 0;
3486
+ const l2 = isLE2 ? 0 : 4;
3487
+ view.setUint32(byteOffset + h2, wh, isLE2);
3488
+ view.setUint32(byteOffset + l2, wl, isLE2);
3489
+ }
3490
+ function Chi2(a2, b2, c2) {
3491
+ return a2 & b2 ^ ~a2 & c2;
3492
+ }
3493
+ function Maj2(a2, b2, c2) {
3494
+ return a2 & b2 ^ a2 & c2 ^ b2 & c2;
3495
+ }
3496
+ var HashMD2 = class extends Hash {
3497
+ constructor(blockLen, outputLen, padOffset, isLE2) {
3498
+ super();
3499
+ this.finished = false;
3500
+ this.length = 0;
3501
+ this.pos = 0;
3502
+ this.destroyed = false;
3503
+ this.blockLen = blockLen;
3504
+ this.outputLen = outputLen;
3505
+ this.padOffset = padOffset;
3506
+ this.isLE = isLE2;
3507
+ this.buffer = new Uint8Array(blockLen);
3508
+ this.view = createView2(this.buffer);
3509
+ }
3510
+ update(data) {
3511
+ aexists2(this);
3512
+ data = toBytes(data);
3513
+ abytes3(data);
3514
+ const { view, buffer, blockLen } = this;
3515
+ const len = data.length;
3516
+ for (let pos = 0; pos < len; ) {
3517
+ const take = Math.min(blockLen - this.pos, len - pos);
3518
+ if (take === blockLen) {
3519
+ const dataView = createView2(data);
3520
+ for (; blockLen <= len - pos; pos += blockLen)
3521
+ this.process(dataView, pos);
3522
+ continue;
3523
+ }
3524
+ buffer.set(data.subarray(pos, pos + take), this.pos);
3525
+ this.pos += take;
3526
+ pos += take;
3527
+ if (this.pos === blockLen) {
3528
+ this.process(view, 0);
3529
+ this.pos = 0;
4951
3530
  }
4952
- Object.defineProperty(o2, k22, desc);
4953
- }) : (function(o2, m2, k2, k22) {
4954
- if (k22 === void 0) k22 = k2;
4955
- o2[k22] = m2[k2];
4956
- }));
4957
- var __exportStar = exports2 && exports2.__exportStar || function(m2, exports3) {
4958
- for (var p2 in m2) if (p2 !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p2)) __createBinding(exports3, m2, p2);
3531
+ }
3532
+ this.length += data.length;
3533
+ this.roundClean();
3534
+ return this;
3535
+ }
3536
+ digestInto(out) {
3537
+ aexists2(this);
3538
+ aoutput2(out, this);
3539
+ this.finished = true;
3540
+ const { buffer, view, blockLen, isLE: isLE2 } = this;
3541
+ let { pos } = this;
3542
+ buffer[pos++] = 128;
3543
+ clean2(this.buffer.subarray(pos));
3544
+ if (this.padOffset > blockLen - pos) {
3545
+ this.process(view, 0);
3546
+ pos = 0;
3547
+ }
3548
+ for (let i2 = pos; i2 < blockLen; i2++)
3549
+ buffer[i2] = 0;
3550
+ setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE2);
3551
+ this.process(view, 0);
3552
+ const oview = createView2(out);
3553
+ const len = this.outputLen;
3554
+ if (len % 4)
3555
+ throw new Error("_sha2: outputLen should be aligned to 32bit");
3556
+ const outLen = len / 4;
3557
+ const state = this.get();
3558
+ if (outLen > state.length)
3559
+ throw new Error("_sha2: outputLen bigger than state");
3560
+ for (let i2 = 0; i2 < outLen; i2++)
3561
+ oview.setUint32(4 * i2, state[i2], isLE2);
3562
+ }
3563
+ digest() {
3564
+ const { buffer, outputLen } = this;
3565
+ this.digestInto(buffer);
3566
+ const res = buffer.slice(0, outputLen);
3567
+ this.destroy();
3568
+ return res;
3569
+ }
3570
+ _cloneInto(to) {
3571
+ to || (to = new this.constructor());
3572
+ to.set(...this.get());
3573
+ const { blockLen, buffer, length, finished, destroyed, pos } = this;
3574
+ to.destroyed = destroyed;
3575
+ to.finished = finished;
3576
+ to.length = length;
3577
+ to.pos = pos;
3578
+ if (length % blockLen)
3579
+ to.buffer.set(buffer);
3580
+ return to;
3581
+ }
3582
+ clone() {
3583
+ return this._cloneInto();
3584
+ }
3585
+ };
3586
+ var SHA256_IV2 = /* @__PURE__ */ Uint32Array.from([
3587
+ 1779033703,
3588
+ 3144134277,
3589
+ 1013904242,
3590
+ 2773480762,
3591
+ 1359893119,
3592
+ 2600822924,
3593
+ 528734635,
3594
+ 1541459225
3595
+ ]);
3596
+
3597
+ // ../../node_modules/@noble/hashes/esm/sha2.js
3598
+ var SHA256_K2 = /* @__PURE__ */ Uint32Array.from([
3599
+ 1116352408,
3600
+ 1899447441,
3601
+ 3049323471,
3602
+ 3921009573,
3603
+ 961987163,
3604
+ 1508970993,
3605
+ 2453635748,
3606
+ 2870763221,
3607
+ 3624381080,
3608
+ 310598401,
3609
+ 607225278,
3610
+ 1426881987,
3611
+ 1925078388,
3612
+ 2162078206,
3613
+ 2614888103,
3614
+ 3248222580,
3615
+ 3835390401,
3616
+ 4022224774,
3617
+ 264347078,
3618
+ 604807628,
3619
+ 770255983,
3620
+ 1249150122,
3621
+ 1555081692,
3622
+ 1996064986,
3623
+ 2554220882,
3624
+ 2821834349,
3625
+ 2952996808,
3626
+ 3210313671,
3627
+ 3336571891,
3628
+ 3584528711,
3629
+ 113926993,
3630
+ 338241895,
3631
+ 666307205,
3632
+ 773529912,
3633
+ 1294757372,
3634
+ 1396182291,
3635
+ 1695183700,
3636
+ 1986661051,
3637
+ 2177026350,
3638
+ 2456956037,
3639
+ 2730485921,
3640
+ 2820302411,
3641
+ 3259730800,
3642
+ 3345764771,
3643
+ 3516065817,
3644
+ 3600352804,
3645
+ 4094571909,
3646
+ 275423344,
3647
+ 430227734,
3648
+ 506948616,
3649
+ 659060556,
3650
+ 883997877,
3651
+ 958139571,
3652
+ 1322822218,
3653
+ 1537002063,
3654
+ 1747873779,
3655
+ 1955562222,
3656
+ 2024104815,
3657
+ 2227730452,
3658
+ 2361852424,
3659
+ 2428436474,
3660
+ 2756734187,
3661
+ 3204031479,
3662
+ 3329325298
3663
+ ]);
3664
+ var SHA256_W2 = /* @__PURE__ */ new Uint32Array(64);
3665
+ var SHA256 = class extends HashMD2 {
3666
+ constructor(outputLen = 32) {
3667
+ super(64, outputLen, 8, false);
3668
+ this.A = SHA256_IV2[0] | 0;
3669
+ this.B = SHA256_IV2[1] | 0;
3670
+ this.C = SHA256_IV2[2] | 0;
3671
+ this.D = SHA256_IV2[3] | 0;
3672
+ this.E = SHA256_IV2[4] | 0;
3673
+ this.F = SHA256_IV2[5] | 0;
3674
+ this.G = SHA256_IV2[6] | 0;
3675
+ this.H = SHA256_IV2[7] | 0;
3676
+ }
3677
+ get() {
3678
+ const { A: A2, B: B2, C: C3, D: D2, E: E2, F: F2, G: G3, H: H2 } = this;
3679
+ return [A2, B2, C3, D2, E2, F2, G3, H2];
3680
+ }
3681
+ // prettier-ignore
3682
+ set(A2, B2, C3, D2, E2, F2, G3, H2) {
3683
+ this.A = A2 | 0;
3684
+ this.B = B2 | 0;
3685
+ this.C = C3 | 0;
3686
+ this.D = D2 | 0;
3687
+ this.E = E2 | 0;
3688
+ this.F = F2 | 0;
3689
+ this.G = G3 | 0;
3690
+ this.H = H2 | 0;
3691
+ }
3692
+ process(view, offset) {
3693
+ for (let i2 = 0; i2 < 16; i2++, offset += 4)
3694
+ SHA256_W2[i2] = view.getUint32(offset, false);
3695
+ for (let i2 = 16; i2 < 64; i2++) {
3696
+ const W15 = SHA256_W2[i2 - 15];
3697
+ const W22 = SHA256_W2[i2 - 2];
3698
+ const s0 = rotr2(W15, 7) ^ rotr2(W15, 18) ^ W15 >>> 3;
3699
+ const s1 = rotr2(W22, 17) ^ rotr2(W22, 19) ^ W22 >>> 10;
3700
+ SHA256_W2[i2] = s1 + SHA256_W2[i2 - 7] + s0 + SHA256_W2[i2 - 16] | 0;
3701
+ }
3702
+ let { A: A2, B: B2, C: C3, D: D2, E: E2, F: F2, G: G3, H: H2 } = this;
3703
+ for (let i2 = 0; i2 < 64; i2++) {
3704
+ const sigma1 = rotr2(E2, 6) ^ rotr2(E2, 11) ^ rotr2(E2, 25);
3705
+ const T1 = H2 + sigma1 + Chi2(E2, F2, G3) + SHA256_K2[i2] + SHA256_W2[i2] | 0;
3706
+ const sigma0 = rotr2(A2, 2) ^ rotr2(A2, 13) ^ rotr2(A2, 22);
3707
+ const T2 = sigma0 + Maj2(A2, B2, C3) | 0;
3708
+ H2 = G3;
3709
+ G3 = F2;
3710
+ F2 = E2;
3711
+ E2 = D2 + T1 | 0;
3712
+ D2 = C3;
3713
+ C3 = B2;
3714
+ B2 = A2;
3715
+ A2 = T1 + T2 | 0;
3716
+ }
3717
+ A2 = A2 + this.A | 0;
3718
+ B2 = B2 + this.B | 0;
3719
+ C3 = C3 + this.C | 0;
3720
+ D2 = D2 + this.D | 0;
3721
+ E2 = E2 + this.E | 0;
3722
+ F2 = F2 + this.F | 0;
3723
+ G3 = G3 + this.G | 0;
3724
+ H2 = H2 + this.H | 0;
3725
+ this.set(A2, B2, C3, D2, E2, F2, G3, H2);
3726
+ }
3727
+ roundClean() {
3728
+ clean2(SHA256_W2);
3729
+ }
3730
+ destroy() {
3731
+ this.set(0, 0, 0, 0, 0, 0, 0, 0);
3732
+ clean2(this.buffer);
3733
+ }
3734
+ };
3735
+ var sha2562 = /* @__PURE__ */ createHasher2(() => new SHA256());
3736
+
3737
+ // ../../node_modules/@noble/hashes/esm/sha256.js
3738
+ var sha2563 = sha2562;
3739
+
3740
+ // ../crypto/dist/esm/suites/bsv-ecdsa.js
3741
+ etc.hmacSha256Sync = (key, ...msgs) => hmac(sha2563, key, etc.concatBytes(...msgs));
3742
+ var BsvEcdsaSuite = class {
3743
+ constructor() {
3744
+ __publicField(this, "suiteId", "bsv-ecdsa-secp256k1");
3745
+ __publicField(this, "version", "1.0.0");
3746
+ }
3747
+ async generateKeypair() {
3748
+ const privateKey = utils.randomPrivateKey();
3749
+ const publicKey = getPublicKey(privateKey, true);
3750
+ return {
3751
+ privateKey,
3752
+ publicKey
4959
3753
  };
4960
- Object.defineProperty(exports2, "__esModule", { value: true });
4961
- exports2.globalRegistry = exports2.MlDsa87Suite = exports2.MlDsaSuite = exports2.BsvEcdsaSuite = void 0;
4962
- __exportStar(require_types(), exports2);
4963
- __exportStar(require_registry(), exports2);
4964
- __exportStar(require_utils(), exports2);
4965
- __exportStar(require_signing(), exports2);
4966
- __exportStar(require_key_registry(), exports2);
4967
- var bsv_ecdsa_1 = require_bsv_ecdsa();
4968
- Object.defineProperty(exports2, "BsvEcdsaSuite", { enumerable: true, get: function() {
4969
- return bsv_ecdsa_1.BsvEcdsaSuite;
4970
- } });
4971
- var ml_dsa_1 = require_ml_dsa();
4972
- Object.defineProperty(exports2, "MlDsaSuite", { enumerable: true, get: function() {
4973
- return ml_dsa_1.MlDsaSuite;
4974
- } });
4975
- Object.defineProperty(exports2, "MlDsa87Suite", { enumerable: true, get: function() {
4976
- return ml_dsa_1.MlDsa87Suite;
4977
- } });
4978
- var registry_1 = require_registry();
4979
- Object.defineProperty(exports2, "globalRegistry", { enumerable: true, get: function() {
4980
- return registry_1.globalRegistry;
4981
- } });
4982
3754
  }
4983
- });
3755
+ async sign(privateKey, message) {
3756
+ try {
3757
+ const signature = await sign(message, privateKey);
3758
+ return signature.toCompactRawBytes();
3759
+ } catch (error) {
3760
+ throw new Error(`BsvEcdsaSuite signing failed: ${error instanceof Error ? error.message : String(error)}`);
3761
+ }
3762
+ }
3763
+ async verify(publicKey, message, signature) {
3764
+ try {
3765
+ return verify(signature, message, publicKey);
3766
+ } catch (error) {
3767
+ return false;
3768
+ }
3769
+ }
3770
+ exportPublicKey(pub) {
3771
+ return bytesToHex(pub);
3772
+ }
3773
+ importPublicKey(encoded) {
3774
+ return hexToBytes(encoded);
3775
+ }
3776
+ exportPrivateKey(priv) {
3777
+ return bytesToHex(priv);
3778
+ }
3779
+ importPrivateKey(encoded) {
3780
+ const bytes = hexToBytes(encoded);
3781
+ if (bytes.length !== 32) {
3782
+ throw new Error("Private key must be 32 bytes");
3783
+ }
3784
+ return bytes;
3785
+ }
3786
+ };
4984
3787
 
4985
- // src/browser.ts
4986
- var browser_exports = {};
4987
- __export(browser_exports, {
4988
- InMemoryKeyStorage: () => import_crypto3.InMemoryKeyStorage,
4989
- createKeySDK: () => createKeySDK,
4990
- default: () => browser_default
4991
- });
3788
+ // ../crypto/dist/esm/suites/ml-dsa.js
4992
3789
  init_esbuild_shims();
3790
+ var dilithiumLib = null;
3791
+ async function getDilithium() {
3792
+ if (!dilithiumLib) {
3793
+ dilithiumLib = await Promise.resolve().then(() => __toESM(require_dist(), 1));
3794
+ }
3795
+ return dilithiumLib;
3796
+ }
3797
+ var MlDsa87Suite = class {
3798
+ constructor() {
3799
+ __publicField(this, "suiteId", "ml-dsa-87");
3800
+ __publicField(this, "version", "1.0.0");
3801
+ }
3802
+ async generateKeypair() {
3803
+ try {
3804
+ const dilithium2 = await getDilithium();
3805
+ const keypair = await dilithium2.keyPair();
3806
+ return {
3807
+ publicKey: new Uint8Array(keypair.publicKey),
3808
+ privateKey: new Uint8Array(keypair.privateKey)
3809
+ };
3810
+ } catch (error) {
3811
+ throw new Error(`ML-DSA-87 key generation failed: ${error instanceof Error ? error.message : String(error)}`);
3812
+ }
3813
+ }
3814
+ async sign(privateKey, message) {
3815
+ try {
3816
+ const dilithium2 = await getDilithium();
3817
+ const signature = await dilithium2.signDetached(Buffer.from(message), Buffer.from(privateKey));
3818
+ return new Uint8Array(signature);
3819
+ } catch (error) {
3820
+ throw new Error(`ML-DSA-87 signing failed: ${error instanceof Error ? error.message : String(error)}`);
3821
+ }
3822
+ }
3823
+ async verify(publicKey, message, signature) {
3824
+ try {
3825
+ const dilithium2 = await getDilithium();
3826
+ return await dilithium2.verifyDetached(Buffer.from(signature), Buffer.from(message), Buffer.from(publicKey));
3827
+ } catch (error) {
3828
+ return false;
3829
+ }
3830
+ }
3831
+ exportPublicKey(pub) {
3832
+ return bytesToHex(pub);
3833
+ }
3834
+ importPublicKey(encoded) {
3835
+ const bytes = hexToBytes(encoded);
3836
+ if (bytes.length !== 2592) {
3837
+ throw new Error(`ML-DSA-87 public key must be 2592 bytes, got ${bytes.length}`);
3838
+ }
3839
+ return bytes;
3840
+ }
3841
+ exportPrivateKey(priv) {
3842
+ return bytesToHex(priv);
3843
+ }
3844
+ importPrivateKey(encoded) {
3845
+ const bytes = hexToBytes(encoded);
3846
+ if (bytes.length !== 4864) {
3847
+ throw new Error(`ML-DSA-87 private key must be 4864 bytes, got ${bytes.length}`);
3848
+ }
3849
+ return bytes;
3850
+ }
3851
+ };
3852
+ var MlDsaSuite = class {
3853
+ constructor() {
3854
+ __publicField(this, "suiteId", "ml-dsa-65");
3855
+ __publicField(this, "version", "1.0.0");
3856
+ __publicField(this, "impl", new MlDsa87Suite());
3857
+ }
3858
+ async generateKeypair() {
3859
+ return this.impl.generateKeypair();
3860
+ }
3861
+ async sign(privateKey, message) {
3862
+ return this.impl.sign(privateKey, message);
3863
+ }
3864
+ async verify(publicKey, message, signature) {
3865
+ return this.impl.verify(publicKey, message, signature);
3866
+ }
3867
+ exportPublicKey(pub) {
3868
+ return this.impl.exportPublicKey(pub);
3869
+ }
3870
+ importPublicKey(encoded) {
3871
+ return this.impl.importPublicKey(encoded);
3872
+ }
3873
+ exportPrivateKey(priv) {
3874
+ return this.impl.exportPrivateKey(priv);
3875
+ }
3876
+ importPrivateKey(encoded) {
3877
+ return this.impl.importPrivateKey(encoded);
3878
+ }
3879
+ };
4993
3880
 
4994
3881
  // src/sdk.ts
4995
- init_esbuild_shims();
4996
- var import_crypto = __toESM(require_dist2());
4997
3882
  var DefaultKeySDK = class {
4998
3883
  // agentId -> counter
4999
3884
  constructor(config) {
@@ -5051,7 +3936,7 @@ var LumenKeys = (() => {
5051
3936
  }
5052
3937
  const suite = this.suiteRegistry.getSuite(result.meta.suiteId);
5053
3938
  const hashAlg = this.getHashAlgorithm(result.meta.suiteId);
5054
- const messageHash = await (0, import_crypto.hashBytes)(message, hashAlg);
3939
+ const messageHash = await hashBytes(message, hashAlg);
5055
3940
  return await suite.sign(result.keypair.privateKey, messageHash);
5056
3941
  }
5057
3942
  /**
@@ -5064,7 +3949,7 @@ var LumenKeys = (() => {
5064
3949
  }
5065
3950
  const suite = this.suiteRegistry.getSuite(result.meta.suiteId);
5066
3951
  const hashAlg = this.getHashAlgorithm(result.meta.suiteId);
5067
- const messageHash = await (0, import_crypto.hashBytes)(message, hashAlg);
3952
+ const messageHash = await hashBytes(message, hashAlg);
5068
3953
  try {
5069
3954
  return await suite.verify(result.publicKey, messageHash, signature);
5070
3955
  } catch {
@@ -5161,20 +4046,16 @@ var LumenKeys = (() => {
5161
4046
  }
5162
4047
  };
5163
4048
 
5164
- // src/browser.ts
5165
- var import_crypto2 = __toESM(require_dist2());
5166
-
5167
4049
  // src/types.ts
5168
4050
  init_esbuild_shims();
5169
4051
 
5170
4052
  // src/browser.ts
5171
- var import_crypto3 = __toESM(require_dist2());
5172
4053
  async function createKeySDK() {
5173
- const storage = new import_crypto2.InMemoryKeyStorage();
5174
- const keyRegistry = new import_crypto2.KeyRegistry(storage);
5175
- const suiteRegistry = new import_crypto2.SignatureSuiteRegistry();
5176
- suiteRegistry.register(new import_crypto2.BsvEcdsaSuite());
5177
- suiteRegistry.register(new import_crypto2.MlDsaSuite());
4054
+ const storage = new InMemoryKeyStorage();
4055
+ const keyRegistry = new KeyRegistry(storage);
4056
+ const suiteRegistry = new SignatureSuiteRegistry();
4057
+ suiteRegistry.register(new BsvEcdsaSuite());
4058
+ suiteRegistry.register(new MlDsaSuite());
5178
4059
  const sdk = new DefaultKeySDK({
5179
4060
  keyRegistry,
5180
4061
  suiteRegistry
@@ -5194,7 +4075,7 @@ var LumenKeys = (() => {
5194
4075
  /*! Bundled license information:
5195
4076
 
5196
4077
  @noble/hashes/utils.js:
5197
- @noble/hashes/utils.js:
4078
+ @noble/hashes/esm/utils.js:
5198
4079
  (*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
5199
4080
 
5200
4081
  @noble/secp256k1/index.js: