@smartledger/keys 1.3.0 → 1.5.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.
package/dist/esm/sdk.js CHANGED
@@ -13,6 +13,8 @@ import { KeyRegistry, SignatureSuiteRegistry, hashBytes, BIP32Derivation, InMemo
13
13
  export class DefaultKeySDK {
14
14
  constructor(config) {
15
15
  this.keyCounter = new Map(); // agentId -> counter
16
+ this.counterInitialized = new Set();
17
+ this.counterInitPromises = new Map();
16
18
  this.keyRegistry = config.keyRegistry;
17
19
  this.suiteRegistry = config.suiteRegistry;
18
20
  }
@@ -42,7 +44,7 @@ export class DefaultKeySDK {
42
44
  keypair = await suite.generateKeypair();
43
45
  }
44
46
  // Generate unique keyId
45
- const counter = this.getNextCounter(agentId);
47
+ const counter = await this.getNextCounter(agentId);
46
48
  const suiteName = profile.primarySignatureSuite.split('-')[0]; // 'ml-dsa' or 'bsv'
47
49
  const keyId = `${agentId}:pk-${suiteName}-${counter}`;
48
50
  // Register key
@@ -138,7 +140,8 @@ export class DefaultKeySDK {
138
140
  return null;
139
141
  }
140
142
  // Group by suite
141
- const suites = new Set(keys.map(k => k.meta.suiteId));
143
+ const sorted = this.sortKeysByCreatedAt(keys);
144
+ const suites = new Set(sorted.map(k => k.meta.suiteId));
142
145
  const suiteArray = Array.from(suites);
143
146
  // Assume first is primary, second is secondary
144
147
  return {
@@ -157,7 +160,7 @@ export class DefaultKeySDK {
157
160
  const suite = this.suiteRegistry.getSuite(keyRecord.meta.suiteId);
158
161
  const newKeypair = await suite.generateKeypair();
159
162
  // Generate new keyId (increment counter)
160
- const counter = this.getNextCounter(agentId);
163
+ const counter = await this.getNextCounter(agentId);
161
164
  const suiteName = keyRecord.meta.suiteId.split('-')[0];
162
165
  const newKeyId = `${agentId}:pk-${suiteName}-${counter}`;
163
166
  // Rotate
@@ -182,6 +185,80 @@ export class DefaultKeySDK {
182
185
  // Create new key
183
186
  return await this.createKey(agentId, profile, options);
184
187
  }
188
+ /**
189
+ * Create both primary and secondary keys for an agent.
190
+ */
191
+ async createDualSignatureKeys(agentId, profile, options = {}) {
192
+ if (!profile.secondarySignatureSuite) {
193
+ throw new Error('secondarySignatureSuite is required to create dual signature keys');
194
+ }
195
+ const primaryKey = await this.createKey(agentId, {
196
+ primarySignatureSuite: profile.primarySignatureSuite,
197
+ }, options);
198
+ const secondaryKey = await this.createKey(agentId, {
199
+ primarySignatureSuite: profile.secondarySignatureSuite,
200
+ }, options);
201
+ return { primaryKey, secondaryKey };
202
+ }
203
+ /**
204
+ * Idempotent creation of both primary and secondary keys.
205
+ */
206
+ async getOrCreateDualSignatureKeys(agentId, profile, options = {}) {
207
+ if (!profile.secondarySignatureSuite) {
208
+ throw new Error('secondarySignatureSuite is required to create dual signature keys');
209
+ }
210
+ const primaryKey = await this.getOrCreateKey(agentId, {
211
+ primarySignatureSuite: profile.primarySignatureSuite,
212
+ }, options);
213
+ const secondaryKey = await this.getOrCreateKey(agentId, {
214
+ primarySignatureSuite: profile.secondarySignatureSuite,
215
+ }, options);
216
+ return { primaryKey, secondaryKey };
217
+ }
218
+ /**
219
+ * Sign with one or more suites for an agent.
220
+ */
221
+ async signWithSuites(agentId, message, suites) {
222
+ const activeKeys = this.sortKeysByCreatedAt(await this.listKeysForAgent(agentId, true));
223
+ if (activeKeys.length === 0) {
224
+ throw new Error(`No active keys found for agent: ${agentId}`);
225
+ }
226
+ const suitesToUse = suites?.length ? suites : Array.from(new Set(activeKeys.map(k => k.meta.suiteId)));
227
+ const signatures = [];
228
+ for (const suiteId of suitesToUse) {
229
+ const key = activeKeys.find(k => k.meta.suiteId === suiteId);
230
+ if (!key) {
231
+ throw new Error(`No active key for suite '${suiteId}' and agent '${agentId}'`);
232
+ }
233
+ const signature = await this.signWithKey(key.meta.keyId, message);
234
+ signatures.push({ suiteId, keyId: key.meta.keyId, signature });
235
+ }
236
+ return { signatures };
237
+ }
238
+ /**
239
+ * Verify multiple signatures for an agent.
240
+ */
241
+ async verifyWithSuites(agentId, message, signatures) {
242
+ const results = [];
243
+ for (const entry of signatures) {
244
+ try {
245
+ const valid = await this.verifySignature(entry.keyId, message, entry.signature);
246
+ results.push({ suiteId: entry.suiteId, keyId: entry.keyId, valid });
247
+ }
248
+ catch (error) {
249
+ results.push({
250
+ suiteId: entry.suiteId,
251
+ keyId: entry.keyId,
252
+ valid: false,
253
+ error: error.message,
254
+ });
255
+ }
256
+ }
257
+ return {
258
+ results,
259
+ allValid: results.every(r => r.valid),
260
+ };
261
+ }
185
262
  /**
186
263
  * Generate a new BIP39 mnemonic phrase.
187
264
  *
@@ -274,12 +351,58 @@ export class DefaultKeySDK {
274
351
  /**
275
352
  * Helper: Get next counter for an agent.
276
353
  */
277
- getNextCounter(agentId) {
354
+ async getNextCounter(agentId) {
355
+ if (!this.counterInitialized.has(agentId)) {
356
+ if (!this.counterInitPromises.has(agentId)) {
357
+ const initPromise = (async () => {
358
+ const existing = await this.keyRegistry.listKeys();
359
+ const max = existing.reduce((acc, meta) => {
360
+ if (!meta.keyId.startsWith(`${agentId}:pk-`))
361
+ return acc;
362
+ const match = meta.keyId.match(/:pk-[^-]+-(\d+)$/);
363
+ if (!match)
364
+ return acc;
365
+ const num = parseInt(match[1], 10);
366
+ return Number.isFinite(num) ? Math.max(acc, num) : acc;
367
+ }, 0);
368
+ this.keyCounter.set(agentId, max);
369
+ this.counterInitialized.add(agentId);
370
+ this.counterInitPromises.delete(agentId);
371
+ })();
372
+ this.counterInitPromises.set(agentId, initPromise);
373
+ }
374
+ const pendingInit = this.counterInitPromises.get(agentId);
375
+ if (pendingInit) {
376
+ await pendingInit;
377
+ }
378
+ }
278
379
  const current = this.keyCounter.get(agentId) || 0;
279
380
  const next = current + 1;
280
381
  this.keyCounter.set(agentId, next);
281
382
  return next;
282
383
  }
384
+ /**
385
+ * Helper: sort keys deterministically by createdAt then keyId.
386
+ */
387
+ sortKeysByCreatedAt(keys) {
388
+ return [...keys].sort((a, b) => {
389
+ const aTime = new Date(a.meta.createdAt).getTime();
390
+ const bTime = new Date(b.meta.createdAt).getTime();
391
+ if (aTime !== bTime)
392
+ return aTime - bTime;
393
+ const priorityDiff = this.getSuitePriority(a.meta.suiteId) - this.getSuitePriority(b.meta.suiteId);
394
+ if (priorityDiff !== 0)
395
+ return priorityDiff;
396
+ return a.meta.keyId.localeCompare(b.meta.keyId);
397
+ });
398
+ }
399
+ getSuitePriority(suiteId) {
400
+ if (suiteId.startsWith('ml-dsa'))
401
+ return 0;
402
+ if (suiteId.includes('ecdsa'))
403
+ return 1;
404
+ return 2;
405
+ }
283
406
  }
284
407
  /**
285
408
  * Create a KeySDK instance with default configuration
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/sdk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/sdk.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,30 @@ export interface CreateKeyOptions {
25
25
  /** Optional derivation context for deterministic key generation */
26
26
  derivationContext?: DerivationContext;
27
27
  }
28
+ /**
29
+ * Signature generated by a specific suite/key combination.
30
+ */
31
+ export interface SuiteSignature {
32
+ suiteId: string;
33
+ keyId: string;
34
+ signature: Uint8Array;
35
+ }
36
+ /** Result of signing with one or more suites. */
37
+ export interface MultiSignatureResult {
38
+ signatures: SuiteSignature[];
39
+ }
40
+ /** Per-suite verification outcome. */
41
+ export interface SuiteVerificationResult {
42
+ suiteId: string;
43
+ keyId: string;
44
+ valid: boolean;
45
+ error?: string;
46
+ }
47
+ /** Aggregate verification outcome across suites. */
48
+ export interface MultiVerificationResult {
49
+ results: SuiteVerificationResult[];
50
+ allValid: boolean;
51
+ }
28
52
  /**
29
53
  * Key SDK - Single interface for all key operations.
30
54
  *
@@ -107,6 +131,29 @@ export interface KeySDK {
107
131
  * @returns KeyRecord (new or existing)
108
132
  */
109
133
  getOrCreateKey(agentId: string, profile: CryptoProfile, options?: CreateKeyOptions): Promise<KeyRecord>;
134
+ /**
135
+ * Create both primary and secondary keys in a single call.
136
+ * Requires profile.secondarySignatureSuite to be set.
137
+ */
138
+ createDualSignatureKeys(agentId: string, profile: CryptoProfile, options?: CreateKeyOptions): Promise<{
139
+ primaryKey: KeyRecord;
140
+ secondaryKey: KeyRecord;
141
+ }>;
142
+ /**
143
+ * Idempotent dual-key creation; returns existing active keys when present.
144
+ */
145
+ getOrCreateDualSignatureKeys(agentId: string, profile: CryptoProfile, options?: CreateKeyOptions): Promise<{
146
+ primaryKey: KeyRecord;
147
+ secondaryKey: KeyRecord;
148
+ }>;
149
+ /**
150
+ * Sign with one or more suites. If suites not provided, uses active profile.
151
+ */
152
+ signWithSuites(agentId: string, message: Uint8Array, suites?: string[]): Promise<MultiSignatureResult>;
153
+ /**
154
+ * Verify multiple signatures for an agent.
155
+ */
156
+ verifyWithSuites(agentId: string, message: Uint8Array, signatures: SuiteSignature[]): Promise<MultiVerificationResult>;
110
157
  /**
111
158
  * Generate a new BIP39 mnemonic phrase.
112
159
  *
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,UAAU,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,uCAAuC;IACvC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,YAAY,GAAG,MAAM,CAAC,CAAC;IAEjD,gDAAgD;IAChD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B,mEAAmE;IACnE,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,MAAM;IACrB;;;;;;;OAOG;IACH,SAAS,CACP,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EACtB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,SAAS,CAAC,CAAC;IAEtB;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAEjD;;;;;;;;OAQG;IACH,WAAW,CACT,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB;;;;;;;OAOG;IACH,eAAe,CACb,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpB;;;;;;OAMG;IACH,gBAAgB,CACd,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,OAAO,GACnB,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAExB;;;;;;;OAOG;IACH,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAEvE;;;;;;;OAOG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAEvD;;;;;;;;;OASG;IACH,cAAc,CACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EACtB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,SAAS,CAAC,CAAC;IAEtB;;;;;OAKG;IACH,gBAAgB,CAAC,QAAQ,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC;IAE/C;;;;;;;;;;OAUG;IACH,qBAAqB,CACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,SAAS,CAAC,CAAC;IAEtB;;;;;OAKG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE3C;;;;;OAKG;IACH,uBAAuB,CAAC,UAAU,EAAE,YAAY,GAAG,YAAY,GAAG,WAAW,GAAG,MAAM,EAAE,CAAC;CAC1F;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,aAAa,CAAC;CAC9B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
@@ -10313,13 +10313,16 @@ zoo`.split("\n");
10313
10313
  }
10314
10314
  return dilithiumLib;
10315
10315
  }
10316
- var MlDsa87Suite = class {
10316
+ var ML_DSA_SIZES = {
10317
+ "ml-dsa-44": { publicKey: 1312, privateKey: 2560, signature: 2420 },
10318
+ "ml-dsa-65": { publicKey: 1952, privateKey: 4032, signature: 3309 },
10319
+ "ml-dsa-87": { publicKey: 2592, privateKey: 4864, signature: 4627 }
10320
+ };
10321
+ var BaseMlDsaSuite = class {
10317
10322
  constructor() {
10318
- __publicField(this, "suiteId", "ml-dsa-87");
10319
10323
  __publicField(this, "version", "1.0.0");
10320
10324
  __publicField(this, "capabilities", {});
10321
10325
  }
10322
- // No capabilities yet, reserved for future (custom KDF, etc.)
10323
10326
  async generateKeypair() {
10324
10327
  try {
10325
10328
  const dilithium2 = await getDilithium();
@@ -10329,7 +10332,7 @@ zoo`.split("\n");
10329
10332
  privateKey: new Uint8Array(keypair.privateKey)
10330
10333
  };
10331
10334
  } catch (error) {
10332
- throw new Error(`ML-DSA-87 key generation failed: ${error instanceof Error ? error.message : String(error)}`);
10335
+ throw new Error(`${this.suiteId} key generation failed: ${error instanceof Error ? error.message : String(error)}`);
10333
10336
  }
10334
10337
  }
10335
10338
  async sign(privateKey, message) {
@@ -10338,7 +10341,7 @@ zoo`.split("\n");
10338
10341
  const signature = await dilithium2.signDetached(Buffer.from(message), Buffer.from(privateKey));
10339
10342
  return new Uint8Array(signature);
10340
10343
  } catch (error) {
10341
- throw new Error(`ML-DSA-87 signing failed: ${error instanceof Error ? error.message : String(error)}`);
10344
+ throw new Error(`${this.suiteId} signing failed: ${error instanceof Error ? error.message : String(error)}`);
10342
10345
  }
10343
10346
  }
10344
10347
  async verify(publicKey, message, signature) {
@@ -10354,8 +10357,8 @@ zoo`.split("\n");
10354
10357
  }
10355
10358
  importPublicKey(encoded) {
10356
10359
  const bytes = hexToBytes(encoded);
10357
- if (bytes.length !== 2592) {
10358
- throw new Error(`ML-DSA-87 public key must be 2592 bytes, got ${bytes.length}`);
10360
+ if (bytes.length !== this.sizes.publicKey) {
10361
+ throw new Error(`${this.suiteId} public key must be ${this.sizes.publicKey} bytes, got ${bytes.length}`);
10359
10362
  }
10360
10363
  return bytes;
10361
10364
  }
@@ -10364,46 +10367,49 @@ zoo`.split("\n");
10364
10367
  }
10365
10368
  importPrivateKey(encoded) {
10366
10369
  const bytes = hexToBytes(encoded);
10367
- if (bytes.length !== 4864) {
10368
- throw new Error(`ML-DSA-87 private key must be 4864 bytes, got ${bytes.length}`);
10370
+ if (bytes.length !== this.sizes.privateKey) {
10371
+ throw new Error(`${this.suiteId} private key must be ${this.sizes.privateKey} bytes, got ${bytes.length}`);
10369
10372
  }
10370
10373
  return bytes;
10371
10374
  }
10372
10375
  };
10373
- var MlDsaSuite = class {
10376
+ var MlDsa44Suite = class extends BaseMlDsaSuite {
10374
10377
  constructor() {
10375
- __publicField(this, "suiteId", "ml-dsa-65");
10376
- __publicField(this, "version", "1.0.0");
10377
- __publicField(this, "impl", new MlDsa87Suite());
10378
+ super(...arguments);
10379
+ __publicField(this, "suiteId", "ml-dsa-44");
10378
10380
  }
10379
- async generateKeypair() {
10380
- return this.impl.generateKeypair();
10381
- }
10382
- async sign(privateKey, message) {
10383
- return this.impl.sign(privateKey, message);
10381
+ get sizes() {
10382
+ return ML_DSA_SIZES["ml-dsa-44"];
10384
10383
  }
10385
- async verify(publicKey, message, signature) {
10386
- return this.impl.verify(publicKey, message, signature);
10384
+ };
10385
+ var MlDsa65Suite = class extends BaseMlDsaSuite {
10386
+ constructor() {
10387
+ super(...arguments);
10388
+ __publicField(this, "suiteId", "ml-dsa-65");
10387
10389
  }
10388
- exportPublicKey(pub) {
10389
- return this.impl.exportPublicKey(pub);
10390
+ get sizes() {
10391
+ return ML_DSA_SIZES["ml-dsa-65"];
10390
10392
  }
10391
- importPublicKey(encoded) {
10392
- return this.impl.importPublicKey(encoded);
10393
- }
10394
- exportPrivateKey(priv) {
10395
- return this.impl.exportPrivateKey(priv);
10393
+ };
10394
+ var MlDsa87Suite = class extends BaseMlDsaSuite {
10395
+ constructor() {
10396
+ super(...arguments);
10397
+ __publicField(this, "suiteId", "ml-dsa-87");
10396
10398
  }
10397
- importPrivateKey(encoded) {
10398
- return this.impl.importPrivateKey(encoded);
10399
+ get sizes() {
10400
+ return ML_DSA_SIZES["ml-dsa-87"];
10399
10401
  }
10400
10402
  };
10403
+ var MlDsaSuite = class extends MlDsa65Suite {
10404
+ };
10401
10405
 
10402
10406
  // src/sdk.ts
10403
10407
  var DefaultKeySDK = class {
10404
- // agentId -> counter
10405
10408
  constructor(config) {
10406
10409
  this.keyCounter = /* @__PURE__ */ new Map();
10410
+ // agentId -> counter
10411
+ this.counterInitialized = /* @__PURE__ */ new Set();
10412
+ this.counterInitPromises = /* @__PURE__ */ new Map();
10407
10413
  this.keyRegistry = config.keyRegistry;
10408
10414
  this.suiteRegistry = config.suiteRegistry;
10409
10415
  }
@@ -10426,7 +10432,7 @@ Consider using one of these suites or remove the derivationContext option.` : `N
10426
10432
  } else {
10427
10433
  keypair = await suite.generateKeypair();
10428
10434
  }
10429
- const counter = this.getNextCounter(agentId);
10435
+ const counter = await this.getNextCounter(agentId);
10430
10436
  const suiteName = profile.primarySignatureSuite.split("-")[0];
10431
10437
  const keyId = `${agentId}:pk-${suiteName}-${counter}`;
10432
10438
  const meta = await this.keyRegistry.registerKey(
@@ -10516,7 +10522,8 @@ Consider using one of these suites or remove the derivationContext option.` : `N
10516
10522
  if (keys.length === 0) {
10517
10523
  return null;
10518
10524
  }
10519
- const suites = new Set(keys.map((k2) => k2.meta.suiteId));
10525
+ const sorted = this.sortKeysByCreatedAt(keys);
10526
+ const suites = new Set(sorted.map((k2) => k2.meta.suiteId));
10520
10527
  const suiteArray = Array.from(suites);
10521
10528
  return {
10522
10529
  primarySignatureSuite: suiteArray[0],
@@ -10532,7 +10539,7 @@ Consider using one of these suites or remove the derivationContext option.` : `N
10532
10539
  for (const keyRecord of activeKeys) {
10533
10540
  const suite = this.suiteRegistry.getSuite(keyRecord.meta.suiteId);
10534
10541
  const newKeypair = await suite.generateKeypair();
10535
- const counter = this.getNextCounter(agentId);
10542
+ const counter = await this.getNextCounter(agentId);
10536
10543
  const suiteName = keyRecord.meta.suiteId.split("-")[0];
10537
10544
  const newKeyId = `${agentId}:pk-${suiteName}-${counter}`;
10538
10545
  const newMeta = await this.keyRegistry.rotateKey(
@@ -10560,6 +10567,79 @@ Consider using one of these suites or remove the derivationContext option.` : `N
10560
10567
  }
10561
10568
  return await this.createKey(agentId, profile, options);
10562
10569
  }
10570
+ /**
10571
+ * Create both primary and secondary keys for an agent.
10572
+ */
10573
+ async createDualSignatureKeys(agentId, profile, options = {}) {
10574
+ if (!profile.secondarySignatureSuite) {
10575
+ throw new Error("secondarySignatureSuite is required to create dual signature keys");
10576
+ }
10577
+ const primaryKey = await this.createKey(agentId, {
10578
+ primarySignatureSuite: profile.primarySignatureSuite
10579
+ }, options);
10580
+ const secondaryKey = await this.createKey(agentId, {
10581
+ primarySignatureSuite: profile.secondarySignatureSuite
10582
+ }, options);
10583
+ return { primaryKey, secondaryKey };
10584
+ }
10585
+ /**
10586
+ * Idempotent creation of both primary and secondary keys.
10587
+ */
10588
+ async getOrCreateDualSignatureKeys(agentId, profile, options = {}) {
10589
+ if (!profile.secondarySignatureSuite) {
10590
+ throw new Error("secondarySignatureSuite is required to create dual signature keys");
10591
+ }
10592
+ const primaryKey = await this.getOrCreateKey(agentId, {
10593
+ primarySignatureSuite: profile.primarySignatureSuite
10594
+ }, options);
10595
+ const secondaryKey = await this.getOrCreateKey(agentId, {
10596
+ primarySignatureSuite: profile.secondarySignatureSuite
10597
+ }, options);
10598
+ return { primaryKey, secondaryKey };
10599
+ }
10600
+ /**
10601
+ * Sign with one or more suites for an agent.
10602
+ */
10603
+ async signWithSuites(agentId, message, suites) {
10604
+ const activeKeys = this.sortKeysByCreatedAt(await this.listKeysForAgent(agentId, true));
10605
+ if (activeKeys.length === 0) {
10606
+ throw new Error(`No active keys found for agent: ${agentId}`);
10607
+ }
10608
+ const suitesToUse = suites?.length ? suites : Array.from(new Set(activeKeys.map((k2) => k2.meta.suiteId)));
10609
+ const signatures = [];
10610
+ for (const suiteId of suitesToUse) {
10611
+ const key = activeKeys.find((k2) => k2.meta.suiteId === suiteId);
10612
+ if (!key) {
10613
+ throw new Error(`No active key for suite '${suiteId}' and agent '${agentId}'`);
10614
+ }
10615
+ const signature = await this.signWithKey(key.meta.keyId, message);
10616
+ signatures.push({ suiteId, keyId: key.meta.keyId, signature });
10617
+ }
10618
+ return { signatures };
10619
+ }
10620
+ /**
10621
+ * Verify multiple signatures for an agent.
10622
+ */
10623
+ async verifyWithSuites(agentId, message, signatures) {
10624
+ const results = [];
10625
+ for (const entry of signatures) {
10626
+ try {
10627
+ const valid = await this.verifySignature(entry.keyId, message, entry.signature);
10628
+ results.push({ suiteId: entry.suiteId, keyId: entry.keyId, valid });
10629
+ } catch (error) {
10630
+ results.push({
10631
+ suiteId: entry.suiteId,
10632
+ keyId: entry.keyId,
10633
+ valid: false,
10634
+ error: error.message
10635
+ });
10636
+ }
10637
+ }
10638
+ return {
10639
+ results,
10640
+ allValid: results.every((r2) => r2.valid)
10641
+ };
10642
+ }
10563
10643
  /**
10564
10644
  * Generate a new BIP39 mnemonic phrase.
10565
10645
  *
@@ -10654,12 +10734,52 @@ Consider using one of these suites or remove the derivationContext option.` : `N
10654
10734
  /**
10655
10735
  * Helper: Get next counter for an agent.
10656
10736
  */
10657
- getNextCounter(agentId) {
10737
+ async getNextCounter(agentId) {
10738
+ if (!this.counterInitialized.has(agentId)) {
10739
+ if (!this.counterInitPromises.has(agentId)) {
10740
+ const initPromise = (async () => {
10741
+ const existing = await this.keyRegistry.listKeys();
10742
+ const max = existing.reduce((acc, meta) => {
10743
+ if (!meta.keyId.startsWith(`${agentId}:pk-`)) return acc;
10744
+ const match = meta.keyId.match(/:pk-[^-]+-(\d+)$/);
10745
+ if (!match) return acc;
10746
+ const num = parseInt(match[1], 10);
10747
+ return Number.isFinite(num) ? Math.max(acc, num) : acc;
10748
+ }, 0);
10749
+ this.keyCounter.set(agentId, max);
10750
+ this.counterInitialized.add(agentId);
10751
+ this.counterInitPromises.delete(agentId);
10752
+ })();
10753
+ this.counterInitPromises.set(agentId, initPromise);
10754
+ }
10755
+ const pendingInit = this.counterInitPromises.get(agentId);
10756
+ if (pendingInit) {
10757
+ await pendingInit;
10758
+ }
10759
+ }
10658
10760
  const current = this.keyCounter.get(agentId) || 0;
10659
10761
  const next = current + 1;
10660
10762
  this.keyCounter.set(agentId, next);
10661
10763
  return next;
10662
10764
  }
10765
+ /**
10766
+ * Helper: sort keys deterministically by createdAt then keyId.
10767
+ */
10768
+ sortKeysByCreatedAt(keys) {
10769
+ return [...keys].sort((a2, b2) => {
10770
+ const aTime = new Date(a2.meta.createdAt).getTime();
10771
+ const bTime = new Date(b2.meta.createdAt).getTime();
10772
+ if (aTime !== bTime) return aTime - bTime;
10773
+ const priorityDiff = this.getSuitePriority(a2.meta.suiteId) - this.getSuitePriority(b2.meta.suiteId);
10774
+ if (priorityDiff !== 0) return priorityDiff;
10775
+ return a2.meta.keyId.localeCompare(b2.meta.keyId);
10776
+ });
10777
+ }
10778
+ getSuitePriority(suiteId) {
10779
+ if (suiteId.startsWith("ml-dsa")) return 0;
10780
+ if (suiteId.includes("ecdsa")) return 1;
10781
+ return 2;
10782
+ }
10663
10783
  };
10664
10784
 
10665
10785
  // src/types.ts
@@ -10671,6 +10791,9 @@ Consider using one of these suites or remove the derivationContext option.` : `N
10671
10791
  const keyRegistry = new KeyRegistry(storage);
10672
10792
  const suiteRegistry = new SignatureSuiteRegistry();
10673
10793
  suiteRegistry.register(new BsvEcdsaSuite());
10794
+ suiteRegistry.register(new MlDsa44Suite());
10795
+ suiteRegistry.register(new MlDsa65Suite());
10796
+ suiteRegistry.register(new MlDsa87Suite());
10674
10797
  suiteRegistry.register(new MlDsaSuite());
10675
10798
  const sdk = new DefaultKeySDK({
10676
10799
  keyRegistry,