Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f6909785 authored by Qinmei Du's avatar Qinmei Du
Browse files

Update parsing from requestInfo json for create passkey

screenshot: https://screenshot.googleplex.com/9WQGFwJAyXhrrhV

Test: deployed locally

Bug: 253157211
Change-Id: I894b5c48534b9ff6cd0599fb31bc750a2524fddd
parent 4c2d3f65
Loading
Loading
Loading
Loading
+34 −1
Original line number Diff line number Diff line
@@ -425,7 +425,40 @@ class CredentialManagerRepo(
  }

  private fun testCreatePasskeyRequestInfo(): RequestInfo {
    val request = CreatePublicKeyCredentialRequest("json")
    val request = CreatePublicKeyCredentialRequest("{\"extensions\": {\n" +
            "                     \"webauthn.loc\": true\n" +
            "                   },\n" +
            "                   \"attestation\": \"direct\",\n" +
            "                   \"challenge\": \"-rSQHXSQUdaK1N-La5bE-JPt6EVAW4SxX1K_tXhZ_Gk\",\n" +
            "                   \"user\": {\n" +
            "                     \"displayName\": \"testName\",\n" +
            "                     \"name\": \"credManTesting@gmail.com\",\n" +
            "                     \"id\": \"eD4o2KoXLpgegAtnM5cDhhUPvvk2\"\n" +
            "                   },\n" +
            "                   \"excludeCredentials\": [],\n" +
            "                   \"rp\": {\n" +
            "                     \"name\": \"Address Book\",\n" +
            "                     \"id\": \"addressbook-c7876.uc.r.appspot.com\"\n" +
            "                   },\n" +
            "                   \"timeout\": 60000,\n" +
            "                   \"pubKeyCredParams\": [\n" +
            "                     {\n" +
            "                       \"type\": \"public-key\",\n" +
            "                       \"alg\": -7\n" +
            "                     },\n" +
            "                     {\n" +
            "                       \"type\": \"public-key\",\n" +
            "                       \"alg\": -257\n" +
            "                     },\n" +
            "                     {\n" +
            "                       \"type\": \"public-key\",\n" +
            "                       \"alg\": -37\n" +
            "                     }\n" +
            "                   ],\n" +
            "                   \"authenticatorSelection\": {\n" +
            "                     \"residentKey\": \"required\",\n" +
            "                     \"requireResidentKey\": true\n" +
            "                   }}")
    val data = request.data
    return RequestInfo.newCreateRequestInfo(
      Binder(),
+25 −15
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ import com.android.credentialmanager.jetpack.developer.CreatePublicKeyCredential
import com.android.credentialmanager.jetpack.provider.ActionUi
import com.android.credentialmanager.jetpack.provider.CredentialEntryUi
import com.android.credentialmanager.jetpack.provider.SaveEntryUi
import org.json.JSONObject

/** Utility functions for converting CredentialManager data structures to or from UI formats. */
class GetFlowUtils {
@@ -235,31 +236,40 @@ class CreateFlowUtils {
          it
        )
      }
      // TODO: covert from real requestInfo
      when (createCredentialRequestJetpack) {
        is CreatePasswordRequest -> {
          return RequestDisplayInfo(
            createCredentialRequestJetpack.id,
            createCredentialRequestJetpack.password,
            createCredentialRequestJetpack.type,
              "tribank",
            requestInfo.appPackageName,
            context.getDrawable(R.drawable.ic_password)!!
          )
        }
        is CreatePublicKeyCredentialRequest -> {
          val requestJson = createCredentialRequestJetpack.requestJson
          val json = JSONObject(requestJson)
          var name = ""
          var displayName = ""
          if (json.has("user")) {
            val user: JSONObject = json.getJSONObject("user")
            name = user.getString("name")
            displayName = user.getString("displayName")
          }
          return RequestDisplayInfo(
            "beckett-bakert@gmail.com",
            "Elisa Beckett",
            name,
            displayName,
            createCredentialRequestJetpack.type,
            "tribank",
            requestInfo.appPackageName,
            context.getDrawable(R.drawable.ic_passkey)!!)
        }
        // TODO: correctly parsing for other sign-ins
        else -> {
          return RequestDisplayInfo(
            "beckett-bakert@gmail.com",
            "Elisa Beckett",
            "other-sign-ins",
            "tribank",
            requestInfo.appPackageName,
            context.getDrawable(R.drawable.ic_other_sign_in)!!)
        }
      }