[PR #3017] [PM-5154] Implement Passkeys on iOS #3962

Closed
opened 2025-11-26 23:39:00 -06:00 by GiteaMirror · 0 comments
Owner

Original Pull Request: https://github.com/bitwarden/android/pull/3017

State: closed
Merged: Yes


Type of change

  • Bug fix
  • New feature development
  • Tech debt (refactoring, code cleanup, dependency upgrades, etc)
  • Build/deploy pipeline (DevOps)
  • Other

Objective

Implement flows on iOS to Create or Use a Passkey.

Note: This doesn't support Dark theme yet.

Code changes

  • CredentialProviderViewController.Passkeys: Passkeys part on the iOS Autofill implementation.
  • CredentialProviderViewController: Added additional logic for new iOS 17 API and Passkeys integration.
  • Fido2Credential...: Added UserDisplayName
  • CipherService: Added method to create new login for passkey based on the relying party identifier.
  • Fido2AuthenticatorService: Added UserDisplayName and updated code not to use C# 12 features.
  • ClipLogger: Util to be used to "debug" iOS extensions where we cannot use .NET debugger.
  • Fido2MakeCredentialUserInterface: Implementation for UI dependent passkey creation flow UI
  • LoginListViewController: Added logic for Passkeys integration, like table headers, empty state, save passkey and cancellation.
  • LoginSearchViewController: Added logic for Passkeys integration.
  • MainInterface.storyboard: Updated "Logins" scene to have the empty state for passkeys.
  • HeaderItemView: View to use as header on the table view for logins on passkeys.
  • Context: Added helper properties to fulfill the Passkeys flow
  • BaseLoginListTableSource: Moved logic to a base class to have row selection logic shared between the login list and the login search list.
  • ASHelpers: Fixed CredentialId conversion.
  • ExtensionTableSource: Changed some methods so we can override them to provide specific logic.

Screenshots

Sign in with your passkey OS view

Save passkey as new login

Create passkey OS view

Create passkey OS view

Save passkey as new login

Save passkey as new login

Save passkey flow to choose item from list

Save passkey flow to choose item from list

Overwrite passkey dialog

Overwrite passkey dialog

Before you submit

  • Please check for formatting errors (dotnet format --verify-no-changes) (required)
  • Please add unit tests where it makes sense to do so (encouraged but not required)
  • If this change requires a documentation update - notify the documentation team
  • If this change has particular deployment requirements - notify the DevOps team
**Original Pull Request:** https://github.com/bitwarden/android/pull/3017 **State:** closed **Merged:** Yes --- ## Type of change - [ ] Bug fix - [X] New feature development - [ ] Tech debt (refactoring, code cleanup, dependency upgrades, etc) - [ ] Build/deploy pipeline (DevOps) - [ ] Other ## Objective <!--Describe what the purpose of this PR is. For example: what bug you're fixing or what new feature you're adding--> Implement flows on iOS to Create or Use a Passkey. _Note: This doesn't support Dark theme yet._ ## Code changes <!--Explain the changes you've made to each file or major component. This should help the reviewer understand your changes--> <!--Also refer to any related changes or PRs in other repositories--> * **CredentialProviderViewController.Passkeys:** Passkeys part on the iOS Autofill implementation. * **CredentialProviderViewController:** Added additional logic for new iOS 17 API and Passkeys integration. * **Fido2Credential...:** Added `UserDisplayName` * **CipherService:** Added method to create new login for passkey based on the relying party identifier. * **Fido2AuthenticatorService:** Added `UserDisplayName` and updated code not to use C# 12 features. * **ClipLogger:** Util to be used to "debug" iOS extensions where we cannot use .NET debugger. * **Fido2MakeCredentialUserInterface:** Implementation for UI dependent passkey creation flow UI * **LoginListViewController:** Added logic for Passkeys integration, like table headers, empty state, save passkey and cancellation. * **LoginSearchViewController:** Added logic for Passkeys integration. * **MainInterface.storyboard:** Updated "Logins" scene to have the empty state for passkeys. * **HeaderItemView:** View to use as header on the table view for logins on passkeys. * **Context:** Added helper properties to fulfill the Passkeys flow * **BaseLoginListTableSource:** Moved logic to a base class to have row selection logic shared between the login list and the login search list. * **ASHelpers:** Fixed `CredentialId` conversion. * **ExtensionTableSource:** Changed some methods so we can override them to provide specific logic. ## Screenshots <!--Required for any UI changes. Delete if not applicable--> ### Sign in with your passkey OS view <img width="314" alt="Save passkey as new login" src="https://github.com/bitwarden/mobile/assets/15682323/4ca7c661-79e1-477d-a47a-9d65c63dbeb9"> ### Create passkey OS view <img width="314" alt="Create passkey OS view" src="https://github.com/bitwarden/mobile/assets/15682323/6683882c-bfea-4053-a1b8-04a50a3b9ce4"> ### Save passkey as new login <img width="314" alt="Save passkey as new login" src="https://github.com/bitwarden/mobile/assets/15682323/221c9f6a-e873-4146-8c11-1ae1baeb16be"> ### Save passkey flow to choose item from list <img width="314" alt="Save passkey flow to choose item from list" src="https://github.com/bitwarden/mobile/assets/15682323/87732a46-3bea-4e2a-99e5-935932b99cda"> ### Overwrite passkey dialog <img width="314" alt="Overwrite passkey dialog" src="https://github.com/bitwarden/mobile/assets/15682323/b366ab61-ff3e-46fc-b5e0-e982f66542b3"> ## Before you submit - Please check for formatting errors (`dotnet format --verify-no-changes`) (required) - Please add **unit tests** where it makes sense to do so (encouraged but not required) - If this change requires a **documentation update** - notify the documentation team - If this change has particular **deployment requirements** - notify the DevOps team
GiteaMirror added the pull-request label 2025-11-26 23:39:00 -06:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/android#3962