From 1028aab307a3db923f77ce5d84afc588b2e67e64 Mon Sep 17 00:00:00 2001
From: Kamal Bramwell <kamal@elixxir.io>
Date: Fri, 2 Dec 2022 09:08:23 -0500
Subject: [PATCH] Added crustIntegration build config and UD config

---
 app/build.gradle.kts                          | 12 +++++++
 .../bindings/BindingsWrapperBindings.kt       | 25 ++++++++++++--
 .../messenger/data/datatype/Environment.kt    |  3 +-
 app/src/main/res/raw/ud_contact_crust.bin     |  1 +
 app/src/main/res/raw/ud_crust.crt             | 33 +++++++++++++++++++
 app/src/main/res/values/strings.xml           |  1 +
 6 files changed, 72 insertions(+), 3 deletions(-)
 create mode 100644 app/src/main/res/raw/ud_contact_crust.bin
 create mode 100644 app/src/main/res/raw/ud_crust.crt

diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 700289be..dc2e1a48 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -154,6 +154,18 @@ android {
                 "io.xxlabs.messenger.data.datatype.Environment.MAIN_NET"
             )
         }
+
+        create("crustIntegrationDebug") {
+            initWith(getByName("debug"))
+            versionNameSuffix = "-CrustIntegrationDebug"
+            matchingFallbacks += "debug"
+
+            buildConfigField(
+                "io.xxlabs.messenger.data.datatype.Environment",
+                "ENVIRONMENT",
+                "io.xxlabs.messenger.data.datatype.Environment.CRUST_INTEGRATION"
+            )
+        }
     }
 
     android.variantFilter {
diff --git a/app/src/main/java/io/xxlabs/messenger/bindings/wrapper/bindings/BindingsWrapperBindings.kt b/app/src/main/java/io/xxlabs/messenger/bindings/wrapper/bindings/BindingsWrapperBindings.kt
index 6f88fc6a..7084b08e 100644
--- a/app/src/main/java/io/xxlabs/messenger/bindings/wrapper/bindings/BindingsWrapperBindings.kt
+++ b/app/src/main/java/io/xxlabs/messenger/bindings/wrapper/bindings/BindingsWrapperBindings.kt
@@ -48,6 +48,12 @@ class BindingsWrapperBindings {
                         certificateFor(Environment.RELEASE_NET)
                     )
                 }
+                Environment.CRUST_INTEGRATION -> {
+                    downloadAndVerifySignedNdfWithUrl(
+                        NDF_URL_MAINNET,
+                        certificateFor(Environment.MAIN_NET)
+                    )
+                }
                 else -> getLocalNdf()
             }
 
@@ -60,7 +66,7 @@ class BindingsWrapperBindings {
 
         private fun certificateFor(environment: Environment): String {
             val certFile: Int = when (environment) {
-                Environment.MAIN_NET -> R.raw.mainnet
+                Environment.MAIN_NET, Environment.CRUST_INTEGRATION -> R.raw.mainnet
                 Environment.RELEASE_NET -> R.raw.release
                 else -> {
                     throw UnsupportedOperationException("No certificate found for $environment")
@@ -119,7 +125,10 @@ class BindingsWrapperBindings {
 
         private fun UserDiscoveryWrapperBindings.onUdInitialized() {
             XxMessengerApplication.isUserDiscoveryRunning = true
-            development(BuildConfig.DEBUG)
+            when (BuildConfig.ENVIRONMENT) {
+                Environment.CRUST_INTEGRATION -> crustIntegration(true)
+                else -> development(BuildConfig.DEBUG)
+            }
         }
 
         private fun UserDiscoveryWrapperBindings.development(enabled: Boolean) {
@@ -134,6 +143,18 @@ class BindingsWrapperBindings {
             }
         }
 
+        private fun UserDiscoveryWrapperBindings.crustIntegration(enabled: Boolean) {
+            if (enabled) {
+                setAlternativeUD(
+                    devUserDiscoveryIp,
+                    rawBytes(R.raw.ud_crust),
+                    rawBytes(R.raw.ud_contact_crust)
+                )
+            } else {
+                restoreNormalUD()
+            }
+        }
+
         private fun rawBytes(resourceId: Int): ByteArray {
             return appContext().resources
                 .openRawResource(resourceId)
diff --git a/app/src/main/java/io/xxlabs/messenger/data/datatype/Environment.kt b/app/src/main/java/io/xxlabs/messenger/data/datatype/Environment.kt
index d2f3204e..d2dc5ecb 100644
--- a/app/src/main/java/io/xxlabs/messenger/data/datatype/Environment.kt
+++ b/app/src/main/java/io/xxlabs/messenger/data/datatype/Environment.kt
@@ -3,5 +3,6 @@ package io.xxlabs.messenger.data.datatype
 enum class Environment {
     RELEASE_NET,
     MOCK,
-    MAIN_NET
+    MAIN_NET,
+    CRUST_INTEGRATION
 }
\ No newline at end of file
diff --git a/app/src/main/res/raw/ud_contact_crust.bin b/app/src/main/res/raw/ud_contact_crust.bin
new file mode 100644
index 00000000..923dbd2e
--- /dev/null
+++ b/app/src/main/res/raw/ud_contact_crust.bin
@@ -0,0 +1 @@
+<xxc(2)LF2ccT+sdqh0AIKlFFeDOJdnxzbQQYhGStgxhOXmijIDkAZiB9kZo+Dl3bRSbBi5pXZ82rOu2IQXz9+5sspChvoccZqgC/dXGhlesmiNy/EbKxWtptTF4tcNyQxtnmCXg1p/HwKey4G2XDekTw86lq6Lpmj72jozvRWlQisqvWz/5deiPaeFGKDKC0OrrDFnIib7WnKqdYt4XyTKdmObnmbvdCbliZq0zBl7J40qKy5FypYXGlZjStIm0R1qtD4XHMZMsrMJEGxdM55zJdSzknXbR8MNahUrGMyUOTivXLHzojYLht0gFQifKMVWhrDjUoVQV43KOLPmdBwY/2Kc5KvVloDeuDXYY0i7tD63gNIp9JA3gJQUJymDdwqbS13riT1DMHHkdTzKEyGdHS+v2l7AVSlJBiTKuyM00FBNuXhhIcFR7ONFCf8cRPOPPBx3Q6iHNsvsca3KPNhwOJBgaQvHSkjIMsudiR954QbwG9rbi2vxVobIgWYMl5j6vlBS/9rfbE/uLdTEQZfNsLKDCIVCCI4I1bYZxZrDLPrfXTrN6W0sCLE7a/kRBQAAAgA7+LwJqiv9O1ogLnS4TYkSEg==xxc>
\ No newline at end of file
diff --git a/app/src/main/res/raw/ud_crust.crt b/app/src/main/res/raw/ud_crust.crt
new file mode 100644
index 00000000..9900bcdc
--- /dev/null
+++ b/app/src/main/res/raw/ud_crust.crt
@@ -0,0 +1,33 @@
+-----BEGIN CERTIFICATE-----
+MIIFqTCCA5GgAwIBAgIUEVshfaLgjzuVfLlyk0mTsXIkVewwDQYJKoZIhvcNAQEL
+BQAwgYAxCzAJBgNVBAYTAktZMRQwEgYDVQQHDAtHZW9yZ2UgVG93bjETMBEGA1UE
+CgwKeHggbmV0d29yazEPMA0GA1UECwwGRGV2T3BzMRMwEQYDVQQDDAp4eC5uZXR3
+b3JrMSAwHgYJKoZIhvcNAQkBFhFhZG1pbnNAeHgubmV0d29yazAeFw0yMTA1MDcx
+NTExNTVaFw0zMTA1MDUxNTExNTVaMIGAMQswCQYDVQQGEwJLWTEUMBIGA1UEBwwL
+R2VvcmdlIFRvd24xEzARBgNVBAoMCnh4IG5ldHdvcmsxDzANBgNVBAsMBkRldk9w
+czETMBEGA1UEAwwKeHgubmV0d29yazEgMB4GCSqGSIb3DQEJARYRYWRtaW5zQHh4
+Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC1dYoVYmYA
+L4TaKC9g3cTM8LqTD7Ofdo4LKkkluqPKadX6rZyrvO90LtOtcH/1yxipTOnaKF0J
+9/kTrxgTroKgIrHuzHOE7w87hcV4zPveYX+4nc8OBQRkVh0slIfPGUWQMSAx0ojv
+Aqstkrk8SapcSJK0AJi2wHephJhSnmnKbq56NSD4VwGbT9O8YAqsrU0FzGxTcers
+QILgQY3BdcnzJL3VRjzMaLT3oCbXS2FPD6Z46JVs/jCc+fg7TT7N1VJwsNJ0w7gR
+nV3iB5XG/9Em/khQ2Ne2mPRoh4xaXPFeAmXYhiREFI2t4LrgeHwySuRhsRLolYA+
+95nSZ1FCuPabV+jv2UURLN581VzLjgOA8Ad60P1yKfyP6N2BcR/99xD/Y+pBvsn5
+wgSVbPTxq15M3WehPLVvoie66pg25uLo+EdyvkzFIBjdy8oNW5qKB6IhrqM5OKsp
+xvdh/nQ/6bikIZxmdJqhTs0slhD6NlY+RnHNg/9xyDU/aoU/tn06cL9xlhVA88A/
+I1Tz5JJdF6G05O/MaTe5FaCJJly6+uY3R6O9f4eKdeuwVdvLHjKvFHir78djG5wq
+xYieGaiUSxy6kr0b283pVNxWlWVPUxlRQpr9EWB9cfKzjuMie83xdCGfJOgfiw1q
+KOirdiO3Y/goSsndolKrARWRO5Af4P4f/wIDAQABoxkwFzAVBgNVHREEDjAMggp4
+eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQAIUMML1m+NXFF2qnXrkbJUrr0Y
+kMejzFkSrx0PypqXThDUwdCdkYZkNzcfTB/jvNMn6PfU7uR5OYqTgKjHyGxG7ZZs
+RhxL21jTUYq9H45aMRYJzOZ/jOag2QbrV+46YsbCMJoZhD9da2qVOLNPHyG1pYfY
+HzlObq+uy23iNQSL9dNSw9PbvPY8UVMqkY9dXEqFtOuivLoacUU6+ZiOnp/Cbed8
+E+oIhP7U3Zlnl1WMyMM94ltdVOqpzyiaNuqLE1S7ngN1qukiu63B50JH7YCxiwuC
+IrcyRErwrCPFdpjxsgJViH3cQG3Y07Eof2KJRYoyJ1NF9UgXfTpZ3P7lDSEtDre2
+YLKZbAPJRYwnyrPmw/Gs1PNIf02C+UglgqhtcpvTLQ+PxJp0u58JJfKqUDqzOAYl
+OtVJJ71coADrz9ON1W9TsJ154sHIQVF/wjLic9mUOnn0zsWuk2ClcGJp67UF8ZSe
+eWbnQipc/rxcsh9KF/n+lG7thmEaJ10tntr0X5vYR4e1FjIlfc2wk46yH7+pIl/3
+R9quX/3zRxxNKNugkz+Jp+WeL6oP2ozzh4Nr9H1rdAsgkj89t2RKteXp4XZ8Pp1i
+uXO9ulyHkAvQxyehoFk44Q0Z2AEkSDbNCtQ5yRKTKoeeL04vbAvn7L0XWQ7jDJje
+xHGnyrYJGhiR8Sp20w==
+-----END CERTIFICATE-----
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index d03c49d8..e569b8ec 100755
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -5,6 +5,7 @@
     <string name="xx_app_name_mainNet">xx messenger</string>
     <string name="xx_app_name_mainNetDebug">xx messenger</string>
     <string name="xx_app_name_releaseNetDebug">xx messenger</string>
+    <string name="xx_app_name_crustIntegrationDebug">xx messenger</string>
 
     <!-- Bottom navigation Menu Titles -->
 
-- 
GitLab