@cardano-sdk/key-management 0.3.1-nightly.2 → 0.4.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/cjs/InMemoryKeyAgent.d.ts +10 -8
- package/dist/cjs/InMemoryKeyAgent.d.ts.map +1 -1
- package/dist/cjs/InMemoryKeyAgent.js +38 -38
- package/dist/cjs/InMemoryKeyAgent.js.map +1 -1
- package/dist/cjs/KeyAgentBase.d.ts +9 -7
- package/dist/cjs/KeyAgentBase.d.ts.map +1 -1
- package/dist/cjs/KeyAgentBase.js +35 -25
- package/dist/cjs/KeyAgentBase.js.map +1 -1
- package/dist/cjs/LedgerKeyAgent.d.ts +4 -3
- package/dist/cjs/LedgerKeyAgent.d.ts.map +1 -1
- package/dist/cjs/LedgerKeyAgent.js +7 -3
- package/dist/cjs/LedgerKeyAgent.js.map +1 -1
- package/dist/cjs/TrezorKeyAgent.d.ts +3 -2
- package/dist/cjs/TrezorKeyAgent.d.ts.map +1 -1
- package/dist/cjs/TrezorKeyAgent.js +27 -3
- package/dist/cjs/TrezorKeyAgent.js.map +1 -1
- package/dist/cjs/cip8/cip30signData.d.ts +3 -2
- package/dist/cjs/cip8/cip30signData.d.ts.map +1 -1
- package/dist/cjs/cip8/cip30signData.js +9 -9
- package/dist/cjs/cip8/cip30signData.js.map +1 -1
- package/dist/cjs/cip8/types.d.ts +3 -3
- package/dist/cjs/cip8/types.d.ts.map +1 -1
- package/dist/cjs/emip3.d.ts +3 -3
- package/dist/cjs/emip3.d.ts.map +1 -1
- package/dist/cjs/emip3.js +5 -5
- package/dist/cjs/emip3.js.map +1 -1
- package/dist/cjs/errors/AuthenticationError.d.ts +1 -1
- package/dist/cjs/errors/AuthenticationError.js +2 -2
- package/dist/cjs/errors/HwMappingError.d.ts +1 -1
- package/dist/cjs/errors/HwMappingError.js +2 -2
- package/dist/cjs/errors/ProofGenerationError.d.ts +1 -1
- package/dist/cjs/errors/ProofGenerationError.js +2 -2
- package/dist/cjs/errors/TransportError.d.ts +1 -1
- package/dist/cjs/errors/TransportError.js +2 -2
- package/dist/cjs/restoreKeyAgent.d.ts +4 -4
- package/dist/cjs/restoreKeyAgent.d.ts.map +1 -1
- package/dist/cjs/restoreKeyAgent.js +4 -4
- package/dist/cjs/restoreKeyAgent.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/cjs/types.d.ts +20 -17
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/util/createAsyncKeyAgent.d.ts.map +1 -1
- package/dist/cjs/util/createAsyncKeyAgent.js +1 -0
- package/dist/cjs/util/createAsyncKeyAgent.js.map +1 -1
- package/dist/cjs/util/key.d.ts +5 -4
- package/dist/cjs/util/key.d.ts.map +1 -1
- package/dist/cjs/util/key.js +9 -17
- package/dist/cjs/util/key.js.map +1 -1
- package/dist/cjs/util/mapHardwareSigningData.d.ts +2 -1
- package/dist/cjs/util/mapHardwareSigningData.d.ts.map +1 -1
- package/dist/cjs/util/mapHardwareSigningData.js +3 -3
- package/dist/cjs/util/mapHardwareSigningData.js.map +1 -1
- package/dist/cjs/util/ownSignatureKeyPaths.js +1 -1
- package/dist/cjs/util/ownSignatureKeyPaths.js.map +1 -1
- package/dist/cjs/util/stubSignTransaction.d.ts.map +1 -1
- package/dist/cjs/util/stubSignTransaction.js +26 -3
- package/dist/cjs/util/stubSignTransaction.js.map +1 -1
- package/dist/esm/InMemoryKeyAgent.d.ts +10 -8
- package/dist/esm/InMemoryKeyAgent.d.ts.map +1 -1
- package/dist/esm/InMemoryKeyAgent.js +33 -33
- package/dist/esm/InMemoryKeyAgent.js.map +1 -1
- package/dist/esm/KeyAgentBase.d.ts +9 -7
- package/dist/esm/KeyAgentBase.d.ts.map +1 -1
- package/dist/esm/KeyAgentBase.js +35 -25
- package/dist/esm/KeyAgentBase.js.map +1 -1
- package/dist/esm/LedgerKeyAgent.d.ts +4 -3
- package/dist/esm/LedgerKeyAgent.d.ts.map +1 -1
- package/dist/esm/LedgerKeyAgent.js +9 -5
- package/dist/esm/LedgerKeyAgent.js.map +1 -1
- package/dist/esm/TrezorKeyAgent.d.ts +3 -2
- package/dist/esm/TrezorKeyAgent.d.ts.map +1 -1
- package/dist/esm/TrezorKeyAgent.js +5 -4
- package/dist/esm/TrezorKeyAgent.js.map +1 -1
- package/dist/esm/cip8/cip30signData.d.ts +3 -2
- package/dist/esm/cip8/cip30signData.d.ts.map +1 -1
- package/dist/esm/cip8/cip30signData.js +2 -2
- package/dist/esm/cip8/cip30signData.js.map +1 -1
- package/dist/esm/cip8/types.d.ts +3 -3
- package/dist/esm/cip8/types.d.ts.map +1 -1
- package/dist/esm/emip3.d.ts +3 -3
- package/dist/esm/emip3.d.ts.map +1 -1
- package/dist/esm/emip3.js +5 -5
- package/dist/esm/emip3.js.map +1 -1
- package/dist/esm/errors/AuthenticationError.d.ts +1 -1
- package/dist/esm/errors/AuthenticationError.js +1 -1
- package/dist/esm/errors/HwMappingError.d.ts +1 -1
- package/dist/esm/errors/HwMappingError.js +1 -1
- package/dist/esm/errors/ProofGenerationError.d.ts +1 -1
- package/dist/esm/errors/ProofGenerationError.js +1 -1
- package/dist/esm/errors/TransportError.d.ts +1 -1
- package/dist/esm/errors/TransportError.js +1 -1
- package/dist/esm/restoreKeyAgent.d.ts +4 -4
- package/dist/esm/restoreKeyAgent.d.ts.map +1 -1
- package/dist/esm/restoreKeyAgent.js +4 -4
- package/dist/esm/restoreKeyAgent.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/types.d.ts +20 -17
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/util/createAsyncKeyAgent.d.ts.map +1 -1
- package/dist/esm/util/createAsyncKeyAgent.js +1 -0
- package/dist/esm/util/createAsyncKeyAgent.js.map +1 -1
- package/dist/esm/util/key.d.ts +5 -4
- package/dist/esm/util/key.d.ts.map +1 -1
- package/dist/esm/util/key.js +9 -17
- package/dist/esm/util/key.js.map +1 -1
- package/dist/esm/util/mapHardwareSigningData.d.ts +2 -1
- package/dist/esm/util/mapHardwareSigningData.d.ts.map +1 -1
- package/dist/esm/util/mapHardwareSigningData.js +3 -3
- package/dist/esm/util/mapHardwareSigningData.js.map +1 -1
- package/dist/esm/util/ownSignatureKeyPaths.js +1 -1
- package/dist/esm/util/ownSignatureKeyPaths.js.map +1 -1
- package/dist/esm/util/stubSignTransaction.d.ts.map +1 -1
- package/dist/esm/util/stubSignTransaction.js +3 -3
- package/dist/esm/util/stubSignTransaction.js.map +1 -1
- package/package.json +7 -5
|
@@ -3,17 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.cip30signData = exports.Cip30DataSignError = exports.Cip30DataSignErrorCode = void 0;
|
|
4
4
|
const cardano_message_signing_nodejs_1 = require("@emurgo/cardano-message-signing-nodejs");
|
|
5
5
|
const core_1 = require("@cardano-sdk/core");
|
|
6
|
-
const util_1 = require("
|
|
7
|
-
const util_2 = require("
|
|
6
|
+
const util_1 = require("@cardano-sdk/util");
|
|
7
|
+
const util_2 = require("./util");
|
|
8
|
+
const util_3 = require("../util");
|
|
8
9
|
const rxjs_1 = require("rxjs");
|
|
9
|
-
const util_3 = require("@cardano-sdk/util");
|
|
10
10
|
var Cip30DataSignErrorCode;
|
|
11
11
|
(function (Cip30DataSignErrorCode) {
|
|
12
12
|
Cip30DataSignErrorCode[Cip30DataSignErrorCode["ProofGeneration"] = 1] = "ProofGeneration";
|
|
13
13
|
Cip30DataSignErrorCode[Cip30DataSignErrorCode["AddressNotPK"] = 2] = "AddressNotPK";
|
|
14
14
|
Cip30DataSignErrorCode[Cip30DataSignErrorCode["UserDeclined"] = 3] = "UserDeclined";
|
|
15
15
|
})(Cip30DataSignErrorCode = exports.Cip30DataSignErrorCode || (exports.Cip30DataSignErrorCode = {}));
|
|
16
|
-
class Cip30DataSignError extends
|
|
16
|
+
class Cip30DataSignError extends util_1.ComposableError {
|
|
17
17
|
constructor(code, info, innerError) {
|
|
18
18
|
super(`DataSignError code: ${code}`, innerError);
|
|
19
19
|
this.code = code;
|
|
@@ -21,7 +21,7 @@ class Cip30DataSignError extends core_1.ComposableError {
|
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
exports.Cip30DataSignError = Cip30DataSignError;
|
|
24
|
-
const getAddressBytes = (signWith) => (0,
|
|
24
|
+
const getAddressBytes = (signWith) => (0, util_1.usingAutoFree)((scope) => {
|
|
25
25
|
const cslAddress = (0, core_1.parseCmlAddress)(scope, signWith.toString());
|
|
26
26
|
if (!cslAddress) {
|
|
27
27
|
throw new Cip30DataSignError(Cip30DataSignErrorCode.AddressNotPK, 'Invalid address');
|
|
@@ -31,7 +31,7 @@ const getAddressBytes = (signWith) => (0, util_3.usingAutoFree)((scope) => {
|
|
|
31
31
|
const getDerivationPath = async (signWith, keyAgent) => {
|
|
32
32
|
const isRewardAccount = signWith.startsWith('stake');
|
|
33
33
|
if (isRewardAccount) {
|
|
34
|
-
return
|
|
34
|
+
return util_3.STAKE_KEY_DERIVATION_PATH;
|
|
35
35
|
}
|
|
36
36
|
const knownAddresses = await (0, rxjs_1.firstValueFrom)(keyAgent.knownAddresses$);
|
|
37
37
|
const knownAddress = knownAddresses.find(({ address }) => address === signWith);
|
|
@@ -43,7 +43,7 @@ const getDerivationPath = async (signWith, keyAgent) => {
|
|
|
43
43
|
const createSigStructureHeaders = (addressBytes) => {
|
|
44
44
|
const protectedHeaders = cardano_message_signing_nodejs_1.HeaderMap.new();
|
|
45
45
|
protectedHeaders.set_key_id(addressBytes);
|
|
46
|
-
protectedHeaders.set_header(
|
|
46
|
+
protectedHeaders.set_header(util_2.CoseLabel.address, cardano_message_signing_nodejs_1.CBORValue.new_bytes(addressBytes));
|
|
47
47
|
protectedHeaders.set_algorithm_id(cardano_message_signing_nodejs_1.Label.from_algorithm_id(cardano_message_signing_nodejs_1.AlgorithmId.EdDSA));
|
|
48
48
|
return protectedHeaders;
|
|
49
49
|
};
|
|
@@ -59,8 +59,8 @@ const createCoseKey = (addressBytes, publicKey) => {
|
|
|
59
59
|
const coseKey = cardano_message_signing_nodejs_1.COSEKey.new(cardano_message_signing_nodejs_1.Label.from_key_type(cardano_message_signing_nodejs_1.KeyType.OKP));
|
|
60
60
|
coseKey.set_key_id(addressBytes);
|
|
61
61
|
coseKey.set_algorithm_id(cardano_message_signing_nodejs_1.Label.from_algorithm_id(cardano_message_signing_nodejs_1.AlgorithmId.EdDSA));
|
|
62
|
-
coseKey.set_header(
|
|
63
|
-
coseKey.set_header(
|
|
62
|
+
coseKey.set_header(util_2.CoseLabel.crv, cardano_message_signing_nodejs_1.CBORValue.from_label(cardano_message_signing_nodejs_1.Label.from_curve_type(cardano_message_signing_nodejs_1.CurveType.Ed25519)));
|
|
63
|
+
coseKey.set_header(util_2.CoseLabel.x, cardano_message_signing_nodejs_1.CBORValue.new_bytes(Buffer.from(publicKey, 'hex')));
|
|
64
64
|
return coseKey;
|
|
65
65
|
};
|
|
66
66
|
const cip30signData = async ({ keyAgent, signWith, payload }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cip30signData.js","sourceRoot":"","sources":["../../../src/cip8/cip30signData.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"cip30signData.js","sourceRoot":"","sources":["../../../src/cip8/cip30signData.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/cip8/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare type CoseSign1CborHex =
|
|
3
|
-
export declare type CoseKeyCborHex =
|
|
1
|
+
import { HexBlob } from '@cardano-sdk/util';
|
|
2
|
+
export declare type CoseSign1CborHex = HexBlob;
|
|
3
|
+
export declare type CoseKeyCborHex = HexBlob;
|
|
4
4
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cip8/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,oBAAY,gBAAgB,GAAG,OAAO,CAAC
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cip8/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,oBAAY,gBAAgB,GAAG,OAAO,CAAC;AACvC,oBAAY,cAAc,GAAG,OAAO,CAAC"}
|
package/dist/cjs/emip3.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const createPbkdf2Key: (
|
|
2
|
-
export declare const emip3encrypt: (data: Uint8Array,
|
|
3
|
-
export declare const emip3decrypt: (encrypted: Uint8Array,
|
|
1
|
+
export declare const createPbkdf2Key: (passphrase: Uint8Array, salt: Uint8Array | Uint16Array) => Promise<Buffer>;
|
|
2
|
+
export declare const emip3encrypt: (data: Uint8Array, passphrase: Uint8Array) => Promise<Uint8Array>;
|
|
3
|
+
export declare const emip3decrypt: (encrypted: Uint8Array, passphrase: Uint8Array) => Promise<Uint8Array>;
|
|
4
4
|
//# sourceMappingURL=emip3.d.ts.map
|
package/dist/cjs/emip3.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emip3.d.ts","sourceRoot":"","sources":["../../src/emip3.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"emip3.d.ts","sourceRoot":"","sources":["../../src/emip3.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,eAAe,eAAsB,UAAU,QAAQ,UAAU,GAAG,WAAW,oBAMzF,CAAC;AAKJ,eAAO,MAAM,YAAY,SAAgB,UAAU,cAAc,UAAU,KAAG,QAAQ,UAAU,CAY/F,CAAC;AAKF,eAAO,MAAM,YAAY,cAAqB,UAAU,cAAc,UAAU,KAAG,QAAQ,UAAU,CAUpG,CAAC"}
|
package/dist/cjs/emip3.js
CHANGED
|
@@ -13,16 +13,16 @@ const PBKDF2_ITERATIONS = 19162;
|
|
|
13
13
|
const SALT_LENGTH = 32;
|
|
14
14
|
const TAG_LENGTH = 16;
|
|
15
15
|
const AAD = Buffer.from('', 'hex');
|
|
16
|
-
const createPbkdf2Key = async (
|
|
16
|
+
const createPbkdf2Key = async (passphrase, salt) => await new Promise((resolve, reject) => (0, pbkdf2_1.pbkdf2)(passphrase, salt, PBKDF2_ITERATIONS, KEY_LENGTH, 'sha512', (err, derivedKey) => {
|
|
17
17
|
if (err)
|
|
18
18
|
return reject(err);
|
|
19
19
|
resolve(derivedKey);
|
|
20
20
|
}));
|
|
21
21
|
exports.createPbkdf2Key = createPbkdf2Key;
|
|
22
|
-
const emip3encrypt = async (data,
|
|
22
|
+
const emip3encrypt = async (data, passphrase) => {
|
|
23
23
|
const salt = new Uint8Array(SALT_LENGTH);
|
|
24
24
|
(0, get_random_values_1.default)(salt);
|
|
25
|
-
const key = await (0, exports.createPbkdf2Key)(
|
|
25
|
+
const key = await (0, exports.createPbkdf2Key)(passphrase, salt);
|
|
26
26
|
const nonce = new Uint8Array(NONCE_LENGTH);
|
|
27
27
|
(0, get_random_values_1.default)(nonce);
|
|
28
28
|
const cipher = chacha_1.default.createCipher(key, Buffer.from(nonce));
|
|
@@ -33,12 +33,12 @@ const emip3encrypt = async (data, password) => {
|
|
|
33
33
|
return Buffer.concat([salt, nonce, tag, head, final]);
|
|
34
34
|
};
|
|
35
35
|
exports.emip3encrypt = emip3encrypt;
|
|
36
|
-
const emip3decrypt = async (encrypted,
|
|
36
|
+
const emip3decrypt = async (encrypted, passphrase) => {
|
|
37
37
|
const salt = encrypted.slice(0, SALT_LENGTH);
|
|
38
38
|
const nonce = encrypted.slice(SALT_LENGTH, SALT_LENGTH + NONCE_LENGTH);
|
|
39
39
|
const tag = encrypted.slice(SALT_LENGTH + NONCE_LENGTH, SALT_LENGTH + NONCE_LENGTH + TAG_LENGTH);
|
|
40
40
|
const data = encrypted.slice(SALT_LENGTH + NONCE_LENGTH + TAG_LENGTH);
|
|
41
|
-
const key = await (0, exports.createPbkdf2Key)(
|
|
41
|
+
const key = await (0, exports.createPbkdf2Key)(passphrase, salt);
|
|
42
42
|
const decipher = chacha_1.default.createDecipher(key, Buffer.from(nonce));
|
|
43
43
|
decipher.setAuthTag(Buffer.from(tag));
|
|
44
44
|
decipher.setAAD(AAD);
|
package/dist/cjs/emip3.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emip3.js","sourceRoot":"","sources":["../../src/emip3.ts"],"names":[],"mappings":";;;;;;AAAA,mCAAgC;AAChC,oDAA4B;AAC5B,0EAAgD;AAEhD,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,iBAAiB,GAAG,KAAM,CAAC;AACjC,MAAM,WAAW,GAAG,EAAE,CAAC;AACvB,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAE5B,MAAM,eAAe,GAAG,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"emip3.js","sourceRoot":"","sources":["../../src/emip3.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AuthenticationError = void 0;
|
|
4
|
-
const
|
|
4
|
+
const util_1 = require("@cardano-sdk/util");
|
|
5
5
|
const formatMessage = (detail) => {
|
|
6
6
|
const messageDetail = detail ? `: ${detail}` : '';
|
|
7
7
|
return `Authentication failure${messageDetail}`;
|
|
8
8
|
};
|
|
9
|
-
class AuthenticationError extends
|
|
9
|
+
class AuthenticationError extends util_1.ComposableError {
|
|
10
10
|
constructor(detail, innerError) {
|
|
11
11
|
super(formatMessage(detail), innerError);
|
|
12
12
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.HwMappingError = void 0;
|
|
4
|
-
const
|
|
4
|
+
const util_1 = require("@cardano-sdk/util");
|
|
5
5
|
const formatMessage = (detail) => {
|
|
6
6
|
const messageDetail = detail ? `: ${detail}` : '';
|
|
7
7
|
return `Hardware data mapping failure${messageDetail}`;
|
|
8
8
|
};
|
|
9
|
-
class HwMappingError extends
|
|
9
|
+
class HwMappingError extends util_1.ComposableError {
|
|
10
10
|
constructor(detail, innerError) {
|
|
11
11
|
super(formatMessage(detail), innerError);
|
|
12
12
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ComposableError } from '@cardano-sdk/
|
|
1
|
+
import { ComposableError } from '@cardano-sdk/util';
|
|
2
2
|
export declare class ProofGenerationError<InnerError = unknown> extends ComposableError<InnerError> {
|
|
3
3
|
constructor(detail?: string, innerError?: InnerError);
|
|
4
4
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ProofGenerationError = void 0;
|
|
4
|
-
const
|
|
4
|
+
const util_1 = require("@cardano-sdk/util");
|
|
5
5
|
const formatMessage = (detail) => {
|
|
6
6
|
const messageDetail = detail ? `: ${detail}` : '';
|
|
7
7
|
return `Proof generation failure${messageDetail}`;
|
|
8
8
|
};
|
|
9
|
-
class ProofGenerationError extends
|
|
9
|
+
class ProofGenerationError extends util_1.ComposableError {
|
|
10
10
|
constructor(detail, innerError) {
|
|
11
11
|
super(formatMessage(detail), innerError);
|
|
12
12
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TransportError = void 0;
|
|
4
|
-
const
|
|
4
|
+
const util_1 = require("@cardano-sdk/util");
|
|
5
5
|
const formatMessage = (detail) => {
|
|
6
6
|
const messageDetail = detail ? `: ${detail}` : '';
|
|
7
7
|
return `Transport failure${messageDetail}`;
|
|
8
8
|
};
|
|
9
|
-
class TransportError extends
|
|
9
|
+
class TransportError extends util_1.ComposableError {
|
|
10
10
|
constructor(detail, innerError) {
|
|
11
11
|
super(formatMessage(detail), innerError);
|
|
12
12
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { GetPassphrase, KeyAgent, KeyAgentDependencies, SerializableInMemoryKeyAgentData, SerializableKeyAgentData, SerializableLedgerKeyAgentData, SerializableTrezorKeyAgentData } from './types';
|
|
2
2
|
export interface RestoreInMemoryKeyAgentProps {
|
|
3
|
-
|
|
3
|
+
getPassphrase?: GetPassphrase;
|
|
4
4
|
}
|
|
5
|
-
export declare function restoreKeyAgent(data: SerializableInMemoryKeyAgentData, dependencies: KeyAgentDependencies,
|
|
6
|
-
export declare function restoreKeyAgent(data: SerializableKeyAgentData, dependencies: KeyAgentDependencies,
|
|
5
|
+
export declare function restoreKeyAgent(data: SerializableInMemoryKeyAgentData, dependencies: KeyAgentDependencies, getPassphrase: GetPassphrase): Promise<KeyAgent>;
|
|
6
|
+
export declare function restoreKeyAgent(data: SerializableKeyAgentData, dependencies: KeyAgentDependencies, getPassphrase?: GetPassphrase): Promise<KeyAgent>;
|
|
7
7
|
export declare function restoreKeyAgent(data: SerializableLedgerKeyAgentData, dependencies: KeyAgentDependencies): Promise<KeyAgent>;
|
|
8
8
|
export declare function restoreKeyAgent(data: SerializableTrezorKeyAgentData, dependencies: KeyAgentDependencies): Promise<KeyAgent>;
|
|
9
9
|
//# sourceMappingURL=restoreKeyAgent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"restoreKeyAgent.d.ts","sourceRoot":"","sources":["../../src/restoreKeyAgent.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"restoreKeyAgent.d.ts","sourceRoot":"","sources":["../../src/restoreKeyAgent.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,aAAa,EAEb,QAAQ,EACR,oBAAoB,EAEpB,gCAAgC,EAChC,wBAAwB,EACxB,8BAA8B,EAC9B,8BAA8B,EAC/B,MAAM,SAAS,CAAC;AASjB,MAAM,WAAW,4BAA4B;IAI3C,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AA0BD,wBAAgB,eAAe,CAC7B,IAAI,EAAE,gCAAgC,EACtC,YAAY,EAAE,oBAAoB,EAClC,aAAa,EAAE,aAAa,GAC3B,OAAO,CAAC,QAAQ,CAAC,CAAC;AACrB,wBAAgB,eAAe,CAC7B,IAAI,EAAE,wBAAwB,EAC9B,YAAY,EAAE,oBAAoB,EAClC,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC,QAAQ,CAAC,CAAC;AACrB,wBAAgB,eAAe,CAC7B,IAAI,EAAE,8BAA8B,EACpC,YAAY,EAAE,oBAAoB,GACjC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACrB,wBAAgB,eAAe,CAC7B,IAAI,EAAE,8BAA8B,EACpC,YAAY,EAAE,oBAAoB,GACjC,OAAO,CAAC,QAAQ,CAAC,CAAC"}
|
|
@@ -28,17 +28,17 @@ const migrateSerializableData = (data, logger) => ({
|
|
|
28
28
|
stakeKeyDerivationPath: address.stakeKeyDerivationPath || util_1.STAKE_KEY_DERIVATION_PATH
|
|
29
29
|
}))
|
|
30
30
|
});
|
|
31
|
-
async function restoreKeyAgent(dataArg, dependencies,
|
|
31
|
+
async function restoreKeyAgent(dataArg, dependencies, getPassphrase) {
|
|
32
32
|
const data = migrateSerializableData(dataArg, dependencies.logger);
|
|
33
33
|
switch (data.__typename) {
|
|
34
34
|
case types_1.KeyAgentType.InMemory: {
|
|
35
35
|
if (!data.encryptedRootPrivateKeyBytes || data.encryptedRootPrivateKeyBytes.length !== 156) {
|
|
36
36
|
throw new errors_1.InvalidSerializableDataError('Expected encrypted root private key in "agentData" for InMemoryKeyAgent"');
|
|
37
37
|
}
|
|
38
|
-
if (!
|
|
39
|
-
throw new errors_1.InvalidSerializableDataError('Expected "
|
|
38
|
+
if (!getPassphrase) {
|
|
39
|
+
throw new errors_1.InvalidSerializableDataError('Expected "getPassphrase" in RestoreKeyAgentProps for InMemoryKeyAgent"');
|
|
40
40
|
}
|
|
41
|
-
return new InMemoryKeyAgent_1.InMemoryKeyAgent({ ...data,
|
|
41
|
+
return new InMemoryKeyAgent_1.InMemoryKeyAgent({ ...data, getPassphrase }, dependencies);
|
|
42
42
|
}
|
|
43
43
|
case types_1.KeyAgentType.Ledger: {
|
|
44
44
|
return new LedgerKeyAgent_1.LedgerKeyAgent(data, dependencies);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"restoreKeyAgent.js","sourceRoot":"","sources":["../../src/restoreKeyAgent.ts"],"names":[],"mappings":";;;AAEA,4CAA4C;AAC5C,mCAUiB;AACjB,yDAAsD;AACtD,qCAAwD;AACxD,qDAAkD;AAElD,iCAAmD;AACnD,qDAAkD;AAWlD,MAAM,uBAAuB,GAAG,CAAqC,IAAS,EAAE,MAAc,EAAK,EAAE,CAAC,CAAC;IACrG,GAAG,IAAI;IACP,OAAO,EACL,IAAI,CAAC,OAAO;QACZ,CAAC,GAAG,EAAE;YACJ,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;YACpE,OAAO;gBACL,GAAG,IAAI;gBACP,OAAO,EACL,IAAI,CAAC,SAAS,KAAK,cAAO,CAAC,SAAS,CAAC,OAAO;oBAC1C,CAAC,CAAC,cAAO,CAAC,QAAQ,CAAC,OAAO;oBAC1B,CAAC,CAAC,CAAC,GAAG,EAAE;wBACJ,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;wBAClD,OAAO,cAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAClC,CAAC,CAAC,EAAE;aACX,CAAC;QACJ,CAAC,CAAC,EAAE;IACN,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,OAAuB,EAAE,EAAE,CAAC,CAAC;QACpE,GAAG,OAAO;QACV,sBAAsB,EAAE,OAAO,CAAC,sBAAsB,IAAI,gCAAyB;KACpF,CAAC,CAAC;CACJ,CAAC,CAAC;AAyBI,KAAK,UAAU,eAAe,CACnC,OAAU,EACV,YAAkC,EAClC,
|
|
1
|
+
{"version":3,"file":"restoreKeyAgent.js","sourceRoot":"","sources":["../../src/restoreKeyAgent.ts"],"names":[],"mappings":";;;AAEA,4CAA4C;AAC5C,mCAUiB;AACjB,yDAAsD;AACtD,qCAAwD;AACxD,qDAAkD;AAElD,iCAAmD;AACnD,qDAAkD;AAWlD,MAAM,uBAAuB,GAAG,CAAqC,IAAS,EAAE,MAAc,EAAK,EAAE,CAAC,CAAC;IACrG,GAAG,IAAI;IACP,OAAO,EACL,IAAI,CAAC,OAAO;QACZ,CAAC,GAAG,EAAE;YACJ,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;YACpE,OAAO;gBACL,GAAG,IAAI;gBACP,OAAO,EACL,IAAI,CAAC,SAAS,KAAK,cAAO,CAAC,SAAS,CAAC,OAAO;oBAC1C,CAAC,CAAC,cAAO,CAAC,QAAQ,CAAC,OAAO;oBAC1B,CAAC,CAAC,CAAC,GAAG,EAAE;wBACJ,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;wBAClD,OAAO,cAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAClC,CAAC,CAAC,EAAE;aACX,CAAC;QACJ,CAAC,CAAC,EAAE;IACN,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,OAAuB,EAAE,EAAE,CAAC,CAAC;QACpE,GAAG,OAAO;QACV,sBAAsB,EAAE,OAAO,CAAC,sBAAsB,IAAI,gCAAyB;KACpF,CAAC,CAAC;CACJ,CAAC,CAAC;AAyBI,KAAK,UAAU,eAAe,CACnC,OAAU,EACV,YAAkC,EAClC,aAA6B;IAG7B,MAAM,IAAI,GAAG,uBAAuB,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACnE,QAAQ,IAAI,CAAC,UAAU,EAAE;QACvB,KAAK,oBAAY,CAAC,QAAQ,CAAC,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,4BAA4B,IAAI,IAAI,CAAC,4BAA4B,CAAC,MAAM,KAAK,GAAG,EAAE;gBAC1F,MAAM,IAAI,qCAA4B,CACpC,0EAA0E,CAC3E,CAAC;aACH;YACD,IAAI,CAAC,aAAa,EAAE;gBAClB,MAAM,IAAI,qCAA4B,CACpC,wEAAwE,CACzE,CAAC;aACH;YACD,OAAO,IAAI,mCAAgB,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,EAAE,YAAY,CAAC,CAAC;SACvE;QACD,KAAK,oBAAY,CAAC,MAAM,CAAC,CAAC;YACxB,OAAO,IAAI,+BAAc,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;SAC/C;QACD,KAAK,oBAAY,CAAC,MAAM,CAAC,CAAC;YACxB,OAAO,IAAI,+BAAc,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;SAC/C;QACD;YACE,MAAM,IAAI,qCAA4B,CAEpC,sCAAsC,IAAI,CAAC,UAAU,sBAAsB,CAC5E,CAAC;KACL;AACH,CAAC;AAjCD,0CAiCC"}
|