Skip to content

Commit 9349b23

Browse files
authored
[PM-27290] Remove password unlock method (#6176)
1 parent e9ab5f2 commit 9349b23

File tree

7 files changed

+212
-220
lines changed

7 files changed

+212
-220
lines changed

app/src/main/kotlin/com/x8bit/bitwarden/data/auth/repository/AuthRepositoryImpl.kt

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1883,21 +1883,15 @@ class AuthRepositoryImpl(
18831883
// Attempt to unlock the vault with password if possible.
18841884
val masterPassword = password ?: return null
18851885
val privateKey = loginResponse.privateKeyOrNull() ?: return null
1886-
val key = loginResponse.key ?: return null
18871886

1888-
val initUserCryptoMethod = loginResponse
1887+
val masterPasswordUnlock = loginResponse
18891888
.userDecryptionOptions
18901889
?.masterPasswordUnlock
1891-
?.let { masterPasswordUnlock ->
1892-
InitUserCryptoMethod.MasterPasswordUnlock(
1893-
password = masterPassword,
1894-
masterPasswordUnlock = masterPasswordUnlock.toSdkMasterPasswordUnlock(),
1895-
)
1896-
}
1897-
?: InitUserCryptoMethod.Password(
1898-
password = masterPassword,
1899-
userKey = key,
1900-
)
1890+
?: return null
1891+
val initUserCryptoMethod = InitUserCryptoMethod.MasterPasswordUnlock(
1892+
password = masterPassword,
1893+
masterPasswordUnlock = masterPasswordUnlock.toSdkMasterPasswordUnlock(),
1894+
)
19011895

19021896
return unlockVault(
19031897
accountProfile = profile,

app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/VaultLockManagerImpl.kt

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -259,29 +259,19 @@ class VaultLockManagerImpl(
259259
kdf: Kdf,
260260
userId: String,
261261
) {
262-
if (initUserCryptoMethod is InitUserCryptoMethod.Password ||
263-
initUserCryptoMethod is InitUserCryptoMethod.MasterPasswordUnlock
264-
) {
265-
val password = when (initUserCryptoMethod) {
266-
is InitUserCryptoMethod.Password -> initUserCryptoMethod.password
267-
is InitUserCryptoMethod.MasterPasswordUnlock -> initUserCryptoMethod.password
268-
else -> throw IllegalStateException(
269-
"Invalid initUserCryptoMethod ${initUserCryptoMethod.logTag}.",
270-
)
271-
}
272-
262+
(initUserCryptoMethod as? InitUserCryptoMethod.MasterPasswordUnlock)?.let {
273263
// Save the master password hash.
274264
authSdkSource
275265
.hashPassword(
276266
email = email,
277-
password = password,
267+
password = initUserCryptoMethod.password,
278268
kdf = kdf,
279269
purpose = HashPurpose.LOCAL_AUTHORIZATION,
280270
)
281-
.onSuccess { passwordHash ->
271+
.onSuccess {
282272
authDiskSource.storeMasterPasswordHash(
283273
userId = userId,
284-
passwordHash = passwordHash,
274+
passwordHash = it,
285275
)
286276
}
287277
}
@@ -713,15 +703,15 @@ class VaultLockManagerImpl(
713703

714704
private suspend fun updateKdfIfNeeded(initUserCryptoMethod: InitUserCryptoMethod) {
715705
val password = when (initUserCryptoMethod) {
716-
is InitUserCryptoMethod.Password -> initUserCryptoMethod.password
717706
is InitUserCryptoMethod.MasterPasswordUnlock -> initUserCryptoMethod.password
718707
is InitUserCryptoMethod.AuthRequest,
719708
is InitUserCryptoMethod.DecryptedKey,
720709
is InitUserCryptoMethod.DeviceKey,
721710
is InitUserCryptoMethod.KeyConnector,
711+
is InitUserCryptoMethod.Password,
722712
is InitUserCryptoMethod.Pin,
723713
is InitUserCryptoMethod.PinEnvelope,
724-
-> return
714+
-> return
725715
}
726716

727717
kdfManager

app/src/main/kotlin/com/x8bit/bitwarden/data/vault/repository/VaultRepositoryImpl.kt

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -341,25 +341,19 @@ class VaultRepositoryImpl(
341341
): VaultUnlockResult {
342342
val userId = activeUserId
343343
?: return VaultUnlockResult.InvalidStateError(error = NoActiveUserException())
344-
val userKey = authDiskSource.getUserKey(userId = userId)
345-
?: return VaultUnlockResult.InvalidStateError(
346-
error = MissingPropertyException("User key"),
347-
)
344+
348345
val activeAccount = authDiskSource.userState?.activeAccount
349-
val initUserCryptoMethod = activeAccount
346+
val masterPasswordUnlock = activeAccount
350347
?.profile
351348
?.userDecryptionOptions
352349
?.masterPasswordUnlock
353-
?.let { masterPasswordUnlock ->
354-
InitUserCryptoMethod.MasterPasswordUnlock(
355-
password = masterPassword,
356-
masterPasswordUnlock = masterPasswordUnlock.toSdkMasterPasswordUnlock(),
357-
)
358-
}
359-
?: InitUserCryptoMethod.Password(
360-
password = masterPassword,
361-
userKey = userKey,
350+
?: return VaultUnlockResult.InvalidStateError(
351+
error = MissingPropertyException("MasterPasswordUnlock data"),
362352
)
353+
val initUserCryptoMethod = InitUserCryptoMethod.MasterPasswordUnlock(
354+
password = masterPassword,
355+
masterPasswordUnlock = masterPasswordUnlock.toSdkMasterPasswordUnlock(),
356+
)
363357
return this
364358
.unlockVaultForUser(
365359
userId = userId,

app/src/main/kotlin/com/x8bit/bitwarden/data/vault/repository/util/InitUserCryptoMethodExtensions.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,12 @@ val InitUserCryptoMethod.logTag: String
1212
is InitUserCryptoMethod.DecryptedKey -> "Decrypted Key (Never Lock/Biometrics)"
1313
is InitUserCryptoMethod.DeviceKey -> "Device Key"
1414
is InitUserCryptoMethod.KeyConnector -> "Key Connector"
15-
is InitUserCryptoMethod.Password -> "Password"
1615
is InitUserCryptoMethod.Pin -> "Pin"
1716
is InitUserCryptoMethod.PinEnvelope -> "Pin Envelope"
1817
is InitUserCryptoMethod.MasterPasswordUnlock -> "Master Password Unlock"
18+
is InitUserCryptoMethod.Password -> {
19+
// PM-27290: InitUserCryptoMethod.Password will be removed from the SDK in a future
20+
// release. This else branch can be cleaned up afterwards.
21+
throw IllegalArgumentException("Unsupported InitUserCryptoMethod: $this")
22+
}
1923
}

0 commit comments

Comments
 (0)