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
and is in IDLE state. checkVpnConnectionStatus() will clean up mActiveProfile
if it's IDLE.
Bug: 3513962
Change-Id: I8289fa321fdbd46def9c8207cef79cb45509897a
and re-associate it when it's re-created.
Before this CL, the association is gone when fragment goes through the pause-resume
cycle.
Similarly, restore onDismiss and onCancel listeners in VpnSettings.onCreateDialog(),
restore states in onCreate() instead of onActivityCreated() so that screen rotation
can be handled correctly.
Now that profiles are shared between Settings instances, always handle state change
in VpnSettings.changeState() so that state changed in one instance can be conveyed
to the other and preferences can be correctly enabled/disabled.
In additions, fix some trivial mistakes in VpnSettings.
Bug: 3396394
Change-Id: I242e1ed6c6d410b4dfefb373d8f98266fc9b46d0
When the fragment is going to be removed, we should ignore the events
left in the message queue.
bug:3392087
Change-Id: Ie716c9cc6742e9990c08d1428f10a956a727d6ed
Since we may have more than one instance of VpnSettings, we have to make
the VPN profile list consistent between instances.
bug:3381902
Change-Id: Ic3128646c7fc6ee2a8c0ea6ce339d76115d7c05b
+ Don't check mDialogFragment.isVisible() in SettingsPreferenceFragment.removeDialog()
as mDialogFragment may not be visible in parent fragment's onResume().
+ Replace mConnectDialog with mConnectDialogShowing and remove
removeConnectDialog().
+ Dismiss alert dialogs in onPause() so that we don't need to maintain extra
states during pause-resume cycle.
In addition, fix a NPE when startVpnTypeSelection().
Bug: 3381434
Bug: 3289365
Change-Id: Ic4aa87c7a618d95e86e45d6617f2ad7dab35f019
for the framework-managed dialogs.
DialogFragment acts as both listeners so the application cannot set both
listeners in the embedded dialog. New hooks are added in SettingsDialogFragment
so that settings apps can do so for the framework-managed dialogs.
Bug: 3386670
Change-Id: I144e7c4ccf7f86c61f6079fa86d830c709335af1
Bug: 3368545
Also fix a couple of bugs in TetherSettings:
Bug: 3090156 - view was being reused without removing from old dialog
Bug: 3368493 - preference being removed a second time
Change-Id: I8fe513d41e1f3af6994783be5ead69b6bd205711
The bug is triggered by rotating the screen after restoring the
vpn setting which was showing the connect dialog from the recent tasks.
Change-Id: I2562b208fa28f9b6ffa8acba1ab14e0f83b3a0c6
The active profile and its state were not stored if the setting process
was killed due to the resource. Here we add the state persistence
mechanism to fix this bug.
bug:3293236
Change-Id: I8b8068972237bde06ca4b3f73ecc48c02c4f0833
This adds meta-data to the manifest for specifying the parent fragment and enabling a link
in the breadcrumbs to navigate "up" a level even if the parent is not in the back-stack.
Bug: 3236568
Fix a monkey issue in VpnSettings.
Fix the issue of vpn connection retry if back button is pressed
and the profile state is still in connecting.
bug: 3278489
Change-Id: I8b51fdd65b2fdd8cbe4fb43afd916f1966b77b67
REMOTE_PPP_HUNG_UP and PPP_NEGOTIATION_FAILED.
Also refactor the dialog creation code to directly use the err code as
the dialog id and make it easier to tell which type of dialog (reconnect
or edit) is invoked for which err code.
+ Now it shows shadowed "(unchanged)" (as in wifi settings) and "(not set)"
instead of two dots.
Patch Set 2:
+ Show cancellation confirmation dialog only when there's change in
profile.
Patch Set 3:
+ Re-enable profile preferences when the reconnect dialog is cancelled.
* Changes
+ add orientation and keyboard config change in the manifest file.
+ remove state saving code
+ improve status checking time by doing it in one server connection.
* Changes
+ Pass intent to keystore when needed and hooks to resume from it.
+ Generate random, unique ID for profile instead of base64 from its
name.
+ Add VPN to "Wirless controls" description.
+ Add credential storage to "Security & location" description.
+ More hints to set password and unlock dialogs in credential storage
settings for actions that come from other processes.
+ Sort VPN profiles according to the names.
+ Replace Keystore with CertTool in L2tpIpsecEditor
* Changes
+ Initial implementation of credential storage settings.
+ Use alert icon on delete and reconnect dialogs in VpnSettings.
(piggy-backed)
Patch Set 12:
+ Add password length and no-space verification.
+ Simplify dialog view xml files.
* Changes
+ Add L2tpActor, L2tpEditor, L2tpIpsecPskActor.
+ Make L2tpIpsecEditor extend L2tpEditor.
+ Revise the code for saving username. Make
VpnSettings.saveProfileToStorage() static.
+ Fix support for screen orientation change in both VpnSettings and
VpnEditor.
Patch Set 2:
+ Remove Util.isNullOrEmpty(). Use TextUtils.isEmpty() instead.
+ Remove unused imports. Wrap lines longer than 80 chars.
Patch Set 3:
+ Fix all the strings according to UI feedback.
+ Remove all the added actor subclasses and move password to editor.
+ Remove VPN entry in Security & location.
Patch Set 4:
+ Misc string fixes.
Patch Set 5:
+ Add strings for credential storage settings.
+ Changed the error dialog icon.
+ Fix "Remember me" indentation in connect dialog.
Patch Set 6:
+ resolve res/values/strings.xml
* changes
+ Add checkbox to layout file and handling code in related classes.
+ Add new methods to VpnProfileActor.
+ Move dialog handling to VpnSettings from AuthenticatorActor in order
to support screen orientation change.
+ Hide "Connect" in the context menu if the profile is connecting.
+ Enable connecting profile in case it was disabled in last call.
PATCH SET 2:
+ Add import com.android.settings.R
PATCH SET 3:
+ Remove @Override interface methods to be compilable by Java 1.5.
PATCH SET 4:
+ Add import android.net.vpn.VpnManager
PATCH SET 5:
+ Add license headers.
PATCH SET 6:
+ Remove Constant.java and move the constants to VpnSettings.
+ Make AuthenticationActor implement DialogInterface's handlers.
+ Remove trailing spaces.
PATCH SET 7:
+ Remove default username.