@dfns/sdk-keyimport-utils-nodejs 0.7.17 → 0.8.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/index.d.ts +9 -8
- package/index.js +38 -18
- package/package.json +7 -2
package/index.d.ts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ImportKeyBody, GetKeyResponse } from '@dfns/sdk/types/keys';
|
|
2
2
|
import { ListSignersResponse } from '@dfns/sdk/types/signers';
|
|
3
3
|
type Signer = ListSignersResponse['clusters'][number]['signers'][number];
|
|
4
|
-
type
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export declare const splitPrivateKeyForSigners: ({ signers, privateKey, keyCurve, keyScheme }: {
|
|
4
|
+
type KeyScheme = Exclude<GetKeyResponse['scheme'], 'DH'>;
|
|
5
|
+
type KeyCurve = GetKeyResponse['curve'];
|
|
6
|
+
export declare const splitPrivateKeyForSigners: ({ signers, keyScheme, keyCurve, privateKey, chainCode, masterKey, }: {
|
|
8
7
|
signers: Signer[];
|
|
9
|
-
privateKey: Uint8Array | Buffer;
|
|
10
8
|
keyCurve: KeyCurve;
|
|
11
|
-
keyScheme
|
|
12
|
-
|
|
9
|
+
keyScheme: KeyScheme;
|
|
10
|
+
privateKey: Uint8Array | Buffer;
|
|
11
|
+
chainCode?: Uint8Array | Buffer;
|
|
12
|
+
masterKey?: boolean;
|
|
13
|
+
}) => Pick<ImportKeyBody, "curve" | "protocol" | "minSigners" | "encryptedKeyShares" | "masterKey">;
|
|
13
14
|
export {};
|
package/index.js
CHANGED
|
@@ -2,20 +2,33 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.splitPrivateKeyForSigners = void 0;
|
|
4
4
|
const dfns_key_import_nodejs_1 = require("@dfns/dfns-key-import-nodejs");
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
5
|
+
const getCurveAndProtocol = (scheme, curve) => {
|
|
6
|
+
if (scheme === 'ECDSA' && curve === 'secp256k1') {
|
|
7
|
+
return {
|
|
8
|
+
internalCurve: dfns_key_import_nodejs_1.KeyCurve.Secp256k1,
|
|
9
|
+
protocol: dfns_key_import_nodejs_1.KeyProtocol.Cggmp24,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
else if (scheme === 'ECDSA' && curve === 'stark') {
|
|
13
|
+
return {
|
|
14
|
+
internalCurve: dfns_key_import_nodejs_1.KeyCurve.Stark,
|
|
15
|
+
protocol: dfns_key_import_nodejs_1.KeyProtocol.Cggmp24,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
else if (scheme === 'EdDSA' && curve === 'ed25519') {
|
|
19
|
+
return {
|
|
20
|
+
internalCurve: dfns_key_import_nodejs_1.KeyCurve.Ed25519,
|
|
21
|
+
protocol: dfns_key_import_nodejs_1.KeyProtocol.Frost,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
else if (scheme === 'Schnorr' && curve === 'secp256k1') {
|
|
25
|
+
return {
|
|
26
|
+
internalCurve: dfns_key_import_nodejs_1.KeyCurve.Secp256k1,
|
|
27
|
+
protocol: dfns_key_import_nodejs_1.KeyProtocol.FrostBitcoin,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
throw Error(`Unsupported key scheme for import: "${scheme}, ${curve}"`);
|
|
19
32
|
}
|
|
20
33
|
};
|
|
21
34
|
const getSecretScalar = (privateKey, keyCurve) => {
|
|
@@ -26,17 +39,24 @@ const getSecretScalar = (privateKey, keyCurve) => {
|
|
|
26
39
|
return dfns_key_import_nodejs_1.SecretScalar.fromBytesBE(privateKey);
|
|
27
40
|
}
|
|
28
41
|
};
|
|
29
|
-
const splitPrivateKeyForSigners = ({ signers,
|
|
30
|
-
|
|
42
|
+
const splitPrivateKeyForSigners = ({ signers, keyScheme, keyCurve, privateKey, chainCode, masterKey, }) => {
|
|
43
|
+
if (masterKey && !chainCode) {
|
|
44
|
+
throw Error('master key must have a chain code');
|
|
45
|
+
}
|
|
46
|
+
if (chainCode && !masterKey) {
|
|
47
|
+
throw Error('cannot import chain code if not master key');
|
|
48
|
+
}
|
|
49
|
+
const { internalCurve, protocol } = getCurveAndProtocol(keyScheme, keyCurve);
|
|
31
50
|
// We set this as constant do not expose it, because Dfns API will only accept minSigners = 3 for now.
|
|
32
51
|
const minSigners = 3;
|
|
33
52
|
const secretScalar = getSecretScalar(privateKey, keyCurve);
|
|
34
|
-
const result = (0, dfns_key_import_nodejs_1.buildKeyImportRequest)(secretScalar, dfns_key_import_nodejs_1.SignersInfo.new(signers), minSigners, protocol,
|
|
53
|
+
const result = (0, dfns_key_import_nodejs_1.buildKeyImportRequest)(secretScalar, chainCode, dfns_key_import_nodejs_1.SignersInfo.new(signers), minSigners, protocol, internalCurve);
|
|
35
54
|
return {
|
|
36
|
-
curve:
|
|
55
|
+
curve: keyCurve,
|
|
37
56
|
protocol: result.protocol,
|
|
38
57
|
minSigners: result.minSigners,
|
|
39
58
|
encryptedKeyShares: result.encryptedKeyShares,
|
|
59
|
+
masterKey,
|
|
40
60
|
};
|
|
41
61
|
};
|
|
42
62
|
exports.splitPrivateKeyForSigners = splitPrivateKeyForSigners;
|
package/package.json
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dfns/sdk-keyimport-utils-nodejs",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"dependencies": {
|
|
5
|
-
"@dfns/dfns-key-import-nodejs": "0.
|
|
5
|
+
"@dfns/dfns-key-import-nodejs": "0.4.0",
|
|
6
|
+
"buffer": "^6.0.3",
|
|
7
|
+
"cross-fetch": "^3.1.6"
|
|
8
|
+
},
|
|
9
|
+
"peerDependencies": {
|
|
10
|
+
"@dfns/sdk": "0.8.0"
|
|
6
11
|
},
|
|
7
12
|
"main": "./index.js",
|
|
8
13
|
"type": "commonjs"
|