[PM-40519] feat: Add passkey cipher storage and identity foundation to TestHarness - #2977
[PM-40519] feat: Add passkey cipher storage and identity foundation to TestHarness#2977morganzellers-bw wants to merge 1 commit into
Conversation
🤖 Bitwarden Claude Code ReviewOverall Assessment: APPROVE This PR adds the persistence and data-model foundation for SDK-backed passkey scenarios in the Test Harness: a Secret handling looks correct for this context: only SDK ciphertext ( Code Review DetailsNo findings. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #2977 +/- ##
=======================================
Coverage 79.50% 79.50%
=======================================
Files 1169 1169
Lines 75028 75028
=======================================
+ Hits 59650 59652 +2
+ Misses 15378 15376 -2 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
e1a5d73 to
e3f6aa9
Compare
Introduces the persistence and data-model layer for the SDK-backed passkey scenarios: a UserDefaults-backed cipher store, its Codable mirror of the SDK's Cipher/Fido2Credential shape, the synthetic identity model, keychain item, and supporting errors/fixtures. This is the foundation the Fido2-driving services (registration, assertion, credential listing) build on top of in a follow-up PR.
e3f6aa9 to
4d77e40
Compare
🎟️ Tracking
PM-40519
📔 Objective
Adds the persistence and data-model foundation for passkey test scenarios in the TestHarness, split from PR #2945 for size.
CipherStorageServicepersists SDK-encrypted ciphers across app relaunches, backed byUserDefaults.StoredCipheris aCodablemirror of the handful ofCipher/Fido2Credentialfields these scenarios populate, sinceBitwardenSdk.Cipherisn't itselfCodable.SyntheticIdentity/PasskeyKeychainItemmodel the throwaway identity persisted in the Keychain so the same crypto keys survive relaunches.PasskeyErrorand supporting fixtures round out the layer.Fido2CredentialStore/Fido2UserInterface/PasskeyServicelayer on top of this.Stack: #2977 → #2945 → #2946 → #2947 → #2948