[PR #3375] [CLOSED] [PM-8137] Perform device based verification during passkey registration #16935

Closed
opened 2026-04-15 02:33:30 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/bitwarden/android/pull/3375
Author: @SaintPatrck
Created: 6/27/2024
Status: Closed

Base: mainHead: PM-8137/fido2-registration-user-verification


📝 Commits (10+)

  • 2feea9c Register FIDO 2 credential with new cipher
  • a22d10e VaultAddEdit tests
  • 69cbd7d Implement allCredentials and findCredentials SDK callbacks
  • d38bda1 Omit PubliKeyCredentialAuthenticatorAttestationResponseExtensions from coverage reports
  • 2a1e200 Grammar fix
  • 6379dea Merge remote-tracking branch 'refs/remotes/origin/main' into PM-8137/register-fido2-credential
  • 0d25426 Set user verification supported to true while in dev
  • dcdb1eb Wrap SDK calls in runCatching and handle errors correctly
  • 98f47b0 Merge remote-tracking branch 'refs/remotes/origin/main' into PM-8137/register-fido2-credential
  • 5a49024 Document ext function

📊 Changes

29 files changed (+2907 additions, -1336 deletions)

View changed files

📝 app/src/main/java/com/x8bit/bitwarden/data/autofill/fido2/datasource/network/model/PublicKeyCredentialCreationOptions.kt (+30 -3)
📝 app/src/main/java/com/x8bit/bitwarden/data/autofill/fido2/manager/Fido2CredentialManager.kt (+2 -2)
📝 app/src/main/java/com/x8bit/bitwarden/data/autofill/fido2/manager/Fido2CredentialManagerImpl.kt (+19 -28)
app/src/main/java/com/x8bit/bitwarden/data/autofill/fido2/model/Fido2CreateCredentialResult.kt (+0 -23)
app/src/main/java/com/x8bit/bitwarden/data/autofill/fido2/model/Fido2RegisterCredentialResult.kt (+24 -0)
📝 app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/sdk/VaultSdkSource.kt (+2 -31)
📝 app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/sdk/VaultSdkSourceImpl.kt (+24 -46)
app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/sdk/model/AuthenticateFido2CredentialRequest.kt (+26 -0)
📝 app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/sdk/model/Fido2CredentialAuthenticationUserInterfaceImpl.kt (+3 -4)
📝 app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/sdk/model/Fido2CredentialRegistrationUserInterfaceImpl.kt (+23 -7)
📝 app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/sdk/util/PublicKeyCredentialAuthenticatorAttestationResponseExtensions.kt (+2 -5)
📝 app/src/main/java/com/x8bit/bitwarden/ui/autofill/fido2/manager/Fido2CompletionManager.kt (+2 -2)
📝 app/src/main/java/com/x8bit/bitwarden/ui/autofill/fido2/manager/Fido2CompletionManagerImpl.kt (+15 -5)
📝 app/src/main/java/com/x8bit/bitwarden/ui/platform/manager/biometrics/BiometricsManager.kt (+16 -0)
📝 app/src/main/java/com/x8bit/bitwarden/ui/platform/manager/biometrics/BiometricsManagerImpl.kt (+63 -9)
📝 app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditScreen.kt (+43 -1)
📝 app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModel.kt (+157 -21)
app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/addedit/handlers/VaultAddEditUserVerificationHandlers.kt (+48 -0)
📝 app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/itemlisting/VaultItemListingScreen.kt (+32 -1)
📝 app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/itemlisting/VaultItemListingViewModel.kt (+194 -36)

...and 9 more files

📄 Description

🎟️ Tracking

PM-8137

📔 Objective

Perform user verification (UV) during a FIDO 2 credential registration request.

When saving a new cipher for FIDO 2 credential registration we evaluate the request to determine if user verification should be performed. If user verification cannot be performed the user is notified, and upon acknowledgment the registration process is completed.

Testing notes

https://webauthn.io is a reliable site to test passkey registration. In order to support Bitwarden as a passkey provider in Chrome "Android Credential Management for passkeys" must be enabled for 3rd party passkeys from chrome://flags.

To validate user verification prompt is performed when required the Registration Settings can be modified so that User Verification is one of "Required" or "Preferred" to trigger UV, or "Discouraged" to skip UV.

📸 Screenshots

image image image image

Reminders before review

  • Contributor guidelines followed
  • All formatters and local linters executed and passed
  • Written new unit and / or integration tests where applicable
  • Used internationalization (i18n) for all UI strings
  • CI builds passed
  • Communicated to DevOps any deployment requirements
  • Updated any necessary documentation or informed the documentation team

🦮 Reviewer guidelines

  • 👍 (:+1:) or similar for great changes
  • 📝 (:memo:) or ℹ️ (:information_source:) for notes or general info
  • (:question:) for questions
  • 🤔 (:thinking:) or 💭 (:thought_balloon:) for more open inquiry that's not quite a confirmed
    issue and could potentially benefit from discussion
  • 🎨 (:art:) for suggestions / improvements
  • (:x:) or ⚠️ (:warning:) for more significant problems or concerns needing attention
  • 🌱 (:seedling:) or ♻️ (:recycle:) for future improvements or indications of technical debt
  • ⛏ (:pick:) for minor or nitpick changes

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/bitwarden/android/pull/3375 **Author:** [@SaintPatrck](https://github.com/SaintPatrck) **Created:** 6/27/2024 **Status:** ❌ Closed **Base:** `main` ← **Head:** `PM-8137/fido2-registration-user-verification` --- ### 📝 Commits (10+) - [`2feea9c`](https://github.com/bitwarden/android/commit/2feea9ca746563b86fe52638752533d3387ac85f) Register FIDO 2 credential with new cipher - [`a22d10e`](https://github.com/bitwarden/android/commit/a22d10e4ea30eac5ce3cbc850ac1f4fadd12a356) VaultAddEdit tests - [`69cbd7d`](https://github.com/bitwarden/android/commit/69cbd7db65c6925bf806302078f2fd4907746db6) Implement `allCredentials` and `findCredentials` SDK callbacks - [`d38bda1`](https://github.com/bitwarden/android/commit/d38bda10235589f50b37b32aca5496650f012048) Omit PubliKeyCredentialAuthenticatorAttestationResponseExtensions from coverage reports - [`2a1e200`](https://github.com/bitwarden/android/commit/2a1e2006a6b3eda96b7b880f06b71798289eb719) Grammar fix - [`6379dea`](https://github.com/bitwarden/android/commit/6379dea85265707a2c292f863b9277fd584674ae) Merge remote-tracking branch 'refs/remotes/origin/main' into PM-8137/register-fido2-credential - [`0d25426`](https://github.com/bitwarden/android/commit/0d2542665db127fab2c239031ce821987a217480) Set user verification supported to true while in dev - [`dcdb1eb`](https://github.com/bitwarden/android/commit/dcdb1eb9ad46a95b7bdb49e938fe450b1980471e) Wrap SDK calls in runCatching and handle errors correctly - [`98f47b0`](https://github.com/bitwarden/android/commit/98f47b0eb757acd91cfdcc5ce91a3c6aafd8af7e) Merge remote-tracking branch 'refs/remotes/origin/main' into PM-8137/register-fido2-credential - [`5a49024`](https://github.com/bitwarden/android/commit/5a49024670d5c165691a539904cf5c81bf66d42e) Document ext function ### 📊 Changes **29 files changed** (+2907 additions, -1336 deletions) <details> <summary>View changed files</summary> 📝 `app/src/main/java/com/x8bit/bitwarden/data/autofill/fido2/datasource/network/model/PublicKeyCredentialCreationOptions.kt` (+30 -3) 📝 `app/src/main/java/com/x8bit/bitwarden/data/autofill/fido2/manager/Fido2CredentialManager.kt` (+2 -2) 📝 `app/src/main/java/com/x8bit/bitwarden/data/autofill/fido2/manager/Fido2CredentialManagerImpl.kt` (+19 -28) ➖ `app/src/main/java/com/x8bit/bitwarden/data/autofill/fido2/model/Fido2CreateCredentialResult.kt` (+0 -23) ➕ `app/src/main/java/com/x8bit/bitwarden/data/autofill/fido2/model/Fido2RegisterCredentialResult.kt` (+24 -0) 📝 `app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/sdk/VaultSdkSource.kt` (+2 -31) 📝 `app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/sdk/VaultSdkSourceImpl.kt` (+24 -46) ➕ `app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/sdk/model/AuthenticateFido2CredentialRequest.kt` (+26 -0) 📝 `app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/sdk/model/Fido2CredentialAuthenticationUserInterfaceImpl.kt` (+3 -4) 📝 `app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/sdk/model/Fido2CredentialRegistrationUserInterfaceImpl.kt` (+23 -7) 📝 `app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/sdk/util/PublicKeyCredentialAuthenticatorAttestationResponseExtensions.kt` (+2 -5) 📝 `app/src/main/java/com/x8bit/bitwarden/ui/autofill/fido2/manager/Fido2CompletionManager.kt` (+2 -2) 📝 `app/src/main/java/com/x8bit/bitwarden/ui/autofill/fido2/manager/Fido2CompletionManagerImpl.kt` (+15 -5) 📝 `app/src/main/java/com/x8bit/bitwarden/ui/platform/manager/biometrics/BiometricsManager.kt` (+16 -0) 📝 `app/src/main/java/com/x8bit/bitwarden/ui/platform/manager/biometrics/BiometricsManagerImpl.kt` (+63 -9) 📝 `app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditScreen.kt` (+43 -1) 📝 `app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModel.kt` (+157 -21) ➕ `app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/addedit/handlers/VaultAddEditUserVerificationHandlers.kt` (+48 -0) 📝 `app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/itemlisting/VaultItemListingScreen.kt` (+32 -1) 📝 `app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/itemlisting/VaultItemListingViewModel.kt` (+194 -36) _...and 9 more files_ </details> ### 📄 Description ## 🎟️ Tracking PM-8137 ## 📔 Objective Perform user verification (UV) during a FIDO 2 credential registration request. When saving a new cipher for FIDO 2 credential registration we evaluate the request to determine if user verification should be performed. If user verification cannot be performed the user is notified, and upon acknowledgment the registration process is completed. ### Testing notes https://webauthn.io is a reliable site to test passkey registration. In order to support Bitwarden as a passkey provider in Chrome "Android Credential Management for passkeys" must be enabled for 3rd party passkeys from chrome://flags. To validate user verification prompt is performed when required the Registration Settings can be modified so that User Verification is one of "Required" or "Preferred" to trigger UV, or "Discouraged" to skip UV. ## 📸 Screenshots <img width="376" alt="image" src="https://github.com/bitwarden/android/assets/1883101/d042c291-ca4c-418a-bb76-6d662c04a7f5"> <img width="378" alt="image" src="https://github.com/bitwarden/android/assets/1883101/c16c5088-d294-4cfc-924b-5c9c18859042"> <img width="377" alt="image" src="https://github.com/bitwarden/android/assets/1883101/6a5edab2-9af4-4eff-9d81-33232d003098"> <img width="376" alt="image" src="https://github.com/bitwarden/android/assets/1883101/d1857edb-a4ca-4e67-881d-c229d3e96106"> ## ⏰ Reminders before review - Contributor guidelines followed - All formatters and local linters executed and passed - Written new unit and / or integration tests where applicable - Used internationalization (i18n) for all UI strings - CI builds passed - Communicated to DevOps any deployment requirements - Updated any necessary documentation or informed the documentation team ## 🦮 Reviewer guidelines <!-- Suggested interactions but feel free to use (or not) as you desire! --> - 👍 (`:+1:`) or similar for great changes - 📝 (`:memo:`) or ℹ️ (`:information_source:`) for notes or general info - ❓ (`:question:`) for questions - 🤔 (`:thinking:`) or 💭 (`:thought_balloon:`) for more open inquiry that's not quite a confirmed issue and could potentially benefit from discussion - 🎨 (`:art:`) for suggestions / improvements - ❌ (`:x:`) or ⚠️ (`:warning:`) for more significant problems or concerns needing attention - 🌱 (`:seedling:`) or ♻️ (`:recycle:`) for future improvements or indications of technical debt - ⛏ (`:pick:`) for minor or nitpick changes --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-04-15 02:33:30 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/android#16935