diff --git a/src/com/android/settings/CredentialStorage.java b/src/com/android/settings/CredentialStorage.java
index 48c24f7..9173e39 100644
--- a/src/com/android/settings/CredentialStorage.java
+++ b/src/com/android/settings/CredentialStorage.java
@@ -196,7 +196,7 @@
                 String key = bundle.getString(Credentials.EXTRA_USER_PRIVATE_KEY_NAME);
                 byte[] value = bundle.getByteArray(Credentials.EXTRA_USER_PRIVATE_KEY_DATA);
 
-                if (!mKeyStore.importKey(key, value, uid)) {
+                if (!mKeyStore.importKey(key, value, uid, KeyStore.FLAG_ENCRYPTED)) {
                     Log.e(TAG, "Failed to install " + key + " as user " + uid);
                     return;
                 }
@@ -206,7 +206,7 @@
                 String certName = bundle.getString(Credentials.EXTRA_USER_CERTIFICATE_NAME);
                 byte[] certData = bundle.getByteArray(Credentials.EXTRA_USER_CERTIFICATE_DATA);
 
-                if (!mKeyStore.put(certName, certData, uid)) {
+                if (!mKeyStore.put(certName, certData, uid, KeyStore.FLAG_ENCRYPTED)) {
                     Log.e(TAG, "Failed to install " + certName + " as user " + uid);
                     return;
                 }
@@ -216,7 +216,7 @@
                 String caListName = bundle.getString(Credentials.EXTRA_CA_CERTIFICATES_NAME);
                 byte[] caListData = bundle.getByteArray(Credentials.EXTRA_CA_CERTIFICATES_DATA);
 
-                if (!mKeyStore.put(caListName, caListData, uid)) {
+                if (!mKeyStore.put(caListName, caListData, uid, KeyStore.FLAG_ENCRYPTED)) {
                     Log.e(TAG, "Failed to install " + caListName + " as user " + uid);
                     return;
                 }
diff --git a/src/com/android/settings/vpn2/VpnSettings.java b/src/com/android/settings/vpn2/VpnSettings.java
index 1f87b14..73aae99 100644
--- a/src/com/android/settings/vpn2/VpnSettings.java
+++ b/src/com/android/settings/vpn2/VpnSettings.java
@@ -237,7 +237,8 @@
         if (button == DialogInterface.BUTTON_POSITIVE) {
             // Always save the profile.
             VpnProfile profile = mDialog.getProfile();
-            mKeyStore.put(Credentials.VPN + profile.key, profile.encode());
+            mKeyStore.put(Credentials.VPN + profile.key, profile.encode(), KeyStore.UID_SELF,
+                    KeyStore.FLAG_ENCRYPTED);
 
             // Update the preference.
             VpnPreference preference = mPreferences.get(profile.key);
@@ -530,7 +531,8 @@
                                     Toast.LENGTH_LONG).show();
                             return;
                         }
-                        keyStore.put(Credentials.LOCKDOWN_VPN, profile.key.getBytes());
+                        keyStore.put(Credentials.LOCKDOWN_VPN, profile.key.getBytes(),
+                                KeyStore.UID_SELF, KeyStore.FLAG_ENCRYPTED);
                     }
 
                     // kick profiles since we changed them
