@metamask/profile-sync-controller 29.0.0 → 30.0.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/CHANGELOG.md +21 -1
- package/dist/controllers/authentication/AuthenticationController.cjs +185 -90
- package/dist/controllers/authentication/AuthenticationController.cjs.map +1 -1
- package/dist/controllers/authentication/AuthenticationController.d.cts +22 -4
- package/dist/controllers/authentication/AuthenticationController.d.cts.map +1 -1
- package/dist/controllers/authentication/AuthenticationController.d.mts +22 -4
- package/dist/controllers/authentication/AuthenticationController.d.mts.map +1 -1
- package/dist/controllers/authentication/AuthenticationController.mjs +186 -91
- package/dist/controllers/authentication/AuthenticationController.mjs.map +1 -1
- package/dist/controllers/authentication/mocks/mockResponses.cjs +10 -1
- package/dist/controllers/authentication/mocks/mockResponses.cjs.map +1 -1
- package/dist/controllers/authentication/mocks/mockResponses.d.cts +11 -0
- package/dist/controllers/authentication/mocks/mockResponses.d.cts.map +1 -1
- package/dist/controllers/authentication/mocks/mockResponses.d.mts +11 -0
- package/dist/controllers/authentication/mocks/mockResponses.d.mts.map +1 -1
- package/dist/controllers/authentication/mocks/mockResponses.mjs +9 -1
- package/dist/controllers/authentication/mocks/mockResponses.mjs.map +1 -1
- package/dist/controllers/user-storage/UserStorageController.cjs +22 -23
- package/dist/controllers/user-storage/UserStorageController.cjs.map +1 -1
- package/dist/controllers/user-storage/UserStorageController.d.cts +2 -3
- package/dist/controllers/user-storage/UserStorageController.d.cts.map +1 -1
- package/dist/controllers/user-storage/UserStorageController.d.mts +2 -3
- package/dist/controllers/user-storage/UserStorageController.d.mts.map +1 -1
- package/dist/controllers/user-storage/UserStorageController.mjs +22 -23
- package/dist/controllers/user-storage/UserStorageController.mjs.map +1 -1
- package/dist/sdk/authentication-jwt-bearer/flow-srp.cjs +3 -0
- package/dist/sdk/authentication-jwt-bearer/flow-srp.cjs.map +1 -1
- package/dist/sdk/authentication-jwt-bearer/flow-srp.d.cts +2 -1
- package/dist/sdk/authentication-jwt-bearer/flow-srp.d.cts.map +1 -1
- package/dist/sdk/authentication-jwt-bearer/flow-srp.d.mts +2 -1
- package/dist/sdk/authentication-jwt-bearer/flow-srp.d.mts.map +1 -1
- package/dist/sdk/authentication-jwt-bearer/flow-srp.mjs +4 -1
- package/dist/sdk/authentication-jwt-bearer/flow-srp.mjs.map +1 -1
- package/dist/sdk/authentication-jwt-bearer/services.cjs +44 -1
- package/dist/sdk/authentication-jwt-bearer/services.cjs.map +1 -1
- package/dist/sdk/authentication-jwt-bearer/services.d.cts +16 -1
- package/dist/sdk/authentication-jwt-bearer/services.d.cts.map +1 -1
- package/dist/sdk/authentication-jwt-bearer/services.d.mts +16 -1
- package/dist/sdk/authentication-jwt-bearer/services.d.mts.map +1 -1
- package/dist/sdk/authentication-jwt-bearer/services.mjs +42 -1
- package/dist/sdk/authentication-jwt-bearer/services.mjs.map +1 -1
- package/dist/sdk/authentication-jwt-bearer/types.cjs.map +1 -1
- package/dist/sdk/authentication-jwt-bearer/types.d.cts +20 -1
- package/dist/sdk/authentication-jwt-bearer/types.d.cts.map +1 -1
- package/dist/sdk/authentication-jwt-bearer/types.d.mts +20 -1
- package/dist/sdk/authentication-jwt-bearer/types.d.mts.map +1 -1
- package/dist/sdk/authentication-jwt-bearer/types.mjs.map +1 -1
- package/dist/sdk/authentication.cjs +4 -0
- package/dist/sdk/authentication.cjs.map +1 -1
- package/dist/sdk/authentication.d.cts +2 -1
- package/dist/sdk/authentication.d.cts.map +1 -1
- package/dist/sdk/authentication.d.mts +2 -1
- package/dist/sdk/authentication.d.mts.map +1 -1
- package/dist/sdk/authentication.mjs +4 -0
- package/dist/sdk/authentication.mjs.map +1 -1
- package/dist/sdk/constants.cjs +1 -0
- package/dist/sdk/constants.cjs.map +1 -1
- package/dist/sdk/constants.d.cts +1 -0
- package/dist/sdk/constants.d.cts.map +1 -1
- package/dist/sdk/constants.d.mts +1 -0
- package/dist/sdk/constants.d.mts.map +1 -1
- package/dist/sdk/constants.mjs +1 -0
- package/dist/sdk/constants.mjs.map +1 -1
- package/dist/sdk/errors.cjs +14 -1
- package/dist/sdk/errors.cjs.map +1 -1
- package/dist/sdk/errors.d.cts +9 -0
- package/dist/sdk/errors.d.cts.map +1 -1
- package/dist/sdk/errors.d.mts +9 -0
- package/dist/sdk/errors.d.mts.map +1 -1
- package/dist/sdk/errors.mjs +12 -0
- package/dist/sdk/errors.mjs.map +1 -1
- package/dist/sdk/mocks/auth.cjs +12 -1
- package/dist/sdk/mocks/auth.cjs.map +1 -1
- package/dist/sdk/mocks/auth.d.cts +11 -0
- package/dist/sdk/mocks/auth.d.cts.map +1 -1
- package/dist/sdk/mocks/auth.d.mts +11 -0
- package/dist/sdk/mocks/auth.d.mts.map +1 -1
- package/dist/sdk/mocks/auth.mjs +12 -1
- package/dist/sdk/mocks/auth.mjs.map +1 -1
- package/dist/shared/utils/entropy-source.cjs +37 -0
- package/dist/shared/utils/entropy-source.cjs.map +1 -0
- package/dist/shared/utils/entropy-source.d.cts +22 -0
- package/dist/shared/utils/entropy-source.d.cts.map +1 -0
- package/dist/shared/utils/entropy-source.d.mts +22 -0
- package/dist/shared/utils/entropy-source.d.mts.map +1 -0
- package/dist/shared/utils/entropy-source.mjs +32 -0
- package/dist/shared/utils/entropy-source.mjs.map +1 -0
- package/dist/shared/utils/hd-keyring-seed.cjs +49 -0
- package/dist/shared/utils/hd-keyring-seed.cjs.map +1 -0
- package/dist/shared/utils/hd-keyring-seed.d.cts +27 -0
- package/dist/shared/utils/hd-keyring-seed.d.cts.map +1 -0
- package/dist/shared/utils/hd-keyring-seed.d.mts +27 -0
- package/dist/shared/utils/hd-keyring-seed.d.mts.map +1 -0
- package/dist/shared/utils/hd-keyring-seed.mjs +45 -0
- package/dist/shared/utils/hd-keyring-seed.mjs.map +1 -0
- package/dist/shared/utils/message-signing.cjs +147 -0
- package/dist/shared/utils/message-signing.cjs.map +1 -0
- package/dist/shared/utils/message-signing.d.cts +73 -0
- package/dist/shared/utils/message-signing.d.cts.map +1 -0
- package/dist/shared/utils/message-signing.d.mts +73 -0
- package/dist/shared/utils/message-signing.d.mts.map +1 -0
- package/dist/shared/utils/message-signing.mjs +140 -0
- package/dist/shared/utils/message-signing.mjs.map +1 -0
- package/package.json +8 -8
- package/dist/controllers/authentication/auth-snap-requests.cjs +0 -60
- package/dist/controllers/authentication/auth-snap-requests.cjs.map +0 -1
- package/dist/controllers/authentication/auth-snap-requests.d.cts +0 -27
- package/dist/controllers/authentication/auth-snap-requests.d.cts.map +0 -1
- package/dist/controllers/authentication/auth-snap-requests.d.mts +0 -27
- package/dist/controllers/authentication/auth-snap-requests.d.mts.map +0 -1
- package/dist/controllers/authentication/auth-snap-requests.mjs +0 -54
- package/dist/controllers/authentication/auth-snap-requests.mjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [30.0.0]
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **BREAKING:** Add social identifier pairing after SRP sign-in (`POST /api/v2/profile/pair/identifier`) ([#10128](https://github.com/MetaMask/core/pull/10128))
|
|
15
|
+
- Add `needsSocialPairing?: boolean` to state (defaults `true`; cleared on success or 409 Conflict; left `true` on other failures so the next `performSignIn` retries; cleared without an API call when the user never logged in with a social provider). If `authConnection` is set but the seedless vault is not written yet, the flag stays `true` so onboarding-in-flight sign-ins can retry. Optional in the type so partial-state selectors stay assignable; treat `undefined` as `true`.
|
|
16
|
+
- Add optional `isSocialPairingEnabled` config callback (defaults to `() => false`). When it returns `true`, Google/Apple/Telegram seedless users are paired after SRP login and profile pairing. Telegram never sends `email` (clients store a display name there).
|
|
17
|
+
- Use `SeedlessOnboardingController:getAccessToken` to fetch the social JWT (refreshed when expired).
|
|
18
|
+
- Add `pairSocialIdentifier` to `JwtBearerAuth` / `SRPJwtBearerAuth` and `PairConflictError` for 409 Conflict.
|
|
19
|
+
|
|
20
|
+
### Changed
|
|
21
|
+
|
|
22
|
+
- **BREAKING:** Derive auth and user-storage message-signing keys natively via SIP-6 from HD keyring seeds instead of calling `@metamask/message-signing-snap` through `SnapController`. `AuthenticationController` and `UserStorageController` now require `KeyringController:withKeyringV2Unsafe` and no longer call `SnapController:handleRequest`. The message-signing snap remains for Portfolio / external origins ([#9824](https://github.com/MetaMask/core/pull/9824))
|
|
23
|
+
- Derive native SIP-6 keys with `@noble/hashes` HMAC-SHA-512 instead of Web Crypto, so auth works on React Native, whose SubtleCrypto cannot HMAC.
|
|
24
|
+
- Resolve HD entropy source IDs from `KeyringController` instead of the message-signing snap (`getBearerToken` primary ID, `performSignIn` SRP enumeration) ([#9794](https://github.com/MetaMask/core/pull/9794))
|
|
25
|
+
- Bump `@metamask/keyring-controller` from `^27.1.0` to `^27.1.1` ([#9791](https://github.com/MetaMask/core/pull/9791))
|
|
26
|
+
- Add `@metamask/key-tree` and `@noble/curves`; remove unused `@metamask/snaps-controllers`, `@metamask/snaps-sdk`, and `@metamask/snaps-utils` dependencies ([#9824](https://github.com/MetaMask/core/pull/9824))
|
|
27
|
+
- Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076))
|
|
28
|
+
|
|
10
29
|
## [29.0.0]
|
|
11
30
|
|
|
12
31
|
### Changed
|
|
@@ -905,7 +924,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
905
924
|
|
|
906
925
|
- Initial release
|
|
907
926
|
|
|
908
|
-
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/profile-sync-controller@
|
|
927
|
+
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/profile-sync-controller@30.0.0...HEAD
|
|
928
|
+
[30.0.0]: https://github.com/MetaMask/core/compare/@metamask/profile-sync-controller@29.0.0...@metamask/profile-sync-controller@30.0.0
|
|
909
929
|
[29.0.0]: https://github.com/MetaMask/core/compare/@metamask/profile-sync-controller@28.3.0...@metamask/profile-sync-controller@29.0.0
|
|
910
930
|
[28.3.0]: https://github.com/MetaMask/core/compare/@metamask/profile-sync-controller@28.2.0...@metamask/profile-sync-controller@28.3.0
|
|
911
931
|
[28.2.0]: https://github.com/MetaMask/core/compare/@metamask/profile-sync-controller@28.1.1...@metamask/profile-sync-controller@28.2.0
|
|
@@ -10,16 +10,19 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
|
|
|
10
10
|
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");
|
|
11
11
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
12
12
|
};
|
|
13
|
-
var _AuthenticationController_instances, _AuthenticationController_metametrics, _AuthenticationController_auth, _AuthenticationController_config, _AuthenticationController_isUnlocked,
|
|
13
|
+
var _AuthenticationController_instances, _AuthenticationController_metametrics, _AuthenticationController_auth, _AuthenticationController_config, _AuthenticationController_isUnlocked, _AuthenticationController_profilePairingRequestEpoch, _AuthenticationController_keyringController, _AuthenticationController_getLoginResponseFromState, _AuthenticationController_setLoginResponseToState, _AuthenticationController_assertIsUnlocked, _AuthenticationController_getHdKeyringEntropySourceIds, _AuthenticationController_getPrimaryEntropySourceId, _AuthenticationController_getLoginTag, _AuthenticationController_getLoginIdentifierType, _AuthenticationController_resolveSocialIdentifierType, _AuthenticationController_identifierTypeFromSeedlessState, _AuthenticationController_trySocialPairing, _AuthenticationController_clearNeedsSocialPairing, _AuthenticationController_tryClearNeedsProfilePairing, _AuthenticationController_doPair, _AuthenticationController_pairSrpProfiles, _AuthenticationController_propagateCanonical, _AuthenticationController_getCanonicalProfileId, _AuthenticationController_invalidateSrpSession, _AuthenticationController_getHdKeyringSeed, _AuthenticationController_getPublicKey, _AuthenticationController__signMessageCache, _AuthenticationController_scopedCacheKey, _AuthenticationController_signMessage;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.AuthenticationController = exports.defaultState = void 0;
|
|
16
16
|
const base_controller_1 = require("@metamask/base-controller");
|
|
17
17
|
const index_js_1 = require("../../sdk/index.cjs");
|
|
18
|
-
const
|
|
18
|
+
const entropy_source_js_1 = require("../../shared/utils/entropy-source.cjs");
|
|
19
|
+
const hd_keyring_seed_js_1 = require("../../shared/utils/hd-keyring-seed.cjs");
|
|
20
|
+
const message_signing_js_1 = require("../../shared/utils/message-signing.cjs");
|
|
19
21
|
const controllerName = 'AuthenticationController';
|
|
20
22
|
exports.defaultState = {
|
|
21
23
|
isSignedIn: false,
|
|
22
24
|
needsProfilePairing: true,
|
|
25
|
+
needsSocialPairing: true,
|
|
23
26
|
};
|
|
24
27
|
const metadata = {
|
|
25
28
|
isSignedIn: {
|
|
@@ -34,6 +37,12 @@ const metadata = {
|
|
|
34
37
|
includeInDebugSnapshot: true,
|
|
35
38
|
usedInUi: true,
|
|
36
39
|
},
|
|
40
|
+
needsSocialPairing: {
|
|
41
|
+
includeInStateLogs: true,
|
|
42
|
+
persist: true,
|
|
43
|
+
includeInDebugSnapshot: true,
|
|
44
|
+
usedInUi: true,
|
|
45
|
+
},
|
|
37
46
|
srpSessionData: {
|
|
38
47
|
// Remove access token from state logs
|
|
39
48
|
includeInStateLogs: (srpSessionData) => {
|
|
@@ -87,9 +96,9 @@ class AuthenticationController extends base_controller_1.BaseController {
|
|
|
87
96
|
_AuthenticationController_auth.set(this, void 0);
|
|
88
97
|
_AuthenticationController_config.set(this, {
|
|
89
98
|
env: index_js_1.Env.PRD,
|
|
99
|
+
isSocialPairingEnabled: () => false,
|
|
90
100
|
});
|
|
91
101
|
_AuthenticationController_isUnlocked.set(this, false);
|
|
92
|
-
_AuthenticationController_cachedPrimaryEntropySourceId.set(this, void 0);
|
|
93
102
|
// Bumped by `requestProfilePairing`. `performSignIn` snapshots this
|
|
94
103
|
// before its first await; if it changes mid-flight we must NOT clear
|
|
95
104
|
// `needsProfilePairing` (the rearm signal wins).
|
|
@@ -106,13 +115,14 @@ class AuthenticationController extends base_controller_1.BaseController {
|
|
|
106
115
|
});
|
|
107
116
|
},
|
|
108
117
|
});
|
|
109
|
-
|
|
118
|
+
_AuthenticationController__signMessageCache.set(this, {});
|
|
110
119
|
if (!metametrics) {
|
|
111
120
|
throw new Error('`metametrics` field is required');
|
|
112
121
|
}
|
|
113
122
|
__classPrivateFieldSet(this, _AuthenticationController_config, {
|
|
114
123
|
...__classPrivateFieldGet(this, _AuthenticationController_config, "f"),
|
|
115
124
|
...config,
|
|
125
|
+
isSocialPairingEnabled: config?.isSocialPairingEnabled ?? __classPrivateFieldGet(this, _AuthenticationController_config, "f").isSocialPairingEnabled,
|
|
116
126
|
}, "f");
|
|
117
127
|
__classPrivateFieldSet(this, _AuthenticationController_metametrics, metametrics, "f");
|
|
118
128
|
__classPrivateFieldSet(this, _AuthenticationController_auth, new index_js_1.JwtBearerAuth({
|
|
@@ -125,8 +135,8 @@ class AuthenticationController extends base_controller_1.BaseController {
|
|
|
125
135
|
setLoginResponse: __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_setLoginResponseToState).bind(this),
|
|
126
136
|
},
|
|
127
137
|
signing: {
|
|
128
|
-
getIdentifier: __classPrivateFieldGet(this, _AuthenticationController_instances, "m",
|
|
129
|
-
signMessage: __classPrivateFieldGet(this, _AuthenticationController_instances, "m",
|
|
138
|
+
getIdentifier: __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_getPublicKey).bind(this),
|
|
139
|
+
signMessage: __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_signMessage).bind(this),
|
|
130
140
|
},
|
|
131
141
|
getLoginTag: __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_getLoginTag).bind(this),
|
|
132
142
|
getLoginIdentifierType: __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_getLoginIdentifierType).bind(this),
|
|
@@ -138,15 +148,15 @@ class AuthenticationController extends base_controller_1.BaseController {
|
|
|
138
148
|
async performSignIn() {
|
|
139
149
|
__classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_assertIsUnlocked).call(this, 'performSignIn');
|
|
140
150
|
const epochAtStart = __classPrivateFieldGet(this, _AuthenticationController_profilePairingRequestEpoch, "f");
|
|
141
|
-
const
|
|
151
|
+
const entropySourceIds = __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_getHdKeyringEntropySourceIds).call(this);
|
|
142
152
|
const accessTokens = [];
|
|
143
153
|
// We iterate sequentially in order to be sure that the first entry
|
|
144
154
|
// is the primary SRP LoginResponse.
|
|
145
|
-
for (const
|
|
155
|
+
for (const entropySourceId of entropySourceIds) {
|
|
146
156
|
const accessToken = await __classPrivateFieldGet(this, _AuthenticationController_auth, "f").getAccessToken(entropySourceId);
|
|
147
157
|
accessTokens.push(accessToken);
|
|
148
158
|
}
|
|
149
|
-
if (
|
|
159
|
+
if (entropySourceIds.length < 2) {
|
|
150
160
|
// Single-SRP wallet: nothing to pair.
|
|
151
161
|
__classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_tryClearNeedsProfilePairing).call(this, epochAtStart);
|
|
152
162
|
}
|
|
@@ -159,6 +169,12 @@ class AuthenticationController extends base_controller_1.BaseController {
|
|
|
159
169
|
// noop
|
|
160
170
|
}
|
|
161
171
|
}
|
|
172
|
+
try {
|
|
173
|
+
await __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_trySocialPairing).call(this, accessTokens[0]);
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
// noop
|
|
177
|
+
}
|
|
162
178
|
return accessTokens;
|
|
163
179
|
}
|
|
164
180
|
/**
|
|
@@ -175,7 +191,6 @@ class AuthenticationController extends base_controller_1.BaseController {
|
|
|
175
191
|
}
|
|
176
192
|
}
|
|
177
193
|
performSignOut() {
|
|
178
|
-
__classPrivateFieldSet(this, _AuthenticationController_cachedPrimaryEntropySourceId, undefined, "f");
|
|
179
194
|
this.update((state) => {
|
|
180
195
|
state.isSignedIn = false;
|
|
181
196
|
state.srpSessionData = undefined;
|
|
@@ -194,7 +209,7 @@ class AuthenticationController extends base_controller_1.BaseController {
|
|
|
194
209
|
*/
|
|
195
210
|
async getBearerToken(entropySourceId) {
|
|
196
211
|
__classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_assertIsUnlocked).call(this, 'getBearerToken');
|
|
197
|
-
const resolvedId = entropySourceId ??
|
|
212
|
+
const resolvedId = entropySourceId ?? __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_getPrimaryEntropySourceId).call(this);
|
|
198
213
|
return await __classPrivateFieldGet(this, _AuthenticationController_auth, "f").getAccessToken(resolvedId);
|
|
199
214
|
}
|
|
200
215
|
/**
|
|
@@ -212,7 +227,7 @@ class AuthenticationController extends base_controller_1.BaseController {
|
|
|
212
227
|
*/
|
|
213
228
|
async getSessionProfile(entropySourceId) {
|
|
214
229
|
__classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_assertIsUnlocked).call(this, 'getSessionProfile');
|
|
215
|
-
const resolvedId = entropySourceId ??
|
|
230
|
+
const resolvedId = entropySourceId ?? __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_getPrimaryEntropySourceId).call(this);
|
|
216
231
|
return await __classPrivateFieldGet(this, _AuthenticationController_auth, "f").getUserProfile(resolvedId);
|
|
217
232
|
}
|
|
218
233
|
/**
|
|
@@ -233,10 +248,10 @@ class AuthenticationController extends base_controller_1.BaseController {
|
|
|
233
248
|
*/
|
|
234
249
|
async refreshCanonicalProfileId() {
|
|
235
250
|
__classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_assertIsUnlocked).call(this, 'refreshCanonicalProfileId');
|
|
236
|
-
const primaryEntropySourceId =
|
|
251
|
+
const primaryEntropySourceId = __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_getPrimaryEntropySourceId).call(this);
|
|
237
252
|
__classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_invalidateSrpSession).call(this, primaryEntropySourceId);
|
|
238
253
|
await __classPrivateFieldGet(this, _AuthenticationController_auth, "f").getAccessToken(primaryEntropySourceId);
|
|
239
|
-
const canonical =
|
|
254
|
+
const canonical = __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_getCanonicalProfileId).call(this);
|
|
240
255
|
if (!canonical) {
|
|
241
256
|
throw new Error('refreshCanonicalProfileId - Unable to resolve canonical profile ID');
|
|
242
257
|
}
|
|
@@ -245,7 +260,7 @@ class AuthenticationController extends base_controller_1.BaseController {
|
|
|
245
260
|
}
|
|
246
261
|
async getUserProfileLineage(entropySourceId) {
|
|
247
262
|
__classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_assertIsUnlocked).call(this, 'getUserProfileLineage');
|
|
248
|
-
const resolvedId = entropySourceId ??
|
|
263
|
+
const resolvedId = entropySourceId ?? __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_getPrimaryEntropySourceId).call(this);
|
|
249
264
|
return await __classPrivateFieldGet(this, _AuthenticationController_auth, "f").getUserProfileLineage(resolvedId);
|
|
250
265
|
}
|
|
251
266
|
/**
|
|
@@ -261,7 +276,7 @@ class AuthenticationController extends base_controller_1.BaseController {
|
|
|
261
276
|
*/
|
|
262
277
|
async getCustomerServiceToken(entropySourceId) {
|
|
263
278
|
__classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_assertIsUnlocked).call(this, 'getCustomerServiceToken');
|
|
264
|
-
const resolvedId = entropySourceId ??
|
|
279
|
+
const resolvedId = entropySourceId ?? __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_getPrimaryEntropySourceId).call(this);
|
|
265
280
|
return await __classPrivateFieldGet(this, _AuthenticationController_auth, "f").getCustomerServiceToken(resolvedId);
|
|
266
281
|
}
|
|
267
282
|
isSignedIn() {
|
|
@@ -269,14 +284,14 @@ class AuthenticationController extends base_controller_1.BaseController {
|
|
|
269
284
|
}
|
|
270
285
|
}
|
|
271
286
|
exports.AuthenticationController = AuthenticationController;
|
|
272
|
-
_AuthenticationController_metametrics = new WeakMap(), _AuthenticationController_auth = new WeakMap(), _AuthenticationController_config = new WeakMap(), _AuthenticationController_isUnlocked = new WeakMap(),
|
|
273
|
-
const resolvedId = entropySourceId ??
|
|
287
|
+
_AuthenticationController_metametrics = new WeakMap(), _AuthenticationController_auth = new WeakMap(), _AuthenticationController_config = new WeakMap(), _AuthenticationController_isUnlocked = new WeakMap(), _AuthenticationController_profilePairingRequestEpoch = new WeakMap(), _AuthenticationController_keyringController = new WeakMap(), _AuthenticationController__signMessageCache = new WeakMap(), _AuthenticationController_instances = new WeakSet(), _AuthenticationController_getLoginResponseFromState = async function _AuthenticationController_getLoginResponseFromState(entropySourceId) {
|
|
288
|
+
const resolvedId = entropySourceId ?? __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_getPrimaryEntropySourceId).call(this);
|
|
274
289
|
if (!this.state.srpSessionData?.[resolvedId]) {
|
|
275
290
|
return null;
|
|
276
291
|
}
|
|
277
292
|
return this.state.srpSessionData[resolvedId];
|
|
278
293
|
}, _AuthenticationController_setLoginResponseToState = async function _AuthenticationController_setLoginResponseToState(loginResponse, entropySourceId) {
|
|
279
|
-
const resolvedId = entropySourceId ??
|
|
294
|
+
const resolvedId = entropySourceId ?? __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_getPrimaryEntropySourceId).call(this);
|
|
280
295
|
const metaMetricsId = await __classPrivateFieldGet(this, _AuthenticationController_metametrics, "f").getMetaMetricsId();
|
|
281
296
|
this.update((state) => {
|
|
282
297
|
state.isSignedIn = true;
|
|
@@ -295,20 +310,12 @@ _AuthenticationController_metametrics = new WeakMap(), _AuthenticationController
|
|
|
295
310
|
if (!__classPrivateFieldGet(this, _AuthenticationController_isUnlocked, "f")) {
|
|
296
311
|
throw new Error(`${methodName} - unable to proceed, wallet is locked`);
|
|
297
312
|
}
|
|
298
|
-
},
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
const
|
|
303
|
-
|
|
304
|
-
throw new Error('#getPrimaryEntropySourceId - No entropy sources found from snap');
|
|
305
|
-
}
|
|
306
|
-
const primaryId = allPublicKeys[0][0];
|
|
307
|
-
if (!primaryId) {
|
|
308
|
-
throw new Error('#getPrimaryEntropySourceId - Primary entropy source ID is undefined');
|
|
309
|
-
}
|
|
310
|
-
__classPrivateFieldSet(this, _AuthenticationController_cachedPrimaryEntropySourceId, primaryId, "f");
|
|
311
|
-
return __classPrivateFieldGet(this, _AuthenticationController_cachedPrimaryEntropySourceId, "f");
|
|
313
|
+
}, _AuthenticationController_getHdKeyringEntropySourceIds = function _AuthenticationController_getHdKeyringEntropySourceIds() {
|
|
314
|
+
const { keyrings } = this.messenger.call('KeyringController:getState');
|
|
315
|
+
return (0, entropy_source_js_1.getHdKeyringEntropySourceIds)(keyrings);
|
|
316
|
+
}, _AuthenticationController_getPrimaryEntropySourceId = function _AuthenticationController_getPrimaryEntropySourceId() {
|
|
317
|
+
const { keyrings } = this.messenger.call('KeyringController:getState');
|
|
318
|
+
return (0, entropy_source_js_1.getPrimaryHdKeyringEntropySourceId)(keyrings);
|
|
312
319
|
}, _AuthenticationController_getLoginTag =
|
|
313
320
|
/**
|
|
314
321
|
* Resolves the SRP login tag for `raw_message`.
|
|
@@ -320,7 +327,7 @@ _AuthenticationController_metametrics = new WeakMap(), _AuthenticationController
|
|
|
320
327
|
* @returns The login tag to append to the signed message.
|
|
321
328
|
*/
|
|
322
329
|
async function _AuthenticationController_getLoginTag(entropySourceId) {
|
|
323
|
-
const primaryEntropySourceId =
|
|
330
|
+
const primaryEntropySourceId = __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_getPrimaryEntropySourceId).call(this);
|
|
324
331
|
const resolvedId = entropySourceId ?? primaryEntropySourceId;
|
|
325
332
|
return resolvedId === primaryEntropySourceId ? 'primary' : 'secondary';
|
|
326
333
|
}, _AuthenticationController_getLoginIdentifierType =
|
|
@@ -343,7 +350,7 @@ async function _AuthenticationController_getLoginTag(entropySourceId) {
|
|
|
343
350
|
* @returns The login identifier type.
|
|
344
351
|
*/
|
|
345
352
|
async function _AuthenticationController_getLoginIdentifierType(entropySourceId) {
|
|
346
|
-
const primaryEntropySourceId =
|
|
353
|
+
const primaryEntropySourceId = __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_getPrimaryEntropySourceId).call(this);
|
|
347
354
|
const resolvedId = entropySourceId ?? primaryEntropySourceId;
|
|
348
355
|
// Social vault authConnection is only associated with the primary source.
|
|
349
356
|
if (resolvedId !== primaryEntropySourceId) {
|
|
@@ -352,26 +359,118 @@ async function _AuthenticationController_getLoginIdentifierType(entropySourceId)
|
|
|
352
359
|
return __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_resolveSocialIdentifierType).call(this);
|
|
353
360
|
}, _AuthenticationController_resolveSocialIdentifierType = function _AuthenticationController_resolveSocialIdentifierType() {
|
|
354
361
|
try {
|
|
355
|
-
|
|
356
|
-
|
|
362
|
+
return __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_identifierTypeFromSeedlessState).call(this, this.messenger.call('SeedlessOnboardingController:getState'));
|
|
363
|
+
}
|
|
364
|
+
catch {
|
|
365
|
+
return 'SRP';
|
|
366
|
+
}
|
|
367
|
+
}, _AuthenticationController_identifierTypeFromSeedlessState = function _AuthenticationController_identifierTypeFromSeedlessState(state) {
|
|
368
|
+
if (state.vault === null || state.vault === undefined) {
|
|
369
|
+
return 'SRP';
|
|
370
|
+
}
|
|
371
|
+
// Match provider strings from SeedlessOnboarding state rather than
|
|
372
|
+
// importing AuthConnection — a value import would load that package
|
|
373
|
+
// (and its heavy deps) whenever this controller is imported.
|
|
374
|
+
switch (state.authConnection) {
|
|
375
|
+
case 'google':
|
|
376
|
+
return 'GOOGLE';
|
|
377
|
+
case 'apple':
|
|
378
|
+
return 'APPLE';
|
|
379
|
+
case 'telegram':
|
|
380
|
+
return 'TELEGRAM';
|
|
381
|
+
default:
|
|
357
382
|
return 'SRP';
|
|
383
|
+
}
|
|
384
|
+
}, _AuthenticationController_trySocialPairing =
|
|
385
|
+
/**
|
|
386
|
+
* Attaches a Google/Apple/Telegram social identifier to the primary SRP
|
|
387
|
+
* profile via `POST /api/v2/profile/pair/identifier`.
|
|
388
|
+
*
|
|
389
|
+
* Runs only when `isSocialPairingEnabled()` is true and
|
|
390
|
+
* `needsSocialPairing` is not `false` (`undefined` is treated as true).
|
|
391
|
+
* No social provider (`authConnection` unset) → clear the flag (nothing
|
|
392
|
+
* to pair). Social provider set but vault missing → skip (onboarding
|
|
393
|
+
* still in flight). Google without email → skip (API requires it).
|
|
394
|
+
* Telegram never sends `email` (the field holds a display name, not an
|
|
395
|
+
* address). Missing social JWT → skip. 409 Conflict → clear the flag
|
|
396
|
+
* (identifier already owned; retry is pointless). Other errors
|
|
397
|
+
* propagate so the caller can swallow them and leave the flag set for
|
|
398
|
+
* retry.
|
|
399
|
+
*
|
|
400
|
+
* @param primaryAccessToken - Primary SRP OIDC access token used as the
|
|
401
|
+
* Bearer credential. The profile associated with this JWT becomes the
|
|
402
|
+
* canonical owner of the social identifier.
|
|
403
|
+
*/
|
|
404
|
+
async function _AuthenticationController_trySocialPairing(primaryAccessToken) {
|
|
405
|
+
if (!__classPrivateFieldGet(this, _AuthenticationController_config, "f").isSocialPairingEnabled() ||
|
|
406
|
+
this.state.needsSocialPairing === false ||
|
|
407
|
+
!primaryAccessToken) {
|
|
408
|
+
return;
|
|
409
|
+
}
|
|
410
|
+
let seedlessState;
|
|
411
|
+
try {
|
|
412
|
+
seedlessState = this.messenger.call('SeedlessOnboardingController:getState');
|
|
413
|
+
}
|
|
414
|
+
catch {
|
|
415
|
+
// Controller missing or getState failed — retry next performSignIn.
|
|
416
|
+
return;
|
|
417
|
+
}
|
|
418
|
+
// `SRP` here does not describe the vault: it is the mapping's "no social
|
|
419
|
+
// identity" result, returned when there is no seedless vault or the
|
|
420
|
+
// provider is unrecognised. In both cases there is nothing to pair.
|
|
421
|
+
const identifierType = __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_identifierTypeFromSeedlessState).call(this, seedlessState);
|
|
422
|
+
if (identifierType === 'SRP') {
|
|
423
|
+
const { vault, authConnection } = seedlessState;
|
|
424
|
+
// Vault not written yet but a social provider is already known —
|
|
425
|
+
// onboarding is still in flight. Do not clear; retry next sign-in.
|
|
426
|
+
if ((vault === null || vault === undefined) && Boolean(authConnection)) {
|
|
427
|
+
return;
|
|
358
428
|
}
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
429
|
+
__classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_clearNeedsSocialPairing).call(this);
|
|
430
|
+
return;
|
|
431
|
+
}
|
|
432
|
+
// Email policy follows the API contract: GOOGLE requires `email` (400
|
|
433
|
+
// without it), APPLE accepts it optionally, TELEGRAM must not send it
|
|
434
|
+
// (clients store a display name in `socialLoginEmail` for Telegram).
|
|
435
|
+
// Clients request the `email` scope for Google, so a missing value is a
|
|
436
|
+
// defensive case rather than an expected one; returning here leaves
|
|
437
|
+
// `needsSocialPairing` set so the next sign-in retries instead of
|
|
438
|
+
// sending a request that would fail.
|
|
439
|
+
const { socialLoginEmail } = seedlessState;
|
|
440
|
+
let email;
|
|
441
|
+
if (identifierType === 'GOOGLE') {
|
|
442
|
+
if (!socialLoginEmail) {
|
|
443
|
+
return;
|
|
371
444
|
}
|
|
445
|
+
email = socialLoginEmail;
|
|
372
446
|
}
|
|
373
|
-
|
|
374
|
-
|
|
447
|
+
else if (identifierType === 'APPLE') {
|
|
448
|
+
email = socialLoginEmail;
|
|
449
|
+
}
|
|
450
|
+
const socialJwt = await this.messenger.call('SeedlessOnboardingController:getAccessToken');
|
|
451
|
+
if (socialJwt === undefined || socialJwt === '') {
|
|
452
|
+
return;
|
|
453
|
+
}
|
|
454
|
+
try {
|
|
455
|
+
await __classPrivateFieldGet(this, _AuthenticationController_auth, "f").pairSocialIdentifier({
|
|
456
|
+
identifierType,
|
|
457
|
+
socialJwt,
|
|
458
|
+
...(email ? { email } : {}),
|
|
459
|
+
}, primaryAccessToken);
|
|
460
|
+
__classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_clearNeedsSocialPairing).call(this);
|
|
461
|
+
}
|
|
462
|
+
catch (error) {
|
|
463
|
+
if (error instanceof index_js_1.PairConflictError) {
|
|
464
|
+
__classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_clearNeedsSocialPairing).call(this);
|
|
465
|
+
return;
|
|
466
|
+
}
|
|
467
|
+
throw error;
|
|
468
|
+
}
|
|
469
|
+
}, _AuthenticationController_clearNeedsSocialPairing = function _AuthenticationController_clearNeedsSocialPairing() {
|
|
470
|
+
if (this.state.needsSocialPairing !== false) {
|
|
471
|
+
this.update((state) => {
|
|
472
|
+
state.needsSocialPairing = false;
|
|
473
|
+
});
|
|
375
474
|
}
|
|
376
475
|
}, _AuthenticationController_tryClearNeedsProfilePairing = function _AuthenticationController_tryClearNeedsProfilePairing(epochAtStart) {
|
|
377
476
|
if (__classPrivateFieldGet(this, _AuthenticationController_profilePairingRequestEpoch, "f") !== epochAtStart) {
|
|
@@ -395,9 +494,9 @@ async function _AuthenticationController_getLoginIdentifierType(entropySourceId)
|
|
|
395
494
|
* pair API call was in-flight.
|
|
396
495
|
*/
|
|
397
496
|
async function _AuthenticationController_doPair(accessTokens, epochAtStart) {
|
|
398
|
-
const previousCanonical =
|
|
497
|
+
const previousCanonical = __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_getCanonicalProfileId).call(this);
|
|
399
498
|
const profileAliases = await __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_pairSrpProfiles).call(this, accessTokens);
|
|
400
|
-
const newCanonical =
|
|
499
|
+
const newCanonical = __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_getCanonicalProfileId).call(this);
|
|
401
500
|
// If somehow we cannot compute the new canonical profile ID after pairing,
|
|
402
501
|
// we just return now and do not update the `needsProfilePairing` flag.
|
|
403
502
|
if (!newCanonical) {
|
|
@@ -433,18 +532,8 @@ async function _AuthenticationController_doPair(accessTokens, epochAtStart) {
|
|
|
433
532
|
}
|
|
434
533
|
}
|
|
435
534
|
});
|
|
436
|
-
}, _AuthenticationController_getCanonicalProfileId =
|
|
437
|
-
|
|
438
|
-
* Returns the canonical profile id from the primary SRP's cached session.
|
|
439
|
-
* Returns `null` when no session exists yet for the primary SRP.
|
|
440
|
-
*
|
|
441
|
-
* Always reads from the primary SRP because the canonical is shared across
|
|
442
|
-
* all paired SRPs after `#propagateCanonical`.
|
|
443
|
-
*
|
|
444
|
-
* @returns The canonical profile id, or `null` if unavailable.
|
|
445
|
-
*/
|
|
446
|
-
async function _AuthenticationController_getCanonicalProfileId() {
|
|
447
|
-
const primaryEntropySourceId = await __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_getPrimaryEntropySourceId).call(this);
|
|
535
|
+
}, _AuthenticationController_getCanonicalProfileId = function _AuthenticationController_getCanonicalProfileId() {
|
|
536
|
+
const primaryEntropySourceId = __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_getPrimaryEntropySourceId).call(this);
|
|
448
537
|
return (this.state.srpSessionData?.[primaryEntropySourceId]?.profile
|
|
449
538
|
?.canonicalProfileId ?? null);
|
|
450
539
|
}, _AuthenticationController_invalidateSrpSession = function _AuthenticationController_invalidateSrpSession(entropySourceId) {
|
|
@@ -457,45 +546,51 @@ async function _AuthenticationController_getCanonicalProfileId() {
|
|
|
457
546
|
entry.profile.canonicalProfileId = '';
|
|
458
547
|
}
|
|
459
548
|
});
|
|
460
|
-
},
|
|
549
|
+
}, _AuthenticationController_getHdKeyringSeed =
|
|
461
550
|
/**
|
|
462
|
-
*
|
|
551
|
+
* Reads the BIP-39 seed for an HD entropy source from KeyringController.
|
|
463
552
|
*
|
|
464
|
-
* @param entropySourceId -
|
|
465
|
-
*
|
|
466
|
-
* @returns The
|
|
553
|
+
* @param entropySourceId - Entropy source ID. Defaults to the primary HD
|
|
554
|
+
* keyring.
|
|
555
|
+
* @returns The HD keyring seed.
|
|
467
556
|
*/
|
|
468
|
-
async function
|
|
469
|
-
__classPrivateFieldGet(this, _AuthenticationController_instances, "m",
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
}, _AuthenticationController_snapGetAllPublicKeys =
|
|
557
|
+
async function _AuthenticationController_getHdKeyringSeed(entropySourceId) {
|
|
558
|
+
const resolvedId = entropySourceId ?? __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_getPrimaryEntropySourceId).call(this);
|
|
559
|
+
return (0, hd_keyring_seed_js_1.getHdKeyringSeed)(this.messenger, resolvedId);
|
|
560
|
+
}, _AuthenticationController_getPublicKey =
|
|
473
561
|
/**
|
|
474
|
-
* Returns
|
|
562
|
+
* Returns the message-signing public key via native SIP-6 derivation
|
|
563
|
+
* (same key as `@metamask/message-signing-snap` with empty salt).
|
|
475
564
|
*
|
|
476
|
-
* @
|
|
565
|
+
* @param entropySourceId - The entropy source ID used to derive the key,
|
|
566
|
+
* when multiple sources are available (Multi-SRP).
|
|
567
|
+
* @returns The public key hex.
|
|
477
568
|
*/
|
|
478
|
-
async function
|
|
479
|
-
__classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_assertIsUnlocked).call(this, '#
|
|
480
|
-
const
|
|
481
|
-
return
|
|
482
|
-
},
|
|
569
|
+
async function _AuthenticationController_getPublicKey(entropySourceId) {
|
|
570
|
+
__classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_assertIsUnlocked).call(this, '#getPublicKey');
|
|
571
|
+
const seed = await __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_getHdKeyringSeed).call(this, entropySourceId);
|
|
572
|
+
return (0, message_signing_js_1.getMessageSigningPublicKey)(seed);
|
|
573
|
+
}, _AuthenticationController_scopedCacheKey = function _AuthenticationController_scopedCacheKey(message, entropySourceId) {
|
|
574
|
+
return `${entropySourceId ?? __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_getPrimaryEntropySourceId).call(this)}:${message}`;
|
|
575
|
+
}, _AuthenticationController_signMessage =
|
|
483
576
|
/**
|
|
484
|
-
* Signs a
|
|
577
|
+
* Signs a `metamask:…` message with the native SIP-6 message-signing key.
|
|
485
578
|
*
|
|
486
579
|
* @param message - A specific tagged message to sign.
|
|
487
580
|
* @param entropySourceId - The entropy source ID used to derive the key,
|
|
488
581
|
* when multiple sources are available (Multi-SRP).
|
|
489
|
-
* @returns
|
|
582
|
+
* @returns Compact secp256k1 signature hex.
|
|
490
583
|
*/
|
|
491
|
-
async function
|
|
584
|
+
async function _AuthenticationController_signMessage(message, entropySourceId) {
|
|
492
585
|
(0, index_js_1.assertMessageStartsWithMetamask)(message);
|
|
493
|
-
|
|
494
|
-
|
|
586
|
+
__classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_assertIsUnlocked).call(this, '#signMessage');
|
|
587
|
+
const cacheKey = __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_scopedCacheKey).call(this, message, entropySourceId);
|
|
588
|
+
if (__classPrivateFieldGet(this, _AuthenticationController__signMessageCache, "f")[cacheKey]) {
|
|
589
|
+
return __classPrivateFieldGet(this, _AuthenticationController__signMessageCache, "f")[cacheKey];
|
|
495
590
|
}
|
|
496
|
-
__classPrivateFieldGet(this, _AuthenticationController_instances, "m",
|
|
497
|
-
const result =
|
|
498
|
-
__classPrivateFieldGet(this,
|
|
591
|
+
const seed = await __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_getHdKeyringSeed).call(this, entropySourceId);
|
|
592
|
+
const result = await (0, message_signing_js_1.signMessageWithMessageSigningKey)(message, seed);
|
|
593
|
+
__classPrivateFieldGet(this, _AuthenticationController__signMessageCache, "f")[cacheKey] = result;
|
|
499
594
|
return result;
|
|
500
595
|
};
|
|
501
596
|
//# sourceMappingURL=AuthenticationController.cjs.map
|