@smartledger/keys 1.4.0 → 1.5.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGzC,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;;GAGG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAkBpD;AAED;;GAEG;;;;AACH,wBAEE"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGzC,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;;GAGG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAoBpD;AAED;;GAEG;;;;AACH,wBAEE"}
@@ -33,10 +33,12 @@ Object.defineProperty(exports, "InMemoryKeyStorage", { enumerable: true, get: fu
33
33
  async function createKeySDK() {
34
34
  const storage = new crypto_1.InMemoryKeyStorage();
35
35
  const keyRegistry = new crypto_1.KeyRegistry(storage);
36
- // Initialize suite registry with both ECDSA and ML-DSA
36
+ // Initialize suite registry with ECDSA and all ML-DSA variants
37
37
  const suiteRegistry = new crypto_1.SignatureSuiteRegistry();
38
38
  suiteRegistry.register(new crypto_1.BsvEcdsaSuite());
39
- suiteRegistry.register(new crypto_1.MlDsaSuite());
39
+ suiteRegistry.register(new crypto_1.MlDsa44Suite()); // Level 2 (AES-128 equivalent)
40
+ suiteRegistry.register(new crypto_1.MlDsa65Suite()); // Level 3 (AES-192 equivalent) - also 'ml-dsa-65' default
41
+ suiteRegistry.register(new crypto_1.MlDsa87Suite()); // Level 5 (AES-256 equivalent)
40
42
  const sdk = new sdk_js_1.DefaultKeySDK({
41
43
  keyRegistry,
42
44
  suiteRegistry,
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;AAoBH,oCAkBC;AApCD,qCAAyC;AACzC,gDAM6B;AAG7B,wCAAwC;AACxC,6CAA2B;AAC3B,8CAAyD;AAAhD,4GAAA,kBAAkB,OAAA;AAE3B;;;GAGG;AACI,KAAK,UAAU,YAAY;IAChC,MAAM,OAAO,GAAG,IAAI,2BAAkB,EAAE,CAAC;IACzC,MAAM,WAAW,GAAG,IAAI,oBAAW,CAAC,OAAO,CAAC,CAAC;IAE7C,uDAAuD;IACvD,MAAM,aAAa,GAAG,IAAI,+BAAsB,EAAE,CAAC;IACnD,aAAa,CAAC,QAAQ,CAAC,IAAI,sBAAa,EAAE,CAAC,CAAC;IAC5C,aAAa,CAAC,QAAQ,CAAC,IAAI,mBAAU,EAAE,CAAC,CAAC;IAEzC,MAAM,GAAG,GAAG,IAAI,sBAAa,CAAC;QAC5B,WAAW;QACX,aAAa;KACd,CAAC,CAAC;IAEH,2CAA2C;IAC3C,kEAAkE;IAElE,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,kBAAe;IACb,YAAY;CACb,CAAC;AAEF,8BAA8B;AAC9B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IACjC,MAAc,CAAC,SAAS,GAAG;QAC1B,YAAY;KACb,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;AAsBH,oCAoBC;AAxCD,qCAAyC;AACzC,gDAQ6B;AAG7B,wCAAwC;AACxC,6CAA2B;AAC3B,8CAAyD;AAAhD,4GAAA,kBAAkB,OAAA;AAE3B;;;GAGG;AACI,KAAK,UAAU,YAAY;IAChC,MAAM,OAAO,GAAG,IAAI,2BAAkB,EAAE,CAAC;IACzC,MAAM,WAAW,GAAG,IAAI,oBAAW,CAAC,OAAO,CAAC,CAAC;IAE7C,+DAA+D;IAC/D,MAAM,aAAa,GAAG,IAAI,+BAAsB,EAAE,CAAC;IACnD,aAAa,CAAC,QAAQ,CAAC,IAAI,sBAAa,EAAE,CAAC,CAAC;IAC5C,aAAa,CAAC,QAAQ,CAAC,IAAI,qBAAY,EAAE,CAAC,CAAC,CAAC,+BAA+B;IAC3E,aAAa,CAAC,QAAQ,CAAC,IAAI,qBAAY,EAAE,CAAC,CAAC,CAAC,0DAA0D;IACtG,aAAa,CAAC,QAAQ,CAAC,IAAI,qBAAY,EAAE,CAAC,CAAC,CAAC,+BAA+B;IAE3E,MAAM,GAAG,GAAG,IAAI,sBAAa,CAAC;QAC5B,WAAW;QACX,aAAa;KACd,CAAC,CAAC;IAEH,2CAA2C;IAC3C,kEAAkE;IAElE,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,kBAAe;IACb,YAAY;CACb,CAAC;AAEF,8BAA8B;AAC9B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IACjC,MAAc,CAAC,SAAS,GAAG;QAC1B,YAAY;KACb,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGzC,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;;GAGG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAkBpD;AAED;;GAEG;;;;AACH,wBAEE"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGzC,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;;GAGG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAoBpD;AAED;;GAEG;;;;AACH,wBAEE"}
@@ -3,7 +3,7 @@
3
3
  * Includes WASM initialization and browser-compatible exports
4
4
  */
5
5
  import { DefaultKeySDK } from './sdk.js';
6
- import { InMemoryKeyStorage, KeyRegistry, SignatureSuiteRegistry, BsvEcdsaSuite, MlDsaSuite, } from '@smartledger/crypto';
6
+ import { InMemoryKeyStorage, KeyRegistry, SignatureSuiteRegistry, BsvEcdsaSuite, MlDsa44Suite, MlDsa65Suite, MlDsa87Suite, } from '@smartledger/crypto';
7
7
  // Re-export all types for browser usage
8
8
  export * from './types.js';
9
9
  export { InMemoryKeyStorage } from '@smartledger/crypto';
@@ -14,10 +14,12 @@ export { InMemoryKeyStorage } from '@smartledger/crypto';
14
14
  export async function createKeySDK() {
15
15
  const storage = new InMemoryKeyStorage();
16
16
  const keyRegistry = new KeyRegistry(storage);
17
- // Initialize suite registry with both ECDSA and ML-DSA
17
+ // Initialize suite registry with ECDSA and all ML-DSA variants
18
18
  const suiteRegistry = new SignatureSuiteRegistry();
19
19
  suiteRegistry.register(new BsvEcdsaSuite());
20
- suiteRegistry.register(new MlDsaSuite());
20
+ suiteRegistry.register(new MlDsa44Suite()); // Level 2 (AES-128 equivalent)
21
+ suiteRegistry.register(new MlDsa65Suite()); // Level 3 (AES-192 equivalent) - also 'ml-dsa-65' default
22
+ suiteRegistry.register(new MlDsa87Suite()); // Level 5 (AES-256 equivalent)
21
23
  const sdk = new DefaultKeySDK({
22
24
  keyRegistry,
23
25
  suiteRegistry,
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,sBAAsB,EACtB,aAAa,EACb,UAAU,GACX,MAAM,qBAAqB,CAAC;AAG7B,wCAAwC;AACxC,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,OAAO,GAAG,IAAI,kBAAkB,EAAE,CAAC;IACzC,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;IAE7C,uDAAuD;IACvD,MAAM,aAAa,GAAG,IAAI,sBAAsB,EAAE,CAAC;IACnD,aAAa,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;IAC5C,aAAa,CAAC,QAAQ,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC;IAEzC,MAAM,GAAG,GAAG,IAAI,aAAa,CAAC;QAC5B,WAAW;QACX,aAAa;KACd,CAAC,CAAC;IAEH,2CAA2C;IAC3C,kEAAkE;IAElE,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,eAAe;IACb,YAAY;CACb,CAAC;AAEF,8BAA8B;AAC9B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IACjC,MAAc,CAAC,SAAS,GAAG;QAC1B,YAAY;KACb,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,sBAAsB,EACtB,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,YAAY,GACb,MAAM,qBAAqB,CAAC;AAG7B,wCAAwC;AACxC,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,OAAO,GAAG,IAAI,kBAAkB,EAAE,CAAC;IACzC,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;IAE7C,+DAA+D;IAC/D,MAAM,aAAa,GAAG,IAAI,sBAAsB,EAAE,CAAC;IACnD,aAAa,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;IAC5C,aAAa,CAAC,QAAQ,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC,+BAA+B;IAC3E,aAAa,CAAC,QAAQ,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC,0DAA0D;IACtG,aAAa,CAAC,QAAQ,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC,+BAA+B;IAE3E,MAAM,GAAG,GAAG,IAAI,aAAa,CAAC;QAC5B,WAAW;QACX,aAAa;KACd,CAAC,CAAC;IAEH,2CAA2C;IAC3C,kEAAkE;IAElE,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,eAAe;IACb,YAAY;CACb,CAAC;AAEF,8BAA8B;AAC9B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IACjC,MAAc,CAAC,SAAS,GAAG;QAC1B,YAAY;KACb,CAAC;AACJ,CAAC"}
@@ -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,38 +10367,37 @@ 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
- }
10379
- async generateKeypair() {
10380
- return this.impl.generateKeypair();
10378
+ super(...arguments);
10379
+ __publicField(this, "suiteId", "ml-dsa-44");
10381
10380
  }
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);
10387
- }
10388
- exportPublicKey(pub) {
10389
- return this.impl.exportPublicKey(pub);
10384
+ };
10385
+ var MlDsa65Suite = class extends BaseMlDsaSuite {
10386
+ constructor() {
10387
+ super(...arguments);
10388
+ __publicField(this, "suiteId", "ml-dsa-65");
10390
10389
  }
10391
- importPublicKey(encoded) {
10392
- return this.impl.importPublicKey(encoded);
10390
+ get sizes() {
10391
+ return ML_DSA_SIZES["ml-dsa-65"];
10393
10392
  }
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
  };
10401
10403
 
@@ -10787,7 +10789,9 @@ Consider using one of these suites or remove the derivationContext option.` : `N
10787
10789
  const keyRegistry = new KeyRegistry(storage);
10788
10790
  const suiteRegistry = new SignatureSuiteRegistry();
10789
10791
  suiteRegistry.register(new BsvEcdsaSuite());
10790
- suiteRegistry.register(new MlDsaSuite());
10792
+ suiteRegistry.register(new MlDsa44Suite());
10793
+ suiteRegistry.register(new MlDsa65Suite());
10794
+ suiteRegistry.register(new MlDsa87Suite());
10791
10795
  const sdk = new DefaultKeySDK({
10792
10796
  keyRegistry,
10793
10797
  suiteRegistry