From d4023b7cca11e33e84df39dee9e9a737efab47c2 Mon Sep 17 00:00:00 2001 From: Brian Carlstrom Date: Wed, 25 May 2011 13:24:20 -0700 Subject: [PATCH] Integrating keystore with keyguard (Part 4 of 4) Summary: frameworks/base keystore rewrite keyguard integration with keystore on keyguard entry or keyguard change KeyStore API simplification packages/apps/Settings Removed com.android.credentials.SET_PASSWORD intent support Added keyguard requirement for keystore use packages/apps/CertInstaller Tracking KeyStore API changes Fix for NPE in CertInstaller when certificate lacks basic constraints packages/apps/KeyChain Tracking KeyStore API changes Details: frameworks/base Move keystore from C to C++ while rewriting password implementation. Removed global variables. Added many comments. cmds/keystore/Android.mk cmds/keystore/keystore.h cmds/keystore/keystore.c => cmds/keystore/keystore.cpp cmds/keystore/keystore_cli.c => cmds/keystore/keystore_cli.cpp Changed saveLockPattern and saveLockPassword to notify the keystore on changes so that the keystore master key can be reencrypted when the keyguard changes. core/java/com/android/internal/widget/LockPatternUtils.java Changed unlock screens to pass values for keystore unlock or initialization policy/src/com/android/internal/policy/impl/PasswordUnlockScreen.java policy/src/com/android/internal/policy/impl/PatternUnlockScreen.java KeyStore API changes - renamed test() to state(), which now return a State enum - made APIs with byte[] key arguments private - added new KeyStore.isEmpty used to determine if a keyguard is required keystore/java/android/security/KeyStore.java In addition to tracking KeyStore API changes, added new testIsEmpty and improved some existing tests to validate expect values. keystore/tests/src/android/security/KeyStoreTest.java packages/apps/Settings Removing com.android.credentials.SET_PASSWORD intent with the removal of the ability to set an explicit keystore password now that the keyguard value is used. Changed to ensure keyguard is enabled for keystore install or unlock. Cleaned up interwoven dialog handing into discrete dialog helper classes. AndroidManifest.xml src/com/android/settings/CredentialStorage.java Remove layout for entering new password res/layout/credentials_dialog.xml Remove enable credentials checkbox res/xml/security_settings_misc.xml src/com/android/settings/SecuritySettings.java Added ability to specify minimum quality key to ChooseLockGeneric Activity. Used by CredentialStorage, but could also be used by CryptKeeperSettings. Changed ChooseLockGeneric to understand minimum quality for keystore in addition to DPM and device encryption. src/com/android/settings/ChooseLockGeneric.java Changed to use getActivePasswordQuality from getKeyguardStoredPasswordQuality based on experience in CredentialStorage. Removed bogus class javadoc. src/com/android/settings/CryptKeeperSettings.java Tracking KeyStore API changes src/com/android/settings/vpn/VpnSettings.java src/com/android/settings/wifi/WifiSettings.java Removing now unused string resources res/values-af/strings.xml res/values-am/strings.xml res/values-ar/strings.xml res/values-bg/strings.xml res/values-ca/strings.xml res/values-cs/strings.xml res/values-da/strings.xml res/values-de/strings.xml res/values-el/strings.xml res/values-en-rGB/strings.xml res/values-es-rUS/strings.xml res/values-es/strings.xml res/values-fa/strings.xml res/values-fi/strings.xml res/values-fr/strings.xml res/values-hr/strings.xml res/values-hu/strings.xml res/values-in/strings.xml res/values-it/strings.xml res/values-iw/strings.xml res/values-ja/strings.xml res/values-ko/strings.xml res/values-lt/strings.xml res/values-lv/strings.xml res/values-ms/strings.xml res/values-nb/strings.xml res/values-nl/strings.xml res/values-pl/strings.xml res/values-pt-rPT/strings.xml res/values-pt/strings.xml res/values-rm/strings.xml res/values-ro/strings.xml res/values-ru/strings.xml res/values-sk/strings.xml res/values-sl/strings.xml res/values-sr/strings.xml res/values-sv/strings.xml res/values-sw/strings.xml res/values-th/strings.xml res/values-tl/strings.xml res/values-tr/strings.xml res/values-uk/strings.xml res/values-vi/strings.xml res/values-zh-rCN/strings.xml res/values-zh-rTW/strings.xml res/values-zu/strings.xml res/values/strings.xml packages/apps/CertInstaller Tracking KeyStore API changes src/com/android/certinstaller/CertInstaller.java Fix for NPE in CertInstaller when certificate lacks basic constraints src/com/android/certinstaller/CredentialHelper.java packages/apps/KeyChain Tracking KeyStore API changes src/com/android/keychain/KeyChainActivity.java src/com/android/keychain/KeyChainService.java support/src/com/android/keychain/tests/support/IKeyChainServiceTestSupport.aidl support/src/com/android/keychain/tests/support/KeyChainServiceTestSupport.java tests/src/com/android/keychain/tests/KeyChainServiceTest.java Change-Id: I80533bf8986a92b0b99cd5fb1c4943e0f23fc1c8 --- AndroidManifest.xml | 1 - res/layout/credentials_dialog.xml | 27 -- res/values-af/strings.xml | 7 - res/values-am/strings.xml | 7 - res/values-ar/strings.xml | 8 - res/values-bg/strings.xml | 8 - res/values-ca/strings.xml | 8 - res/values-cs/strings.xml | 8 - res/values-da/strings.xml | 8 - res/values-de/strings.xml | 8 - res/values-el/strings.xml | 8 - res/values-en-rGB/strings.xml | 8 - res/values-es-rUS/strings.xml | 8 - res/values-es/strings.xml | 8 - res/values-fa/strings.xml | 8 - res/values-fi/strings.xml | 8 - res/values-fr/strings.xml | 8 - res/values-hr/strings.xml | 8 - res/values-hu/strings.xml | 8 - res/values-in/strings.xml | 8 - res/values-it/strings.xml | 8 - res/values-iw/strings.xml | 8 - res/values-ja/strings.xml | 8 - res/values-ko/strings.xml | 8 - res/values-lt/strings.xml | 8 - res/values-lv/strings.xml | 8 - res/values-ms/strings.xml | 14 - res/values-nb/strings.xml | 8 - res/values-nl/strings.xml | 8 - res/values-pl/strings.xml | 8 - res/values-pt-rPT/strings.xml | 8 - res/values-pt/strings.xml | 8 - res/values-rm/strings.xml | 9 - res/values-ro/strings.xml | 8 - res/values-ru/strings.xml | 8 - res/values-sk/strings.xml | 8 - res/values-sl/strings.xml | 8 - res/values-sr/strings.xml | 8 - res/values-sv/strings.xml | 8 - res/values-sw/strings.xml | 7 - res/values-th/strings.xml | 8 - res/values-tl/strings.xml | 8 - res/values-tr/strings.xml | 8 - res/values-uk/strings.xml | 8 - res/values-vi/strings.xml | 8 - res/values-zh-rCN/strings.xml | 8 - res/values-zh-rTW/strings.xml | 8 - res/values-zu/strings.xml | 7 - res/values/strings.xml | 30 +- res/xml/security_settings_misc.xml | 13 - .../android/settings/ChooseLockGeneric.java | 46 ++- .../android/settings/CredentialStorage.java | 361 +++++++++--------- .../android/settings/CryptKeeperSettings.java | 14 +- .../android/settings/SecuritySettings.java | 17 +- src/com/android/settings/vpn/VpnSettings.java | 7 +- .../android/settings/wifi/WifiSettings.java | 4 +- 56 files changed, 234 insertions(+), 657 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 6151b138a66..81dc450cf85 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -650,7 +650,6 @@ - diff --git a/res/layout/credentials_dialog.xml b/res/layout/credentials_dialog.xml index 506b3d6e794..9eacd5405c0 100644 --- a/res/layout/credentials_dialog.xml +++ b/res/layout/credentials_dialog.xml @@ -49,32 +49,5 @@ android:password="true" android:singleLine="true" android:visibility="gone"/> - - - - - - - - - - - diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml index 0abc59cde8f..425c6251141 100644 --- a/res/values-af/strings.xml +++ b/res/values-af/strings.xml @@ -2146,8 +2146,6 @@ "(nie gestel nie)" - "Gebruik beveiligde eiebewyse" - "Laat programme toe om beveiligde sertifikate en ander eiebewyse te gebruik" @@ -2156,8 +2154,6 @@ - "Stel wagwoord" - "Stel of verander die eiebewysberging-wagwoord" "Vee berging uit" "Vee eiebewysberging van alle inhoud uit en stel die wagwoord terug" "Voer wagwoord in" @@ -2165,10 +2161,7 @@ "Huidige wagwoord:" - "Nuwe wagwoord:" - "Bevestig nuwe wagwoord:" "Is jy seker jy wil alle eiebewyse uitvee en die eiebewysberging-wagwoord teruglaai?" - "Wagwoorde nie dieselfde nie." "Die wagwoord moet ten minste 8 karakters bevat." "Voer asseblief die korrekte wagwoord in." "Voer asseblief die korrekte wagwoord in. Jy het nog een kans om die korrekte wagwoord in te voer voordat die eiebewysberging uitgevee word." diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index c9e673cf1bf..8fc902cd552 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -1873,8 +1873,6 @@ "(አልተዘጋጀም)" - "ጥብቅመረጃዎች ተጠቀም" - "ትግበራዎች ጥብቅ ምስክሮች እና ሌላ መረጃዎች ለመድረስ ፍቀድ።" @@ -1883,8 +1881,6 @@ - "የይለፍ ቃል አዘጋጅ" - "አዘጋጅ ወይም የመረጃ ማከማቻ ይለፍ ቃል ለውጥ" "ማከማቻ አጥራ" "የሁሉም ይዘቶች የመረጃ ማከማቻአጥራ እና የይለፍ ቃሉን ዳግም አስጀመር።" "የይለፍ ቃል አስገባ" @@ -1892,10 +1888,7 @@ "የአሁኑ ይለፍ ቃል፡" - "አዲስ ይለፍ ቃል፡" - "አዲስ ይለፍቃል አረጋግጥ፡" "ሁሉም መረጃ ለመሰረዝ መፈለግዎን እና የመረጃ ማከማቻ ይለፍቃሉን ዳግም ለማስጀመር እርግጠኛ ነዎት?" - " የይለፍ ቃሎችህ አልተዛመዱም." "የይለፍ ቃሉ ቢያንስ 8 ቁምፊዎች አሉት።" "እባክዎ ትክክለኛውን ይለፍቃል ያስገቡ።" "እባክዎ ትክከለኛውን የይለፍ ቃል ያስገቡ። የመረጃ ማከማቻው ከመጥፋቱ በፊት ትክክለኛውን የይለፍ ቃል ለማስገባት አንድ ተጨማሪ ሙከራ አለዎ።" diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index c2831ef9173..a341f07e58c 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -1311,24 +1311,16 @@ "(لم يتم التغيير)" "(لم يتم التعيين)" "تخزين بيانات الاعتماد" - "استخدام بيانات الاعتماد الآمنة" - "السماح للتطبيقات بالوصول إلى الشهادات الآمنة وبيانات الاعتماد الأخرى" "التثبيت من وحدة تخزين" "التثبيت من بطاقة SD" "تثبيت الشهادات من وحدة تخزين" "تثبيت الشهادات من بطاقة SD" - "تعيين كلمة المرور" - "تعيين كلمة مرور لتخزين بيانات الاعتماد أو تغييرها" "محو بيانات الاعتماد" "إزالة جميع المحتويات وإعادة تعيين كلمة المرور" "إدخال كلمة المرور" "أدخل كلمة المرور تخزين بيانات الاعتماد." - "تعيين كلمة المرور لتخزين بيانات الاعتماد. يجب أن تكون 8 أحرف على الأقل." "كلمة المرور الحالية:" - "كلمة المرور الجديدة:" - "تأكيد كلمة المرور الجديدة:" "ستتم إزالة كل المحتويات، وإعادة تعيين كلمة المرور. هل تريد بالتأكيد إجراء ذلك؟" - "كلمتا المرور غير متطابقتين." "يجب أن تحتوي كلمة المرور على 8 أحرف على الأقل." "كلمة مرور غير صحيحة." "كلمة مرور غير صحيحة. بقي لديك محاولة واحدة أخرى قبل مسح تخزين بيانات الاعتماد." diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index f130d512af5..084bb4b25b8 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -1311,24 +1311,16 @@ "(непроменени)" "(не е зададенo)" "Хранилище за идент. данни" - "Използване на сигурни идентификационни данни" - "Даване на достъп до защитени сертификати и други идентификационни данни" "Инсталиране от хранилището" "Инсталиране от SD картата" "Инсталиране на сертификати от хранилището" "Инсталиране на сертификати от SD картата" - "Задаване на парола" - "Задаване или промяна на паролата за хранилището за идентификационни данни" "Изчистване на идент. данни" "Премахване на цялото съдържание и задаване на нова парола" "Въвеждане на парола" "Въведете паролата за хранилището за идентификационни данни." - "Задайте паролата за хранилището за идентификационни данни. Трябва да бъде поне 8 знака." "Текуща парола:" - "Нова парола:" - "Потвърждаване на нова парола:" "Цялото съдържание ще бъде премахнато и ще бъде зададена нова парола. Наистина ли искате да го направите?" - "Паролите не си съответстват." "Паролата трябва да е поне 8 знака." "Паролата е неправилна." "Паролата е неправилна. Имате още един опит, преди хранилището за идентификационни данни да бъде изтрито." diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index f839b9594d9..0badb816709 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -1311,24 +1311,16 @@ "(sense canvis)" "(sense definir)" "Emmagatzematge de credencials" - "Utilitza credencials segures" - "Permet a les aplicacions accedir als certificats segurs i a altres credencials" "Instal·la des de l\'emmagatzematge" "Instal·la des de la targeta SD" "Instal·la els certificats des de l\'emmagatzematge" "Instal·la els certificats des de la targeta SD" - "Defineix la contrasenya" - "Estableix o canvia la contrasenya per a l\'emmagatzematge de credencials" "Esborra les credencials" "Elimina tot el contingut i restableix la contrasenya" "Introduïu la contrasenya" "Introdueix la contrasenya per a l\'emmagatzematge de credencials." - "Estableix la contrasenya per a l\'emmagatzematge de credencials. Ha de tenir com a mínim vuit caràcters." "Contrasenya actual:" - "Contrasenya nova:" - "Confirmeu la contrasenya nova:" "S\'eliminarà tot el contingut i es restablirà la contrasenya. N\'estàs segur?" - "Les contrasenyes no coincideixen." "La contrasenya ha de tenir almenys 8 caràcters." "La contrasenya no és correcta." "Contrasenya incorrecta. Tens una oportunitat més abans que no s\'esborri l\'emmagatzematge de credencials." diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index e08e3139e50..63316404fc9 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -1311,24 +1311,16 @@ "(nezměněno)" "(není nastaveno)" "Úložiště pověření" - "Použít zabezpečená pověření" - "Povolit aplikacím přístup k zabezpečeným certifikátům a dalším pověřením" "Instalovat z úložiště" "Instalace z karty SD" "Nainstalovat certifikáty z úložiště" "Nainstalovat certifikáty z karty SD" - "Nastavit heslo" - "Nastavit nebo změnit heslo pro úložiště pověření" "Vymazat pověření" "Odebrat veškerý obsah a obnovit heslo" "Zadejte heslo" "Zadejte heslo pro úložiště pověření." - "Nastavit heslo pro úložiště pověření (nejméně 8 znaků)." "Aktuální heslo:" - "Nové heslo:" - "Potvrďte nové heslo:" "Veškerý obsah bude odstraněn a heslo bude obnoveno. Opravdu chcete akci provést?" - "Hesla se neshodují." "Heslo musí mít alespoň 8 znaků." "Nesprávné heslo." "Nesprávné heslo. Zbývá vám jeden pokus, než bude úložiště pověření smazáno." diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 6dd3b9d1f29..806f92482cf 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -1311,24 +1311,16 @@ "(uændret)" "(ikke indstillet)" "Oplysningslagring" - "Brug sikre oplysninger" - "Giv programmer adgang til sikre certifikater og andre oplysninger" "Installer fra lager" "Installer fra SD-kort" "Installer certifikater fra lager" "Installer certifikater fra SD-kortet" - "Angiv adgangskode" - "Indstil eller skift adgangskoden for oplysningslagring" "Ryd oplysninger" "Fjern alt indhold, og nulstil adgangskoden" "Indtast adgangskode" "Indtast adgangskoden for oplysningslagring." - "Indstil adgangskode for oplysningslagring. Den skal være på mindst otte tegn." "Nuværende adgangskode:" - "Ny adgangskode:" - "Bekræft ny adgangskode:" "Alt indholdet vil blive slettet, og adgangskoden vil blive nulstillet. Er du sikker på, at du vil gøre det?" - "Adgangskoderne stemmer ikke overens." "Adgangskoden skal indeholde mindst 8 tegn." "Ugyldig adgangskode." "Forkert adgangskode. Du har ét forsøg mere, inden oplysningslagringen slettes." diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 0c8adaf42c6..76b723cddac 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -1311,24 +1311,16 @@ "(nicht geändert)" "(nicht festgelegt)" "Anmeldedatenspeicher" - "Sichere Anmeldeinfos" - "Anwendungen können sichere Zertifikate und Anmeldeinformationen abrufen" "Von Speicher installieren" "Von SD-Karte installieren" "Zertifikate von Speicher installieren" "Zertifikate von SD-Karte installieren" - "Passwort festlegen" - "Passwort für Anmeldedatenspeicher festlegen oder ändern" "Anmeldedaten löschen" "Sämtliche Inhalte entfernen und Passwort zurücksetzen" "Passwort eingeben" "Geben Sie das Passwort für den Anmeldedatenspeicher ein." - "Legen Sie das Passwort für den Anmeldedatenspeicher fest. Dieses muss mindestens acht Zeichen lang sein." "Aktuelles Passwort:" - "Neues Passwort:" - "Neues Passwort bestätigen:" "Sämtliche Inhalte werden gelöscht und das Passwort wird zurückgesetzt. Möchten Sie wirklich fortfahren?" - "Die Passwörter stimmen nicht überein." "Das Passwort muss mindestens acht Zeichen lang sein." "Falsches Passwort" "Falsches Passwort. Sie haben noch einen Versuch, bevor Ihr Anmeldedatenspeicher gelöscht wird." diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index edc8c5f94d2..47614143bca 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -1311,24 +1311,16 @@ "(δεν έγινε αλλαγή)" "(δεν ορίστηκε)" "Αποθηκ. χώρος διαπιστευτηρίων" - "Χρήση ασφαλών διαπιστευτηρίων" - "Να επιτρέπεται στις εφαρμογές η πρόσβαση σε ασφαλή πιστοποιητικά και άλλα διαπιστευτήρια" "Εγκατάσταση από συσκευή αποθ." "Εγκατάσταση από κάρτα SD" "Εγκατάσταση πιστοποιητικών από συσκευή αποθήκευσης" "Εγκατάσταση πιστοποιητικών από την κάρτα SD" - "Ορισμός κωδικού πρόσβασης" - "Ορισμός ή αλλαγή του κωδικού πρόσβασης του αποθηκευτικού χώρου διαπιστευτηρίων" "Εκκαθάριση διαπιστευτηρίων" "Κατάργηση όλου του περιεχομένου και επαναφορά του κωδικού πρόσβασης" "Εισαγωγή κωδικού πρόσβασης" "Εισαγάγετε τον κωδικό πρόσβασης για τον αποθηκευτικό χώρο διαπιστευτηρίων." - "Ορίστε τον κωδικό πρόσβασης για τον αποθηκευτικό χώρο διαπιστευτηρίων. Πρέπει να περιέχει τουλάχιστον 8 χαρακτήρες." "Τρέχον κωδικός πρόσβασης:" - "Νέος κωδικός πρόσβασης:" - "Επιβεβαίωση νέου κωδικού πρόσβασης:" "Όλο το περιεχόμενο θα διαγραφεί και θα γίνει επαναφορά του κωδικού πρόσβασης. Είστε σίγουροι;" - "Οι κωδικοί πρόσβασης δεν συμφωνούν." "Ο κωδικός πρόσβασης θα πρέπει να αποτελείται από τουλάχιστον 8 χαρακτήρες." "Λανθασμένος κωδικός πρόσβασης." "Λανθασμένος κωδικός πρόσβασης. Έχετε μία ακόμα ευκαιρία πριν διαγραφεί ο αποθηκευτικός χώρος των διαπιστευτηρίων." diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index a105d6cfdf1..b234c91c592 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -1311,24 +1311,16 @@ "(unchanged)" "(not set)" "Credential storage" - "Use secure credentials" - "Allow applications to access secure certificates and other credentials" "Install from storage" "Install from SD card" "Install certificates from storage" "Install certificates from SD card" - "Set password" - "Set or change the password for credential storage" "Clear credentials" "Remove all the contents and reset the password" "Enter Password" "Enter the password for credential storage." - "Set the password for credential storage. It must have at least 8 characters." "Current password:" - "New password:" - "Confirm new password:" "All the contents will be removed and the password will be reset. Are you sure about that?" - "passwords do not match." "The password must contain at least 8 characters." "Incorrect password." "Incorrect password. You have one more chance before credential storage is erased." diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index 25e7a70944a..80628142982 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -1311,24 +1311,16 @@ "(sin cambios)" "(no establecido)" "Almacenamiento de la credencial" - "Usar credenciales seg." - "Permitir a las aplic. acceder a certificados seguros y otras cred." "Instalar desde almacenamiento" "Instalar desde la tarjeta SD" "Instalar certificados encriptados desde el almacenamiento" "Instalar certificados desde la tarjeta SD" - "Establecer contraseña" - "Establecer o cambiar la contraseña para el almacenamiento de la credencial" "Borrar credenciales" "Eliminar todos los contenidos y restablecer la contraseña" "Ingresar contraseña" "Ingresar la contraseña para el almacenamiento de la credencial." - "Establecer la contraseña para el almacenamiento de la credencial. Debe tener al menos 8 caracteres." "Contraseña actual:" - "Contraseña nueva:" - "Confirmar contraseña nueva:" "Se eliminarán todos los contenidos, y la contraseña se restablecerá. ¿Estás seguro de eso?" - "Las contraseñas no coinciden." "La contraseña debe tener 8 caracteres como mínimo." "Contraseña incorrecta." "Contraseña incorrecta. Tienes una oportunidad más antes de que se borre el almacenamiento de la credencial." diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 2982b66d265..80cce51f14c 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -1311,24 +1311,16 @@ "(sin modificar)" "(sin definir)" "Almacenamiento de credenciales" - "Credenciales seguras" - "Permitir que las aplicaciones accedan a los certificados seguros y a otras credenciales" "Instalar desde almacenamiento" "Instalar desde la tarjeta SD" "Instalar certificados desde almacenamiento" "Instalar certificados desde la tarjeta SD" - "Establecer contraseña" - "Establecer o cambiar la contraseña del almacenamiento de credenciales" "Borrar credenciales" "Eliminar todo el contenido y restablecer la contraseña" "Introducir contraseña" "Introduce la contraseña del almacenamiento de credenciales." - "Establece la contraseña del almacenamiento de credenciales (debe tener un mínimo de 8 caracteres)." "Contraseña actual:" - "Contraseña nueva:" - "Confirmar contraseña nueva:" "Se eliminará todo el contenido y se restablecerá la contraseña. ¿Seguro que quieres continuar?" - "Las contraseñas no coinciden." "La contraseña debe tener un mínimo de ocho caracteres." "Contraseña incorrecta" "Contraseña incorrecta. Tienes una oportunidad más antes de que se borre el almacenamiento de credenciales." diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index 2633820e9e4..c4e0178dedf 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -1311,24 +1311,16 @@ "(بدون تغییر)" "(تنظیم نشده)" "ذخیره اطلاعات کاربری" - "استفاده از اطلاعات کاربری ایمن" - "به برنامه های کاربردی اجازه می دهد به گواهی های ایمن و دیگر اطلاعات کاربری دسترسی داشته باشد." "نصب از حافظه" "نصب از کارت SD" "نصب گواهی ها از حافظه" "نصب مجوزها از کارت SD" - "تنظیم رمز ورود" - "تنظیم یا تغییر رمز ورود برای ذخیره اطلاعات کاربری" "پاک کردن اطلاعات کاربری" "حذف همه محتواها و بازنشانی رمز ورود" "رمز ورود را وارد کنید" "رمز ورود را برای حافظه اطلاعات کاربری وارد کنید." - "رمز ورود را برای حافظه اطلاعات کاربری تنظیم کنید. این رمز ورود باید حداقل 8 نویسه داشته باشد." "رمز ورود فعلی:" - "رمز ورود جدید:" - "تأیید رمز ورود جدید:" "همه محتواها حذف می شود و رمز ورود بازنشانی می شود. آیا مطمئن هستید؟" - "رمزهای ورود مطابقت ندارند." "رمز ورود باید حداقل 8 نویسه داشته باشد." "رمز ورود نادرست است." "رمز ورود نادرست است. قبل از پاک کردن حافظه اطلاعات کاربری، یک بار دیگر می توانید رمز خود را وارد کنید." diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index 84b143f057f..38640c469f8 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -1311,24 +1311,16 @@ "(ei muutettu)" "(ei asetettu)" "Käyttöoikeustietojen tallennus" - "Käytä suojattuja käyttöoikeustietoja" - "Anna sovelluksien käyttää suojattuja varmenteita ja muita käyttöoikeustietoja" "Asenna tallennustilasta" "Asenna SD-kortilta" "Asenna varmenteet tallennustilasta" "Asenna varmenteet SD-kortilta" - "Aseta salasana" - "Aseta käyttöoikeustietojen tallennustilan salasana tai vaihda salasanaa" "Tyhjennä käyttöoikeustiedot" "Poista kaikki sisältö ja nollaa salasana" "Anna salasana" "Anna käyttöoikeustietojen tallennustilan salasana." - "Aseta salasana käyttöoikeustietojen tallennustilalle. Salasanassa on oltava vähintään 8 merkkiä." "Nykyinen salasana:" - "Uusi salasana:" - "Vahvista uusi salasana:" "Kaikki sisältö poistetaan ja salasana nollataan. Haluatko jatkaa?" - "Salasanat eivät täsmää." "Salasanassa täytyy olla vähintään 8 merkkiä." "Virheellinen salasana." "Väärä salasana. Yksi yritys jäljellä, ennen kuin käyttöoikeustietojen tallennustila tyhjennetään." diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index cf05ea3c3ae..662fd872be0 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -1311,24 +1311,16 @@ "(aucune modification)" "(non défini)" "Stockage des identifiants" - "Identifiants sécurisés" - "Autoriser l\'accès des applications aux certificats sécurisés et identifiants" "Installer depuis la mémoire" "Installer depuis la carte SD" "Installer les certificats depuis la mémoire de stockage" "Installer les certificats depuis la carte SD" - "Définir le mot de passe" - "Définir ou modifier le mot de passe pour le stockage des identifiants" "Effacer les identifiants" "Supprimer l\'ensemble du contenu et réinitialiser le mot de passe" "Saisir le mot de passe" "Saisir le mot de passe de stockage des identifiants" - "Définir le mot de passe pour le stockage des identifiants. Il doit comporter au moins huit caractères." "Mot de passe actuel :" - "Nouveau mot de passe :" - "Confirmer le nouveau mot de passe :" "L\'ensemble du contenu sera effacé et le mot de passe réinitialisé. Voulez-vous vraiment continuer ?" - "Les mots de passe ne concordent pas." "Le mot de passe doit contenir au moins 8 caractères." "Mot de passe incorrect" "Mot de passe incorrect. Vous disposez d\'une tentative supplémentaire avant la suppression des identifiants." diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index 2b114fbb444..77a9fe9b618 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -1311,24 +1311,16 @@ "(nepromijenjeno)" "(nije postavljeno)" "Pohrana vjerodajnica" - "Korisnički sigurne vjerodajnice" - "Aplikacijama omogući pristup sigurnim certifikatima i drugim vjerodajnicama" "Instaliraj iz memorije" "Instaliraj s kartice SD" "Instaliraj certifikate iz memorije" "Instaliraj certifikate s kartice SD" - "Postavi zaporku" - "Postavite ili promijenite zaporku za pohranu vjerodajnica" "Izbriši vjerodajnice" "Ukloni sav sadržaj i poništi zaporku" "Unesite zaporku" "Unesite zaporku za pohranu vjerodajnica." - "Postavite zaporku za pohranu vjerodajnica. Mora sadržavati najmanje 8 znakova." "Trenutačna zaporka:" - "Nova zaporka:" - "Potvrdite novu zaporku:" "Sav će sadržaj biti uklonjen, a zaporka će biti poništena. Jeste li sigurni?" - "Zaporke se ne podudaraju." "Zaporka treba imati barem 8 znakova." "Pogrešna zaporka." "Pogrešna zaporka. Imate još jedan pokušaj prije brisanja pohrane vjerodajnica." diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index 3989b714f30..d2a2b56602d 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -1311,24 +1311,16 @@ "(nem változott)" "(nincs beállítva)" "Hitelesítési adatok tárolója" - "Biztonságos hitelesítő adatok használata" - "Az alkalmazások hozzáférhetnek a biztonsági tanúsítványokhoz és más hitelesítési adatokhoz" "Telepítés tárhelyről" "Telepítés az SD-kártyáról" "Tanúsítványok telepítése tárhelyről" "Tanúsítványok telepítése az SD-kártyáról" - "Jelszó beállítása" - "A hitelesítési adatok tárolója jelszavának beállítása vagy cseréje" "Hitelesítési adatok törlése" "Minden tartalom törlése és a jelszó visszaállítása" "Jelszó megadása" "Adja meg a hitelesítési adatok tárolójának jelszavát." - "Állítsa be a hitelesítési adatok tárolójának jelszavát. Legalább 8 karakter hosszúnak kell lennie." "Jelenlegi jelszó:" - "Új jelszó:" - "Új jelszó megerősítése" "Minden tartalom eltávolításra kerül, és a jelszó visszaáll. Biztos benne?" - "A jelszavak nem egyeznek." "A jelszónak legalább 8 karakter hosszúnak kell lennie." "Helytelen jelszó." "Helytelen jelszó. Már csak egy lehetősége van, mielőtt a hitelesítési adatok tárolója törlődik." diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index dfab17370fd..fcfce663f57 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -1311,24 +1311,16 @@ "(tidak diubah)" "(tidak disetel)" "Penyimpanan kredensial" - "Gunakan kredensial aman" - "Izinkan aplikasi mengakses sertifikat aman dan kredensial lainnya" "Pasang dari penyimpanan" "Pasang dari kartu SD" "Pasang sertifikat dari penyimpanan" "Pasang sertifikat dari kartu SD" - "Setel sandi" - "Setel atau ubah sandi untuk penyimpanan kredensial" "Hapus kredensial" "Hapus semua konten dan setel ulang sandi" "Masukkan sandi" "Masukkan sandi untuk penyimpanan kredensial." - "Setel sandi untuk penyimpanan kredensial. Gunakan setidaknya 8 karakter." "Sandi saat ini:" - "Sandi baru:" - "Konfirmasi sandi baru:" "Semua konten akan dihapus dan sandi akan disetel ulang. Yakin dengan hal ini?" - "Sandi tidak cocok." "Sandi minimal terdiri dari 8 karakter." "Sandi salah." "Sandi salah. Anda memiliki satu kesempatan lagi sebelum penyimpanan kredensial dihapus." diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 67113216813..5f8c114563c 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -1311,24 +1311,16 @@ "(invariato)" "(non impostato)" "Archivio credenziali" - "Usa credenziali protez." - "Consenti accesso applicazioni a certificati protezione e altre credenziali" "Installa da archivio" "Installa da scheda SD" "Installa certificati da archivio" "Installa certificati da scheda SD" - "Imposta password" - "Imposta o modifica la password dell\'archivio credenziali" "Cancella credenziali" "Rimuovi tutti i contenuti e reimposta la password" "Inserisci password" "Inserisci la password per l\'archivio credenziali." - "Imposta la password per l\'archivio credenziali. Deve essere formata da almeno 8 caratteri." "Password attuale:" - "Nuova password:" - "Conferma nuova password:" "Tutti i contenuti verranno rimossi e la password reimpostata. Procedere?" - "Le password non corrispondono." "La password deve essere formata da almeno 8 caratteri." "Password errata." "Password non corretta. Hai un\'altra possibilità prima che l\'archivio credenziali venga cancellato." diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index d6fdf997f4e..e89a9368cdc 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -1311,24 +1311,16 @@ "(ללא שינוי)" "(לא הוגדר)" "אחסון אישורים" - "שימוש באישורים מאובטחים" - "אפשר ליישומים לגשת לאישורים מאובטחים ואישורים אחרים" "התקן מאמצעי אחסון" "התקן מכרטיס SD" "התקן אישורים מאמצעי אחסון" "התקן אישורים מכרטיס SD" - "הגדרת סיסמה" - "הגדר או שנה את הסיסמה עבור אחסון האישורים" "נקה אישורים" "הסר את כל התוכן ואפס את הסיסמה" "הזן סיסמה" "הזן את הסיסמה עבור אחסון האישורים." - "הגדר את הסיסמה עבור אחסון האישורים. הסיסמה חייבת להכיל לפחות 8 תווים." "הסיסמה הנוכחית:" - "סיסמה חדשה:" - "אשר את הסיסמה החדשה:" "כל התוכן יימחק והסיסמה תתאפס. האם אתה בטוח לגבי פעולה זו?" - "הסיסמאות לא תואמות." "אורך הסיסמה חייב להיות 8 תווים לפחות." "סיסמה שגויה." "סיסמה שגויה. יש לך עוד ניסיון אחד לפני שאחסון האישורים יימחק." diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index 2051edb12b2..332b45bd2d9 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -1311,24 +1311,16 @@ "(変更なし)" "(未設定)" "認証情報ストレージ" - "安全な認証情報の使用" - "安全な証明書と他の認証情報へのアクセスをアプリケーションに許可する" "ストレージからのインストール" "SDカードからインストール" "ストレージから証明書をインストールする" "証明書をSDカードからインストールする" - "パスワードの設定" - "認証ストレージのパスワードを設定または変更する" "認証ストレージの消去" "すべてのコンテンツを削除してパスワードをリセットする" "パスワードを入力する" "認証ストレージのパスワードを入力してください。" - "認証情報ストレージのパスワードを設定します。パスワードは8文字以上で指定します。" "現在のパスワード:" - "新しいパスワード:" - "新しいパスワードの確認:" "コンテンツはすべて削除され、パスワードはリセットされます。操作を実行してもよろしいですか?" - "パスワードが一致しません。" "パスワードを8文字以上で入力してください。" "パスワードが正しくありません。" "パスワードが正しくありません。あと1回失敗すると、認証情報ストレージが消去されます。" diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 6e2d932d776..46ec7086262 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -1311,24 +1311,16 @@ "(변경 안함)" "(설정 안함)" "자격증명 저장소" - "보안 자격증명 사용" - "애플리케이션이 보안 인증서 및 다른 자격증명에 액세스하도록 허용" "저장소에서 설치" "SD 카드에서 설치" "저장소에서 인증서 설치" "SD 카드에서 인증서 설치" - "비밀번호 설정" - "자격증명 저장소에 대한 비밀번호 설정 또는 변경" "자격증명 삭제" "콘텐츠를 모두 삭제하고 비밀번호 재설정" "비밀번호 입력" "자격증명 저장소에 대한 비밀번호를 입력하세요." - "자격증명 저장소에 대한 비밀번호를 설정하세요. 8자 이상이어야 합니다." "현재 비밀번호:" - "새 비밀번호:" - "새 비밀번호 확인:" "콘텐츠가 모두 삭제되고 비밀번호가 재설정됩니다. 계속하시겠습니까?" - "비밀번호가 일치하지 않습니다." "비밀번호는 8자 이상이어야 합니다." "비밀번호가 잘못되었습니다." "비밀번호가 잘못되었습니다. 한 번 더 실패하면 자격증명 저장소가 지워집니다." diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml index 31ffece1c55..8308745c310 100644 --- a/res/values-lt/strings.xml +++ b/res/values-lt/strings.xml @@ -1311,24 +1311,16 @@ "(nepakeista)" "(nenustatyta)" "Įgaliojimų atmintinė" - "Naudoti saugius įgaliojimus" - "Leisti programoms pasiekti saugius sertifikatus ir kitus įgaliojimus" "Įdiegti iš atmintinės" "Įdiegti iš SD kortelės" "Įdiegti sertifikatus iš atmintinės" "Įdiegti sertifikatus iš SD kortelės" - "Nustatyti slaptažodį" - "Nustatyti arba pakeisti įgaliojimų atmintinės slaptažodį" "Valyti įgaliojimus" "Pašalinti visą turinį ir iš naujo nustatyti slaptažodį" "Įveskite slaptažodį" "Įvesti įgaliojimų atmintinės slaptažodį." - "Nustatyti įgaliojimų atmintinės slaptažodį. Jis turi būti sudarytas mažiausiai iš 8 simbolių." "Dabartinis slaptažodis:" - "Naujas slaptažodis:" - "Patvirtinti naują slaptažodį:" "Visas turinys bus pašalintas ir slaptažodis nustatytas iš naujo. Ar tikrai norite tai atlikti?" - "Slaptažodžiai neatitinka." "Slaptažodį turi sudaryti mažiausiai 8 simboliai." "Neteisingas slaptažodis." "Neteisingas slaptažodis. Dar galite bandyti vieną kartą, paskui įgaliojimų atmintinė bus ištrinta." diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index 76d57e60178..7ae569a0922 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -1311,24 +1311,16 @@ "(bez izmaiņām)" "(nav iestatīta)" "Akreditācijas datu krātuve" - "Izmantot drošos akreditācijas datus" - "Ļaut lietojumprogrammām piekļūt drošajiem sertifikātiem un citiem akreditācijas datiem" "Instalēšana no atmiņas" "Instalēt no SD kartes" "Instalēt sertifikātus no atmiņas" "Instalēt sertifikātus no SD kartes" - "Iestatīt paroli" - "Iestatīt vai mainīt akreditācijas datu krātuves paroli" "Akreditācijas datu notīrīšana" "Noņemt visu saturu un atiestatīt paroli" "Paroles ievadīšana" "Ievadiet akreditācijas datu krātuves paroli." - "Iestatiet akreditācijas datu krātuves paroli. Tai jābūt vismaz 8 rakstzīmes garai." "Pašreizējā parole:" - "Jaunā parole:" - "Apstipriniet jauno paroli:" "Tiks noņemts viss saturs, un tiks atiestatīta parole. Vai tiešām vēlaties veikt šo darbību?" - "Paroles nav vienādas." "Parolē jābūt vismaz astoņām rakstzīmēm." "Nepareiza parole." "Nepareiza parole. Varat vēl mēģināt vienu reizi, pirms tiek izdzēsta akreditācijas datu krātuve." diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml index 5a7b15d471b..6871ac6906a 100644 --- a/res/values-ms/strings.xml +++ b/res/values-ms/strings.xml @@ -1874,10 +1874,6 @@ - - - - @@ -1886,10 +1882,6 @@ - - - - @@ -1902,14 +1894,8 @@ - - - - - - diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index 7b2ca85773f..d2a1cb7a4cd 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -1311,24 +1311,16 @@ "(uendret)" "(ikke satt)" "Legitimasjonslager" - "Bruk sikre akkreditiver" - "Gir applikasjoner tilgang til sikre sertifikater og andre akkreditiver" "Installer fra lagringsenhet" "Installer fra SD-kort" "Installer sertifikater fra lagringsenhet" "Installer sertifikater fra SD-kort" - "Velg passord" - "Angi eller endre passordet for legitimasjonslageret" "Tøm legitimasjonslageret" "Fjern alt innhold og tilbakestill passordet" "Velg passord" "Skriv inn passordet for legitimasjonslagring." - "Angi et passord for legitimasjonslageret. Det må inneholde minst åtte tegn." "Nåværende passord:" - "Nytt passord:" - "Bekreft nytt passord:" "Alt innholdet fjernes, og passordet tilbakestilles. Er du sikker?" - "Passordene stemmer ikke overens." "Passordet må bestå av minst åtte tegn." "Feil passord." "Feil passord. Du har ett forsøk til før legitimasjonslageret slettes." diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index e891230f78c..f979fc10012 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -1311,24 +1311,16 @@ "(ongewijzigd)" "(niet ingesteld)" "Opslag van referenties" - "Beveiligingsreferenties" - "Toepassingen mogen veilige certificaten en andere referenties openen" "Installeren vanuit opslag" "Installeren vanaf SD-kaart" "Certificaten vanuit opslag installeren" "Certificaten installeren vanaf SD-kaart" - "Wachtwoord instellen" - "Het wachtwoord voor de opslag van referenties instellen of wijzigen" "Referenties wissen" "Alle inhoud verwijderen en het wachtwoord opnieuw instellen" "Voer het wachtwoord in" "Geef het wachtwoord voor de opslag van referenties op." - "Stel het wachtwoord voor de opslag van referenties in. Het wachtwoord moet bestaan uit ten minste acht tekens." "Huidig wachtwoord:" - "Nieuw wachtwoord:" - "Nieuw wachtwoord bevestigen:" "Alle inhoud wordt verwijderd en het wachtwoord wordt opnieuw ingesteld. Weet u het zeker?" - "De wachtwoorden komen niet overeen." "Het wachtwoord moet uit ten minste 8 tekens bestaan." "Onjuist wachtwoord." "Onjuist wachtwoord. U heeft nog één poging voordat de opslag van referenties wordt gewist." diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index bf9fe254d45..0ac7d6de13b 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -1311,24 +1311,16 @@ "(nie zmieniono)" "(nie ustawiono)" "Magazyn danych logowania" - "Dostęp do poufnych danych" - "Zezwalaj aplikacjom na dostęp do bezpiecznych certyfikatów i innych danych logowania" "Zainstaluj z nośnika" "Zainstaluj z karty SD" "Zainstaluj certyfikaty z nośnika" "Zainstaluj certyfikaty z karty SD" - "Ustaw hasło" - "Ustaw lub zmień hasło do magazynu danych logowania:" "Wyczyść dane logowania" "Usuń całą zawartość i zresetuj hasło" "Wprowadź hasło" "Wprowadź hasło magazynu danych logowania." - "Ustaw hasło do magazynu danych logowania. Musi ono mieć co najmniej 8 znaków." "Bieżące hasło:" - "Nowe hasło:" - "Potwierdź nowe hasło:" "Cała zawartość zostanie usunięta, a hasło zostanie zresetowane. Czy na pewno chcesz to zrobić?" - "Hasła nie są identyczne." "Hasło musi mieć co najmniej 8 znaków." "Nieprawidłowe hasło." "Nieprawidłowe hasło. Pozostała jedna próba przed wyczyszczeniem magazynu danych logowania." diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index af29caf543c..3ef159867af 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -1311,24 +1311,16 @@ "(não alterado)" "(não definido)" "Armazenamento de credenciais" - "Utilizar credenciais seguras" - "Acesso das aplicações a certificados seguros e outras credenciais" "Instalar do armazenamento" "Instalar a partir do cartão SD" "Instalar certificados a partir do armazenamento" "Instalar certificados a partir do cartão SD" - "Definir palavra-passe" - "Definir ou alterar a palavra-passe do armazenamento de credenciais" "Limpar credenciais" "Remover todo o conteúdo e repor a palavra-passe" "Introduzir palavra-passe" "Introduza a palavra-passe do armazenamento de credenciais." - "Defina a palavra-passe do armazenamento de credenciais. Tem de ter, pelo menos, 8 caracteres." "Palavra-passe actual:" - "Nova palavra-passe:" - "Confirmar nova palavra-passe:" "Todo o conteúdo será removido e a palavra-passe será reposta. Tem a certeza de que pretende continuar?" - "As palavras-passe não correspondem." "A palavra-passe deve ter, pelo menos, 8 caracteres." "Palavra-passe incorrecta." "Palavra-passe incorrecta. Tem mais uma tentativa antes de o armazenamento de credenciais ser apagado." diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index cff5c07fde2..f7251a314f5 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -1311,24 +1311,16 @@ "(não alterado)" "(não definido)" "Armazenamento de credenciais" - "Usar credenciais seguras" - "Permitir que os aplicativos acessem credenciais e certificados seguros" "Instalar do armazenamento" "Instalar do cartão SD" "Instalar certificados do armazenamento" "Instalar certificados do cartão SD" - "Definir senha" - "Configurar ou alterar a senha para o armazenamento de credencial" "Limpar credenciais" "Remover todos os conteúdos e redefinir a senha" "Inserir senha" "Digite a senha para o armazenamento de credencial." - "Configure a senha para o armazenamento de credencial. A senha deve ter no mínimo 8 caracteres." "Senha atual:" - "Nova senha:" - "Confirmar nova senha:" "Todos os conteúdos serão removidos e a senha será redefinida. Tem certeza de que deseja fazer isso?" - "As senhas não correspondem." "A senha deve ter no mínimo 8 caracteres." "Senha incorreta." "Senha incorreta. Você tem uma ou mais tentativas antes do armazenamento de credencial ser apagado." diff --git a/res/values-rm/strings.xml b/res/values-rm/strings.xml index 39326fd7351..295f0da6b1a 100644 --- a/res/values-rm/strings.xml +++ b/res/values-rm/strings.xml @@ -1502,8 +1502,6 @@ "(betg definì)" - "Identitads segiradas" - "Las applicaziuns pon acceder a certificats segirads ed infurmaziuns d\'annunzia" @@ -1512,19 +1510,12 @@ - "Definir il pled-clav" - "Definir/midar il pled-clav da la memoria da las infurmaziuns d\'annunzia" "Stizzar la memoria" "Stizzar il cuntegn da la memoria da las infurmaziuns d\'annunzia e reinizialisar il pled-clav" "Endatar il pled-clav" "Endatai il pled-clav per la memoria da las infurmaziuns d\'annunzia." - - "Pled-clav actual:" - "Nov pled-clav:" - "Confermar il nov pled-clav:" "Vulais Vus propi stizzar tut las infurmaziuns d\'annunzia e reinizialisar il pled-clav per la memorisaziun da las infurmaziuns d\'annunzia?" - "Ils pleds-clav na correspundan betg." "Il pled-clav sto cuntegnair almain 8 caracters." "Endatai il pled-clav correct." "Endatai il pled clav correct. Vus avais anc ina emprova avant che la memoria da las infurmaziuns d\'annunzia vegn stizzada." diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index dc93731e5c8..36f0007f267 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -1311,24 +1311,16 @@ "(nemodificat)" "(nesetat)" "Stocarea acreditărilor" - "Utilizaţi acreditări securizate" - "Permiteţi aplicaţiilor să acceseze certificate securizate şi alte acreditări" "Instalaţi de pe stocare" "Instalaţi de pe cardul SD" "Instalaţi certificate de pe stocare" "Instalaţi certificate de pe cardul SD" - "Setaţi parola" - "Setaţi sau schimbaţi parola pentru stocarea acreditărilor" "Ştergeţi acreditările" "Eliminaţi întregul conţinut şi resetaţi parola" "Introduceţi parola" "Introduceţi parola pentru stocarea acreditărilor." - "Setaţi parola pentru stocarea acreditărilor. Parola trebuie să aibă cel puţin 8 caractere." "Parola actuală:" - "Parola nouă:" - "Confirmaţi noua parolă:" "Întregul conţinut va fi eliminat, iar parola va fi resetată. Sigur doriţi acest lucru?" - "Parolele nu corespund." "Parola trebuie să conţină minimum 8 caractere." "Parolă incorectă." "Parolă incorectă. Mai aveţi dreptul la o singură încercare înainte ca stocarea acreditărilor să fie ştearsă." diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index f2977294761..96605a79290 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -1311,24 +1311,16 @@ "(не изменялось)" "(не настроено)" "Хранилище регистрационных данных" - "Доступ к хранилищу" - "Разрешить приложениям использовать хранилище сертификатов и учет. данных" "Устанавливать с карты памяти." "Установка с SD-карты" "Устанавливать сертификаты с карты памяти" "Установить сертификаты с SD-карты" - "Установить пароль" - "Установить или изменить пароль для хранилища регистрационных данных" "Очистить учетные данные" "Удалить все содержание и сбросить пароль" "Ввод пароля" "Введите пароль для хранилища регистрационных данных." - "Установите пароль для хранилища регистрационных данных. Он должен иметь не менее 8 знаков." "Текущий пароль:" - "Новый пароль:" - "Подтвердите новый пароль:" "Все содержание будет удалено, а пароль изменен. Продолжить?" - "Пароли не совпадают." "В пароле должно быть не менее 8 символов." "Неправильный пароль." "Неверный пароль. У вас осталась одна попытка, после которой хранилище регистрационных данных будет очищено." diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index 2412c8042ca..849a9d29bf0 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -1311,24 +1311,16 @@ "(nezmenené)" "(nie je nastavené)" "Ukladací priestor poverení" - "Použiť zabezpečené poverenia" - "Povoliť aplikáciám prístup k zabezpečeným certifikátom a ďalším povereniam" "Inštalovať z uklad. priestoru" "Inštalácia z karty SD" "Inštalovať certifikáty z ukladacieho priestoru" "Inštalovať certifikáty z karty SD" - "Nastaviť heslo" - "Nastaviť alebo zmeniť heslo pre ukladací priestor poverení" "Vymazať poverenia" "Odstrániť všetok obsah a obnoviť heslo" "Zadajte heslo" "Zadajte heslo pre ukladací priestor poverení." - "Nastaviť heslo pre ukladací priestor poverení (najmenej 8 znakov)." "Aktuálne heslo:" - "Nové heslo:" - "Potvrďte nové heslo:" "Všetok obsah bude odstránený a heslo bude obnovené. Naozaj chcete pokračovať?" - "Heslá sa nezhodujú." "Heslo musí mať aspoň 8 znakov." "Nesprávne heslo." "Nesprávne heslo. Do vymazania ukladacieho priestoru poverení vám zostáva jeden pokus." diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index 68c7f8c6522..d08b54cb7d0 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -1311,24 +1311,16 @@ "(nespremenjeno)" "(ni nastavljeno)" "Shramba poverilnic" - "Uporabi zaščitene poverilnice" - "Dovoli programom dostop do zaščitenih potrdil in drugih poverilnic" "Namesti iz shrambe" "Namesti s kartice SD" "Namesti šifrirana potrdila iz shrambe" "Namesti potrdila s kartice SD" - "Nastavi geslo" - "Nastavitev ali spreminjanje gesla za shrambo poverilnic" "Brisanje poverilnic" "Odstranitev vsebine in obnovitev gesla" "Vnesite geslo" "Vnesite geslo za shrambo poverilnic." - "Nastavite geslo za shrambo poverilnic. Imeti mora vsaj 8 znakov." "Trenutno geslo:" - "Novo geslo:" - "Potrdite novo geslo:" "Vsebina bo izbrisana in geslo ponastavljeno. Ali ste prepričani, da želite to?" - "Gesli se ne ujemata." "Geslo mora imeti vsaj 8 znakov" "Napačno geslo." "Napačno geslo. Poskusite lahko še enkrat, preden se shramba poverilnic izbriše." diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index 117731f553e..da7adb8cae4 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -1311,24 +1311,16 @@ "(непромењено)" "(није подешено)" "Складиште акредитива" - "Коришћење безбедносних акредитива" - "Дозвољавање да апликације приступе безбедносним сертификатима и другим акредитивима" "Инсталирање из меморије" "Инсталирање са SD картице" "Инсталирај сертификате из меморије" "Инсталирање сертификата са SD картице" - "Подешавање лозинке" - "Подешавање или промена лозинке за складиште акредитива" "Брисање акредитива" "Уклањање целокупног садржаја и поновно постављање лозинке" "Унос лозинке" "Унесите лозинку за складиште акредитива." - "Подесите лозинку за складиште акредитива. Мора да има најмање 8 знакова." "Тренутна лозинка:" - "Нова лозинка:" - "Потврдите нову лозинку:" "Сав садржај ће бити уклоњен, а лозинка ће бити поново постављена. Јесте ли сигурни да то желите?" - "Лозинке се не подударају." "Лозинка мора да има најмање 8 знакова." "Нетачна лозинка." "Нетачна лозинка. Имате још један унос пре брисања складишта акредитива." diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index 5f68227e182..79f2203ba21 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -1311,24 +1311,16 @@ "(oförändrat)" "(ej angivet)" "Uppgiftslagring" - "Använd säkra uppgifter" - "Tillåt att appar får åtkomst till säkra certifikat och andra uppgifter" "Installera från lagringsenhet" "Installera från SD-kort" "Installera certifikat från lagringsenhet" "Installera certifikat från SD-kort" - "Ange lösenord" - "Ange eller ändra lösenordet för uppgiftslagring" "Rensa användaruppgifter" "Ta bort allt innehåll och återställ lösenordet" "Ange lösenord" "Ange lösenordet för uppgiftslagring." - "Ange lösenordet för uppgiftslagring. Det måste innehålla minst 8 tecken." "Nuvarande lösenord:" - "Nytt lösenord:" - "Bekräfta det nya lösenordet:" "Allt innehåll tas bort och lösenordet återställs. Vill du ändå fortsätta?" - "Lösenorden stämmer inte överens." "Lösenordet måste innehålla minst 8 tecken." "Fel lösenord." "Fel lösenord. Du har ett försök till att ange rätt lösenord, därefter raderas uppgiftslagringen" diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index 37a38439867..34d9abaf4c3 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -1873,8 +1873,6 @@ "(haijawekwa)" - "Tumia hati-tambulishi salama" - "Ruhusu programu zifikie vyeti salama na hati-tambulishi zingine" @@ -1883,8 +1881,6 @@ - "Weka nenosiri" - "Weka au badilisha nenosiri la hifadhi ya hati tambulishi" "Futa hifadhi" "Futa hifadhi ya hati-tambulishi ya maudhui yote na uweke upya nenosiri lake" "Ingiza nenosiri" @@ -1892,10 +1888,7 @@ "Nenosiri la sasa:" - "Nenosiri jipya:" - "Thibitisha nenosiri jipya:" "Una uhakika unataka kufuta hati-tambulishi zote na kuweka upya nenosiri la kuhifadhi hati-tambulishi?" - "Manenosiri hayaoani." "Nenosiri lazima liwe na angalau vibambo 8." "Tafadhali ingiza nenosiri sahihi." "Tafadhali ingiza nenosiri sahihi. Una jaribio moja zaidi la kujaribu kuingiza nenosiri sahihi kabla ya hifadhi ya hati-tambulishi kufutwa." diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index 241b22dcdae..bfb1d077501 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -1314,24 +1314,16 @@ "(ไม่เปลี่ยน)" "(ไม่ได้ตั้งค่า)" "ที่จัดเก็บข้อมูลรับรอง" - "ใช้ข้อมูลรับรองความปลอดภัย" - "อนุญาตให้แอปพลิเคชันนี้เข้าถึงใบรับรองความปลอดภัยและข้อมูลรับรองอื่น" "ติดตั้งจากที่เก็บข้อมูล" "ติดตั้งจากการ์ด SD" "ติดตั้งใบรับรองจากที่เก็บข้อมูล" "ติดตั้งใบรับรองจากการ์ด SD" - "ตั้งค่ารหัสผ่าน" - "ตั้งหรือเปลี่ยนรหัสผ่านสำหรับที่จัดเก็บข้อมูลรับรอง" "ล้างข้อมูลรับรอง" "นำข้อมูลทั้งหมดออกและรีเซ็ตรหัสผ่าน" "ป้อนรหัสผ่าน" "ใส่รหัสผ่านสำหรับที่จัดเก็บข้อมูลรับรอง" - "ตั้งรหัสผ่านสำหรับที่จัดเก็บข้อมูลรับรอง ต้องมีอย่างน้อย 8 อักขระ" "รหัสผ่านปัจจุบัน:" - "รหัสผ่านใหม่:" - "ยืนยันรหัสผ่านใหม่:" "เนื้อหาทั้งหมดจะถูกลบและมีการรีเซ็ตรหัสผ่านนี้ คุณแน่ใจหรือไม่" - "รหัสผ่านของคุณไม่ตรง" "รหัสผ่านต้องมีอักขระอย่างน้อย 8 ตัว" "รหัสผ่านไม่ถูกต้อง" "รหัสผ่านไม่ถูกต้อง คุณมีโอกาสหนึ่งครั้งก่อนที่ที่จัดเก็บข้อมูลรับรองจะถูกลบ" diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml index 096385c04bd..82966fd9761 100644 --- a/res/values-tl/strings.xml +++ b/res/values-tl/strings.xml @@ -1314,24 +1314,16 @@ "(di-nabago)" "(hindi nakatakda)" "Storage ng kredensyal" - "Gumamit ng mga secure na kredensyal" - "Payagan ang mga application upang ma-access ang mga secure na certificate at iba pang mga kredensyal" "I-install mula sa imbakan" "I-install mula sa SD card" "Mag-install ng mga certificate mula sa storage" "Mag-install ng mga certificate mula sa SD card" - "Itakda ang password" - "Itakda o baguhin ang password para sa imbakan ng kredensyal" "I-clear ang mga kredensyal" "Alisin ang lahat ng mga nilalaman at i-reset ang password" "Magpasok ng password" "Ipasok ang password para sa storage ng kredensyal." - "Itakda ang password para sa storage ng kredensyal. Dapat na mayroon itong hindi bababa sa 8 character." "Kasalukuyang password:" - "Bagong password:" - "Kumpirmahin ang bagong password:" "Maaalis ang lahat ng mga nilalaman, at mare-reset ang password. Sigurado ka ba tungkol doon?" - "Hindi tumutugma ang iyong mga password." "Dapat na may hindi bababa sa 8 character ang password." "Hindi tamang password." "Hindi tamang password. Mayroon kang isa pang pagkakataon bago mabura ang imbakan ng kredensyal." diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index c35c78245cd..4a491b893a8 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -1311,24 +1311,16 @@ "(değişmedi)" "(ayarlanmadı)" "Kimlik bilgileri deposu" - "Güvenli kimlik bilgilerini kullan" - "Uygulamaların güvenli sertifikalara ve diğer kimlik bilgilerine erişmesine izin verin" "Depolama biriminden yükle" "SD karttan yükle" "Sertifikaları depolama biriminden yükle" "Sertifikaları SD karttan yükle" - "Şifreyi ayarla" - "Kimlik bilgileri deposu için şifre ayarla veya mevcut şifreyi değiştir" "Kimlik bilgilerini temizle" "Tüm içeriği kaldır ve şifreyi sıfırla" "Şifreyi girin" "Kimlik bilgileri deposu için şifre girin." - "Kimlik bilgileri deposu için şifreyi girin. En az 8 karakter olmalıdır." "Geçerli şifre:" - "Yeni şifre:" - "Yeni şifreyi doğrulayın:" "Tüm içerik kaldırılacak ve şifre sıfırlanacak. Bundan emin misiniz?" - "Şifreler eşleşmiyor." "Şifre, en az 8 karakterden oluşmalıdır." "Yanlış şifre." "Yanlış şifre. Kimlik bilgileri deposu silinmeden önce tek bir şansınız kaldı." diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index 4c4a72d2750..01d2f5558ed 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -1311,24 +1311,16 @@ "(незмін.)" "(не встан.)" "Сховище облікових даних" - "Викор. безпечні обл. дані" - "Дозвол. програмі отр. доступ до безпечних сертифікатів й інших обл. даних" "Установити з носія" "Установити з карти SD" "Установлювати сертифікати з носія" "Установлювати сертифікати з карти SD" - "Устан. пароль" - "Установлювати чи змінювати пароль для сховища облікових даних" "Видалити облікові дані" "Видалити весь вміст і змінити пароль" "Введіть пароль" "Ввести пароль для сховища облікових даних." - "Установіть пароль для сховища облікових даних. Він має складатися щонайменше з 8 символів." "Поточний пароль:" - "Новий пароль:" - "Підтвердьте нов. пароль:" "Увесь вміст буде видалено, а пароль буде змінено. Ви впевнені?" - "Паролі не збігаються." "Пароль має складатися принаймні з 8 символів." "Неправильний пароль." "Неправильний пароль. У вас залишилася ще одна спроба до очищення сховища облікових даних." diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index 45dce298586..13fe9d87314 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -1311,24 +1311,16 @@ "(không thay đổi)" "(chưa được đặt)" "Lưu thông tin xác thực" - "Sử dụng thông tin xác thực bảo mật" - "Cho phép các ứng dụng truy cập vào chứng chỉ bảo mật và thông tin xác thực khác" "Cài đặt từ bộ nhớ" "Cài đặt từ thẻ SD" "Cài đặt chứng chỉ từ bộ nhớ" "Cài đặt chứng chỉ từ thẻ SD" - "Đặt mật khẩu" - "Đặt hoặc thay đổi mật khẩu cho bộ nhớ thông tin xác thực" "Xóa thông tin xác thực" "Xóa tất cả nội dung và đặt lại mật khẩu" "Nhập mật khẩu" "Nhập mật khẩu cho bộ nhớ thông tin xác thực." - "Đặt mật khẩu cho bộ nhớ thông tin xác thực. Mật khẩu phải có ít nhất 8 ký tự." "Mật khẩu hiện tại:" - "Mật khẩu mới:" - "Xác nhận mật khẩu mới:" "Tất cả nội dung sẽ bị xóa và mật khẩu sẽ được đặt lại. Bạn có chắc chắn việc đó không?" - "Mật khẩu không khớp." "Mật khẩu phải có ít nhất 8 ký tự." "Mật khẩu không chính xác." "Mật khẩu không chính xác. Bạn còn một cơ hội nữa trước khi bộ nhớ thông tin xác thực bị xóa." diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 5a9107e44ac..fe7b4c6b5ad 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -1311,24 +1311,16 @@ "(未更改)" "(未设置)" "凭据存储" - "使用安全凭证" - "允许应用程序访问安全凭证和其他凭证" "从存储设备安装" "从 SD 卡安装" "从存储设备安装证书" "从 SD 卡安装证书" - "设置密码" - "设置或更改凭据存储密码" "清除凭据" "删除所有内容并重置密码" "输入密码" "输入凭据存储密码。" - "设置凭据存储密码(至少 8 个字符)。" "当前密码:" - "新密码:" - "确认新密码:" "系统会删除所有内容并重置密码。您确定要执行此操作吗?" - "密码不匹配。" "密码至少应包含 8 个字符。" "密码不正确。" "密码不正确。您还可以重试一次,如果输入的密码仍不正确,系统将删除凭据存储。" diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index 904a91d24ff..fa747acc578 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -1311,24 +1311,16 @@ "(未變更)" "(未設定)" "憑證儲存空間" - "使用安全認證" - "允許應用程式存取安全認證及其他認證" "從儲存裝置安裝" "從 SD 卡安裝" "從儲存裝置安裝憑證" "從 SD 卡安裝憑證" - "設定密碼" - "設定或變更憑證儲存空間的密碼" "清除憑證" "移除所有內容並重設密碼" "輸入密碼" "輸入憑證儲存空間的密碼。" - "設定憑證儲存空間的密碼,密碼至少必須包含 8 個字元。" "目前的密碼:" - "新密碼:" - "確認新密碼:" "這會移除所有內容並重設密碼,您確定要繼續進行嗎?" - "密碼不符。" "密碼最少必須包含 8 個字元。" "密碼不正確。" "密碼不正確。您還有 1 次輸入密碼的機會,如果輸入錯誤,憑證儲存空間將遭到清除。" diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index 9ecc93b2ac0..b74a92e585f 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -1873,8 +1873,6 @@ "(akuhleliwe)" - "Sebenzisa iziqinisekiso ezivikelekile" - "Vumela izinhlelo zokusebenza ukufinyelela izitifikethi eziphephile nezinye iziqinisekiso" @@ -1883,8 +1881,6 @@ - "Hlela iphasiwedi" - "Hlela noma shintsha ukuqinisekisa iphasiwedi yokugcina" "Sula ukugcina" "Sula ukugcina ukuqinisekisa kwakho konke okuqukethwe bese uhlela futhi iphasiwedi yayo." "Faka iphasiwedi" @@ -1892,10 +1888,7 @@ "Iphasiwedi yamanje:" - "Iphasiwedi entsha:" - "Qinisekisa iphasiwedi entsha:" "Uqinisekile ukuthi ufuna ukusula zonke iziqinisekiso bese uhlela futhi iphasiwedi yokugcina ukuqinisekisa?" - "Amaphasiwedi awafani." "Okungenani iphasiwedi kumele ibe nezinhlamvu ezingu-8." "Sicela ufake iphasiwedi elungile." "Sicela ufake iphasiwedi elungile. Unokuzama okukodwa kokufaka iphasiwedi elungile ngaphambi kokuba ukugcina isiqinisekiso kusulwe." diff --git a/res/values/strings.xml b/res/values/strings.xml index 064700ffed7..9d3f939b66e 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -744,8 +744,8 @@ Require a password to unlock the screen - - Disabled by administrator or encryption policy + + Disabled by administrator, encryption policy, or credential storage Off @@ -3022,10 +3022,6 @@ found in the list of installed applications. Credential storage - - Use secure credentials - - Allow applications to access secure certificates and other credentials Install from storage @@ -3034,31 +3030,19 @@ found in the list of installed applications. Install certificates from storage Install certificates from SD card - - Set password - - Set or change the password for credential storage Clear credentials - Remove all the contents and reset the password + Remove all certificates Enter password Enter the password for credential storage. - - Set the password for credential storage. It must have at least 8 characters. Current password: - - New password: - - Confirm new password: - All the contents will be removed, and the password will be reset. Are you sure about that? - - Passwords do not match. + All the contents will be removed. Are you sure about that? The password must have at least 8 characters. Incorrect password. @@ -3068,10 +3052,12 @@ found in the list of installed applications. Incorrect password. You have %1$d more chances before credential storage is erased. Credential storage is erased. - - Credential could not be erased. + + Credential storage could not be erased. Credential storage is enabled. + + You must set a lock screen PIN or password before you can use credential storage. Would you like to do that now? Emergency tone diff --git a/res/xml/security_settings_misc.xml b/res/xml/security_settings_misc.xml index 68ee8c06aa5..95b2aca3643 100644 --- a/res/xml/security_settings_misc.xml +++ b/res/xml/security_settings_misc.xml @@ -47,11 +47,6 @@ - - @@ -60,14 +55,6 @@ android:targetClass="com.android.certinstaller.CertInstallerMain"/> - - - - = DevicePolicyManager.PASSWORD_QUALITY_NUMERIC) { int minLength = mDPM.getPasswordMinimumLength(null); if (minLength < MIN_PASSWORD_LENGTH) { diff --git a/src/com/android/settings/CredentialStorage.java b/src/com/android/settings/CredentialStorage.java index a47c06d900b..d926d474cd3 100644 --- a/src/com/android/settings/CredentialStorage.java +++ b/src/com/android/settings/CredentialStorage.java @@ -18,18 +18,14 @@ package com.android.settings; import android.app.Activity; import android.app.AlertDialog; -import android.content.ComponentName; -import android.content.Context; +import android.app.admin.DevicePolicyManager; import android.content.DialogInterface; import android.content.Intent; -import android.content.ServiceConnection; import android.os.AsyncTask; import android.os.Bundle; -import android.os.IBinder; import android.os.RemoteException; -import android.security.KeyChain; import android.security.KeyChain.KeyChainConnection; -import android.security.IKeyChainService; +import android.security.KeyChain; import android.security.KeyStore; import android.text.Editable; import android.text.TextWatcher; @@ -38,208 +34,105 @@ import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; +import com.android.internal.widget.LockPatternUtils; -import java.util.concurrent.BlockingQueue; -import java.util.concurrent.LinkedBlockingQueue; -import java.io.UnsupportedEncodingException; - -public class CredentialStorage extends Activity implements TextWatcher, - DialogInterface.OnClickListener, DialogInterface.OnDismissListener { - - public static final String ACTION_UNLOCK = "com.android.credentials.UNLOCK"; - public static final String ACTION_SET_PASSWORD = "com.android.credentials.SET_PASSWORD"; - public static final String ACTION_INSTALL = "com.android.credentials.INSTALL"; - public static final String ACTION_RESET = "com.android.credentials.RESET"; +public class CredentialStorage extends Activity { private static final String TAG = "CredentialStorage"; - private KeyStore mKeyStore = KeyStore.getInstance(); - private boolean mPositive = false; - private boolean mNeutral = false; + public static final String ACTION_UNLOCK = "com.android.credentials.UNLOCK"; + public static final String ACTION_INSTALL = "com.android.credentials.INSTALL"; + public static final String ACTION_RESET = "com.android.credentials.RESET"; + + // This is the minimum acceptable password quality. If the current password quality is + // lower than this, keystore should not be activated. + static final int MIN_PASSWORD_QUALITY = DevicePolicyManager.PASSWORD_QUALITY_SOMETHING; + + private final KeyStore mKeyStore = KeyStore.getInstance(); private Bundle mBundle; - private TextView mOldPassword; - private TextView mNewPassword; - private TextView mConfirmPassword; - private TextView mError; - private Button mButton; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); + @Override protected void onResume() { + super.onResume(); Intent intent = getIntent(); String action = intent.getAction(); - int state = mKeyStore.test(); if (ACTION_RESET.equals(action)) { - showResetDialog(); - } else if (ACTION_SET_PASSWORD.equals(action)) { - showPasswordDialog(state == KeyStore.UNINITIALIZED); + new ResetDialog(); } else { + if (!checkKeyguardQuality()) { + new ConfigureLockScreenDialog(); + return; + } if (ACTION_INSTALL.equals(action) && "com.android.certinstaller".equals(getCallingPackage())) { mBundle = intent.getExtras(); } - if (state == KeyStore.UNINITIALIZED) { - showPasswordDialog(true); - } else if (state == KeyStore.LOCKED) { - showUnlockDialog(); - } else { - install(); - finish(); + // ACTION_UNLOCK also handled here + switch (mKeyStore.state()) { + case UNINITIALIZED: + // if we had a keyguard set, we should be initialized + throw new AssertionError(); + case LOCKED: + // if we have a keyguard, why didn't we unlock? + // possibly old style password, display prompt + new UnlockDialog(); + break; + case UNLOCKED: + install(); + finish(); + break; } } } + private boolean checkKeyguardQuality() { + int quality = new LockPatternUtils(this).getActivePasswordQuality(); + return (quality >= MIN_PASSWORD_QUALITY); + } + private void install() { if (mBundle != null && !mBundle.isEmpty()) { - try { - for (String key : mBundle.keySet()) { - byte[] value = mBundle.getByteArray(key); - if (value != null && !mKeyStore.put(key.getBytes("UTF-8"), value)) { - Log.e(TAG, "Failed to install " + key); - return; - } - } - setResult(RESULT_OK); - } catch (UnsupportedEncodingException e) { - // Should never happen. - throw new RuntimeException(e); - } - } - } - - private void showResetDialog() { - AlertDialog dialog = new AlertDialog.Builder(this) - .setTitle(android.R.string.dialog_alert_title) - .setIcon(android.R.drawable.ic_dialog_alert) - .setMessage(R.string.credentials_reset_hint) - .setNeutralButton(android.R.string.ok, this) - .setNegativeButton(android.R.string.cancel, this) - .create(); - dialog.setOnDismissListener(this); - dialog.show(); - } - - private void showPasswordDialog(boolean firstTime) { - View view = View.inflate(this, R.layout.credentials_dialog, null); - - ((TextView) view.findViewById(R.id.hint)).setText(R.string.credentials_password_hint); - if (!firstTime) { - view.findViewById(R.id.old_password_prompt).setVisibility(View.VISIBLE); - mOldPassword = (TextView) view.findViewById(R.id.old_password); - mOldPassword.setVisibility(View.VISIBLE); - mOldPassword.addTextChangedListener(this); - } - view.findViewById(R.id.new_passwords).setVisibility(View.VISIBLE); - mNewPassword = (TextView) view.findViewById(R.id.new_password); - mNewPassword.addTextChangedListener(this); - mConfirmPassword = (TextView) view.findViewById(R.id.confirm_password); - mConfirmPassword.addTextChangedListener(this); - mError = (TextView) view.findViewById(R.id.error); - - AlertDialog dialog = new AlertDialog.Builder(this) - .setView(view) - .setTitle(R.string.credentials_set_password) - .setPositiveButton(android.R.string.ok, this) - .setNegativeButton(android.R.string.cancel, this) - .create(); - dialog.setOnDismissListener(this); - dialog.show(); - mButton = dialog.getButton(DialogInterface.BUTTON_POSITIVE); - mButton.setEnabled(false); - } - - private void showUnlockDialog() { - View view = View.inflate(this, R.layout.credentials_dialog, null); - - ((TextView) view.findViewById(R.id.hint)).setText(R.string.credentials_unlock_hint); - mOldPassword = (TextView) view.findViewById(R.id.old_password); - mOldPassword.setVisibility(View.VISIBLE); - mOldPassword.addTextChangedListener(this); - mError = (TextView) view.findViewById(R.id.error); - - AlertDialog dialog = new AlertDialog.Builder(this) - .setView(view) - .setTitle(R.string.credentials_unlock) - .setPositiveButton(android.R.string.ok, this) - .setNegativeButton(android.R.string.cancel, this) - .create(); - dialog.setOnDismissListener(this); - dialog.show(); - mButton = dialog.getButton(DialogInterface.BUTTON_POSITIVE); - mButton.setEnabled(false); - } - - public void afterTextChanged(Editable editable) { - if ((mOldPassword == null || mOldPassword.getText().length() > 0) && - (mNewPassword == null || mNewPassword.getText().length() >= 8) && - (mConfirmPassword == null || mConfirmPassword.getText().length() >= 8)) { - mButton.setEnabled(true); - } else { - mButton.setEnabled(false); - } - } - - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - } - - public void onTextChanged(CharSequence s,int start, int before, int count) { - } - - public void onClick(DialogInterface dialog, int button) { - mPositive = (button == DialogInterface.BUTTON_POSITIVE); - mNeutral = (button == DialogInterface.BUTTON_NEUTRAL); - } - - public void onDismiss(DialogInterface dialog) { - if (mPositive) { - mPositive = false; - mError.setVisibility(View.VISIBLE); - - if (mNewPassword == null) { - mKeyStore.unlock(mOldPassword.getText().toString()); - } else { - String newPassword = mNewPassword.getText().toString(); - String confirmPassword = mConfirmPassword.getText().toString(); - - if (!newPassword.equals(confirmPassword)) { - mError.setText(R.string.credentials_passwords_mismatch); - ((AlertDialog) dialog).show(); + for (String key : mBundle.keySet()) { + byte[] value = mBundle.getByteArray(key); + if (value != null && !mKeyStore.put(key, value)) { + Log.e(TAG, "Failed to install " + key); return; - } else if (mOldPassword == null) { - mKeyStore.password(newPassword); - } else { - mKeyStore.password(mOldPassword.getText().toString(), newPassword); } } + setResult(RESULT_OK); + } + } - int error = mKeyStore.getLastError(); - if (error == KeyStore.NO_ERROR) { - Toast.makeText(this, R.string.credentials_enabled, Toast.LENGTH_SHORT).show(); - install(); - } else if (error == KeyStore.UNINITIALIZED) { - Toast.makeText(this, R.string.credentials_erased, Toast.LENGTH_SHORT).show(); - } else if (error >= KeyStore.WRONG_PASSWORD) { - int count = error - KeyStore.WRONG_PASSWORD + 1; - if (count > 3) { - mError.setText(R.string.credentials_wrong_password); - } else if (count == 1) { - mError.setText(R.string.credentials_reset_warning); - } else { - mError.setText(getString(R.string.credentials_reset_warning_plural, count)); - } - ((AlertDialog) dialog).show(); + private class ResetDialog + implements DialogInterface.OnClickListener, DialogInterface.OnDismissListener + { + private boolean mResetConfirmed; + + private ResetDialog() { + AlertDialog dialog = new AlertDialog.Builder(CredentialStorage.this) + .setTitle(android.R.string.dialog_alert_title) + .setIcon(android.R.drawable.ic_dialog_alert) + .setMessage(R.string.credentials_reset_hint) + .setPositiveButton(android.R.string.ok, this) + .setNegativeButton(android.R.string.cancel, this) + .create(); + dialog.setOnDismissListener(this); + dialog.show(); + } + + @Override public void onClick(DialogInterface dialog, int button) { + mResetConfirmed = (button == DialogInterface.BUTTON_POSITIVE); + } + + @Override public void onDismiss(DialogInterface dialog) { + if (mResetConfirmed) { + mResetConfirmed = false; + new ResetKeyStoreAndKeyChain().execute(); return; } + finish(); } - if (mNeutral) { - mNeutral = false; - new ResetKeyStoreAndKeyChain().execute(); - return; - } - finish(); } private class ResetKeyStoreAndKeyChain extends AsyncTask { @@ -274,4 +167,114 @@ public class CredentialStorage extends Activity implements TextWatcher, finish(); } } + + private class ConfigureLockScreenDialog + implements DialogInterface.OnClickListener, DialogInterface.OnDismissListener + { + private boolean mConfigureConfirmed; + + private ConfigureLockScreenDialog() { + AlertDialog dialog = new AlertDialog.Builder(CredentialStorage.this) + .setTitle(android.R.string.dialog_alert_title) + .setIcon(android.R.drawable.ic_dialog_alert) + .setMessage(R.string.credentials_configure_lock_screen_hint) + .setPositiveButton(android.R.string.ok, this) + .setNegativeButton(android.R.string.cancel, this) + .create(); + dialog.setOnDismissListener(this); + dialog.show(); + } + + @Override public void onClick(DialogInterface dialog, int button) { + mConfigureConfirmed = (button == DialogInterface.BUTTON_POSITIVE); + } + + @Override public void onDismiss(DialogInterface dialog) { + if (mConfigureConfirmed) { + mConfigureConfirmed = false; + Intent intent = new Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD); + intent.putExtra(ChooseLockGeneric.ChooseLockGenericFragment.MINIMUM_QUALITY_KEY, + MIN_PASSWORD_QUALITY); + startActivity(intent); + return; + } + finish(); + } + } + + private class UnlockDialog implements TextWatcher, + DialogInterface.OnClickListener, DialogInterface.OnDismissListener + { + private boolean mUnlockConfirmed; + + private final Button mButton; + private final TextView mOldPassword; + private final TextView mError; + + private UnlockDialog() { + View view = View.inflate(CredentialStorage.this, R.layout.credentials_dialog, null); + + ((TextView) view.findViewById(R.id.hint)).setText(R.string.credentials_unlock_hint); + mOldPassword = (TextView) view.findViewById(R.id.old_password); + mOldPassword.setVisibility(View.VISIBLE); + mOldPassword.addTextChangedListener(this); + mError = (TextView) view.findViewById(R.id.error); + + AlertDialog dialog = new AlertDialog.Builder(CredentialStorage.this) + .setView(view) + .setTitle(R.string.credentials_unlock) + .setPositiveButton(android.R.string.ok, this) + .setNegativeButton(android.R.string.cancel, this) + .create(); + dialog.setOnDismissListener(this); + dialog.show(); + mButton = dialog.getButton(DialogInterface.BUTTON_POSITIVE); + mButton.setEnabled(false); + } + + @Override public void afterTextChanged(Editable editable) { + mButton.setEnabled(mOldPassword == null || mOldPassword.getText().length() > 0); + } + + @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { + } + + @Override public void onTextChanged(CharSequence s,int start, int before, int count) { + } + + @Override public void onClick(DialogInterface dialog, int button) { + mUnlockConfirmed = (button == DialogInterface.BUTTON_POSITIVE); + } + + @Override public void onDismiss(DialogInterface dialog) { + if (mUnlockConfirmed) { + mUnlockConfirmed = false; + mError.setVisibility(View.VISIBLE); + mKeyStore.unlock(mOldPassword.getText().toString()); + int error = mKeyStore.getLastError(); + if (error == KeyStore.NO_ERROR) { + Toast.makeText(CredentialStorage.this, + R.string.credentials_enabled, + Toast.LENGTH_SHORT).show(); + install(); + } else if (error == KeyStore.UNINITIALIZED) { + Toast.makeText(CredentialStorage.this, + R.string.credentials_erased, + Toast.LENGTH_SHORT).show(); + } else if (error >= KeyStore.WRONG_PASSWORD) { + int count = error - KeyStore.WRONG_PASSWORD + 1; + if (count > 3) { + mError.setText(R.string.credentials_wrong_password); + } else if (count == 1) { + mError.setText(R.string.credentials_reset_warning); + } else { + mError.setText(getString(R.string.credentials_reset_warning_plural, count)); + } + ((AlertDialog) dialog).show(); + return; + } + } + finish(); + } + } } diff --git a/src/com/android/settings/CryptKeeperSettings.java b/src/com/android/settings/CryptKeeperSettings.java index 10fa8ac4244..20fd652d27f 100644 --- a/src/com/android/settings/CryptKeeperSettings.java +++ b/src/com/android/settings/CryptKeeperSettings.java @@ -37,16 +37,6 @@ import android.view.View; import android.view.ViewGroup; import android.widget.Button; -/** - * Confirm and execute a reset of the device to a clean "just out of the box" - * state. Multiple confirmations are required: first, a general "are you sure - * you want to do this?" prompt, followed by a keyguard pattern trace if the user - * has defined one, followed by a final strongly-worded "THIS WILL ERASE EVERYTHING - * ON THE PHONE" prompt. If at any time the phone is allowed to go to sleep, is - * locked, et cetera, then the confirmation sequence is abandoned. - * - * This is the initial screen. - */ public class CryptKeeperSettings extends Fragment { private static final String TAG = "CryptKeeper"; @@ -54,7 +44,7 @@ public class CryptKeeperSettings extends Fragment { // This is the minimum acceptable password quality. If the current password quality is // lower than this, encryption should not be activated. - private static final int MIN_PASSWORD_QUALITY = DevicePolicyManager.PASSWORD_QUALITY_NUMERIC; + static final int MIN_PASSWORD_QUALITY = DevicePolicyManager.PASSWORD_QUALITY_NUMERIC; // Minimum battery charge level (in percent) to launch encryption. If the battery charge is // lower than this, encryption should not be activated. @@ -163,7 +153,7 @@ public class CryptKeeperSettings extends Fragment { */ private boolean runKeyguardConfirmation(int request) { // 1. Confirm that we have a sufficient PIN/Password to continue - int quality = new LockPatternUtils(getActivity()).getKeyguardStoredPasswordQuality(); + int quality = new LockPatternUtils(getActivity()).getActivePasswordQuality(); if (quality < MIN_PASSWORD_QUALITY) { return false; } diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java index dc4c42b8d8b..5d77e5333ed 100644 --- a/src/com/android/settings/SecuritySettings.java +++ b/src/com/android/settings/SecuritySettings.java @@ -70,7 +70,6 @@ public class SecuritySettings extends SettingsPreferenceFragment // Misc Settings private static final String KEY_SIM_LOCK = "sim_lock"; private static final String KEY_SHOW_PASSWORD = "show_password"; - private static final String KEY_ENABLE_CREDENTIALS = "enable_credentials"; private static final String KEY_RESET_CREDENTIALS = "reset_credentials"; private static final String TAG = "SecuritySettings"; @@ -98,7 +97,6 @@ public class SecuritySettings extends SettingsPreferenceFragment private CheckBoxPreference mShowPassword; - private CheckBoxPreference mEnableCredentials; private Preference mResetCredentials; @Override @@ -239,8 +237,6 @@ public class SecuritySettings extends SettingsPreferenceFragment mShowPassword = (CheckBoxPreference) root.findPreference(KEY_SHOW_PASSWORD); // Credential storage - mEnableCredentials = (CheckBoxPreference) root.findPreference(KEY_ENABLE_CREDENTIALS); - mEnableCredentials.setOnPreferenceChangeListener(this); mResetCredentials = root.findPreference(KEY_RESET_CREDENTIALS); return root; @@ -337,10 +333,8 @@ public class SecuritySettings extends SettingsPreferenceFragment mShowPassword.setChecked(Settings.System.getInt(getContentResolver(), Settings.System.TEXT_SHOW_PASSWORD, 1) != 0); - int state = KeyStore.getInstance().test(); - mEnableCredentials.setChecked(state == KeyStore.NO_ERROR); - mEnableCredentials.setEnabled(state != KeyStore.UNINITIALIZED); - mResetCredentials.setEnabled(state != KeyStore.UNINITIALIZED); + KeyStore.State state = KeyStore.getInstance().state(); + mResetCredentials.setEnabled(state != KeyStore.State.UNINITIALIZED); } @Override @@ -430,13 +424,6 @@ public class SecuritySettings extends SettingsPreferenceFragment // activity will be restated and the new value re-read, so the checkbox will get its // new value then. return false; - } else if (preference == mEnableCredentials) { - if (value != null && (Boolean) value) { - getActivity().startActivity(new Intent(CredentialStorage.ACTION_UNLOCK)); - return false; - } else { - KeyStore.getInstance().lock(); - } } return true; } diff --git a/src/com/android/settings/vpn/VpnSettings.java b/src/com/android/settings/vpn/VpnSettings.java index 5d75b6a790e..9b967613149 100644 --- a/src/com/android/settings/vpn/VpnSettings.java +++ b/src/com/android/settings/vpn/VpnSettings.java @@ -55,6 +55,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; +import java.nio.charset.Charsets; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; @@ -698,7 +699,7 @@ public class VpnSettings extends SettingsPreferenceFragment } private boolean isKeyStoreUnlocked() { - return mKeyStore.test() == KeyStore.NO_ERROR; + return mKeyStore.state() == KeyStore.State.UNLOCKED; } // Returns true if the profile needs to access keystore @@ -1034,7 +1035,7 @@ public class VpnSettings extends SettingsPreferenceFragment String presharedKey = pskProfile.getPresharedKey(); String key = KEY_PREFIX_IPSEC_PSK + p.getId(); if (!TextUtils.isEmpty(presharedKey) && - !mKeyStore.put(key, presharedKey)) { + !mKeyStore.put(key, presharedKey.getBytes(Charsets.UTF_8))) { Log.e(TAG, "keystore write failed: key=" + key); } pskProfile.setPresharedKey(key); @@ -1046,7 +1047,7 @@ public class VpnSettings extends SettingsPreferenceFragment if (l2tpProfile.isSecretEnabled()) { String secret = l2tpProfile.getSecretString(); if (!TextUtils.isEmpty(secret) && - !mKeyStore.put(key, secret)) { + !mKeyStore.put(key, secret.getBytes(Charsets.UTF_8))) { Log.e(TAG, "keystore write failed: key=" + key); } l2tpProfile.setSecretString(key); diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java index 7e071623a00..993633f37f6 100644 --- a/src/com/android/settings/wifi/WifiSettings.java +++ b/src/com/android/settings/wifi/WifiSettings.java @@ -245,7 +245,7 @@ public class WifiSettings extends SettingsPreferenceFragment getActivity().registerReceiver(mReceiver, mFilter); if (mKeyStoreNetworkId != INVALID_NETWORK_ID && - KeyStore.getInstance().test() == KeyStore.NO_ERROR) { + KeyStore.getInstance().state() == KeyStore.State.UNLOCKED) { mWifiManager.connectNetwork(mKeyStoreNetworkId); } mKeyStoreNetworkId = INVALID_NETWORK_ID; @@ -417,7 +417,7 @@ public class WifiSettings extends SettingsPreferenceFragment private boolean requireKeyStore(WifiConfiguration config) { if (WifiConfigController.requireKeyStore(config) && - KeyStore.getInstance().test() != KeyStore.NO_ERROR) { + KeyStore.getInstance().state() != KeyStore.State.UNLOCKED) { mKeyStoreNetworkId = config.networkId; Credentials.getInstance().unlock(getActivity()); return true;