AdminKnobs: allow enterprise admins to disable private key export
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
		
							parent
							
								
									9597d719ac
								
							
						
					
					
						commit
						3748a1da88
					
				| @ -112,5 +112,8 @@ | ||||
|                 android:name="android.service.quicksettings.ACTIVE_TILE" | ||||
|                 android:value="false" /> | ||||
|         </service> | ||||
| 
 | ||||
|         <meta-data android:name="android.content.APP_RESTRICTIONS" | ||||
|             android:resource="@xml/app_restrictions" /> | ||||
|     </application> | ||||
| </manifest> | ||||
|  | ||||
| @ -17,6 +17,7 @@ import androidx.preference.PreferenceFragmentCompat | ||||
| import com.wireguard.android.Application | ||||
| import com.wireguard.android.R | ||||
| import com.wireguard.android.backend.WgQuickBackend | ||||
| import com.wireguard.android.util.AdminKnobs | ||||
| import com.wireguard.android.util.ModuleLoader | ||||
| import java.util.ArrayList | ||||
| import java.util.Arrays | ||||
| @ -87,6 +88,10 @@ class SettingsActivity : ThemeChangeAwareActivity() { | ||||
|                 val remoteApps = preferenceManager.findPreference<Preference>("allow_remote_control_intents") | ||||
|                 remoteApps?.parent?.removePreference(remoteApps) | ||||
|             } | ||||
|             if (AdminKnobs.disableConfigExport) { | ||||
|                 val zipExporter = preferenceManager.findPreference<Preference>("zip_exporter") | ||||
|                 zipExporter?.parent?.removePreference(zipExporter) | ||||
|             } | ||||
|             val wgQuickOnlyPrefs = arrayOf( | ||||
|                     preferenceManager.findPreference("tools_installer"), | ||||
|                     preferenceManager.findPreference("restore_on_boot"), | ||||
|  | ||||
| @ -26,6 +26,7 @@ import com.wireguard.android.databinding.TunnelEditorFragmentBinding | ||||
| import com.wireguard.android.fragment.AppListDialogFragment.AppSelectionListener | ||||
| import com.wireguard.android.model.ObservableTunnel | ||||
| import com.wireguard.android.util.BiometricAuthenticator | ||||
| import com.wireguard.android.util.AdminKnobs | ||||
| import com.wireguard.android.util.ErrorMessages | ||||
| import com.wireguard.android.viewmodel.ConfigProxy | ||||
| import com.wireguard.android.widget.EdgeToEdge.setUpRoot | ||||
| @ -252,6 +253,7 @@ class TunnelEditorFragment : BaseFragment(), AppSelectionListener { | ||||
|         val edit = view as? EditText ?: return | ||||
|         if (edit.inputType == InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS or InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD) return | ||||
|         if (!haveShownKeys && edit.text.isNotEmpty()) { | ||||
|             if (AdminKnobs.disableConfigExport) return | ||||
|             showingAuthenticator = true | ||||
|             BiometricAuthenticator.authenticate(R.string.biometric_prompt_private_key_title, this) { | ||||
|                 showingAuthenticator = false | ||||
|  | ||||
| @ -16,6 +16,7 @@ import com.wireguard.android.R | ||||
| import com.wireguard.android.model.ObservableTunnel | ||||
| import com.wireguard.android.util.BiometricAuthenticator | ||||
| import com.wireguard.android.util.DownloadsFileSaver | ||||
| import com.wireguard.android.util.AdminKnobs | ||||
| import com.wireguard.android.util.ErrorMessages | ||||
| import com.wireguard.android.util.FragmentUtils | ||||
| import java9.util.concurrent.CompletableFuture | ||||
| @ -82,6 +83,7 @@ class ZipExporterPreference(context: Context, attrs: AttributeSet?) : Preference | ||||
|     override fun getTitle() = context.getString(R.string.zip_export_title) | ||||
| 
 | ||||
|     override fun onClick() { | ||||
|         if (AdminKnobs.disableConfigExport) return | ||||
|         val prefActivity = FragmentUtils.getPrefActivity(this) | ||||
|         val fragment = prefActivity.supportFragmentManager.fragments.first() | ||||
|         BiometricAuthenticator.authenticate(R.string.biometric_prompt_zip_exporter_title, fragment) { | ||||
|  | ||||
							
								
								
									
										16
									
								
								ui/src/main/java/com/wireguard/android/util/AdminKnobs.kt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								ui/src/main/java/com/wireguard/android/util/AdminKnobs.kt
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,16 @@ | ||||
| /* | ||||
|  * Copyright © 2020 WireGuard LLC. All Rights Reserved. | ||||
|  * SPDX-License-Identifier: Apache-2.0 | ||||
|  */ | ||||
| 
 | ||||
| package com.wireguard.android.util | ||||
| 
 | ||||
| import android.content.RestrictionsManager | ||||
| import androidx.core.content.getSystemService | ||||
| import com.wireguard.android.Application | ||||
| 
 | ||||
| object AdminKnobs { | ||||
|     private val restrictions: RestrictionsManager? = Application.get().getSystemService() | ||||
|     val disableConfigExport: Boolean | ||||
|         get() = restrictions?.applicationRestrictions?.getBoolean("disable_config_export", false) ?: false | ||||
| } | ||||
| @ -101,6 +101,8 @@ | ||||
|     <string name="dark_theme_summary_on">Currently using dark (night) theme</string> | ||||
|     <string name="dark_theme_title">Use dark theme</string> | ||||
|     <string name="delete">Delete</string> | ||||
|     <string name="disable_config_export_title">Disable config exporting</string> | ||||
|     <string name="disable_config_export_description">Disabling config exporting makes private keys less accessible</string> | ||||
|     <string name="dns_servers">DNS servers</string> | ||||
|     <string name="edit">Edit</string> | ||||
|     <string name="endpoint">Endpoint</string> | ||||
|  | ||||
							
								
								
									
										13
									
								
								ui/src/main/res/xml/app_restrictions.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								ui/src/main/res/xml/app_restrictions.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | ||||
| <!-- | ||||
|   ~ Copyright © 2020 WireGuard LLC. All Rights Reserved. | ||||
|   ~ SPDX-License-Identifier: Apache-2.0 | ||||
|   --> | ||||
| 
 | ||||
| <restrictions xmlns:android="http://schemas.android.com/apk/res/android"> | ||||
|     <restriction | ||||
|         android:defaultValue="false" | ||||
|         android:description="@string/disable_config_export_description" | ||||
|         android:key="disable_config_export" | ||||
|         android:restrictionType="bool" | ||||
|         android:title="@string/disable_config_export_title" /> | ||||
| </restrictions> | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user