-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[PM-12700] Add private key regeneration process (#11829)
* add user asymmetric key api service * Add user asymmetric key regen service * add feature flag * Add LoginSuccessHandlerService * add loginSuccessHandlerService to BaseLoginViaWebAuthnComponent * Only run loginSuccessHandlerService if webAuthn is used for vault decryption. * Updates for TS strict * bump SDK version * swap to combineLatest * Update abstractions
- Loading branch information
1 parent
c628f54
commit 971c157
Showing
20 changed files
with
628 additions
and
18 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
10 changes: 10 additions & 0 deletions
10
libs/auth/src/common/abstractions/login-success-handler.service.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
import { UserId } from "@bitwarden/common/types/guid"; | ||
|
||
export abstract class LoginSuccessHandlerService { | ||
/** | ||
* Runs any service calls required after a successful login. | ||
* Service calls that should be included in this method are only those required to be awaited after successful login. | ||
* @param userId The user id. | ||
*/ | ||
abstract run(userId: UserId): Promise<void>; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
16 changes: 16 additions & 0 deletions
16
libs/auth/src/common/services/login-success-handler/default-login-success-handler.service.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
import { SyncService } from "@bitwarden/common/platform/sync"; | ||
import { UserId } from "@bitwarden/common/types/guid"; | ||
import { UserAsymmetricKeysRegenerationService } from "@bitwarden/key-management"; | ||
|
||
import { LoginSuccessHandlerService } from "../../abstractions/login-success-handler.service"; | ||
|
||
export class DefaultLoginSuccessHandlerService implements LoginSuccessHandlerService { | ||
constructor( | ||
private syncService: SyncService, | ||
private userAsymmetricKeysRegenerationService: UserAsymmetricKeysRegenerationService, | ||
) {} | ||
async run(userId: UserId): Promise<void> { | ||
await this.syncService.fullSync(true); | ||
await this.userAsymmetricKeysRegenerationService.regenerateIfNeeded(userId); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
8 changes: 8 additions & 0 deletions
8
...-asymmetric-key-regeneration/abstractions/user-asymmetric-key-regeneration-api.service.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
import { EncString } from "@bitwarden/common/platform/models/domain/enc-string"; | ||
|
||
export abstract class UserAsymmetricKeysRegenerationApiService { | ||
abstract regenerateUserAsymmetricKeys( | ||
userPublicKey: string, | ||
userKeyEncryptedUserPrivateKey: EncString, | ||
): Promise<void>; | ||
} |
10 changes: 10 additions & 0 deletions
10
...user-asymmetric-key-regeneration/abstractions/user-asymmetric-key-regeneration.service.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
import { UserId } from "@bitwarden/common/types/guid"; | ||
|
||
export abstract class UserAsymmetricKeysRegenerationService { | ||
/** | ||
* Attempts to regenerate the user's asymmetric keys if they are invalid. | ||
* Requires the PrivateKeyRegeneration feature flag to be enabled if not the method will do nothing. | ||
* @param userId The user id. | ||
*/ | ||
abstract regenerateIfNeeded(userId: UserId): Promise<void>; | ||
} |
5 changes: 5 additions & 0 deletions
5
libs/key-management/src/user-asymmetric-key-regeneration/index.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
export { UserAsymmetricKeysRegenerationService } from "./abstractions/user-asymmetric-key-regeneration.service"; | ||
export { DefaultUserAsymmetricKeysRegenerationService } from "./services/default-user-asymmetric-key-regeneration.service"; | ||
|
||
export { UserAsymmetricKeysRegenerationApiService } from "./abstractions/user-asymmetric-key-regeneration-api.service"; | ||
export { DefaultUserAsymmetricKeysRegenerationApiService } from "./services/default-user-asymmetric-key-regeneration-api.service"; |
11 changes: 11 additions & 0 deletions
11
...nagement/src/user-asymmetric-key-regeneration/models/requests/key-regeneration.request.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
import { EncString } from "@bitwarden/common/platform/models/domain/enc-string"; | ||
|
||
export class KeyRegenerationRequest { | ||
userPublicKey: string; | ||
userKeyEncryptedUserPrivateKey: EncString; | ||
|
||
constructor(userPublicKey: string, userKeyEncryptedUserPrivateKey: EncString) { | ||
this.userPublicKey = userPublicKey; | ||
this.userKeyEncryptedUserPrivateKey = userKeyEncryptedUserPrivateKey; | ||
} | ||
} |
29 changes: 29 additions & 0 deletions
29
...mmetric-key-regeneration/services/default-user-asymmetric-key-regeneration-api.service.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
import { ApiService } from "@bitwarden/common/abstractions/api.service"; | ||
import { EncString } from "@bitwarden/common/platform/models/domain/enc-string"; | ||
|
||
import { UserAsymmetricKeysRegenerationApiService } from "../abstractions/user-asymmetric-key-regeneration-api.service"; | ||
import { KeyRegenerationRequest } from "../models/requests/key-regeneration.request"; | ||
|
||
export class DefaultUserAsymmetricKeysRegenerationApiService | ||
implements UserAsymmetricKeysRegenerationApiService | ||
{ | ||
constructor(private apiService: ApiService) {} | ||
|
||
async regenerateUserAsymmetricKeys( | ||
userPublicKey: string, | ||
userKeyEncryptedUserPrivateKey: EncString, | ||
): Promise<void> { | ||
const request: KeyRegenerationRequest = { | ||
userPublicKey, | ||
userKeyEncryptedUserPrivateKey, | ||
}; | ||
|
||
await this.apiService.send( | ||
"POST", | ||
"/accounts/key-management/regenerate-keys", | ||
request, | ||
true, | ||
true, | ||
); | ||
} | ||
} |
Oops, something went wrong.