@cardano-sdk/wallet 0.1.8 → 0.2.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 (106) hide show
  1. package/dist/KeyManagement/InMemoryKeyAgent.d.ts +30 -0
  2. package/dist/KeyManagement/InMemoryKeyAgent.d.ts.map +1 -0
  3. package/dist/KeyManagement/InMemoryKeyAgent.js +132 -0
  4. package/dist/KeyManagement/InMemoryKeyAgent.js.map +1 -0
  5. package/dist/KeyManagement/KeyAgentBase.d.ts +16 -0
  6. package/dist/KeyManagement/KeyAgentBase.d.ts.map +1 -0
  7. package/dist/KeyManagement/KeyAgentBase.js +49 -0
  8. package/dist/KeyManagement/KeyAgentBase.js.map +1 -0
  9. package/dist/KeyManagement/cachedGetPassword.d.ts +4 -0
  10. package/dist/KeyManagement/cachedGetPassword.d.ts.map +1 -0
  11. package/dist/KeyManagement/cachedGetPassword.js +18 -0
  12. package/dist/KeyManagement/cachedGetPassword.js.map +1 -0
  13. package/dist/KeyManagement/emip3.d.ts +5 -0
  14. package/dist/KeyManagement/emip3.d.ts.map +1 -0
  15. package/dist/KeyManagement/emip3.js +48 -0
  16. package/dist/KeyManagement/emip3.js.map +1 -0
  17. package/dist/KeyManagement/errors/AuthenticationError.d.ts +6 -0
  18. package/dist/KeyManagement/errors/AuthenticationError.d.ts.map +1 -0
  19. package/dist/KeyManagement/errors/AuthenticationError.js +16 -0
  20. package/dist/KeyManagement/errors/AuthenticationError.js.map +1 -0
  21. package/dist/KeyManagement/errors/InvalidMnemonicError.d.ts +5 -0
  22. package/dist/KeyManagement/errors/InvalidMnemonicError.d.ts.map +1 -0
  23. package/dist/KeyManagement/errors/InvalidMnemonicError.js +13 -0
  24. package/dist/KeyManagement/errors/InvalidMnemonicError.js.map +1 -0
  25. package/dist/KeyManagement/errors/InvalidSerializableDataError .d.ts +5 -0
  26. package/dist/KeyManagement/errors/InvalidSerializableDataError .d.ts.map +1 -0
  27. package/dist/KeyManagement/errors/InvalidSerializableDataError .js +15 -0
  28. package/dist/KeyManagement/errors/InvalidSerializableDataError .js.map +1 -0
  29. package/dist/KeyManagement/errors/index.d.ts +3 -1
  30. package/dist/KeyManagement/errors/index.d.ts.map +1 -1
  31. package/dist/KeyManagement/errors/index.js +13 -3
  32. package/dist/KeyManagement/errors/index.js.map +1 -1
  33. package/dist/KeyManagement/index.d.ts +6 -2
  34. package/dist/KeyManagement/index.d.ts.map +1 -1
  35. package/dist/KeyManagement/index.js +6 -2
  36. package/dist/KeyManagement/index.js.map +1 -1
  37. package/dist/KeyManagement/restoreKeyAgent.d.ts +7 -0
  38. package/dist/KeyManagement/restoreKeyAgent.d.ts.map +1 -0
  39. package/dist/KeyManagement/restoreKeyAgent.js +30 -0
  40. package/dist/KeyManagement/restoreKeyAgent.js.map +1 -0
  41. package/dist/KeyManagement/types.d.ts +44 -15
  42. package/dist/KeyManagement/types.d.ts.map +1 -1
  43. package/dist/KeyManagement/types.js +13 -6
  44. package/dist/KeyManagement/types.js.map +1 -1
  45. package/dist/KeyManagement/util.d.ts +4 -0
  46. package/dist/KeyManagement/util.d.ts.map +1 -1
  47. package/dist/KeyManagement/util.js +8 -2
  48. package/dist/KeyManagement/util.js.map +1 -1
  49. package/dist/SingleAddressWallet.d.ts +8 -8
  50. package/dist/SingleAddressWallet.d.ts.map +1 -1
  51. package/dist/SingleAddressWallet.js +74 -44
  52. package/dist/SingleAddressWallet.js.map +1 -1
  53. package/dist/Transaction/createTransactionInternals.d.ts +2 -3
  54. package/dist/Transaction/createTransactionInternals.d.ts.map +1 -1
  55. package/dist/Transaction/createTransactionInternals.js +5 -6
  56. package/dist/Transaction/createTransactionInternals.js.map +1 -1
  57. package/dist/services/AssetsTracker.d.ts +2 -1
  58. package/dist/services/AssetsTracker.d.ts.map +1 -1
  59. package/dist/services/AssetsTracker.js +1 -4
  60. package/dist/services/AssetsTracker.js.map +1 -1
  61. package/dist/services/DelegationTracker/DelegationTracker.d.ts +1 -1
  62. package/dist/services/DelegationTracker/DelegationTracker.d.ts.map +1 -1
  63. package/dist/services/DelegationTracker/DelegationTracker.js.map +1 -1
  64. package/dist/services/DelegationTracker/RewardAccounts.d.ts +1 -1
  65. package/dist/services/DelegationTracker/RewardAccounts.d.ts.map +1 -1
  66. package/dist/services/DelegationTracker/RewardAccounts.js +1 -1
  67. package/dist/services/DelegationTracker/RewardAccounts.js.map +1 -1
  68. package/dist/services/DelegationTracker/RewardsHistory.d.ts +1 -2
  69. package/dist/services/DelegationTracker/RewardsHistory.d.ts.map +1 -1
  70. package/dist/services/DelegationTracker/RewardsHistory.js.map +1 -1
  71. package/dist/services/DelegationTracker/transactionCertificates.d.ts +1 -1
  72. package/dist/services/DelegationTracker/transactionCertificates.d.ts.map +1 -1
  73. package/dist/services/DelegationTracker/transactionCertificates.js +1 -1
  74. package/dist/services/DelegationTracker/transactionCertificates.js.map +1 -1
  75. package/dist/services/TransactionsTracker.d.ts.map +1 -1
  76. package/dist/services/TransactionsTracker.js +2 -3
  77. package/dist/services/TransactionsTracker.js.map +1 -1
  78. package/dist/services/index.d.ts +0 -1
  79. package/dist/services/index.d.ts.map +1 -1
  80. package/dist/services/index.js +0 -1
  81. package/dist/services/index.js.map +1 -1
  82. package/dist/services/types.d.ts +9 -2
  83. package/dist/services/types.d.ts.map +1 -1
  84. package/dist/services/types.js +9 -1
  85. package/dist/services/types.js.map +1 -1
  86. package/dist/services/util/trigger.d.ts +2 -2
  87. package/dist/services/util/trigger.d.ts.map +1 -1
  88. package/dist/services/util/trigger.js +5 -5
  89. package/dist/services/util/trigger.js.map +1 -1
  90. package/dist/types.d.ts +22 -2
  91. package/dist/types.d.ts.map +1 -1
  92. package/dist/types.js +5 -0
  93. package/dist/types.js.map +1 -1
  94. package/package.json +8 -4
  95. package/dist/KeyManagement/InMemoryKeyManager.d.ts +0 -9
  96. package/dist/KeyManagement/InMemoryKeyManager.d.ts.map +0 -1
  97. package/dist/KeyManagement/InMemoryKeyManager.js +0 -94
  98. package/dist/KeyManagement/InMemoryKeyManager.js.map +0 -1
  99. package/dist/KeyManagement/errors/InvalidMnemonic.d.ts +0 -5
  100. package/dist/KeyManagement/errors/InvalidMnemonic.d.ts.map +0 -1
  101. package/dist/KeyManagement/errors/InvalidMnemonic.js +0 -13
  102. package/dist/KeyManagement/errors/InvalidMnemonic.js.map +0 -1
  103. package/dist/services/TransactionError.d.ts +0 -15
  104. package/dist/services/TransactionError.d.ts.map +0 -1
  105. package/dist/services/TransactionError.js +0 -23
  106. package/dist/services/TransactionError.js.map +0 -1
@@ -0,0 +1,30 @@
1
+ import { AccountKeyDerivationPath, GetPassword, HexBlob, KeyAgentType, SerializableKeyAgentData, SignBlobResult } from './types';
2
+ import { Cardano } from '@cardano-sdk/core';
3
+ import { KeyAgentBase } from './KeyAgentBase';
4
+ export interface InMemoryKeyAgentProps {
5
+ networkId: Cardano.NetworkId;
6
+ accountIndex: number;
7
+ encryptedRootPrivateKey: Uint8Array;
8
+ getPassword: GetPassword;
9
+ }
10
+ export interface FromBip39MnemonicWordsProps {
11
+ networkId: Cardano.NetworkId;
12
+ mnemonicWords: string[];
13
+ mnemonic2ndFactorPassphrase?: Uint8Array;
14
+ getPassword: GetPassword;
15
+ accountIndex?: number;
16
+ }
17
+ export declare class InMemoryKeyAgent extends KeyAgentBase {
18
+ #private;
19
+ constructor({ networkId, accountIndex, encryptedRootPrivateKey, getPassword }: InMemoryKeyAgentProps);
20
+ get __typename(): KeyAgentType;
21
+ get serializableData(): SerializableKeyAgentData;
22
+ get networkId(): Cardano.NetworkId;
23
+ get accountIndex(): number;
24
+ getExtendedAccountPublicKey(): Promise<Cardano.Bip32PublicKey>;
25
+ signBlob({ index, type }: AccountKeyDerivationPath, blob: HexBlob): Promise<SignBlobResult>;
26
+ derivePublicKey({ index, type }: AccountKeyDerivationPath): Promise<Cardano.Ed25519PublicKey>;
27
+ exportRootPrivateKey(): Promise<Cardano.Bip32PrivateKey>;
28
+ static fromBip39MnemonicWords({ networkId, getPassword, mnemonicWords, mnemonic2ndFactorPassphrase, accountIndex }: FromBip39MnemonicWordsProps): Promise<InMemoryKeyAgent>;
29
+ }
30
+ //# sourceMappingURL=InMemoryKeyAgent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemoryKeyAgent.d.ts","sourceRoot":"","sources":["../../src/KeyManagement/InMemoryKeyAgent.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,WAAW,EACX,OAAO,EACP,YAAY,EACZ,wBAAwB,EACxB,cAAc,EACf,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAO,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAI9C,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,uBAAuB,EAAE,UAAU,CAAC;IACpC,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC;IAC7B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,2BAA2B,CAAC,EAAE,UAAU,CAAC;IACzC,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAUD,qBAAa,gBAAiB,SAAQ,YAAY;;gBAMpC,EAAE,SAAS,EAAE,YAAY,EAAE,uBAAuB,EAAE,WAAW,EAAE,EAAE,qBAAqB;IAQpG,IAAI,UAAU,IAAI,YAAY,CAE7B;IAED,IAAI,gBAAgB,IAAI,wBAAwB,CAO/C;IAED,IAAI,SAAS,IAAI,OAAO,CAAC,SAAS,CAEjC;IACD,IAAI,YAAY,IAAI,MAAM,CAEzB;IAEK,2BAA2B,IAAI,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;IAK9D,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,wBAAwB,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAQ3F,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC;IAU7F,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC;WAQjD,sBAAsB,CAAC,EAClC,SAAS,EACT,WAAW,EACX,aAAa,EACb,2BAA6C,EAC7C,YAAgB,EACjB,EAAE,2BAA2B,GAAG,OAAO,CAAC,gBAAgB,CAAC;CA+B3D"}
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
22
+ if (kind === "m") throw new TypeError("Private method is not writable");
23
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
24
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
25
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
26
+ };
27
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
28
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
29
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
30
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
31
+ };
32
+ var _InMemoryKeyAgent_instances, _InMemoryKeyAgent_networkId, _InMemoryKeyAgent_accountIndex, _InMemoryKeyAgent_encryptedRootPrivateKey, _InMemoryKeyAgent_getPassword, _InMemoryKeyAgent_deriveAccountPrivateKey, _InMemoryKeyAgent_decryptRootPrivateKey;
33
+ Object.defineProperty(exports, "__esModule", { value: true });
34
+ exports.InMemoryKeyAgent = void 0;
35
+ const errors = __importStar(require("./errors"));
36
+ const types_1 = require("./types");
37
+ const errors_1 = require("./errors");
38
+ const core_1 = require("@cardano-sdk/core");
39
+ const KeyAgentBase_1 = require("./KeyAgentBase");
40
+ const emip3_1 = require("./emip3");
41
+ const util_1 = require("./util");
42
+ const getPasswordRethrowTypedError = async (getPassword) => {
43
+ try {
44
+ return await getPassword();
45
+ }
46
+ catch (error) {
47
+ throw new errors_1.AuthenticationError('Failed to enter password', error);
48
+ }
49
+ };
50
+ class InMemoryKeyAgent extends KeyAgentBase_1.KeyAgentBase {
51
+ constructor({ networkId, accountIndex, encryptedRootPrivateKey, getPassword }) {
52
+ super();
53
+ _InMemoryKeyAgent_instances.add(this);
54
+ _InMemoryKeyAgent_networkId.set(this, void 0);
55
+ _InMemoryKeyAgent_accountIndex.set(this, void 0);
56
+ _InMemoryKeyAgent_encryptedRootPrivateKey.set(this, void 0);
57
+ _InMemoryKeyAgent_getPassword.set(this, void 0);
58
+ __classPrivateFieldSet(this, _InMemoryKeyAgent_accountIndex, accountIndex, "f");
59
+ __classPrivateFieldSet(this, _InMemoryKeyAgent_networkId, networkId, "f");
60
+ __classPrivateFieldSet(this, _InMemoryKeyAgent_encryptedRootPrivateKey, encryptedRootPrivateKey, "f");
61
+ __classPrivateFieldSet(this, _InMemoryKeyAgent_getPassword, getPassword, "f");
62
+ }
63
+ get __typename() {
64
+ return types_1.KeyAgentType.InMemory;
65
+ }
66
+ get serializableData() {
67
+ return {
68
+ __typename: types_1.KeyAgentType.InMemory,
69
+ accountIndex: __classPrivateFieldGet(this, _InMemoryKeyAgent_accountIndex, "f"),
70
+ encryptedRootPrivateKeyBytes: [...__classPrivateFieldGet(this, _InMemoryKeyAgent_encryptedRootPrivateKey, "f")],
71
+ networkId: this.networkId
72
+ };
73
+ }
74
+ get networkId() {
75
+ return __classPrivateFieldGet(this, _InMemoryKeyAgent_networkId, "f");
76
+ }
77
+ get accountIndex() {
78
+ return __classPrivateFieldGet(this, _InMemoryKeyAgent_accountIndex, "f");
79
+ }
80
+ async getExtendedAccountPublicKey() {
81
+ const privateKey = await __classPrivateFieldGet(this, _InMemoryKeyAgent_instances, "m", _InMemoryKeyAgent_deriveAccountPrivateKey).call(this);
82
+ return core_1.Cardano.Bip32PublicKey(Buffer.from(privateKey.to_public().as_bytes()).toString('hex'));
83
+ }
84
+ async signBlob({ index, type }, blob) {
85
+ const accountKey = await __classPrivateFieldGet(this, _InMemoryKeyAgent_instances, "m", _InMemoryKeyAgent_deriveAccountPrivateKey).call(this);
86
+ const signingKey = accountKey.derive(type).derive(index).to_raw_key();
87
+ const signature = core_1.Cardano.Ed25519Signature(signingKey.sign(Buffer.from(blob, 'hex')).to_hex());
88
+ const publicKey = core_1.Cardano.Ed25519PublicKey(Buffer.from(signingKey.to_public().as_bytes()).toString('hex'));
89
+ return { publicKey, signature };
90
+ }
91
+ async derivePublicKey({ index, type }) {
92
+ const accountPrivateKey = await __classPrivateFieldGet(this, _InMemoryKeyAgent_instances, "m", _InMemoryKeyAgent_deriveAccountPrivateKey).call(this);
93
+ const cslPublicKey = accountPrivateKey.derive(type).derive(index).to_public().to_raw_key();
94
+ return core_1.Cardano.Ed25519PublicKey(Buffer.from(cslPublicKey.as_bytes()).toString('hex'));
95
+ }
96
+ async exportRootPrivateKey() {
97
+ const rootPrivateKey = await __classPrivateFieldGet(this, _InMemoryKeyAgent_instances, "m", _InMemoryKeyAgent_decryptRootPrivateKey).call(this, true);
98
+ return core_1.Cardano.Bip32PrivateKey(Buffer.from(rootPrivateKey.as_bytes()).toString('hex'));
99
+ }
100
+ static async fromBip39MnemonicWords({ networkId, getPassword, mnemonicWords, mnemonic2ndFactorPassphrase = Buffer.from(''), accountIndex = 0 }) {
101
+ const mnemonic = util_1.joinMnemonicWords(mnemonicWords);
102
+ const validMnemonic = util_1.validateMnemonic(mnemonic);
103
+ if (!validMnemonic)
104
+ throw new errors.InvalidMnemonicError();
105
+ const entropy = Buffer.from(util_1.mnemonicWordsToEntropy(mnemonicWords), 'hex');
106
+ const rootPrivateKey = core_1.CSL.Bip32PrivateKey.from_bip39_entropy(entropy, mnemonic2ndFactorPassphrase);
107
+ const password = await getPasswordRethrowTypedError(getPassword);
108
+ const encryptedRootPrivateKey = await emip3_1.emip3encrypt(rootPrivateKey.as_bytes(), password);
109
+ return new InMemoryKeyAgent({
110
+ accountIndex,
111
+ encryptedRootPrivateKey,
112
+ getPassword,
113
+ networkId
114
+ });
115
+ }
116
+ }
117
+ exports.InMemoryKeyAgent = InMemoryKeyAgent;
118
+ _InMemoryKeyAgent_networkId = new WeakMap(), _InMemoryKeyAgent_accountIndex = new WeakMap(), _InMemoryKeyAgent_encryptedRootPrivateKey = new WeakMap(), _InMemoryKeyAgent_getPassword = new WeakMap(), _InMemoryKeyAgent_instances = new WeakSet(), _InMemoryKeyAgent_deriveAccountPrivateKey = async function _InMemoryKeyAgent_deriveAccountPrivateKey() {
119
+ const rootPrivateKey = await __classPrivateFieldGet(this, _InMemoryKeyAgent_instances, "m", _InMemoryKeyAgent_decryptRootPrivateKey).call(this);
120
+ return rootPrivateKey.derive(util_1.harden(1852)).derive(util_1.harden(1815)).derive(util_1.harden(this.accountIndex));
121
+ }, _InMemoryKeyAgent_decryptRootPrivateKey = async function _InMemoryKeyAgent_decryptRootPrivateKey(noCache) {
122
+ const password = await getPasswordRethrowTypedError(() => __classPrivateFieldGet(this, _InMemoryKeyAgent_getPassword, "f").call(this, noCache));
123
+ let decryptedRootKeyBytes;
124
+ try {
125
+ decryptedRootKeyBytes = await emip3_1.emip3decrypt(__classPrivateFieldGet(this, _InMemoryKeyAgent_encryptedRootPrivateKey, "f"), password);
126
+ }
127
+ catch (error) {
128
+ throw new errors_1.AuthenticationError('Failed to decrypt root private key', error);
129
+ }
130
+ return core_1.CSL.Bip32PrivateKey.from_bytes(decryptedRootKeyBytes);
131
+ };
132
+ //# sourceMappingURL=InMemoryKeyAgent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemoryKeyAgent.js","sourceRoot":"","sources":["../../src/KeyManagement/InMemoryKeyAgent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { AccountAddressDerivationPath, AccountKeyDerivationPath, GroupedAddress, HexBlob, KeyAgent, SerializableKeyAgentData, SignBlobResult } from './types';
2
+ import { CSL, Cardano } from '@cardano-sdk/core';
3
+ import { TxInternals } from '../Transaction';
4
+ export declare abstract class KeyAgentBase implements KeyAgent {
5
+ abstract get networkId(): Cardano.NetworkId;
6
+ abstract get accountIndex(): number;
7
+ abstract get serializableData(): SerializableKeyAgentData;
8
+ abstract getExtendedAccountPublicKey(): Promise<Cardano.Bip32PublicKey>;
9
+ abstract signBlob(derivationPath: AccountKeyDerivationPath, blob: HexBlob): Promise<SignBlobResult>;
10
+ abstract derivePublicKey(derivationPath: AccountKeyDerivationPath): Promise<Cardano.Ed25519PublicKey>;
11
+ abstract exportRootPrivateKey(): Promise<Cardano.Bip32PrivateKey>;
12
+ deriveAddress({ index, type }: AccountAddressDerivationPath): Promise<GroupedAddress>;
13
+ signTransaction({ body, hash }: TxInternals): Promise<Cardano.Signatures>;
14
+ protected deriveCslPublicKey(derivationPath: AccountKeyDerivationPath): Promise<CSL.PublicKey>;
15
+ }
16
+ //# sourceMappingURL=KeyAgentBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeyAgentBase.d.ts","sourceRoot":"","sources":["../../src/KeyManagement/KeyAgentBase.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,cAAc,EACd,OAAO,EACP,QAAQ,EAER,wBAAwB,EACxB,cAAc,EACf,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,8BAAsB,YAAa,YAAW,QAAQ;IACpD,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC;IAC5C,QAAQ,KAAK,YAAY,IAAI,MAAM,CAAC;IACpC,QAAQ,KAAK,gBAAgB,IAAI,wBAAwB,CAAC;IAC1D,QAAQ,CAAC,2BAA2B,IAAI,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;IACvE,QAAQ,CAAC,QAAQ,CAAC,cAAc,EAAE,wBAAwB,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IACnG,QAAQ,CAAC,eAAe,CAAC,cAAc,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACrG,QAAQ,CAAC,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC;IAK3D,aAAa,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,4BAA4B,GAAG,OAAO,CAAC,cAAc,CAAC;IA8BrF,eAAe,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;cAiB/D,kBAAkB,CAAC,cAAc,EAAE,wBAAwB,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;CAIrG"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KeyAgentBase = void 0;
4
+ const types_1 = require("./types");
5
+ const core_1 = require("@cardano-sdk/core");
6
+ class KeyAgentBase {
7
+ async deriveAddress({ index, type }) {
8
+ const derivedPublicPaymentKey = await this.deriveCslPublicKey({
9
+ index,
10
+ type: type
11
+ });
12
+ const publicStakeKey = await this.deriveCslPublicKey({
13
+ index: 0,
14
+ type: types_1.KeyType.Stake
15
+ });
16
+ const stakeKeyCredential = core_1.CSL.StakeCredential.from_keyhash(publicStakeKey.hash());
17
+ const address = core_1.CSL.BaseAddress.new(this.networkId, core_1.CSL.StakeCredential.from_keyhash(derivedPublicPaymentKey.hash()), stakeKeyCredential).to_address();
18
+ const rewardAccount = core_1.CSL.RewardAddress.new(this.networkId, stakeKeyCredential).to_address();
19
+ return {
20
+ accountIndex: this.accountIndex,
21
+ address: core_1.Cardano.Address(address.to_bech32()),
22
+ index,
23
+ networkId: this.networkId,
24
+ rewardAccount: core_1.Cardano.RewardAccount(rewardAccount.to_bech32()),
25
+ type
26
+ };
27
+ }
28
+ async signTransaction({ body, hash }) {
29
+ const blob = types_1.HexBlob(hash.toString());
30
+ const paymentVkeyWitness = await this.signBlob({ index: 0, type: types_1.KeyType.External }, blob);
31
+ const stakeWitnesses = await (async () => {
32
+ if (!body.certificates?.length) {
33
+ return [];
34
+ }
35
+ const { publicKey, signature } = await this.signBlob({ index: 0, type: types_1.KeyType.Stake }, blob);
36
+ return [[publicKey, signature]];
37
+ })();
38
+ return new Map([
39
+ [paymentVkeyWitness.publicKey, paymentVkeyWitness.signature],
40
+ ...stakeWitnesses
41
+ ]);
42
+ }
43
+ async deriveCslPublicKey(derivationPath) {
44
+ const hexPublicKey = await this.derivePublicKey(derivationPath);
45
+ return core_1.CSL.PublicKey.from_bytes(Buffer.from(hexPublicKey, 'hex'));
46
+ }
47
+ }
48
+ exports.KeyAgentBase = KeyAgentBase;
49
+ //# sourceMappingURL=KeyAgentBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeyAgentBase.js","sourceRoot":"","sources":["../../src/KeyManagement/KeyAgentBase.ts"],"names":[],"mappings":";;;AAAA,mCASiB;AACjB,4CAAiD;AAGjD,MAAsB,YAAY;IAYhC,KAAK,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,IAAI,EAAgC;QAC/D,MAAM,uBAAuB,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC;YAC5D,KAAK;YACL,IAAI,EAAE,IAA0B;SACjC,CAAC,CAAC;QAGH,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC;YACnD,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,eAAO,CAAC,KAAK;SACpB,CAAC,CAAC;QACH,MAAM,kBAAkB,GAAG,UAAG,CAAC,eAAe,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;QAEnF,MAAM,OAAO,GAAG,UAAG,CAAC,WAAW,CAAC,GAAG,CACjC,IAAI,CAAC,SAAS,EACd,UAAG,CAAC,eAAe,CAAC,YAAY,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC,EAChE,kBAAkB,CACnB,CAAC,UAAU,EAAE,CAAC;QAEf,MAAM,aAAa,GAAG,UAAG,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC,UAAU,EAAE,CAAC;QAC7F,OAAO;YACL,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,OAAO,EAAE,cAAO,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC7C,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,aAAa,EAAE,cAAO,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;YAC/D,IAAI;SACL,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,IAAI,EAAe;QAE/C,MAAM,IAAI,GAAG,eAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtC,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,eAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;QAC3F,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;YACvC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE;gBAC9B,OAAO,EAAE,CAAC;aACX;YACD,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,eAAO,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;YAC9F,OAAO,CAAC,CAAC,SAAS,EAAE,SAAS,CAAU,CAAC,CAAC;QAC3C,CAAC,CAAC,EAAE,CAAC;QACL,OAAO,IAAI,GAAG,CAAqD;YACjE,CAAC,kBAAkB,CAAC,SAAS,EAAE,kBAAkB,CAAC,SAAS,CAAC;YAC5D,GAAG,cAAc;SAClB,CAAC,CAAC;IACL,CAAC;IAES,KAAK,CAAC,kBAAkB,CAAC,cAAwC;QACzE,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QAChE,OAAO,UAAG,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;IACpE,CAAC;CACF;AA/DD,oCA+DC"}
@@ -0,0 +1,4 @@
1
+ import { GetPassword } from './types';
2
+ import { Milliseconds } from '..';
3
+ export declare const cachedGetPassword: (getPassword: () => Promise<Uint8Array>, cacheDuration: Milliseconds) => GetPassword;
4
+ //# sourceMappingURL=cachedGetPassword.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cachedGetPassword.d.ts","sourceRoot":"","sources":["../../src/KeyManagement/cachedGetPassword.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAElC,eAAO,MAAM,iBAAiB,gBAAiB,MAAM,QAAQ,UAAU,CAAC,iBAAiB,YAAY,KAAG,WAWvG,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cachedGetPassword = void 0;
4
+ const cachedGetPassword = (getPassword, cacheDuration) => {
5
+ let cached;
6
+ let timeout;
7
+ return async (noCache) => {
8
+ if (noCache || !cached) {
9
+ cached = await getPassword();
10
+ if (timeout)
11
+ clearTimeout(timeout);
12
+ timeout = setTimeout(() => (cached = null), cacheDuration);
13
+ }
14
+ return cached;
15
+ };
16
+ };
17
+ exports.cachedGetPassword = cachedGetPassword;
18
+ //# sourceMappingURL=cachedGetPassword.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cachedGetPassword.js","sourceRoot":"","sources":["../../src/KeyManagement/cachedGetPassword.ts"],"names":[],"mappings":";;;AAGO,MAAM,iBAAiB,GAAG,CAAC,WAAsC,EAAE,aAA2B,EAAe,EAAE;IACpH,IAAI,MAAyB,CAAC;IAC9B,IAAI,OAA8B,CAAC;IACnC,OAAO,KAAK,EAAE,OAAO,EAAE,EAAE;QACvB,IAAI,OAAO,IAAI,CAAC,MAAM,EAAE;YACtB,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;YAC7B,IAAI,OAAO;gBAAE,YAAY,CAAC,OAAO,CAAC,CAAC;YACnC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,aAAa,CAAC,CAAC;SAC5D;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,iBAAiB,qBAW5B"}
@@ -0,0 +1,5 @@
1
+ /// <reference types="node" />
2
+ export declare const createPbkdf2Key: (password: Uint8Array, salt: Uint8Array | Uint16Array) => Promise<Buffer>;
3
+ export declare const emip3encrypt: (data: Uint8Array, password: Uint8Array) => Promise<Uint8Array>;
4
+ export declare const emip3decrypt: (encrypted: Uint8Array, password: Uint8Array) => Promise<Uint8Array>;
5
+ //# sourceMappingURL=emip3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emip3.d.ts","sourceRoot":"","sources":["../../src/KeyManagement/emip3.ts"],"names":[],"mappings":";AAWA,eAAO,MAAM,eAAe,aAAoB,UAAU,QAAQ,UAAU,GAAG,WAAW,oBAMvF,CAAC;AAKJ,eAAO,MAAM,YAAY,SAAgB,UAAU,YAAY,UAAU,KAAG,QAAQ,UAAU,CAY7F,CAAC;AAKF,eAAO,MAAM,YAAY,cAAqB,UAAU,YAAY,UAAU,KAAG,QAAQ,UAAU,CAUlG,CAAC"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.emip3decrypt = exports.emip3encrypt = exports.createPbkdf2Key = void 0;
7
+ const pbkdf2_1 = require("pbkdf2");
8
+ const chacha_1 = __importDefault(require("chacha"));
9
+ const get_random_values_1 = __importDefault(require("get-random-values"));
10
+ const KEY_LENGTH = 32;
11
+ const NONCE_LENGTH = 12;
12
+ const PBKDF2_ITERATIONS = 19162;
13
+ const SALT_LENGTH = 32;
14
+ const TAG_LENGTH = 16;
15
+ const AAD = Buffer.from('', 'hex');
16
+ const createPbkdf2Key = async (password, salt) => await new Promise((resolve, reject) => pbkdf2_1.pbkdf2(password, salt, PBKDF2_ITERATIONS, KEY_LENGTH, 'sha512', (err, derivedKey) => {
17
+ if (err)
18
+ return reject(err);
19
+ resolve(derivedKey);
20
+ }));
21
+ exports.createPbkdf2Key = createPbkdf2Key;
22
+ const emip3encrypt = async (data, password) => {
23
+ const salt = new Uint8Array(SALT_LENGTH);
24
+ get_random_values_1.default(salt);
25
+ const key = await exports.createPbkdf2Key(password, salt);
26
+ const nonce = new Uint8Array(NONCE_LENGTH);
27
+ get_random_values_1.default(nonce);
28
+ const cipher = chacha_1.default.createCipher(key, nonce);
29
+ cipher.setAAD(AAD, { plaintextLength: data.length });
30
+ const head = cipher.update(data);
31
+ const final = cipher.final();
32
+ const tag = cipher.getAuthTag();
33
+ return Buffer.concat([salt, nonce, tag, head, final]);
34
+ };
35
+ exports.emip3encrypt = emip3encrypt;
36
+ const emip3decrypt = async (encrypted, password) => {
37
+ const salt = encrypted.slice(0, SALT_LENGTH);
38
+ const nonce = encrypted.slice(SALT_LENGTH, SALT_LENGTH + NONCE_LENGTH);
39
+ const tag = encrypted.slice(SALT_LENGTH + NONCE_LENGTH, SALT_LENGTH + NONCE_LENGTH + TAG_LENGTH);
40
+ const data = encrypted.slice(SALT_LENGTH + NONCE_LENGTH + TAG_LENGTH);
41
+ const key = await exports.createPbkdf2Key(password, salt);
42
+ const decipher = chacha_1.default.createDecipher(key, nonce);
43
+ decipher.setAuthTag(tag);
44
+ decipher.setAAD(AAD);
45
+ return Buffer.concat([decipher.update(data), decipher.final()]);
46
+ };
47
+ exports.emip3decrypt = emip3decrypt;
48
+ //# sourceMappingURL=emip3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emip3.js","sourceRoot":"","sources":["../../src/KeyManagement/emip3.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { CustomError } from 'ts-custom-error';
2
+ export declare class AuthenticationError extends CustomError {
3
+ innerError?: unknown;
4
+ constructor(detail?: string, innerError?: unknown);
5
+ }
6
+ //# sourceMappingURL=AuthenticationError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthenticationError.d.ts","sourceRoot":"","sources":["../../../src/KeyManagement/errors/AuthenticationError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAO9C,qBAAa,mBAAoB,SAAQ,WAAW;IACd,UAAU,CAAC;gBAAnC,MAAM,CAAC,EAAE,MAAM,EAAS,UAAU,CAAC,SAAS;CAGzD"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuthenticationError = void 0;
4
+ const ts_custom_error_1 = require("ts-custom-error");
5
+ const formatMessage = (detail) => {
6
+ const messageDetail = detail ? `: ${detail}` : '';
7
+ return `Authentication failure${messageDetail}`;
8
+ };
9
+ class AuthenticationError extends ts_custom_error_1.CustomError {
10
+ constructor(detail, innerError) {
11
+ super(formatMessage(detail));
12
+ this.innerError = innerError;
13
+ }
14
+ }
15
+ exports.AuthenticationError = AuthenticationError;
16
+ //# sourceMappingURL=AuthenticationError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthenticationError.js","sourceRoot":"","sources":["../../../src/KeyManagement/errors/AuthenticationError.ts"],"names":[],"mappings":";;;AAAA,qDAA8C;AAE9C,MAAM,aAAa,GAAG,CAAC,MAAe,EAAE,EAAE;IACxC,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAClD,OAAO,yBAAyB,aAAa,EAAE,CAAC;AAClD,CAAC,CAAC;AAEF,MAAa,mBAAoB,SAAQ,6BAAW;IAClD,YAAY,MAAe,EAAS,UAAoB;QACtD,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;QADK,eAAU,GAAV,UAAU,CAAU;IAExD,CAAC;CACF;AAJD,kDAIC"}
@@ -0,0 +1,5 @@
1
+ import { CustomError } from 'ts-custom-error';
2
+ export declare class InvalidMnemonicError extends CustomError {
3
+ constructor();
4
+ }
5
+ //# sourceMappingURL=InvalidMnemonicError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvalidMnemonicError.d.ts","sourceRoot":"","sources":["../../../src/KeyManagement/errors/InvalidMnemonicError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,qBAAa,oBAAqB,SAAQ,WAAW;;CAMpD"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InvalidMnemonicError = void 0;
4
+ const ts_custom_error_1 = require("ts-custom-error");
5
+ class InvalidMnemonicError extends ts_custom_error_1.CustomError {
6
+ constructor() {
7
+ super();
8
+ this.message = 'Invalid Mnemonic';
9
+ this.name = 'InvalidMnemonicError';
10
+ }
11
+ }
12
+ exports.InvalidMnemonicError = InvalidMnemonicError;
13
+ //# sourceMappingURL=InvalidMnemonicError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvalidMnemonicError.js","sourceRoot":"","sources":["../../../src/KeyManagement/errors/InvalidMnemonicError.ts"],"names":[],"mappings":";;;AAAA,qDAA8C;AAE9C,MAAa,oBAAqB,SAAQ,6BAAW;IACnD;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,kBAAkB,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAND,oDAMC"}
@@ -0,0 +1,5 @@
1
+ import { CustomError } from 'ts-custom-error';
2
+ export declare class InvalidSerializableDataError extends CustomError {
3
+ constructor(detail?: string);
4
+ }
5
+ //# sourceMappingURL=InvalidSerializableDataError%20.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvalidSerializableDataError .d.ts","sourceRoot":"","sources":["../../../src/KeyManagement/errors/InvalidSerializableDataError .ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAO9C,qBAAa,4BAA6B,SAAQ,WAAW;gBAC/C,MAAM,CAAC,EAAE,MAAM;CAG5B"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InvalidSerializableDataError = void 0;
4
+ const ts_custom_error_1 = require("ts-custom-error");
5
+ const formatMessage = (detail) => {
6
+ const messageDetail = detail ? `: ${detail}` : '';
7
+ return `Invalid serializable key agent data${messageDetail}`;
8
+ };
9
+ class InvalidSerializableDataError extends ts_custom_error_1.CustomError {
10
+ constructor(detail) {
11
+ super(formatMessage(detail));
12
+ }
13
+ }
14
+ exports.InvalidSerializableDataError = InvalidSerializableDataError;
15
+ //# sourceMappingURL=InvalidSerializableDataError%20.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvalidSerializableDataError .js","sourceRoot":"","sources":["../../../src/KeyManagement/errors/InvalidSerializableDataError .ts"],"names":[],"mappings":";;;AAAA,qDAA8C;AAE9C,MAAM,aAAa,GAAG,CAAC,MAAe,EAAE,EAAE;IACxC,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAClD,OAAO,sCAAsC,aAAa,EAAE,CAAC;AAC/D,CAAC,CAAC;AAEF,MAAa,4BAA6B,SAAQ,6BAAW;IAC3D,YAAY,MAAe;QACzB,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/B,CAAC;CACF;AAJD,oEAIC"}
@@ -1,2 +1,4 @@
1
- export { InvalidMnemonic } from './InvalidMnemonic';
1
+ export * from './InvalidMnemonicError';
2
+ export * from './AuthenticationError';
3
+ export * from './InvalidSerializableDataError ';
2
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/KeyManagement/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/KeyManagement/errors/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iCAAiC,CAAC"}
@@ -1,6 +1,16 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
2
12
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.InvalidMnemonic = void 0;
4
- var InvalidMnemonic_1 = require("./InvalidMnemonic");
5
- Object.defineProperty(exports, "InvalidMnemonic", { enumerable: true, get: function () { return InvalidMnemonic_1.InvalidMnemonic; } });
13
+ __exportStar(require("./InvalidMnemonicError"), exports);
14
+ __exportStar(require("./AuthenticationError"), exports);
15
+ __exportStar(require("./InvalidSerializableDataError "), exports);
6
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/KeyManagement/errors/index.ts"],"names":[],"mappings":";;;AAAA,qDAAoD;AAA3C,kHAAA,eAAe,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/KeyManagement/errors/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAAuC;AACvC,wDAAsC;AACtC,kEAAgD"}
@@ -1,5 +1,9 @@
1
1
  export * as errors from './errors';
2
- export * from './types';
3
- export * from './InMemoryKeyManager';
2
+ export * from './KeyAgentBase';
3
+ export * from './InMemoryKeyAgent';
4
+ export * from './restoreKeyAgent';
4
5
  export * as util from './util';
6
+ export * from './emip3';
7
+ export * from './types';
8
+ export * from './cachedGetPassword';
5
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/KeyManagement/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,sBAAsB,CAAC;AACrC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/KeyManagement/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,qBAAqB,CAAC"}
@@ -24,7 +24,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
25
  exports.util = exports.errors = void 0;
26
26
  exports.errors = __importStar(require("./errors"));
27
- __exportStar(require("./types"), exports);
28
- __exportStar(require("./InMemoryKeyManager"), exports);
27
+ __exportStar(require("./KeyAgentBase"), exports);
28
+ __exportStar(require("./InMemoryKeyAgent"), exports);
29
+ __exportStar(require("./restoreKeyAgent"), exports);
29
30
  exports.util = __importStar(require("./util"));
31
+ __exportStar(require("./emip3"), exports);
32
+ __exportStar(require("./types"), exports);
33
+ __exportStar(require("./cachedGetPassword"), exports);
30
34
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/KeyManagement/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mDAAmC;AACnC,0CAAwB;AACxB,uDAAqC;AACrC,+CAA+B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/KeyManagement/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mDAAmC;AACnC,iDAA+B;AAC/B,qDAAmC;AACnC,oDAAkC;AAClC,+CAA+B;AAC/B,0CAAwB;AACxB,0CAAwB;AACxB,sDAAoC"}
@@ -0,0 +1,7 @@
1
+ import { GetPassword, KeyAgent, SerializableInMemoryKeyAgentData, SerializableKeyAgentData } from './types';
2
+ export interface RestoreInMemoryKeyAgentProps {
3
+ getPassword?: GetPassword;
4
+ }
5
+ export declare function restoreKeyAgent(data: SerializableInMemoryKeyAgentData, getPassword: GetPassword): Promise<KeyAgent>;
6
+ export declare function restoreKeyAgent(data: SerializableKeyAgentData, getPassword?: GetPassword): Promise<KeyAgent>;
7
+ //# sourceMappingURL=restoreKeyAgent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restoreKeyAgent.d.ts","sourceRoot":"","sources":["../../src/KeyManagement/restoreKeyAgent.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,WAAW,EACX,QAAQ,EAER,gCAAgC,EAChC,wBAAwB,EACzB,MAAM,SAAS,CAAC;AAIjB,MAAM,WAAW,4BAA4B;IAI3C,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,gCAAgC,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AACrH,wBAAgB,eAAe,CAAC,IAAI,EAAE,wBAAwB,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.restoreKeyAgent = void 0;
4
+ const types_1 = require("./types");
5
+ const InMemoryKeyAgent_1 = require("./InMemoryKeyAgent");
6
+ const errors_1 = require("./errors");
7
+ async function restoreKeyAgent(data, getPassword) {
8
+ switch (data.__typename) {
9
+ case types_1.KeyAgentType.InMemory: {
10
+ if (!data.encryptedRootPrivateKeyBytes || data.encryptedRootPrivateKeyBytes.length !== 156) {
11
+ throw new errors_1.InvalidSerializableDataError('Expected encrypted root private key in "agentData" for InMemoryKeyAgent"');
12
+ }
13
+ if (!getPassword) {
14
+ throw new errors_1.InvalidSerializableDataError('Expected "getPassword" in RestoreKeyAgentProps for InMemoryKeyAgent"');
15
+ }
16
+ const keyAgent = new InMemoryKeyAgent_1.InMemoryKeyAgent({
17
+ accountIndex: data.accountIndex,
18
+ encryptedRootPrivateKey: new Uint8Array(data.encryptedRootPrivateKeyBytes),
19
+ getPassword,
20
+ networkId: data.networkId
21
+ });
22
+ await keyAgent.getExtendedAccountPublicKey();
23
+ return keyAgent;
24
+ }
25
+ default:
26
+ throw new errors_1.InvalidSerializableDataError(`Restoring key agent of __typename '${data.__typename}' is not implemented`);
27
+ }
28
+ }
29
+ exports.restoreKeyAgent = restoreKeyAgent;
30
+ //# sourceMappingURL=restoreKeyAgent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restoreKeyAgent.js","sourceRoot":"","sources":["../../src/KeyManagement/restoreKeyAgent.ts"],"names":[],"mappings":";;;AAEA,mCAMiB;AACjB,yDAAsD;AACtD,qCAAwD;AAgBjD,KAAK,UAAU,eAAe,CACnC,IAAO,EACP,WAAyB;IAEzB,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,WAAW,EAAE;gBAChB,MAAM,IAAI,qCAA4B,CAAC,sEAAsE,CAAC,CAAC;aAChH;YACD,MAAM,QAAQ,GAAG,IAAI,mCAAgB,CAAC;gBACpC,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,uBAAuB,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,4BAA4B,CAAC;gBAC1E,WAAW;gBACX,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC,CAAC;YACH,MAAM,QAAQ,CAAC,2BAA2B,EAAE,CAAC;YAC7C,OAAO,QAAQ,CAAC;SACjB;QACD;YACE,MAAM,IAAI,qCAA4B,CACpC,sCAAsC,IAAI,CAAC,UAAU,sBAAsB,CAC5E,CAAC;KACL;AACH,CAAC;AA5BD,0CA4BC"}