Extract FIDO 2 user verification enum (#3614)

This commit is contained in:
Patrick Honkonen 2024-07-23 15:33:20 -04:00 committed by GitHub
parent 7cf7536857
commit d2432f7cf7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 47 additions and 36 deletions

View file

@ -2,14 +2,19 @@ package com.x8bit.bitwarden.data.autofill.fido2.model
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
/**
* Models the request options for a passkey request, based off the spec found at:
* https://www.w3.org/TR/webauthn-2/#dictionary-assertion-options
*/
@Serializable
data class PasskeyAssertionOptions(
@SerialName("challenge") val challenge: String,
@SerialName("allowCredentials") val allowCredentials: List<PublicKeyCredentialDescriptor>?,
@SerialName("rpId") val relyingPartyId: String?,
@SerialName("userVerification") val userVerification: String?,
@SerialName("challenge")
val challenge: String,
@SerialName("allowCredentials")
val allowCredentials: List<PublicKeyCredentialDescriptor>?,
@SerialName("rpId")
val relyingPartyId: String?,
@SerialName("userVerification")
val userVerification: UserVerificationRequirement?,
)

View file

@ -63,31 +63,6 @@ data class PasskeyAttestationOptions(
@SerialName("required")
REQUIRED,
}
/**
* Enum class indicating the type of user verification requested by the relying party.
*/
@Serializable
enum class UserVerificationRequirement {
/**
* User verification should not be performed.
*/
@SerialName("discouraged")
DISCOURAGED,
/**
* User verification is preferred, if supported by the device or application.
*/
@SerialName("preferred")
PREFERRED,
/**
* User verification is required. If is cannot be performed the registration process
* should be terminated.
*/
@SerialName("required")
REQUIRED,
}
}
/**

View file

@ -0,0 +1,29 @@
package com.x8bit.bitwarden.data.autofill.fido2.model
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
/**
* Enum class indicating the type of user verification requested by the relying party.
*/
@Serializable
enum class UserVerificationRequirement {
/**
* User verification should not be performed.
*/
@SerialName("discouraged")
DISCOURAGED,
/**
* User verification is preferred, if supported by the device or application.
*/
@SerialName("preferred")
PREFERRED,
/**
* User verification is required. If is cannot be performed the registration process
* should be terminated.
*/
@SerialName("required")
REQUIRED,
}

View file

@ -13,7 +13,7 @@ import com.x8bit.bitwarden.data.auth.repository.model.VaultUnlockType
import com.x8bit.bitwarden.data.autofill.fido2.manager.Fido2CredentialManager
import com.x8bit.bitwarden.data.autofill.fido2.model.Fido2CredentialRequest
import com.x8bit.bitwarden.data.autofill.fido2.model.Fido2RegisterCredentialResult
import com.x8bit.bitwarden.data.autofill.fido2.model.PasskeyAttestationOptions.AuthenticatorSelectionCriteria.UserVerificationRequirement
import com.x8bit.bitwarden.data.autofill.fido2.model.UserVerificationRequirement
import com.x8bit.bitwarden.data.autofill.util.isActiveWithFido2Credentials
import com.x8bit.bitwarden.data.platform.manager.PolicyManager
import com.x8bit.bitwarden.data.platform.manager.SpecialCircumstanceManager

View file

@ -14,7 +14,7 @@ import com.x8bit.bitwarden.data.autofill.fido2.manager.Fido2CredentialManager
import com.x8bit.bitwarden.data.autofill.fido2.model.Fido2CredentialRequest
import com.x8bit.bitwarden.data.autofill.fido2.model.Fido2RegisterCredentialResult
import com.x8bit.bitwarden.data.autofill.fido2.model.Fido2ValidateOriginResult
import com.x8bit.bitwarden.data.autofill.fido2.model.PasskeyAttestationOptions.AuthenticatorSelectionCriteria.UserVerificationRequirement
import com.x8bit.bitwarden.data.autofill.fido2.model.UserVerificationRequirement
import com.x8bit.bitwarden.data.autofill.manager.AutofillSelectionManager
import com.x8bit.bitwarden.data.autofill.model.AutofillSelectionData
import com.x8bit.bitwarden.data.autofill.util.isActiveWithFido2Credentials

View file

@ -19,7 +19,7 @@ import com.x8bit.bitwarden.data.auth.repository.model.VaultUnlockType
import com.x8bit.bitwarden.data.autofill.fido2.manager.Fido2CredentialManager
import com.x8bit.bitwarden.data.autofill.fido2.model.Fido2CredentialRequest
import com.x8bit.bitwarden.data.autofill.fido2.model.Fido2RegisterCredentialResult
import com.x8bit.bitwarden.data.autofill.fido2.model.PasskeyAttestationOptions.AuthenticatorSelectionCriteria.UserVerificationRequirement
import com.x8bit.bitwarden.data.autofill.fido2.model.UserVerificationRequirement
import com.x8bit.bitwarden.data.autofill.fido2.model.createMockFido2CredentialRequest
import com.x8bit.bitwarden.data.autofill.model.AutofillSaveItem
import com.x8bit.bitwarden.data.autofill.model.AutofillSelectionData

View file

@ -1,7 +1,8 @@
package com.x8bit.bitwarden.ui.vault.feature.addedit.util
import com.x8bit.bitwarden.data.autofill.fido2.model.PublicKeyCredentialDescriptor
import com.x8bit.bitwarden.data.autofill.fido2.model.PasskeyAssertionOptions
import com.x8bit.bitwarden.data.autofill.fido2.model.PublicKeyCredentialDescriptor
import com.x8bit.bitwarden.data.autofill.fido2.model.UserVerificationRequirement
/**
* Returns a mock FIDO 2 [PasskeyAssertionOptions] object to simulate a credential
@ -19,5 +20,5 @@ fun createMockPasskeyAssertionOptions(
),
),
relyingPartyId = "mockRelyingPartyId-$number",
userVerification = "mockUserVerification-$number",
userVerification = UserVerificationRequirement.PREFERRED,
)

View file

@ -2,6 +2,7 @@ package com.x8bit.bitwarden.ui.vault.feature.addedit.util
import com.x8bit.bitwarden.data.autofill.fido2.model.PasskeyAttestationOptions
import com.x8bit.bitwarden.data.autofill.fido2.model.PublicKeyCredentialDescriptor
import com.x8bit.bitwarden.data.autofill.fido2.model.UserVerificationRequirement
/**
* Returns a mock FIDO 2 [PasskeyAttestationOptions] object to simulate a credential
@ -10,7 +11,7 @@ import com.x8bit.bitwarden.data.autofill.fido2.model.PublicKeyCredentialDescript
@Suppress("MaxLineLength")
fun createMockPasskeyAttestationOptions(
number: Int,
userVerificationRequirement: PasskeyAttestationOptions.AuthenticatorSelectionCriteria.UserVerificationRequirement? = null,
userVerificationRequirement: UserVerificationRequirement? = null,
) = PasskeyAttestationOptions(
authenticatorSelection = PasskeyAttestationOptions
.AuthenticatorSelectionCriteria(userVerification = userVerificationRequirement),

View file

@ -16,7 +16,7 @@ import com.x8bit.bitwarden.data.autofill.fido2.manager.Fido2CredentialManager
import com.x8bit.bitwarden.data.autofill.fido2.model.Fido2CredentialRequest
import com.x8bit.bitwarden.data.autofill.fido2.model.Fido2RegisterCredentialResult
import com.x8bit.bitwarden.data.autofill.fido2.model.Fido2ValidateOriginResult
import com.x8bit.bitwarden.data.autofill.fido2.model.PasskeyAttestationOptions.AuthenticatorSelectionCriteria.UserVerificationRequirement
import com.x8bit.bitwarden.data.autofill.fido2.model.UserVerificationRequirement
import com.x8bit.bitwarden.data.autofill.fido2.model.createMockFido2CredentialRequest
import com.x8bit.bitwarden.data.autofill.manager.AutofillSelectionManager
import com.x8bit.bitwarden.data.autofill.manager.AutofillSelectionManagerImpl