@bitgo/sdk-lib-mpc 10.14.0 → 10.15.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitgo/sdk-lib-mpc",
3
- "version": "10.14.0",
3
+ "version": "10.15.0",
4
4
  "description": "library functions for BitGo's MPC solution",
5
5
  "main": "./dist/src/index.js",
6
6
  "types": "./dist/src/index.d.ts",
@@ -36,7 +36,7 @@
36
36
  ]
37
37
  },
38
38
  "dependencies": {
39
- "@bitgo/wasm-mps": "1.8.1",
39
+ "@bitgo/wasm-mps": "1.10.0",
40
40
  "@noble/curves": "1.8.1",
41
41
  "@silencelaboratories/dkls-wasm-ll-node": "1.2.0-pre.4",
42
42
  "@silencelaboratories/dkls-wasm-ll-web": "1.2.0-pre.4",
@@ -71,5 +71,5 @@
71
71
  "files": [
72
72
  "dist"
73
73
  ],
74
- "gitHead": "82ac4c211f155cb85a21187b18a91d1a93dfaad9"
74
+ "gitHead": "775b3d249df97bc6182d7ad8a16479442ac40fc5"
75
75
  }
@@ -1,18 +0,0 @@
1
- /**
2
- * Derives a child public key from a common keychain using the Silence Labs
3
- * BIP32-Ed25519 non-hardened derivation formula:
4
- *
5
- * HMAC = HMAC-SHA512(key=chaincode, data=pk_bytes || index_BE_4)
6
- * child_pk = parent_pk + 8 * LE(trunc28(HMAC_left)) * G
7
- * child_chaincode = HMAC_right (right 32 bytes)
8
- *
9
- * This differs from the Cardano BIP32-Ed25519 formula used by
10
- * `Eddsa.deriveUnhardened` in three ways: no 0x02 prefix byte, big-endian
11
- * index, and a single HMAC instead of two. The formulas produce completely
12
- * different child keys at every derived level.
13
- *
14
- * Returns the same on-the-wire format as `Eddsa.deriveUnhardened`:
15
- * 128-char hex = 64-char derived pk + 64-char derived chaincode
16
- */
17
- export declare function deriveUnhardenedMps(commonKeychainHex: string, path: string): string;
18
- //# sourceMappingURL=derive.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"derive.d.ts","sourceRoot":"","sources":["../../../../src/tss/eddsa-mps/derive.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,iBAAiB,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAoCnF"}
@@ -1,51 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deriveUnhardenedMps = deriveUnhardenedMps;
4
- const crypto_1 = require("crypto");
5
- const ed25519_1 = require("@noble/curves/ed25519");
6
- const util_1 = require("../../curves/util");
7
- /**
8
- * Derives a child public key from a common keychain using the Silence Labs
9
- * BIP32-Ed25519 non-hardened derivation formula:
10
- *
11
- * HMAC = HMAC-SHA512(key=chaincode, data=pk_bytes || index_BE_4)
12
- * child_pk = parent_pk + 8 * LE(trunc28(HMAC_left)) * G
13
- * child_chaincode = HMAC_right (right 32 bytes)
14
- *
15
- * This differs from the Cardano BIP32-Ed25519 formula used by
16
- * `Eddsa.deriveUnhardened` in three ways: no 0x02 prefix byte, big-endian
17
- * index, and a single HMAC instead of two. The formulas produce completely
18
- * different child keys at every derived level.
19
- *
20
- * Returns the same on-the-wire format as `Eddsa.deriveUnhardened`:
21
- * 128-char hex = 64-char derived pk + 64-char derived chaincode
22
- */
23
- function deriveUnhardenedMps(commonKeychainHex, path) {
24
- if (commonKeychainHex.length !== 128) {
25
- throw new Error(`Invalid commonKeychain: expected 128 hex chars (32-byte pk + 32-byte chaincode), got ${commonKeychainHex.length}`);
26
- }
27
- const buf = Buffer.from(commonKeychainHex, 'hex');
28
- let pkBytes = Buffer.from(buf.subarray(0, 32));
29
- let ccBytes = Buffer.from(buf.subarray(32, 64));
30
- const indices = path === '' || path === 'm' ? [] : (0, util_1.pathToIndices)(path);
31
- for (const index of indices) {
32
- const indexBuf = Buffer.alloc(4);
33
- indexBuf.writeUInt32BE(index, 0);
34
- const hmac = (0, crypto_1.createHmac)('sha512', ccBytes)
35
- .update(Buffer.concat([pkBytes, indexBuf]))
36
- .digest();
37
- const zl = hmac.subarray(0, 32);
38
- const zr = hmac.subarray(32);
39
- // parse_offset: 8 * LE(zl[0..28] || zeroes)
40
- // Mirrors Rust: U256::from_le_slice(&z_l).shl(3), where z_l[28..32] = 0.
41
- const truncZl = Buffer.alloc(32);
42
- zl.copy(truncZl, 0, 0, 28);
43
- const offset = BigInt('0x' + Buffer.from(truncZl).reverse().toString('hex')) * 8n;
44
- // child_pk = offset * G + parent_pk
45
- const childPoint = ed25519_1.ed25519.ExtendedPoint.BASE.multiply(offset).add(ed25519_1.ed25519.ExtendedPoint.fromHex(pkBytes));
46
- pkBytes = Buffer.from(childPoint.toRawBytes());
47
- ccBytes = Buffer.from(zr);
48
- }
49
- return pkBytes.toString('hex') + ccBytes.toString('hex');
50
- }
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVyaXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Rzcy9lZGRzYS1tcHMvZGVyaXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBb0JBLGtEQW9DQztBQXhERCxtQ0FBb0M7QUFDcEMsbURBQWdEO0FBQ2hELDRDQUFrRDtBQUVsRDs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxTQUFnQixtQkFBbUIsQ0FBQyxpQkFBeUIsRUFBRSxJQUFZO0lBQ3pFLElBQUksaUJBQWlCLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQ2Isd0ZBQXdGLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxDQUNuSCxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEQsSUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVoRCxNQUFNLE9BQU8sR0FBRyxJQUFJLEtBQUssRUFBRSxJQUFJLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBQSxvQkFBYSxFQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZFLEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxFQUFFLENBQUM7UUFDNUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVqQyxNQUFNLElBQUksR0FBRyxJQUFBLG1CQUFVLEVBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQzthQUN2QyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO2FBQzFDLE1BQU0sRUFBRSxDQUFDO1FBRVosTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUU3Qiw0Q0FBNEM7UUFDNUMseUVBQXlFO1FBQ3pFLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMzQixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRWxGLG9DQUFvQztRQUNwQyxNQUFNLFVBQVUsR0FBRyxpQkFBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxpQkFBTyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUMzRyxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUMvQyxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDM0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUhtYWMgfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgZWQyNTUxOSB9IGZyb20gJ0Bub2JsZS9jdXJ2ZXMvZWQyNTUxOSc7XG5pbXBvcnQgeyBwYXRoVG9JbmRpY2VzIH0gZnJvbSAnLi4vLi4vY3VydmVzL3V0aWwnO1xuXG4vKipcbiAqIERlcml2ZXMgYSBjaGlsZCBwdWJsaWMga2V5IGZyb20gYSBjb21tb24ga2V5Y2hhaW4gdXNpbmcgdGhlIFNpbGVuY2UgTGFic1xuICogQklQMzItRWQyNTUxOSBub24taGFyZGVuZWQgZGVyaXZhdGlvbiBmb3JtdWxhOlxuICpcbiAqICAgSE1BQyA9IEhNQUMtU0hBNTEyKGtleT1jaGFpbmNvZGUsIGRhdGE9cGtfYnl0ZXMgfHwgaW5kZXhfQkVfNClcbiAqICAgY2hpbGRfcGsgPSBwYXJlbnRfcGsgKyA4ICogTEUodHJ1bmMyOChITUFDX2xlZnQpKSAqIEdcbiAqICAgY2hpbGRfY2hhaW5jb2RlID0gSE1BQ19yaWdodCAocmlnaHQgMzIgYnl0ZXMpXG4gKlxuICogVGhpcyBkaWZmZXJzIGZyb20gdGhlIENhcmRhbm8gQklQMzItRWQyNTUxOSBmb3JtdWxhIHVzZWQgYnlcbiAqIGBFZGRzYS5kZXJpdmVVbmhhcmRlbmVkYCBpbiB0aHJlZSB3YXlzOiBubyAweDAyIHByZWZpeCBieXRlLCBiaWctZW5kaWFuXG4gKiBpbmRleCwgYW5kIGEgc2luZ2xlIEhNQUMgaW5zdGVhZCBvZiB0d28uIFRoZSBmb3JtdWxhcyBwcm9kdWNlIGNvbXBsZXRlbHlcbiAqIGRpZmZlcmVudCBjaGlsZCBrZXlzIGF0IGV2ZXJ5IGRlcml2ZWQgbGV2ZWwuXG4gKlxuICogUmV0dXJucyB0aGUgc2FtZSBvbi10aGUtd2lyZSBmb3JtYXQgYXMgYEVkZHNhLmRlcml2ZVVuaGFyZGVuZWRgOlxuICogICAxMjgtY2hhciBoZXggPSA2NC1jaGFyIGRlcml2ZWQgcGsgKyA2NC1jaGFyIGRlcml2ZWQgY2hhaW5jb2RlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXJpdmVVbmhhcmRlbmVkTXBzKGNvbW1vbktleWNoYWluSGV4OiBzdHJpbmcsIHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChjb21tb25LZXljaGFpbkhleC5sZW5ndGggIT09IDEyOCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBJbnZhbGlkIGNvbW1vbktleWNoYWluOiBleHBlY3RlZCAxMjggaGV4IGNoYXJzICgzMi1ieXRlIHBrICsgMzItYnl0ZSBjaGFpbmNvZGUpLCBnb3QgJHtjb21tb25LZXljaGFpbkhleC5sZW5ndGh9YFxuICAgICk7XG4gIH1cblxuICBjb25zdCBidWYgPSBCdWZmZXIuZnJvbShjb21tb25LZXljaGFpbkhleCwgJ2hleCcpO1xuICBsZXQgcGtCeXRlcyA9IEJ1ZmZlci5mcm9tKGJ1Zi5zdWJhcnJheSgwLCAzMikpO1xuICBsZXQgY2NCeXRlcyA9IEJ1ZmZlci5mcm9tKGJ1Zi5zdWJhcnJheSgzMiwgNjQpKTtcblxuICBjb25zdCBpbmRpY2VzID0gcGF0aCA9PT0gJycgfHwgcGF0aCA9PT0gJ20nID8gW10gOiBwYXRoVG9JbmRpY2VzKHBhdGgpO1xuICBmb3IgKGNvbnN0IGluZGV4IG9mIGluZGljZXMpIHtcbiAgICBjb25zdCBpbmRleEJ1ZiA9IEJ1ZmZlci5hbGxvYyg0KTtcbiAgICBpbmRleEJ1Zi53cml0ZVVJbnQzMkJFKGluZGV4LCAwKTtcblxuICAgIGNvbnN0IGhtYWMgPSBjcmVhdGVIbWFjKCdzaGE1MTInLCBjY0J5dGVzKVxuICAgICAgLnVwZGF0ZShCdWZmZXIuY29uY2F0KFtwa0J5dGVzLCBpbmRleEJ1Zl0pKVxuICAgICAgLmRpZ2VzdCgpO1xuXG4gICAgY29uc3QgemwgPSBobWFjLnN1YmFycmF5KDAsIDMyKTtcbiAgICBjb25zdCB6ciA9IGhtYWMuc3ViYXJyYXkoMzIpO1xuXG4gICAgLy8gcGFyc2Vfb2Zmc2V0OiA4ICogTEUoemxbMC4uMjhdIHx8IHplcm9lcylcbiAgICAvLyBNaXJyb3JzIFJ1c3Q6IFUyNTY6OmZyb21fbGVfc2xpY2UoJnpfbCkuc2hsKDMpLCB3aGVyZSB6X2xbMjguLjMyXSA9IDAuXG4gICAgY29uc3QgdHJ1bmNabCA9IEJ1ZmZlci5hbGxvYygzMik7XG4gICAgemwuY29weSh0cnVuY1psLCAwLCAwLCAyOCk7XG4gICAgY29uc3Qgb2Zmc2V0ID0gQmlnSW50KCcweCcgKyBCdWZmZXIuZnJvbSh0cnVuY1psKS5yZXZlcnNlKCkudG9TdHJpbmcoJ2hleCcpKSAqIDhuO1xuXG4gICAgLy8gY2hpbGRfcGsgPSBvZmZzZXQgKiBHICsgcGFyZW50X3BrXG4gICAgY29uc3QgY2hpbGRQb2ludCA9IGVkMjU1MTkuRXh0ZW5kZWRQb2ludC5CQVNFLm11bHRpcGx5KG9mZnNldCkuYWRkKGVkMjU1MTkuRXh0ZW5kZWRQb2ludC5mcm9tSGV4KHBrQnl0ZXMpKTtcbiAgICBwa0J5dGVzID0gQnVmZmVyLmZyb20oY2hpbGRQb2ludC50b1Jhd0J5dGVzKCkpO1xuICAgIGNjQnl0ZXMgPSBCdWZmZXIuZnJvbSh6cik7XG4gIH1cblxuICByZXR1cm4gcGtCeXRlcy50b1N0cmluZygnaGV4JykgKyBjY0J5dGVzLnRvU3RyaW5nKCdoZXgnKTtcbn1cbiJdfQ==