diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 7cd4331..237db74 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -65,6 +65,17 @@
                 android:value="org.lineageos.lineageparts.PartsUpdater" />
         </activity>
 
+        <activity android:name=".trust.TrustOnBoardingActivity"
+            android:label="@string/trust_title"
+            android:theme="@style/OnBoardingStyle"
+            android:exported="true"
+            android:enabled="true">
+            <intent-filter android:priority="-4">
+                <action android:name="org.lineageos.lineageparts.TRUST_HINT" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+
         <receiver android:name=".BootReceiver" android:enabled="true">
             <intent-filter android:priority="2147483647">
                 <action android:name="android.intent.action.BOOT_COMPLETED" />
@@ -210,6 +221,18 @@
                 android:resource="@string/style_summary" />
         </activity-alias>
 
+        <!-- Trust interface (Security category) -->
+        <activity-alias
+            android:name=".trust.TrustPreferences"
+            android:label="@string/trust_title"
+            android:targetActivity="PartsActivity">
+            <intent-filter android:priority="-4">
+                <action android:name="org.lineageos.lineageparts.action.SETTINGS" />
+                <action android:name="org.lineageos.lineageparts.TRUST_INTERFACE" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity-alias>
+
         <!-- Expanded Desktop settings (Display category) -->
         <activity-alias
             android:name=".applications.ExpandedDesktopSettings"
diff --git a/res/drawable/avd_trust_onboarding.xml b/res/drawable/avd_trust_onboarding.xml
new file mode 100644
index 0000000..a06b7d4
--- /dev/null
+++ b/res/drawable/avd_trust_onboarding.xml
@@ -0,0 +1,108 @@
+<!--
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<animated-vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:aapt="http://schemas.android.com/aapt">
+    <aapt:attr name="android:drawable">
+        <vector
+            android:name="vector"
+            android:width="256dp"
+            android:height="256dp"
+            android:viewportWidth="256"
+            android:viewportHeight="256">
+            <group android:name="trust">
+                <path
+                    android:name="smile"
+                    android:pathData="M 255.897 26 C 255.965 26.806 256 27.621 256 28.445 L 256 26 L 255.897 26 Z M 228 0.003 L 228 0 L 227.556 0 C 227.704 0 227.852 0.001 228 0.003 Z M 0.003 28 C 0.002 28.083 0.001 28.167 0.001 28.25 C 0 28.315 0 28.38 0 28.445 L 0 28 L 0.003 28 Z M 226.162 144.612 C 227.47 136.875 222.251 129.536 214.5 128.228 C 206.763 126.933 199.424 132.153 198.116 139.904 C 192.398 173.867 162.844 199.111 128 199.111 C 93.156 199.111 63.602 173.881 57.87 139.918 C 56.576 132.181 49.237 126.962 41.486 128.256 C 33.749 129.564 28.516 136.903 29.824 144.654 C 37.845 192.242 79.218 227.556 128 227.556 C 176.782 227.556 218.155 192.228 226.162 144.612 Z"
+                    android:fillColor="#ffffff"
+                    android:fillAlpha="0"
+                    android:strokeWidth="1"/>
+                <group
+                    android:name="nose_grp"
+                    android:pivotX="126"
+                    android:pivotY="126"
+                    android:scaleX="0"
+                    android:scaleY="0">
+                    <path
+                        android:name="nose"
+                        android:pathData="M 128 42.667 C 118.574 42.667 109.505 44.195 101.027 47.017 C 92.549 49.839 84.663 53.955 77.602 59.13 C 70.541 64.306 64.306 70.541 59.13 77.602 C 53.955 84.663 49.839 92.549 47.017 101.027 C 44.195 109.505 42.667 118.574 42.667 128 C 42.667 151.565 52.218 172.899 67.659 188.341 C 83.101 203.782 104.434 213.333 128 213.333 C 151.565 213.333 172.899 203.782 188.341 188.341 C 203.782 172.899 213.333 151.565 213.333 128 C 213.333 112.29 209.088 97.571 201.683 84.93 C 194.278 72.288 183.712 61.722 171.07 54.317 C 158.429 46.912 143.71 42.667 128 42.667 C 128 42.667 128 42.667 128 42.667"
+                        android:fillColor="#ffffff"
+                        android:strokeWidth="1"/>
+                </group>
+            </group>
+        </vector>
+    </aapt:attr>
+    <target android:name="nose">
+        <aapt:attr name="android:animation">
+            <objectAnimator
+                android:propertyName="pathData"
+                android:startOffset="500"
+                android:duration="1000"
+                android:valueFrom="M 128 42.667 C 118.574 42.667 109.505 44.195 101.027 47.017 C 92.549 49.839 84.663 53.955 77.602 59.13 C 70.541 64.306 64.306 70.541 59.13 77.602 C 53.955 84.663 49.839 92.549 47.017 101.027 C 44.195 109.505 42.667 118.574 42.667 128 C 42.667 151.565 52.218 172.899 67.659 188.341 C 83.101 203.782 104.434 213.333 128 213.333 C 151.565 213.333 172.899 203.782 188.341 188.341 C 203.782 172.899 213.333 151.565 213.333 128 C 213.333 112.29 209.088 97.571 201.683 84.93 C 194.278 72.288 183.712 61.722 171.07 54.317 C 158.429 46.912 143.71 42.667 128 42.667 C 128 42.667 128 42.667 128 42.667"
+                android:valueTo="M 142.222 42.667 C 142.222 34.816 135.851 28.445 128 28.445 C 121.643 28.445 116.252 32.612 114.432 38.372 C 114.432 38.372 114.432 38.372 114.432 38.372 C 105.334 64.915 96.237 91.459 87.139 118.002 C 85.973 121.116 85.333 124.487 85.333 128 C 85.333 143.701 98.062 156.444 113.778 156.444 C 123.259 156.444 132.741 156.444 142.222 156.444 C 150.044 156.444 157.156 153.316 162.276 148.053 C 167.538 142.933 170.667 135.822 170.667 128 C 151.704 127.995 132.741 127.991 113.778 127.986 C 115.854 121.941 117.931 115.897 120.007 109.852 C 127.118 89.097 134.229 68.343 141.34 47.588 C 141.909 46.052 142.222 44.388 142.222 42.667"
+                android:valueType="pathType"
+                android:interpolator="@android:interpolator/fast_out_slow_in"/>
+        </aapt:attr>
+    </target>
+    <target android:name="nose_grp">
+        <aapt:attr name="android:animation">
+            <set>
+                <objectAnimator
+                    android:propertyName="scaleX"
+                    android:startOffset="500"
+                    android:duration="1000"
+                    android:valueFrom="1.15"
+                    android:valueTo="1"
+                    android:valueType="floatType"
+                    android:interpolator="@android:interpolator/fast_out_slow_in"/>
+                <objectAnimator
+                    android:propertyName="scaleY"
+                    android:startOffset="500"
+                    android:duration="1000"
+                    android:valueFrom="1.15"
+                    android:valueTo="1"
+                    android:valueType="floatType"
+                    android:interpolator="@android:interpolator/fast_out_slow_in"/>
+                <objectAnimator
+                    android:propertyName="scaleX"
+                    android:duration="500"
+                    android:valueFrom="0"
+                    android:valueTo="1.15"
+                    android:valueType="floatType"
+                    android:interpolator="@android:interpolator/fast_out_slow_in"/>
+                <objectAnimator
+                    android:propertyName="scaleY"
+                    android:duration="500"
+                    android:valueFrom="0"
+                    android:valueTo="1.15"
+                    android:valueType="floatType"
+                    android:interpolator="@android:interpolator/fast_out_slow_in"/>
+            </set>
+        </aapt:attr>
+    </target>
+    <target android:name="smile">
+        <aapt:attr name="android:animation">
+            <objectAnimator
+                android:propertyName="fillAlpha"
+                android:startOffset="900"
+                android:duration="500"
+                android:valueFrom="0"
+                android:valueTo="1"
+                android:valueType="floatType"
+                android:interpolator="@android:anim/accelerate_decelerate_interpolator"/>
+        </aapt:attr>
+    </target>
+</animated-vector>
\ No newline at end of file
diff --git a/res/drawable/ic_info.xml b/res/drawable/ic_info.xml
new file mode 100644
index 0000000..e15284b
--- /dev/null
+++ b/res/drawable/ic_info.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright (c) 2018 The LineageOS Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+
+    <path
+        android:fillColor="?android:attr/textColorSecondary"
+        android:pathData="M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M11,17H13V11H11V17Z" />
+</vector>
diff --git a/res/drawable/ic_privacy_guard_off.xml b/res/drawable/ic_privacy_guard_off.xml
index 846dad3..283d15c 100644
--- a/res/drawable/ic_privacy_guard_off.xml
+++ b/res/drawable/ic_privacy_guard_off.xml
@@ -23,5 +23,5 @@
 
     <path
         android:fillColor="#FFFFFFFF"
-        android:pathData="M12 2.119c0 0 -3.109 1.305 -4.756 1.596C5.85 3.961 3 3.826 3 3.826l0 4.01c0 5.554 3.84 12.68 9 13.94 5.16 -1.26 9 -8.39 9 -13.94l0 -4.014c0 0 -3.24 0.066 -4.82 -0.244C14.73 3.294 12 2.115 12 2.115Zm0 3.389a2.721 2.543 0 0 1 2.72 2.545l0 1.017 0.54 0a1.088 1.017 0 0 1 1.09 1.02l0 5.08a1.088 1.017 0 0 1 -1.09 1.02l-6.524 0c-0.604 0 -1.09 -0.46 -1.09 -1.02l0 -5.08a1.088 1.017 0 0 1 1.09 -1.02l4.894 0 0 -1.017A1.633 1.526 0 0 0 12 6.525 1.633 1.526 0 0 0 10.37 8.053l-1.091 0A2.721 2.543 0 0 1 12 5.508Z" />
+        android:pathData="M5,3L19,3C20.105,3 21,3.895 21,5L21,12C21,16.971 16.971,21 12,21C7.029,21 3,16.971 3,12L3,5C3,3.895 3.895,3 5,3ZM18.902,13.168C18.994,12.624 18.627,12.108 18.082,12.016C17.538,11.925 17.022,12.292 16.93,12.837C16.528,15.225 14.45,17 12,17C9.55,17 7.472,15.226 7.069,12.838C6.978,12.294 6.462,11.927 5.917,12.018C5.373,12.11 5.005,12.626 5.097,13.171C5.661,16.517 8.57,19 12,19C15.43,19 18.339,16.516 18.902,13.168ZM11.046,5.698L9.127,11.297C9.045,11.516 9,11.753 9,12C9,13.104 9.895,14 11,14C11.01,14 11.019,14 11.029,14L13,14C13.55,14 14.05,13.78 14.41,13.41C14.78,13.05 15,12.55 15,12L12.6,12L11,11.999L11.438,10.724L11.646,10.116L12.938,6.346C12.978,6.238 13,6.121 13,6C13,5.448 12.552,5 12,5C11.553,5 11.174,5.293 11.046,5.698Z" />
 </vector>
diff --git a/res/drawable/ic_privacy_guard_on.xml b/res/drawable/ic_privacy_guard_on.xml
index 2f04f01..11e70c7 100644
--- a/res/drawable/ic_privacy_guard_on.xml
+++ b/res/drawable/ic_privacy_guard_on.xml
@@ -23,5 +23,5 @@
 
     <path
         android:fillColor="#FFFFFFFF"
-        android:pathData="M12 2.119c0 0 -3.109 1.305 -4.756 1.596C5.85 3.961 3 3.826 3 3.826l0 4.01c0 5.554 3.84 12.68 9 13.94 5.16 -1.26 9 -8.39 9 -13.94l0 -4.014c0 0 -3.24 0.066 -4.82 -0.244C14.73 3.294 12 2.115 12 2.115Zm0 3.389a2.721 2.543 0 0 1 2.72 2.545l0 1.015 0.55 0a1.088 1.017 0 0 1 1.08 1.022l0 5.08a1.088 1.017 0 0 1 -1.08 1.02l-6.534 0a1.088 1.017 0 0 1 -1.09 -1.02l0 -5.08c0 -0.569 0.492 -1.022 1.09 -1.022l0.545 0 0 -1.015A2.721 2.543 0 0 1 12 5.508Zm0 1.017a1.633 1.526 0 0 0 -1.63 1.528l0 1.015 3.26 0 0 -1.015A1.633 1.526 0 0 0 12 6.525Z" />
+        android:pathData="M5,3L19,3C20.105,3 21,3.895 21,5L21,12C21,16.971 16.971,21 12,21C7.029,21 3,16.971 3,12L3,5C3,3.895 3.895,3 5,3ZM18.902,13.168C18.994,12.624 18.627,12.108 18.082,12.016C17.538,11.925 17.022,12.292 16.93,12.837C16.528,15.225 14.45,17 12,17C9.55,17 7.472,15.226 7.069,12.838C6.978,12.294 6.462,11.927 5.917,12.018C5.373,12.11 5.005,12.626 5.097,13.171C5.661,16.517 8.57,19 12,19C15.43,19 18.339,16.516 18.902,13.168ZM11.046,5.698L9.127,11.297C9.045,11.516 9,11.753 9,12C9,13.104 9.895,14 11,14C11.01,14 11.019,14 11.029,14L13,14C13.55,14 14.05,13.78 14.41,13.41C14.78,13.05 15,12.55 15,12L12.6,12L11,11.999L11.438,10.724L11.646,10.116L12.938,6.346C12.978,6.238 13,6.121 13,6C13,5.448 12.552,5 12,5C11.553,5 11.174,5.293 11.046,5.698Z" />
 </vector>
diff --git a/res/drawable/ic_trust.xml b/res/drawable/ic_trust.xml
new file mode 100644
index 0000000..a3f84f5
--- /dev/null
+++ b/res/drawable/ic_trust.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?android:attr/colorControlNormal">
+
+    <path
+        android:fillColor="#000000"
+        android:pathData="M5,3L19,3C20.105,3 21,3.895 21,5L21,12C21,16.971 16.971,21 12,21C7.029,21 3,16.971 3,12L3,5C3,3.895 3.895,3 5,3ZM18.902,13.168C18.994,12.624 18.627,12.108 18.082,12.016C17.538,11.925 17.022,12.292 16.93,12.837C16.528,15.225 14.45,17 12,17C9.55,17 7.472,15.226 7.069,12.838C6.978,12.294 6.462,11.927 5.917,12.018C5.373,12.11 5.005,12.626 5.097,13.171C5.661,16.517 8.57,19 12,19C15.43,19 18.339,16.516 18.902,13.168ZM11.046,5.698L9.127,11.297C9.045,11.516 9,11.753 9,12C9,13.104 9.895,14 11,14C11.01,14 11.019,14 11.029,14L13,14C13.55,14 14.05,13.78 14.41,13.41C14.78,13.05 15,12.55 15,12L12.6,12L11,11.999L11.438,10.724L11.646,10.116L12.938,6.346C12.978,6.238 13,6.121 13,6C13,5.448 12.552,5 12,5C11.553,5 11.174,5.293 11.046,5.698Z" />
+</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_trust_encryption_bad.xml b/res/drawable/ic_trust_encryption_bad.xml
new file mode 100644
index 0000000..7a552c9
--- /dev/null
+++ b/res/drawable/ic_trust_encryption_bad.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+
+    <path
+        android:fillColor="@color/trust_status_bad"
+        android:pathData="M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17Z" />
+</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_trust_encryption_good.xml b/res/drawable/ic_trust_encryption_good.xml
new file mode 100644
index 0000000..2f771fa
--- /dev/null
+++ b/res/drawable/ic_trust_encryption_good.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+
+    <path
+        android:fillColor="@color/trust_status_good"
+        android:pathData="M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z" />
+</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_trust_encryption_poor.xml b/res/drawable/ic_trust_encryption_poor.xml
new file mode 100644
index 0000000..9a0a1e4
--- /dev/null
+++ b/res/drawable/ic_trust_encryption_poor.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+
+    <path
+        android:fillColor="@color/trust_status_poor"
+        android:pathData="M12,1A5,5 0 0,0 7,6V8H6A2,2 0 0,0 4,10V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V10A2,2 0 0,0 18,8H17V6A5,5 0 0,0 12,1M12,2.9C13.71,2.9 15.1,4.29 15.1,6V8H8.9V6C8.9,4.29 10.29,2.9 12,2.9M11,11H13V15H11V11M11,17H13V19H11V17Z" />
+</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_trust_onboarding_bg.xml b/res/drawable/ic_trust_onboarding_bg.xml
new file mode 100644
index 0000000..71e2a57
--- /dev/null
+++ b/res/drawable/ic_trust_onboarding_bg.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="256dp"
+    android:height="256dp"
+    android:viewportWidth="256"
+    android:viewportHeight="256"
+    android:tint="?android:attr/colorAccent">
+
+    <path
+        android:fillColor="#000000"
+        android:pathData="M 28.4444 0L 227.556 0C 243.271 0 256 12.7289 256 28.4444L 256 128C 256 198.699 198.699 256 128 256C 57.3013 256 0 198.699 0 128L 0 28.4444C 0 12.7289 12.7289 0 28.4444 0Z" />
+</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_trust_root_bad.xml b/res/drawable/ic_trust_root_bad.xml
new file mode 100644
index 0000000..3602789
--- /dev/null
+++ b/res/drawable/ic_trust_root_bad.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+
+    <path
+        android:fillColor="@color/trust_status_bad"
+        android:pathData="M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M7,18H9L9.35,16H13.35L13,18H15L15.35,16H17.35L17.71,14H15.71L16.41,10H18.41L18.76,8H16.76L17.12,6H15.12L14.76,8H10.76L11.12,6H9.12L8.76,8H6.76L6.41,10H8.41L7.71,14H5.71L5.35,16H7.35L7,18M10.41,10H14.41L13.71,14H9.71L10.41,10Z" />
+</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_trust_root_good.xml b/res/drawable/ic_trust_root_good.xml
new file mode 100644
index 0000000..b080fdc
--- /dev/null
+++ b/res/drawable/ic_trust_root_good.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+
+    <path
+        android:fillColor="@color/trust_status_good"
+        android:pathData="M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M7,18H9L9.35,16H13.35L13,18H15L15.35,16H17.35L17.71,14H15.71L16.41,10H18.41L18.76,8H16.76L17.12,6H15.12L14.76,8H10.76L11.12,6H9.12L8.76,8H6.76L6.41,10H8.41L7.71,14H5.71L5.35,16H7.35L7,18M10.41,10H14.41L13.71,14H9.71L10.41,10Z" />
+</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_trust_root_poor.xml b/res/drawable/ic_trust_root_poor.xml
new file mode 100644
index 0000000..38c6858
--- /dev/null
+++ b/res/drawable/ic_trust_root_poor.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+
+    <path
+        android:fillColor="@color/trust_status_poor"
+        android:pathData="M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M7,18H9L9.35,16H13.35L13,18H15L15.35,16H17.35L17.71,14H15.71L16.41,10H18.41L18.76,8H16.76L17.12,6H15.12L14.76,8H10.76L11.12,6H9.12L8.76,8H6.76L6.41,10H8.41L7.71,14H5.71L5.35,16H7.35L7,18M10.41,10H14.41L13.71,14H9.71L10.41,10Z" />
+</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_trust_security_patches_bad.xml b/res/drawable/ic_trust_security_patches_bad.xml
new file mode 100644
index 0000000..2b8e82b
--- /dev/null
+++ b/res/drawable/ic_trust_security_patches_bad.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+
+    <path
+        android:fillColor="@color/trust_status_bad"
+        android:pathData="M12,1L3,5v6c0,5.55,3.84,10.74,9,12c5.16-1.26,9-6.45,9-12V5L12,1z M19,11c0,4.52-2.98,8.69-7,9.93C7.98,19.69,5,15.52,5,11 V6.3l7-3.11l7,3.11V11z" />
+    <path
+        android:fillColor="@color/trust_status_bad"
+        android:strokeWidth="1"
+        android:pathData="M6.26,16h11.48c-1.25,2.34-3.3,4.18-5.74,4.93C9.56,20.18,7.51,18.34,6.26,16z" />
+</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_trust_security_patches_good.xml b/res/drawable/ic_trust_security_patches_good.xml
new file mode 100644
index 0000000..e10727d
--- /dev/null
+++ b/res/drawable/ic_trust_security_patches_good.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+
+    <path
+        android:fillColor="@color/trust_status_good"
+        android:pathData="M12,1L3,5v6c0,5.55,3.84,10.74,9,12c5.16-1.26,9-6.45,9-12V5L12,1z M19,11c0,4.52-2.98,8.69-7,9.93C7.98,19.69,5,15.52,5,11 V6.3l7-3.11l7,3.11V11z" />
+    <path
+        android:fillColor="@color/trust_status_good"
+        android:strokeWidth="1"
+        android:pathData="M6.26,16h11.48c-1.25,2.34-3.3,4.18-5.74,4.93C9.56,20.18,7.51,18.34,6.26,16z M5,10v1 c0,0.34,0.02,0.67,0.05,1c0.07,0.68,0.2,1.35,0.4,2h13.1c0.2-0.65,0.33-1.32,0.4-2c0.03-0.33,0.05-0.66,0.05-1v-1H5z M12,3.19L5,6.3 V8h14V6.3L12,3.19z" />
+</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_trust_security_patches_poor.xml b/res/drawable/ic_trust_security_patches_poor.xml
new file mode 100644
index 0000000..cc5e8ed
--- /dev/null
+++ b/res/drawable/ic_trust_security_patches_poor.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+
+    <path
+        android:fillColor="@color/trust_status_poor"
+        android:pathData="M12,1L3,5v6c0,5.55,3.84,10.74,9,12c5.16-1.26,9-6.45,9-12V5L12,1z M19,11c0,4.52-2.98,8.69-7,9.93C7.98,19.69,5,15.52,5,11 V6.3l7-3.11l7,3.11V11z" />
+    <path
+        android:fillColor="@color/trust_status_poor"
+        android:strokeWidth="1"
+        android:pathData="M6.26,16h11.48c-1.25,2.34-3.3,4.18-5.74,4.93C9.56,20.18,7.51,18.34,6.26,16z M5,10v1 c0,0.34,0.02,0.67,0.05,1c0.07,0.68,0.2,1.35,0.4,2h13.1c0.2-0.65,0.33-1.32,0.4-2c0.03-0.33,0.05-0.66,0.05-1v-1H5z" />
+</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_trust_selinux_bad.xml b/res/drawable/ic_trust_selinux_bad.xml
new file mode 100644
index 0000000..a4ae4a5
--- /dev/null
+++ b/res/drawable/ic_trust_selinux_bad.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+
+    <path
+        android:fillColor="@color/trust_status_bad"
+        android:pathData="M21,2H3C2,2,2,3,2,3v3h20V3C22,2,21,2,21,2z M14,5c-0.55,0-1-0.45-1-1s0.45-1,1-1s1,0.45,1,1S14.55,5,14,5z M17,5 c-0.55,0-1-0.45-1-1s0.45-1,1-1s1,0.45,1,1S17.55,5,17,5z M20,5c-0.55,0-1-0.45-1-1s0.45-1,1-1s1,0.45,1,1S20.55,5,20,5z M21,8H3 C2,8,2,9,2,9v12c0,1,1,1,1,1h18c1,0,1-1,1-1V9C22,8,21,8,21,8z M15.71,19.29l-1.42,1.42L12,18.42l-2.29,2.29l-1.42-1.42L10.58,17 l-2.29-2.29l1.42-1.42L12,15.58l2.29-2.29l1.42,1.42L13.42,17L15.71,19.29z M20,9c0.55,0,1,0.45,1,1s-0.45,1-1,1s-1-0.45-1-1 S19.45,9,20,9z M17,9c0.55,0,1,0.45,1,1s-0.45,1-1,1s-1-0.45-1-1S16.45,9,17,9z M14,9c0.55,0,1,0.45,1,1s-0.45,1-1,1s-1-0.45-1-1 S13.45,9,14,9z" />
+</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_trust_selinux_good.xml b/res/drawable/ic_trust_selinux_good.xml
new file mode 100644
index 0000000..f9b139b
--- /dev/null
+++ b/res/drawable/ic_trust_selinux_good.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+
+    <path
+        android:fillColor="@color/trust_status_good"
+        android:pathData="M21,8H3C2,8,2,9,2,9v12c0,1,1,1,1,1h18c1,0,1-1,1-1V9C22,8,21,8,21,8z M17,9c0.55,0,1,0.45,1,1s-0.45,1-1,1s-1-0.45-1-1 S16.45,9,17,9z M14,9c0.55,0,1,0.45,1,1s-0.45,1-1,1s-1-0.45-1-1S13.45,9,14,9z M20,20H4v-8h16V20z M20,11c-0.55,0-1-0.45-1-1 s0.45-1,1-1s1,0.45,1,1S20.55,11,20,11z M21,2H3C2,2,2,3,2,3v3h20V3C22,2,21,2,21,2z M14,5c-0.55,0-1-0.45-1-1s0.45-1,1-1 s1,0.45,1,1S14.55,5,14,5z M17,5c-0.55,0-1-0.45-1-1s0.45-1,1-1s1,0.45,1,1S17.55,5,17,5z M20,5c-0.55,0-1-0.45-1-1s0.45-1,1-1 s1,0.45,1,1S20.55,5,20,5z" />
+    <path
+        android:fillColor="@color/trust_status_good"
+        android:pathData="M 11 19.414 L 8.293 16.707 L 9.707 15.293 L 11 16.586 L 14.293 13.293 L 15.707 14.707 Z" />
+</vector>
\ No newline at end of file
diff --git a/res/layout-land/activity_trust_onboarding.xml b/res/layout-land/activity_trust_onboarding.xml
new file mode 100644
index 0000000..011a531
--- /dev/null
+++ b/res/layout-land/activity_trust_onboarding.xml
@@ -0,0 +1,89 @@
+<!-- Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <TextView
+        android:id="@+id/trust_onboarding_header"
+        style="@style/TextAppearance.AppCompat.Headline"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="56dp"
+        android:layout_centerHorizontal="true"
+        android:maxLines="1"
+        android:text="@string/trust_onboarding_title" />
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_below="@id/trust_onboarding_header"
+        android:layout_marginEnd="@dimen/trust_logo_horizontal_margin"
+        android:layout_marginStart="@dimen/trust_logo_horizontal_margin"
+        android:layout_marginTop="@dimen/trust_logo_vertical_margin"
+        android:gravity="center_vertical"
+        android:orientation="horizontal">
+
+        <ImageView
+            android:id="@+id/trust_onboarding_image"
+            android:layout_width="@dimen/trust_logo_width"
+            android:layout_height="@dimen/trust_logo_height"
+            android:layout_marginBottom="48dp"
+            android:layout_marginEnd="48dp"
+            android:layout_marginStart="48dp"
+            android:layout_marginTop="24dp"
+            android:adjustViewBounds="true"
+            android:src="@drawable/avd_trust_onboarding"
+            android:background="@drawable/ic_trust_onboarding_bg" />
+
+        <LinearLayout
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:gravity="center_horizontal"
+            android:orientation="vertical">
+
+            <TextView
+                style="@style/TextAppearance.AppCompat.Subhead"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:paddingTop="16dp"
+                android:text="@string/trust_onboarding_description"
+                android:textAlignment="center"
+                android:textColor="?android:attr/textColorSecondary" />
+
+            <Button
+                android:id="@+id/trust_onboarding_learn_more"
+                style="@style/Widget.AppCompat.Button.Borderless.Colored"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="8dp"
+                android:text="@string/trust_onboarding_learn_more" />
+        </LinearLayout>
+    </LinearLayout>
+
+    <Button
+        android:id="@+id/trust_onboarding_done"
+        style="@style/Base.Widget.AppCompat.Button.Colored"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentBottom="true"
+        android:layout_centerHorizontal="true"
+        android:layout_marginBottom="48dp"
+        android:paddingBottom="8dp"
+        android:paddingStart="16dp"
+        android:paddingEnd="16dp"
+        android:paddingTop="8dp"
+        android:text="@string/trust_onboarding_done" />
+</RelativeLayout>
diff --git a/res/layout/activity_trust_onboarding.xml b/res/layout/activity_trust_onboarding.xml
new file mode 100644
index 0000000..d09c023
--- /dev/null
+++ b/res/layout/activity_trust_onboarding.xml
@@ -0,0 +1,80 @@
+<!-- Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <TextView
+        android:id="@+id/trust_onboarding_header"
+        style="@style/TextAppearance.AppCompat.Headline"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="56dp"
+        android:layout_centerHorizontal="true"
+        android:maxLines="1"
+        android:text="@string/trust_onboarding_title" />
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_below="@id/trust_onboarding_header"
+        android:layout_marginEnd="@dimen/trust_logo_horizontal_margin"
+        android:layout_marginStart="@dimen/trust_logo_horizontal_margin"
+        android:layout_marginTop="@dimen/trust_logo_vertical_margin"
+        android:gravity="center_horizontal"
+        android:orientation="vertical">
+
+        <ImageView
+            android:id="@+id/trust_onboarding_image"
+            android:layout_width="@dimen/trust_logo_width"
+            android:layout_height="@dimen/trust_logo_height"
+            android:layout_marginEnd="48dp"
+            android:layout_marginStart="48dp"
+            android:adjustViewBounds="true"
+            android:src="@drawable/avd_trust_onboarding"
+            android:background="@drawable/ic_trust_onboarding_bg" />
+
+        <TextView
+            style="@style/TextAppearance.AppCompat.Subhead"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:paddingTop="16dp"
+            android:text="@string/trust_onboarding_description"
+            android:textAlignment="center"
+            android:textColor="?android:attr/textColorSecondary" />
+
+        <Button
+            android:id="@+id/trust_onboarding_learn_more"
+            style="@style/Widget.AppCompat.Button.Borderless.Colored"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="8dp"
+            android:text="@string/trust_onboarding_learn_more" />
+    </LinearLayout>
+
+    <Button
+        android:id="@+id/trust_onboarding_done"
+        style="@style/Base.Widget.AppCompat.Button.Colored"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentBottom="true"
+        android:layout_centerHorizontal="true"
+        android:layout_marginBottom="48dp"
+        android:paddingBottom="8dp"
+        android:paddingStart="16dp"
+        android:paddingEnd="16dp"
+        android:paddingTop="8dp"
+        android:text="@string/trust_onboarding_done" />
+</RelativeLayout>
diff --git a/res/values-land/dimens.xml b/res/values-land/dimens.xml
new file mode 100644
index 0000000..d84d7a3
--- /dev/null
+++ b/res/values-land/dimens.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+
+    <!-- Trust onBoarding -->
+    <dimen name="trust_logo_vertical_margin">0dp</dimen>
+    <dimen name="trust_logo_horizontal_margin">40dp</dimen>
+    <dimen name="trust_logo_height">-1px</dimen>
+    <dimen name="trust_logo_width">-2px</dimen>
+</resources>
\ No newline at end of file
diff --git a/res/values-large-land/dimens.xml b/res/values-large-land/dimens.xml
new file mode 100644
index 0000000..32ad854
--- /dev/null
+++ b/res/values-large-land/dimens.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+
+    <!-- Trust onBoarding -->
+    <dimen name="trust_logo_vertical_margin">72dp</dimen>
+    <dimen name="trust_logo_horizontal_margin">72dp</dimen>
+    <dimen name="trust_logo_height">256dp</dimen>
+    <dimen name="trust_logo_width">256dp</dimen>
+</resources>
\ No newline at end of file
diff --git a/res/values-large/dimens.xml b/res/values-large/dimens.xml
new file mode 100644
index 0000000..c72d754
--- /dev/null
+++ b/res/values-large/dimens.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+
+    <!-- Trust onBoarding -->
+    <dimen name="trust_logo_vertical_margin">96dp</dimen>
+    <dimen name="trust_logo_horizontal_margin">72dp</dimen>
+    <dimen name="trust_logo_height">256dp</dimen>
+    <dimen name="trust_logo_width">256dp</dimen>
+</resources>
\ No newline at end of file
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 4cd1263..e05a0ed 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -27,4 +27,7 @@
     <color name="perf_hot">#ffd10015</color>
     <color name="perf_cold">#ff005994</color>
 
+    <color name="trust_status_good">#36B37E</color>
+    <color name="trust_status_poor">#FFAB00</color>
+    <color name="trust_status_bad">#FF5630</color>
 </resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 349f748..893abd0 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -57,5 +57,11 @@
     <!-- Berry lite -->
     <dimen name="style_accent_preview">32dp</dimen>
     <dimen name="style_accent_icon">24dp</dimen>
+
+    <!-- Trust onBoarding -->
+    <dimen name="trust_logo_vertical_margin">56dp</dimen>
+    <dimen name="trust_logo_horizontal_margin">40dp</dimen>
+    <dimen name="trust_logo_height">-2px</dimen>
+    <dimen name="trust_logo_width">-1px</dimen>
 </resources>
 
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 387a8bf..586ee51 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -691,4 +691,35 @@
     <string name="style_automagic_dialog_positive">Apply</string>
     <string name="style_accent_default_name">Default</string>
     <string name="style_permission_error">Storage access permission is needed to analyze your wallpaper, please grant it to use this feature</string>
+
+    <!-- Trust interface -->
+    <string name="trust_title" translatable="false">@*lineageos.platform:string/trust_feature_name</string>
+    <string name="trust_header">Trust helps you keep your device secure and protects your privacy.\nThe Trust icon shows up to help you by checking the security of the contents.</string>
+    <string name="trust_category_features">Status</string>
+    <string name="trust_feature_selinux">SELinux</string>
+    <string name="trust_feature_selinux_value_enforcing">Enforcing</string>
+    <string name="trust_feature_selinux_value_disabled">Disabled</string>
+    <string name="trust_feature_selinux_explain">SELinux dictates which processes have access to which files on your device.\nThis prevents apps and services from having access to files that they are not supposed to deal with: this way a malicious process has limited access so your security is preserved.</string>
+    <string name="trust_feature_root">Root access</string>
+    <string name="trust_feature_root_value_disabled">Disabled</string>
+    <string name="trust_feature_root_value_adb">ADB only</string>
+    <string name="trust_feature_root_value_apps">Apps and ADB</string>
+    <string name="trust_feature_root_explain">Root access allows the bypassing of security restrictions by apps and services you choose, allowing them to make modifications to the system, which can cause damage to your device or OS.</string>
+    <string name="trust_feature_security_patches">Android security patches</string>
+    <string name="trust_feature_security_patches_value_base">Platform: %1$s\nVendor: %2$s</string>
+    <string name="trust_feature_security_patches_value_new">up to date</string>
+    <string name="trust_feature_security_patches_value_medium">some months old</string>
+    <string name="trust_feature_security_patches_value_old">out of date</string>
+    <string name="trust_feature_security_patches_explain">Security patches are released monthly by Google and SoC vendors to address flaws in the system which could be exploited by malicious apps to bypass security restrictions and can cause temporary or permanent damage to your device.\nWhile platform patches are updated globally every month, vendor patches are updated from the OEM from time to time.\nTo keep your device safe make sure your LineageOS build is always up-to-date.</string>
+    <string name="trust_feature_encryption">Encryption</string>
+    <string name="trust_feature_encryption_value_enabled">Enabled</string>
+    <string name="trust_feature_encryption_value_nolock">Needs a secure lock screen</string>
+    <string name="trust_feature_encryption_value_disabled">Disabled</string>
+    <string name="trust_feature_encryption_explain">Encrypting your device prevents access to your data when your phone is off or in recovery mode. This is particularly important if your phone is stolen, and prevents people from reading your messages, contacts, and other private information without the password.\nTo make the encryption more effective you need to set a secure lock screen.</string>
+    <string name="trust_category_tools">Privacy</string>
+    <string name="trust_onboarding_title">Say hello to Trust</string>
+    <string name="trust_onboarding_description">Trust helps you keep your device secure and protects your privacy.\nThe Trust icon will show up to help you by checking the security of the contents</string>
+    <string name="trust_onboarding_learn_more">Learn more</string>
+    <string name="trust_onboarding_done">Got it</string>
+
 </resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 6366658..55d1ac0 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -136,4 +136,10 @@
         <item name="android:layout_height">1dp</item>
     </style>
 
+    <style name="OnBoardingStyle" parent="Theme.AppCompat.DayNight">
+        <item name="colorAccent">#167c80</item>
+        <item name="windowActionBar">false</item>
+        <item name="windowNoTitle">true</item>
+    </style>
+
 </resources>
diff --git a/res/xml/parts_catalog.xml b/res/xml/parts_catalog.xml
index db18231..66a3116 100644
--- a/res/xml/parts_catalog.xml
+++ b/res/xml/parts_catalog.xml
@@ -122,4 +122,9 @@
           android:summary="@string/style_summary"
           android:fragment="org.lineageos.lineageparts.style.StylePreferences"
           lineage:xmlRes="@xml/style_preferences" />
+
+    <part android:key="trust_interface"
+          android:title="@string/trust_title"
+          android:fragment="org.lineageos.lineageparts.trust.TrustPreferences"
+          lineage:xmlRes="@xml/trust_preferences" />
 </parts-catalog>
diff --git a/res/xml/trust_preferences.xml b/res/xml/trust_preferences.xml
new file mode 100644
index 0000000..2e4e0a6
--- /dev/null
+++ b/res/xml/trust_preferences.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <org.lineageos.lineageparts.widget.WallOfTextPreference
+        android:icon="@drawable/ic_trust"
+        android:summary="@string/trust_header" />
+
+    <PreferenceCategory android:title="@string/trust_category_features">
+
+        <Preference
+            android:key="trust_selinux"
+            android:title="@string/trust_feature_selinux" />
+
+        <Preference
+            android:key="trust_root"
+            android:title="@string/trust_feature_root" />
+
+        <Preference
+            android:key="trust_security_patch"
+            android:title="@string/trust_feature_security_patches" />
+
+        <Preference
+            android:key="trust_encryption"
+            android:title="@string/trust_feature_encryption" />
+    </PreferenceCategory>
+
+    <PreferenceCategory android:title="@string/trust_category_tools">
+
+        <org.lineageos.internal.lineageparts.LineagePartsPreference
+            android:key="privacy_guard_manager" />
+
+        <org.lineageos.internal.lineageparts.LineagePartsPreference
+            android:key="lineagestats" />
+    </PreferenceCategory>
+</PreferenceScreen>
diff --git a/src/org/lineageos/lineageparts/trust/TrustOnBoardingActivity.java b/src/org/lineageos/lineageparts/trust/TrustOnBoardingActivity.java
new file mode 100644
index 0000000..6f7251a
--- /dev/null
+++ b/src/org/lineageos/lineageparts/trust/TrustOnBoardingActivity.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2018 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.lineageos.lineageparts.trust;
+
+import android.content.Intent;
+import android.graphics.drawable.AnimatedVectorDrawable;
+import android.os.Bundle;
+import android.os.Handler;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.support.v7.app.AppCompatActivity;
+
+import lineageos.providers.LineageSettings;
+
+import org.lineageos.lineageparts.R;
+
+public class TrustOnBoardingActivity extends AppCompatActivity {
+    private ImageView mImage;
+
+    @Override
+    protected void onCreate(Bundle savedInstance) {
+        super.onCreate(savedInstance);
+        setContentView(R.layout.activity_trust_onboarding);
+
+        Button learnMore = findViewById(R.id.trust_onboarding_learn_more);
+        Button dismiss = findViewById(R.id.trust_onboarding_done);
+        mImage = findViewById(R.id.trust_onboarding_image);
+
+        learnMore.setOnClickListener(v -> openTrustSettings());
+        dismiss.setOnClickListener(v -> finish());
+
+        new Handler().postDelayed(this::showAnimation, 800);
+    }
+
+    private void showAnimation() {
+        AnimatedVectorDrawable drawable = (AnimatedVectorDrawable) mImage.getDrawable();
+        if (drawable != null) {
+            drawable.start();
+        }
+    }
+
+    private void openTrustSettings() {
+        setOnboardingCompleted();
+        startActivity(new Intent("org.lineageos.lineageparts.TRUST_INTERFACE"));
+        finish();
+    }
+
+    private void onDismissClick() {
+        setOnboardingCompleted();
+        finish();
+    }
+
+    private void setOnboardingCompleted() {
+        LineageSettings.System.putInt(getContentResolver(),
+                LineageSettings.System.TRUST_INTERFACE_HINTED, 1);
+    }
+}
\ No newline at end of file
diff --git a/src/org/lineageos/lineageparts/trust/TrustPreferences.java b/src/org/lineageos/lineageparts/trust/TrustPreferences.java
new file mode 100644
index 0000000..297c9c7
--- /dev/null
+++ b/src/org/lineageos/lineageparts/trust/TrustPreferences.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2018 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.lineageos.lineageparts.trust;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.support.v7.preference.Preference;
+import android.util.Log;
+
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.SettingsPreferenceFragment;
+
+import lineageos.trust.TrustInterface;
+
+public class TrustPreferences extends SettingsPreferenceFragment {
+    private static final String TAG = "TrustPreferences";
+
+    private Preference mSELinuxPref;
+    private Preference mRootPref;
+    private Preference mSecurityPatchesPref;
+    private Preference mEncryptionPref;
+
+    private TrustInterface mInterface;
+
+    private int[] mSecurityLevel = new int[4];
+
+    @Override
+    public void onCreate(Bundle savedInstance) {
+        super.onCreate(savedInstance);
+
+        mInterface = TrustInterface.getInstance(getContext());
+
+        addPreferencesFromResource(R.xml.trust_preferences);
+
+        mSELinuxPref = findPreference("trust_selinux");
+        mRootPref = findPreference("trust_root");
+        mSecurityPatchesPref = findPreference("trust_security_patch");
+        mEncryptionPref = findPreference("trust_encryption");
+
+        mSELinuxPref.setOnPreferenceClickListener(p ->
+                showInfo(R.string.trust_feature_selinux_explain));
+        mRootPref.setOnPreferenceClickListener(p ->
+                 showInfo(R.string.trust_feature_root_explain));
+        mSecurityPatchesPref.setOnPreferenceClickListener(p ->
+                showInfo(R.string.trust_feature_security_patches_explain));
+        mEncryptionPref.setOnPreferenceClickListener(p ->
+                showInfo(R.string.trust_feature_encryption_explain));
+        setup();
+    }
+
+    private void setup() {
+        int seLinuxLevel = mInterface.getLevelForFeature(TrustInterface.TRUST_FEATURE_SELINUX);
+        int rootLevel = mInterface.getLevelForFeature(TrustInterface.TRUST_FEATURE_ROOT);
+        int secPLevel =
+                mInterface.getLevelForFeature(TrustInterface.TRUST_FEATURE_PLATFORM_SECURITY_PATCH);
+        int secVLevel =
+                mInterface.getLevelForFeature(TrustInterface.TRUST_FEATURE_VENDOR_SECURITY_PATCH);
+        int encryptLevel = mInterface.getLevelForFeature(TrustInterface.TRUST_FEATURE_ENCRYPTION);
+
+        setupSELinux(seLinuxLevel);
+        setupRoot(rootLevel);
+        setupSecurityPatches(secPLevel, secVLevel);
+        setupEncryption(encryptLevel);
+    }
+
+    private void setupSELinux(int level) {
+        int icon;
+        int summary;
+        if (level == TrustInterface.TRUST_FEATURE_LEVEL_GOOD) {
+            icon = R.drawable.ic_trust_selinux_good;
+            summary = R.string.trust_feature_selinux_value_enforcing;
+        } else {
+            icon = R.drawable.ic_trust_selinux_bad;
+            summary = R.string.trust_feature_selinux_value_disabled;
+        }
+        mSELinuxPref.setIcon(icon);
+        mSELinuxPref.setSummary(getContext().getString(summary));
+    }
+
+    private void setupRoot(int level) {
+        int icon;
+        int summary;
+        if (level == TrustInterface.TRUST_FEATURE_LEVEL_GOOD) {
+            icon = R.drawable.ic_trust_root_good;
+            summary = R.string.trust_feature_root_value_disabled;
+        } else if (level == TrustInterface.TRUST_FEATURE_LEVEL_POOR) {
+            icon = R.drawable.ic_trust_root_poor;
+            summary = R.string.trust_feature_root_value_adb;
+        } else {
+            icon = R.drawable.ic_trust_root_bad;
+            summary = R.string.trust_feature_root_value_apps;
+        }
+        mRootPref.setIcon(icon);
+        mRootPref.setSummary(getContext().getString(summary));
+    }
+
+    private void setupSecurityPatches(int platform, int vendor) {
+        int icon;
+
+        // TMP: don't enforce vendor check
+        if (vendor == TrustInterface.ERROR_UNDEFINED) {
+            switch (platform) {
+                case TrustInterface.TRUST_FEATURE_LEVEL_GOOD:
+                    icon = R.drawable.ic_trust_security_patches_good;
+                    break;
+                case TrustInterface.TRUST_FEATURE_LEVEL_POOR:
+                    icon = R.drawable.ic_trust_security_patches_poor;
+                    break;
+                default:
+                    icon = R.drawable.ic_trust_security_patches_bad;
+                    break;
+            }
+        } else {
+            if (platform == TrustInterface.TRUST_FEATURE_LEVEL_GOOD &&
+                    vendor ==  TrustInterface.TRUST_FEATURE_LEVEL_GOOD) {
+                icon = R.drawable.ic_trust_security_patches_good;
+            } else if (platform == TrustInterface.TRUST_FEATURE_LEVEL_POOR ||
+                    (platform == TrustInterface.TRUST_FEATURE_LEVEL_GOOD &&
+                    vendor != TrustInterface.TRUST_FEATURE_LEVEL_GOOD)) {
+                icon = R.drawable.ic_trust_security_patches_poor;
+            } else {
+                icon = R.drawable.ic_trust_security_patches_bad;
+            }
+        }
+
+        int summaryP = getSummaryForSecurityPatchLevel(platform);
+        int summaryV = getSummaryForSecurityPatchLevel(vendor);
+        Context context = getContext();
+        // TMP: do not enforce vendor check
+        String summary = summaryV == 0 ?
+            context.getString(summaryP) :
+            context.getString(R.string.trust_feature_security_patches_value_base,
+                context.getString(summaryP), context.getString(summaryV));
+
+        mSecurityPatchesPref.setIcon(icon);
+        mSecurityPatchesPref.setSummary(summary);
+    }
+
+    private int getSummaryForSecurityPatchLevel(int level) {
+        switch (level) {
+            case TrustInterface.TRUST_FEATURE_LEVEL_GOOD:
+                return R.string.trust_feature_security_patches_value_new;
+            case TrustInterface.TRUST_FEATURE_LEVEL_POOR:
+                return R.string.trust_feature_security_patches_value_medium;
+            case TrustInterface.TRUST_FEATURE_LEVEL_BAD:
+                return R.string.trust_feature_security_patches_value_old;
+            default:
+                return 0;
+        }
+    }
+
+    private void setupEncryption(int level) {
+        int icon;
+        int summary;
+        boolean isLegacy = getContext().getResources()
+                .getBoolean(org.lineageos.platform.internal.R.bool.config_trustLegacyEncryption);
+        if (level == TrustInterface.TRUST_FEATURE_LEVEL_GOOD) {
+            icon = R.drawable.ic_trust_encryption_good;
+            summary = R.string.trust_feature_encryption_value_enabled;
+        } else if (level == TrustInterface.TRUST_FEATURE_LEVEL_POOR) {
+            icon = R.drawable.ic_trust_encryption_poor;
+            summary = isLegacy ?
+                R.string.trust_feature_encryption_value_disabled :
+                R.string.trust_feature_encryption_value_nolock;
+        } else {
+            icon = R.drawable.ic_trust_encryption_bad;
+            summary = R.string.trust_feature_encryption_value_disabled;
+        }
+        mEncryptionPref.setIcon(icon);
+        mEncryptionPref.setSummary(getContext().getString(summary));
+    }
+
+    private boolean showInfo(int text) {
+        new AlertDialog.Builder(getContext())
+            .setMessage(text)
+            .show();
+        return true;
+    }
+}
\ No newline at end of file
