diff --git a/res/values-gu-rIN/strings.xml b/res/values-gu-rIN/strings.xml
new file mode 100644
index 0000000..c57e423
--- /dev/null
+++ b/res/values-gu-rIN/strings.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2011 The Android Open Source 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 xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="170210454004696382">"કી ચેઇન"</string>
+    <string name="title_no_certs" msgid="8350009443064722873">"કોઇ પ્રમાણપત્રો મળ્યાં નથી"</string>
+    <string name="title_select_cert" msgid="3588447616418041699">"પ્રમાણપત્ર પસંદ કરો"</string>
+    <string name="requesting_application" msgid="1589142627467598421">"એપ્લિકેશન %s એ એક પ્રમાણપત્રની વિનંતી કરી છે. પ્રમાણપત્રને પસંદ કરવું એપ્લિકેશનને આ ઓળખાણનો ઉપયોગ સર્વર્સ સાથે હમણાં અને ભવિષ્યમાં કરવા દેશે."</string>
+    <string name="requesting_server" msgid="5832565605998634370">"એપ્લિકેશને વિનંતી કરતા સર્વરને %s તરીકે ઓળખ્યું છે, પરંતુ તમારે એપ્લિકેશનને પ્રમાણપત્રની અ‍ૅક્સેસ તો જ આપવી જોઈએ જો તમે એપ્લિકેશન પર વિશ્વાસ કરતા હો."</string>
+    <string name="install_new_cert_message" msgid="4451971501142085495">"તમે બાહ્ય સંગ્રહ પર સ્થિત %1$s અથવા %2$s એક્સ્ટેન્શન સાથે PKCS#12 ફાઇલમાંથી પ્રમાણપત્રો ઇન્સ્ટોલ કરી શકો છો."</string>
+    <string name="install_new_cert_button_label" msgid="510732745267546907">"ઇન્સ્ટોલ કરો"</string>
+    <string name="allow_button" msgid="5340501035618157678">"મંજૂરી આપો"</string>
+    <string name="deny_button" msgid="3766539809121892584">"નકારો"</string>
+</resources>
diff --git a/res/values-sq-rAL/strings.xml b/res/values-sq-rAL/strings.xml
new file mode 100644
index 0000000..bc9351e
--- /dev/null
+++ b/res/values-sq-rAL/strings.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2011 The Android Open Source 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 xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="170210454004696382">"Zinxhiri kyç"</string>
+    <string name="title_no_certs" msgid="8350009443064722873">"Nuk u gjet asnjë certifikatë"</string>
+    <string name="title_select_cert" msgid="3588447616418041699">"Zgjidh certifikatën"</string>
+    <string name="requesting_application" msgid="1589142627467598421">"Aplikacioni %s ka kërkuar një certifikatë. Zgjedhja e certifikatës do të lejojë aplikacionin të përdorë këtë identitet me serverët tani dhe në të ardhmen."</string>
+    <string name="requesting_server" msgid="5832565605998634370">"Aplikacioni ka identifikuar serverin kërkues si %s, por aplikacionit duhet t\'i japësh qasje në certifikatë vetëm nëse i beson atij."</string>
+    <string name="install_new_cert_message" msgid="4451971501142085495">"Mund të instalosh certifikata nga një skedar PKCS#12 me një prapashtesë %1$s ose %2$s që gjendet në hapësirën e jashtme ruajtëse."</string>
+    <string name="install_new_cert_button_label" msgid="510732745267546907">"Instalo"</string>
+    <string name="allow_button" msgid="5340501035618157678">"Lejo"</string>
+    <string name="deny_button" msgid="3766539809121892584">"Refuzo"</string>
+</resources>
diff --git a/support/src/com/android/keychain/tests/support/IKeyChainServiceTestSupport.aidl b/support/src/com/android/keychain/tests/support/IKeyChainServiceTestSupport.aidl
index 0921f2e..4964a96 100644
--- a/support/src/com/android/keychain/tests/support/IKeyChainServiceTestSupport.aidl
+++ b/support/src/com/android/keychain/tests/support/IKeyChainServiceTestSupport.aidl
@@ -31,7 +31,7 @@
  */
 interface IKeyChainServiceTestSupport {
     boolean keystoreReset();
-    boolean keystorePassword(String password);
+    boolean keystoreSetPassword(String password);
     boolean keystorePut(String key, in byte[] value);
     boolean keystoreImportKey(String key, in byte[] value);
     void revokeAppPermission(int uid, String alias);
diff --git a/support/src/com/android/keychain/tests/support/KeyChainServiceTestSupport.java b/support/src/com/android/keychain/tests/support/KeyChainServiceTestSupport.java
index 1d429f8..c8024bd 100644
--- a/support/src/com/android/keychain/tests/support/KeyChainServiceTestSupport.java
+++ b/support/src/com/android/keychain/tests/support/KeyChainServiceTestSupport.java
@@ -35,9 +35,9 @@
             Log.d(TAG, "keystoreReset");
             return mKeyStore.reset();
         }
-        @Override public boolean keystorePassword(String password) {
-            Log.d(TAG, "keystorePassword");
-            return mKeyStore.password(password);
+        @Override public boolean keystoreSetPassword(String password) {
+            Log.d(TAG, "keystoreSetPassword");
+            return mKeyStore.onUserPasswordChanged(password);
         }
         @Override public boolean keystorePut(String key, byte[] value) {
             Log.d(TAG, "keystorePut");
diff --git a/tests/src/com/android/keychain/tests/KeyChainServiceTest.java b/tests/src/com/android/keychain/tests/KeyChainServiceTest.java
index e8236aa..1f3f7de 100644
--- a/tests/src/com/android/keychain/tests/KeyChainServiceTest.java
+++ b/tests/src/com/android/keychain/tests/KeyChainServiceTest.java
@@ -145,7 +145,7 @@
             Log.d(TAG, "test_KeyChainService setup keystore");
             KeyStore keyStore = KeyStore.getInstance();
             assertTrue(mSupport.keystoreReset());
-            assertTrue(mSupport.keystorePassword("newpasswd"));
+            assertTrue(mSupport.keystoreSetPassword("newpasswd"));
 
             String intermediate = "-intermediate";
             String root = "-root";
