From 208fca8b7d4b6bb23fa32a27a4f40ce350c50147 Mon Sep 17 00:00:00 2001 From: Patrick Honkonen <phonkonen@bitwarden.com> Date: Fri, 17 Jan 2025 11:54:08 -0500 Subject: [PATCH] Apply local patch --- .../manager/Fido2CredentialManagerImpl.kt | 33 ++++++------------- 1 file changed, 10 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/com/x8bit/bitwarden/data/autofill/fido2/manager/Fido2CredentialManagerImpl.kt b/app/src/main/java/com/x8bit/bitwarden/data/autofill/fido2/manager/Fido2CredentialManagerImpl.kt index 23a60c9d2..4d4287272 100644 --- a/app/src/main/java/com/x8bit/bitwarden/data/autofill/fido2/manager/Fido2CredentialManagerImpl.kt +++ b/app/src/main/java/com/x8bit/bitwarden/data/autofill/fido2/manager/Fido2CredentialManagerImpl.kt @@ -48,8 +48,9 @@ class Fido2CredentialManagerImpl( fido2CreateCredentialRequest: Fido2CreateCredentialRequest, selectedCipherView: CipherView, ): Fido2RegisterCredentialResult { - val requestedFromBrowser = fido2CreateCredentialRequest.callingAppInfo.isOriginPopulated() - val clientData = if (requestedFromBrowser) { + val isRequestFromPrivilegedApp = + fido2CreateCredentialRequest.callingAppInfo.isOriginPopulated() + val clientData = if (isRequestFromPrivilegedApp) { fido2CreateCredentialRequest .callingAppInfo .getAppSigningSignatureFingerprint() @@ -62,28 +63,12 @@ class Fido2CredentialManagerImpl( .packageName, ) } - val requestJsonOrigin = fido2CreateCredentialRequest + val assetLinkUrl = fido2CreateCredentialRequest .origin ?: getOriginUrlFromAttestationOptionsOrNull(fido2CreateCredentialRequest.requestJson) ?: return Fido2RegisterCredentialResult.Error -// val relyingPartyId = json -// .decodeFromStringOrNull<PasskeyAssertionOptions>(fido2CreateCredentialRequest.requestJson) -// ?.relyingPartyId -// ?: return Fido2RegisterCredentialResult.Error -// -// val validateOriginResult = validateOrigin( -// callingAppInfo = fido2CreateCredentialRequest.callingAppInfo, -// relyingPartyId = relyingPartyId, -// ) -// -// if(validateOriginResult is Fido2ValidateOriginResult.Error) -// { -// return Fido2RegisterCredentialResult.Error -// } - val origin = if (requestedFromBrowser) { - Origin.Web(requestJsonOrigin) - } else { + val origin = if (!isRequestFromPrivilegedApp) { Origin.Android( UnverifiedAssetLink( packageName = fido2CreateCredentialRequest.packageName, @@ -91,12 +76,14 @@ class Fido2CredentialManagerImpl( .callingAppInfo .getSignatureFingerprintAsHexString() ?: return Fido2RegisterCredentialResult.Error, - host = requestJsonOrigin, - assetLinkUrl = null // will be generated + host = assetLinkUrl.toHostOrPathOrNull() + ?: return Fido2RegisterCredentialResult.Error, + assetLinkUrl = assetLinkUrl, ), ) + } else { + Origin.Web(assetLinkUrl) } - return vaultSdkSource .registerFido2Credential( request = RegisterFido2CredentialRequest(