From 9536c3cc0772d3b9c463ea1b7b14709d651a3cc4 Mon Sep 17 00:00:00 2001 From: Liam Date: Wed, 24 Jan 2024 17:55:06 +0000 Subject: [PATCH 1/3] chore: update sample application to show how to use the new Evervault provider to source PCRs --- .../sdk/enclaves/AttestationDocCache.kt | 2 +- sampleapplication/build.gradle.kts | 2 +- .../sampleapplication/ui/views/EnclaveView.kt | 22 ++++++++++++------- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/evervault-enclaves/src/main/java/com/evervault/sdk/enclaves/AttestationDocCache.kt b/evervault-enclaves/src/main/java/com/evervault/sdk/enclaves/AttestationDocCache.kt index 4491f58..ecd579d 100644 --- a/evervault-enclaves/src/main/java/com/evervault/sdk/enclaves/AttestationDocCache.kt +++ b/evervault-enclaves/src/main/java/com/evervault/sdk/enclaves/AttestationDocCache.kt @@ -33,7 +33,7 @@ class AttestationDocCache(private val enclaveName: String, private val appUuid: if(retries >= 0) { try { val url = - "https://${enclaveName}.${appUuid}.cage.evervault.com/.well-known/attestation" + "https://${enclaveName}.${appUuid}.enclave.evervault.com/.well-known/attestation" val response = getDocFromEnclave(url) val decodedDoc = Base64.decode(response.attestationDoc, Base64.DEFAULT) set(decodedDoc) diff --git a/sampleapplication/build.gradle.kts b/sampleapplication/build.gradle.kts index 665b063..5577e4d 100644 --- a/sampleapplication/build.gradle.kts +++ b/sampleapplication/build.gradle.kts @@ -21,7 +21,7 @@ android { buildConfigField("String", "ENCLAVE_UUID", "\"hello-enclave\"") buildConfigField("String", "APP_UUID", "\"app-33b88ca7da0d\"") - buildConfigField("String", "PCR_CALLBACK_URL", "\"https://blackhole.posterior.io/0xljnh\"") + buildConfigField("String", "PCR_CALLBACK_URL", "\"https://api.evervault.com/enclaves/hello-enclave/attestation\"") } buildTypes { diff --git a/sampleapplication/src/main/java/com/evervault/sampleapplication/ui/views/EnclaveView.kt b/sampleapplication/src/main/java/com/evervault/sampleapplication/ui/views/EnclaveView.kt index f74f23d..1054d95 100644 --- a/sampleapplication/src/main/java/com/evervault/sampleapplication/ui/views/EnclaveView.kt +++ b/sampleapplication/src/main/java/com/evervault/sampleapplication/ui/views/EnclaveView.kt @@ -32,7 +32,7 @@ import java.io.IOException @Composable fun EnclaveView() { - val enclaveName = BuildConfig.ENCLAVE_UUID + val enclaveName = BuildConfig.ENCLAVE_NAME val appUuid = BuildConfig.APP_UUID var cachedCallResponseText: String? by remember { mutableStateOf(null) } @@ -40,8 +40,8 @@ fun EnclaveView() { LaunchedEffect(Unit) { withContext(Dispatchers.IO) { - cachedCallResponseText = staticPCRsEnclaveRequest(enclaveName, appUuid) - staticPCRCallResponseText = cacheManagerEnclaveCall(enclaveName, appUuid) + staticPCRCallResponseText = staticPCRsEnclaveRequest(enclaveName, appUuid) + cachedCallResponseText = cacheManagerEnclaveCall(enclaveName, appUuid) } } @@ -61,11 +61,17 @@ fun EnclaveView() { } } +// Data type to mirror the Evervault API response shape from the Enclave attestation info endpoint. +data class EnclaveAttestationData( + val data: List +) + fun cacheManagerEnclaveCall(enclaveName: String, appUuid: String): String { - val url = "https://$enclaveName.$appUuid.cage.evervault.com/compute" + val url = "https://$enclaveName.$appUuid.enclave.evervault.com/compute" val pcrClient = OkHttpClient.Builder().build() val pcrRequest = Request.Builder() .url(BuildConfig.PCR_CALLBACK_URL) + .header("x-evervault-app-id", appUuid.replace("-","_")) .build() val jsonPayload = JSONObject() @@ -86,9 +92,9 @@ fun cacheManagerEnclaveCall(enclaveName: String, appUuid: String): String { try { val pcrCallback: PcrCallback = { val pcrResponse = pcrClient.newCall(pcrRequest).execute() - val type = object : TypeToken>() {}.type - val responseMap: List = Gson().fromJson(pcrResponse.body!!.string(), type) - responseMap + val type = object : TypeToken() {}.type + val responseMap: EnclaveAttestationData = Gson().fromJson(pcrResponse.body!!.string(), type) + responseMap.data } val client = OkHttpClient.Builder() @@ -116,7 +122,7 @@ fun cacheManagerEnclaveCall(enclaveName: String, appUuid: String): String { } fun staticPCRsEnclaveRequest(enclaveName: String, appUuid: String): String { - val url = "https://$enclaveName.$appUuid.cage.evervault.com/compute" + val url = "https://$enclaveName.$appUuid.enclave.evervault.com/compute" val jsonPayload = JSONObject() jsonPayload.put("a", 1) From a58a32a6d5bc7a3224d222fdbab5ede5c3874615 Mon Sep 17 00:00:00 2001 From: Liam Date: Wed, 24 Jan 2024 18:03:15 +0000 Subject: [PATCH 2/3] Update build config to use Enclave name --- sampleapplication/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sampleapplication/build.gradle.kts b/sampleapplication/build.gradle.kts index 5577e4d..b45279d 100644 --- a/sampleapplication/build.gradle.kts +++ b/sampleapplication/build.gradle.kts @@ -19,7 +19,7 @@ android { useSupportLibrary = true } - buildConfigField("String", "ENCLAVE_UUID", "\"hello-enclave\"") + buildConfigField("String", "ENCLAVE_NAME", "\"hello-enclave\"") buildConfigField("String", "APP_UUID", "\"app-33b88ca7da0d\"") buildConfigField("String", "PCR_CALLBACK_URL", "\"https://api.evervault.com/enclaves/hello-enclave/attestation\"") } From 8eaf701b31c09cf40bce3982e618e62346f97108 Mon Sep 17 00:00:00 2001 From: Liam Date: Thu, 25 Jan 2024 17:54:22 +0000 Subject: [PATCH 3/3] update datatype name to match docs --- .../com/evervault/sampleapplication/ui/views/EnclaveView.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sampleapplication/src/main/java/com/evervault/sampleapplication/ui/views/EnclaveView.kt b/sampleapplication/src/main/java/com/evervault/sampleapplication/ui/views/EnclaveView.kt index 1054d95..2dfc696 100644 --- a/sampleapplication/src/main/java/com/evervault/sampleapplication/ui/views/EnclaveView.kt +++ b/sampleapplication/src/main/java/com/evervault/sampleapplication/ui/views/EnclaveView.kt @@ -62,7 +62,7 @@ fun EnclaveView() { } // Data type to mirror the Evervault API response shape from the Enclave attestation info endpoint. -data class EnclaveAttestationData( +data class PCRContainer( val data: List ) @@ -92,8 +92,8 @@ fun cacheManagerEnclaveCall(enclaveName: String, appUuid: String): String { try { val pcrCallback: PcrCallback = { val pcrResponse = pcrClient.newCall(pcrRequest).execute() - val type = object : TypeToken() {}.type - val responseMap: EnclaveAttestationData = Gson().fromJson(pcrResponse.body!!.string(), type) + val type = object : TypeToken() {}.type + val responseMap: PCRContainer = Gson().fromJson(pcrResponse.body!!.string(), type) responseMap.data }