@dfns/sdk-keyimport-utils-nodejs 0.5.9-rc.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 (3) hide show
  1. package/index.d.ts +10 -0
  2. package/index.js +38 -0
  3. package/package.json +15 -0
package/index.d.ts ADDED
@@ -0,0 +1,10 @@
1
+ import { ImportWalletBody, GetWalletResponse } from '@dfns/sdk/types/wallets';
2
+ import { ListSignersResponse } from '@dfns/sdk/types/signers';
3
+ type Signer = ListSignersResponse['clusters'][number]['signers'][number];
4
+ type KeyCurve = GetWalletResponse['signingKey']['curve'];
5
+ export declare const splitPrivateKeyForSigners: ({ signers, privateKey, keyCurve, }: {
6
+ signers: Signer[];
7
+ privateKey: Uint8Array | Buffer;
8
+ keyCurve: KeyCurve;
9
+ }) => Pick<ImportWalletBody, 'protocol' | 'curve' | 'minSigners' | 'encryptedKeyShares'>;
10
+ export {};
package/index.js ADDED
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.splitPrivateKeyForSigners = void 0;
4
+ const dfns_key_import_nodejs_1 = require("@dfns/dfns-key-import-nodejs");
5
+ const getCurveAndProtocol = (keyCurve) => {
6
+ switch (keyCurve) {
7
+ case 'secp256k1':
8
+ return { curve: dfns_key_import_nodejs_1.KeyCurve.Secp256k1, protocol: dfns_key_import_nodejs_1.KeyProtocol.Cggmp21 };
9
+ case 'stark':
10
+ return { curve: dfns_key_import_nodejs_1.KeyCurve.Stark, protocol: dfns_key_import_nodejs_1.KeyProtocol.Cggmp21 };
11
+ case 'ed25519':
12
+ return { curve: dfns_key_import_nodejs_1.KeyCurve.Ed25519, protocol: dfns_key_import_nodejs_1.KeyProtocol.Frost };
13
+ default:
14
+ throw Error(`Unsupported key curve for import: "${keyCurve}"`);
15
+ }
16
+ };
17
+ const getSecretScalar = (privateKey, keyCurve) => {
18
+ if (keyCurve === 'ed25519') {
19
+ return (0, dfns_key_import_nodejs_1.convertEddsaSecretKeyToScalar)(privateKey);
20
+ }
21
+ else {
22
+ return dfns_key_import_nodejs_1.SecretScalar.fromBytesBE(privateKey);
23
+ }
24
+ };
25
+ const splitPrivateKeyForSigners = ({ signers, privateKey, keyCurve, }) => {
26
+ const { curve, protocol } = getCurveAndProtocol(keyCurve);
27
+ // We set this as constant do not expose it, because Dfns API will only accept minSigners = 3 for now.
28
+ const minSigners = 3;
29
+ const secretScalar = getSecretScalar(privateKey, keyCurve);
30
+ const result = (0, dfns_key_import_nodejs_1.buildKeyImportRequest)(secretScalar, dfns_key_import_nodejs_1.SignersInfo.new(signers), minSigners, protocol, curve);
31
+ return {
32
+ curve: result.curve,
33
+ protocol: result.protocol,
34
+ minSigners: result.minSigners,
35
+ encryptedKeyShares: result.encryptedKeyShares,
36
+ };
37
+ };
38
+ exports.splitPrivateKeyForSigners = splitPrivateKeyForSigners;
package/package.json ADDED
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@dfns/sdk-keyimport-utils-nodejs",
3
+ "version": "0.5.9-rc.0",
4
+ "dependencies": {
5
+ "@dfns/dfns-key-import-nodejs": "0.2.1",
6
+ "buffer": "6.0.3",
7
+ "cross-fetch": "3.1.6",
8
+ "uuid": "9.0.0"
9
+ },
10
+ "peerDependencies": {
11
+ "@dfns/sdk": "0.5.9-rc.0"
12
+ },
13
+ "main": "./index.js",
14
+ "type": "commonjs"
15
+ }