diff --git a/res/values/strings.xml b/res/values/strings.xml
index cbc45b569fc..f483a231769 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1997,6 +1997,7 @@ found in the list of installed applications.
Credential storage is enabled.
%s is added.
+ Failed to add %s.
Emergency tone
diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java
index f7968299ae0..34ecdef8451 100644
--- a/src/com/android/settings/SecuritySettings.java
+++ b/src/com/android/settings/SecuritySettings.java
@@ -81,9 +81,9 @@ public class SecuritySettings extends PreferenceActivity implements
private static final String ASSISTED_GPS = "assisted_gps";
// Credential storage
- private static final String ACTION_ADD_CREDENTIAL =
+ public static final String ACTION_ADD_CREDENTIAL =
"android.security.ADD_CREDENTIAL";
- private static final String ACTION_UNLOCK_CREDENTIAL_STORAGE =
+ public static final String ACTION_UNLOCK_CREDENTIAL_STORAGE =
"android.security.UNLOCK_CREDENTIAL_STORAGE";
private static final String KEY_CSTOR_TYPE_NAME = "typeName";
private static final String KEY_CSTOR_ITEM = "item";
@@ -526,7 +526,10 @@ public class SecuritySettings extends PreferenceActivity implements
}
private void addCredential() {
- String message = String.format(getString(R.string.cstor_is_added),
+ String formatString = mCstorAddCredentialHelper.saveToStorage() < 0
+ ? getString(R.string.cstor_add_error)
+ : getString(R.string.cstor_is_added);
+ String message = String.format(formatString,
mCstorAddCredentialHelper.getName());
Toast.makeText(SecuritySettings.this, message, Toast.LENGTH_SHORT)
.show();
@@ -877,14 +880,6 @@ public class SecuritySettings extends PreferenceActivity implements
return mTypeName;
}
- byte[] getItem(int i) {
- return mItemList.get(i);
- }
-
- String getNamespace(int i) {
- return mNamespaceList.get(i);
- }
-
CharSequence getDescription() {
return Html.fromHtml(mDescription);
}
@@ -897,6 +892,16 @@ public class SecuritySettings extends PreferenceActivity implements
return mName;
}
+ int saveToStorage() {
+ Keystore ks = Keystore.getInstance();
+ for (int i = 0, count = mItemList.size(); i < count; i++) {
+ byte[] blob = mItemList.get(i);
+ int ret = ks.put(mNamespaceList.get(i), mName, new String(blob));
+ if (ret < 0) return ret;
+ }
+ return 0;
+ }
+
private void parse(Intent intent) {
mTypeName = intent.getStringExtra(KEY_CSTOR_TYPE_NAME);
mItemList = new ArrayList();