Skip to content

Commit a02b02d

Browse files
authored
fix sub account get encrypted users (#307)
* fix sub account get encrypted users * run prettier * get access level for sub account public key
1 parent a830b8e commit a02b02d

File tree

1 file changed

+38
-31
lines changed

1 file changed

+38
-31
lines changed

src/app/account.service.ts

Lines changed: 38 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -202,25 +202,6 @@ export class AccountService {
202202
const privateUser = rootUsers[rootPublicKey];
203203

204204
const accessLevel = this.getAccessLevel(rootPublicKey, hostname);
205-
if (accessLevel === AccessLevel.None) {
206-
continue;
207-
}
208-
209-
const encryptedSeedHex = this.cryptoService.encryptSeedHex(
210-
privateUser.seedHex,
211-
hostname
212-
);
213-
let encryptedMessagingKeyRandomness: string | undefined;
214-
if (privateUser.messagingKeyRandomness) {
215-
encryptedMessagingKeyRandomness = this.cryptoService.encryptSeedHex(
216-
privateUser.messagingKeyRandomness,
217-
hostname
218-
);
219-
}
220-
const accessLevelHmac = this.cryptoService.accessLevelHmac(
221-
accessLevel,
222-
privateUser.seedHex
223-
);
224205

225206
const commonFields = {
226207
hasExtraText: privateUser.extraText?.length > 0,
@@ -229,16 +210,34 @@ export class AccountService {
229210
version: privateUser.version,
230211
network: privateUser.network,
231212
loginMethod: privateUser.loginMethod || LoginMethod.DESO,
232-
accessLevel,
233213
};
234214

235-
publicUsers[rootPublicKey] = {
236-
...commonFields,
237-
encryptedSeedHex,
238-
accessLevelHmac,
239-
derivedPublicKeyBase58Check: privateUser.derivedPublicKeyBase58Check,
240-
encryptedMessagingKeyRandomness,
241-
};
215+
if (accessLevel !== AccessLevel.None) {
216+
const encryptedSeedHex = this.cryptoService.encryptSeedHex(
217+
privateUser.seedHex,
218+
hostname
219+
);
220+
221+
let encryptedMessagingKeyRandomness: string | undefined;
222+
if (privateUser.messagingKeyRandomness) {
223+
encryptedMessagingKeyRandomness = this.cryptoService.encryptSeedHex(
224+
privateUser.messagingKeyRandomness,
225+
hostname
226+
);
227+
}
228+
const accessLevelHmac = this.cryptoService.accessLevelHmac(
229+
accessLevel,
230+
privateUser.seedHex
231+
);
232+
publicUsers[rootPublicKey] = {
233+
...commonFields,
234+
encryptedSeedHex,
235+
accessLevelHmac,
236+
derivedPublicKeyBase58Check: privateUser.derivedPublicKeyBase58Check,
237+
encryptedMessagingKeyRandomness,
238+
accessLevel,
239+
};
240+
}
242241

243242
// To support sub-accounts for the legacy identity flow, we need to return
244243
// a flat map of all users and their sub-accounts. Each sub-account has a
@@ -250,20 +249,28 @@ export class AccountService {
250249
rootPublicKey,
251250
subAccount.accountNumber
252251
);
253-
const accountInfo = this.getAccountInfo(subAccountPublicKey);
252+
const subAccountAccessLevel = this.getAccessLevel(
253+
subAccountPublicKey,
254+
hostname
255+
);
256+
if (subAccountAccessLevel === AccessLevel.None) {
257+
return;
258+
}
259+
const subAccountInfo = this.getAccountInfo(subAccountPublicKey);
254260
const subAccountEncryptedSeedHex = this.cryptoService.encryptSeedHex(
255-
accountInfo.seedHex,
261+
subAccountInfo.seedHex,
256262
hostname
257263
);
258264
const subAccountAccessLevelHmac = this.cryptoService.accessLevelHmac(
259-
accessLevel,
260-
accountInfo.seedHex
265+
subAccountAccessLevel,
266+
subAccountInfo.seedHex
261267
);
262268

263269
publicUsers[subAccountPublicKey] = {
264270
...commonFields,
265271
encryptedSeedHex: subAccountEncryptedSeedHex,
266272
accessLevelHmac: subAccountAccessLevelHmac,
273+
accessLevel: subAccountAccessLevel,
267274
};
268275
});
269276
}

0 commit comments

Comments
 (0)