Commit Graph

282 Commits

Author SHA1 Message Date
TreeHugger Robot
a620aa1a13 Merge "Remove account param from generateKey method" 2018-02-26 15:16:18 +00:00
TreeHugger Robot
c44d5053f2 Merge "Remove account from WrappedApplicationKey" 2018-02-26 14:52:19 +00:00
Robert Berry
8230c8e0d4 Add test for KeyChainSnapshot Parcelable
Bug: 73811828
Test: runtest frameworks-core -p android.security.keystore.recovery
Change-Id: I9448ff791f4f8b82621df2d4343febdce86dbf42
2018-02-26 11:17:55 +00:00
Robert Berry
291bd32c9e Remove account from WrappedApplicationKey
Recovery controller will no longer be aware of accounts. It is up to
the recovery agent to decide where to upload keys, and if so what
accounts to use.

Bug: 73811828
Test: runtest frameworks-core -p android.security.keystore.recovery
Change-Id: I929076d948f4d36ba88b68cca08058a5cdde0107
2018-02-25 23:11:17 +00:00
Robert Berry
a3b994798d Remove account param from generateKey method
Bug: 73811828
Test: runtest frameworks-services -p
      com.android.server.locksettings.recoverablekeystore
Change-Id: If2f4174beea9cfb8c852139a7594815c377dbe7a
2018-02-25 14:48:42 +00:00
Robert Berry
f34ad9509d Merge "Remove packageName from getRecoveryStatus" 2018-02-25 14:08:47 +00:00
TreeHugger Robot
8a36da32a1 Merge "Add CertPath to KeyChainSnapshot and startRecoverySession" 2018-02-24 10:19:21 +00:00
Bo Zhu
7c1972ff71 Add CertPath to KeyChainSnapshot and startRecoverySession
CertPath will include a cert of the trusted hardware and necessary
intermediate certificates.

Bug: 73784851
Change-Id: Ic70616b8f119891a82402b91035456e404c5f6de
Test: adb shell am instrument -w -e package \
com.android.server.locksettings.recoverablekeystore \
com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner
2018-02-23 16:44:41 -08:00
TreeHugger Robot
ed24f903ea Merge "Revert "Add "Unlocked device required" parameter to keys"" 2018-02-23 17:42:45 +00:00
Robert Berry
01468dae19 Merge "Make it possible to construct a RecoverySession" 2018-02-23 16:40:36 +00:00
Robert Berry
56f06b4d11 Remove packageName from getRecoveryStatus
This parameter is unused.

Bug: 73757432
Test: runtest frameworks-services -p
      com.android.server.locksettings.recoverablekeystore

Change-Id: I153a84d71b0ebaed8ce3a1f0f33c70036dd960b2
2018-02-23 15:12:06 +00:00
Robert Berry
e04e09ad87 Make it possible to construct a RecoverySession
These methods are currently inaccessible.

Bug: 73763265
Test: it builds

Change-Id: I8358a8084e1c4fa96b1fe599ef6b17d6196d6a12
2018-02-23 12:00:34 +00:00
Brian Young
da82e2cb71 Revert "Add "Unlocked device required" parameter to keys"
This reverts commit efc3f16be7.

Reason for revert: Regression in creating auth-bound keys

Bug: 73773914

Bug: 67752510

Change-Id: Ic3886ceb3c3c0c4274682ed9f5f2bfbf8fdd71b9
2018-02-23 01:31:49 +00:00
Robert Berry
bbe02ae8a3 Remove package name parameter from setRecoveryStatus
Package name is implicit. Recovery agent can only act for the same uid.

Bug: 73757432
Test: runtest frameworks-services -p
      com.android.server.locksettings.recoverablekeystore

Change-Id: I45abf4b956fa4e97d981614d9e61295e85d5669e
2018-02-22 10:45:32 +00:00
Brian Young
a83d333843 Merge "Add "Unlocked device required" parameter to keys" 2018-02-16 01:18:53 +00:00
Bo Zhu
8060c29816 Add OWNERS files for the recoverable keystore folders
Test: None
Change-Id: I4ad1079cbda4e10ea5f76fb8b3cc280befc62928
2018-02-14 14:38:34 -08:00
Brian C. Young
efc3f16be7 Add "Unlocked device required" parameter to keys
Add a keymaster parameter for keys that should be inaccessible when
the device screen is locked. "Locked" here is a state where the device
can be used or accessed without any further trust factor such as a
PIN, password, fingerprint, or trusted face or voice.

This parameter is added to the Java keystore interface for key
creation and import, as well as enums specified by and for the native
keystore process.

Test: CTS tests in I8a5affd1eaed176756175158e3057e44934fffed

Bug: 67752510

Change-Id: I314b848f6971d1849a7a6347d52e41d9604639ae
2018-02-14 12:19:13 -08:00
Logan Chien
404eb2bcd5 Fix PDK build
This commit moves "IConfirmationPromptCallback.aidl" and
"IKeystoreService.aidl" to "system/security/keystore/binder" so that
"libkeystore_aidl" can be built in PDK builds.

Test: Run `cts-tradefed run cts -m CtsKeystoreTestCases` on Pixel 2017
and the test results are idential with and without this CL.

Test: Build PDK with special manifest described in
http://b/69539820#comment18 and http://b/69539820#comment19.

Test: Build a target (described in http://b/72961456) with
`platform.zip` built from master FSK source tree.

Bug: 69539820
Bug: 72961456
Change-Id: I7350f0ca943b15a6f3e40023a6cc299bdf8aed0e
2018-02-14 15:46:50 +08:00
Dmitry Dementyev
29b9de5b8a Update RecoveryController to use KeyStore grant API.
Missing parts:
1) Whitelist locksettingsservice to use grant API.
2) Probably have similar update for recovered keys - they will live in
system service and RecoveryAgent will use getKey() method to access
them.
3) ApplicationKeyStorageTest

Bug: 66499222
Test: adb shell am instrument -w -e package \
com.android.server.locksettings.recoverablekeystore \
com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner

Change-Id: I584b89e3f777bed679b2eb5173750f3f1dee3635
2018-02-01 17:41:18 -08:00
TreeHugger Robot
00646ee730 Merge "Add Confirmation API." 2018-01-31 18:40:32 +00:00
Dmitry Dementyev
a823068ef1 Merge "Remove finalizer which clears user secret at unpredictable time." 2018-01-30 22:56:20 +00:00
David Zeuthen
a8e8b659d0 Add Confirmation API.
This CL adds new Framework APIs that can be used for the secure
confirmations. This includes support for configuring a key such that
it can only sign data returned by the confirmation APIs.

Bug: 63928580
Test: Manually tested.
Change-Id: I94c1fc532376bd555b3dc37fc4709469450cfde6
2018-01-30 17:33:21 -05:00
Dmitry Dementyev
19da3400a6 Remove finalizer which clears user secret at unpredictable time.
Bug: 72443379
Test: adb shell am instrument -w -e package
com.android.server.locksettings.recoverablekeystore
com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner

Change-Id: Id5410494664952d171beff615e0497a8af061e69
2018-01-30 13:16:47 -08:00
Jorim Jaggi
05bf37612c Merge "Revert "Add "Unlocked device required" parameter to keys"" 2018-01-30 15:36:28 +00:00
Brian Young
3a28570b28 Revert "Add "Unlocked device required" parameter to keys"
This reverts commit 55fff3a89d.

Reason for revert: Build breakages on elfin, gce_x86_phone.

Bug: 67752510

Bug: 72679761
Change-Id: Ia495e9cb158b64fcf015e37b170554a7ed6810a7
2018-01-30 15:31:42 +00:00
TreeHugger Robot
d8a2054c8f Merge "Add "Unlocked device required" parameter to keys" 2018-01-29 23:16:02 +00:00
Brian C. Young
55fff3a89d Add "Unlocked device required" parameter to keys
Add a keymaster parameter for keys that should be inaccessible when
the device screen is locked. "Locked" here is a state where the device
can be used or accessed without any further trust factor such as a
PIN, password, fingerprint, or trusted face or voice.

This parameter is added to the Java keystore interface for key
creation and import, as well as enums specified by and for the native
keystore process.

Test: go/asym-write-test-plan

Bug: 67752510

Change-Id: I8b88ff8fceeafe14e7613776c9cf5427752d9172
2018-01-29 10:16:02 -08:00
Dmitry Dementyev
b4fb987770 Rename RecoveryController.getRecoveryData() to getKeyChainSnapshot.
Bug: 72299798
Test: adb shell am instrument -w -e package
com.android.server.locksettings.recoverablekeystore
com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner

Change-Id: I1a530414d255867786142fa2e01e50469379e295
2018-01-26 11:55:50 -08:00
Janis Danisevskis
7dacad8dc8 Add confirmation UI protocol to Keystore AIDL definition
Test: Manually tested
Bug: 63928580
Change-Id: Ief1cdb9a64737d5aac08aa1c48ff60c34218d5ba
2018-01-24 15:45:08 -08:00
Dmitry Dementyev
f8ae5deba2 Unhide RecoverableKeyStoreLoader API.
Bug: 66499222
Test: GTS tests under development
Change-Id: I4285beaa26bc94d92f6213a34eb1e41ad0994d7a
2018-01-23 19:42:17 -08:00
Dmitry Dementyev
856c69a47b Merge "Prepare KeyStore RecoveryController API for review." 2018-01-24 01:45:08 +00:00
TreeHugger Robot
ba685389af Merge "Keystore APIs for Import Wrapped Key, Strongbox, 3DES" 2018-01-23 22:28:30 +00:00
Dmitry Dementyev
0916e7ca44 Prepare KeyStore RecoveryController API for review.
- set/get recovery status simplification
- adding account to WrappedKey
- moving recovery methods to the Session class.

There are small cosmetical changes to .aidl which don't affect
implementation logic.

Bug: 72299798
Test: adb shell am instrument -w -e package
com.android.server.locksettings.recoverablekeystore
com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner

Change-Id: I9efaa4cde42cf778bb97ed13f62750a65d8c6cb5
2018-01-23 14:24:50 -08:00
Robert Berry
81ee34bf95 Move APIs to final location in preparation for API review
Leave old APIs in current location for backwards compatibility reasons.

Bug: 72298565
Test: Tried flow with current versions of GMSCore to ensure they work still
Change-Id: Iafc2b8ad8a574460dbb2482a67935debe71f1113
2018-01-23 18:05:27 +00:00
Frank Salim
21d9c1d44a Keystore APIs for Import Wrapped Key, Strongbox, 3DES
Import Wrapped Key:
Applications can import keys in a wrapped, encrypted format. Wrapped keys are
unwrapped inside of a Keymaster device.

Strongbox:
Applications can import and generate keys in secure hardware.

3DES:
Add KeyProperties and KeymasterDefs
Add AndroidKeyStore3DESCipherSpi and provider registrations

Bug: 63931634
Test: Keystore CTS tests in progress

Change-Id: I80b6db865b517fa108f14aced7402336212c441b
2018-01-23 00:29:11 -08:00
Allen Webb
ee4dd09918 base: core: java: android: security: keymaster: Synced with updates to keymaster HAL.
Test: pending

Change-Id: Ia5a162b92fec893b0370313eb6775085f2d5285b
2018-01-19 13:02:42 -08:00
Dmitry Dementyev
add1bad01e Add 4 new fields to KeychainSnapshot
The fields are necessary to construct correct arguments for recovery session.
 maxAttempts
 counterId
 serverParams
 trustedHardwarePublicKey

Bug: 66499222
Test: adb shell am instrument -w -e package \
com.android.server.locksettings.recoverablekeystore \
com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner

Change-Id: If8fbc2e0a313d4367712e3598925eab0fb334258
2018-01-18 19:02:02 -08:00
Robert Berry
74928a1dfb Rename RecoveryManager to RecoveryController
This fixes the linting error that happens when we attempt to make this a
@SystemApi.

Test: adb shell am instrument -w -e package
com.android.server.locksettings.recoverablekeystore
com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner

Change-Id: Ib9eea030874608d73ceeff21ee8d7e9d5a75bce8
2018-01-18 18:00:10 +00:00
Robert Berry
2bcdad9533 Use RecoverySession object to hide session IDs (redux)
Session IDs are an implementation detail that the framework can (and should)
abstract away. This was previously reverted due to breaking master.

Test: adb shell am instrument -w -e package
com.android.server.locksettings.recoverablekeystore
com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner

Change-Id: I4427c818348c054ada39d799b6da3b739f27eba9
2018-01-18 14:36:32 +00:00
Robert Berry
588a06f5a2 Merge "Revert "Use RecoverySession object to hide session IDs"" 2018-01-18 12:24:06 +00:00
Robert Berry
9fa87627ed Revert "Use RecoverySession object to hide session IDs"
This reverts commit 988c55ce67.

Reason for revert: broke some tests

Change-Id: Ib43099aebc8ff025e052337475bab13445da74eb
2018-01-18 12:23:33 +00:00
TreeHugger Robot
c4e99794e9 Merge "Use RecoverySession object to hide session IDs" 2018-01-18 10:40:24 +00:00
TreeHugger Robot
15b0089c01 Merge "KeyStore: Remove duplicate method" 2018-01-18 10:26:44 +00:00
Robert Berry
988c55ce67 Use RecoverySession object to hide session IDs
Session IDs are an implementation detail that the framework can (and should)
abstract away.

Test: adb shell am instrument -w -e package
com.android.server.locksettings.recoverablekeystore
com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner

Change-Id: Ieba641a9b54ac9bba197a6e9749b621a07e40c67
2018-01-18 08:25:26 +00:00
Robert Berry
9e1bd362df Rename KeychainProtectionParameter to KeychainProtectionParams
Test: adb shell am instrument -w -e package
com.android.server.locksettings.recoverablekeystore
com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner
Change-Id: Iab6d85d0be38e1a09ce78bb96b8f68493de65be9
2018-01-18 08:21:43 +00:00
Robert Berry
a16cd59a34 Create exception hierarchy for RecoveryController
Sets up a sensible exception hierarchy. Consolidates two error codes
that both represented some kind of internal error into a single code.
Fixed some cases where the wrong error codes were used to signal.

Test: adb shell am instrument -w -e package
com.android.server.locksettings.recoverablekeystore
com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner

Change-Id: I6b1f97715cdc28a4be79912abb6f48e6657b048b
2018-01-17 21:32:58 +00:00
Robert Berry
5f138701fe Use better names for associated classes of RecoveryManager
I will also rename RecoveryManager to RecoveryController -- in a separate CL,
as this one is already becoming too large.

Test: adb shell am instrument -w -e package
com.android.server.locksettings.recoverablekeystore
com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner

Change-Id: I2fb4e1f55fb50d95f15c230783c3d289dd71f7f3
2018-01-17 15:22:56 +00:00
Eran Messeri
eab62566ef KeyStore: Remove duplicate method
Remove the duplicate() method from KeyStore.
It is backed by dead code in the Keystore service, which (as far as I
can tell) is not doing the right thing.

Previous conversations with Keystore team members suggested this API
should not be used and it is marked for removal in the Keystore service.

Bug: 72037261
Test: That it compiles.
Change-Id: I7f8af95473c876340cbd5c73dd88c5d0282897b3
2018-01-16 16:33:22 +00:00
Dmitry Dementyev
7d8c78a2c8 Refactor KeyStore Recovery Manager.
1) Parameters -> Params
2) Use byte[] for serivice parameters.
2) Move Exception into separate class.

Bug: 66499222
Test: adb shell am instrument -w -e package \
com.android.server.locksettings.recoverablekeystore \
com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner

Change-Id: I1b9a8748830f7deb9eeb57693f5a818a49a7aabe
2018-01-12 21:06:25 -08:00
Dmitry Dementyev
ed89ea04e4 Big RecoverableKeyStoreLoader refactoring.
The change is based on API review.
1) package and class names update
2) Builders for Parcelables.
3) Use Constant for RECOVER_KEYSTORE permission defined in
android.Manifest.

Bug: 66499222
Test: adb shell am instrument -w -e package \
com.android.server.locksettings.recoverablekeystore \
com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner

Change-Id: I49f80acbb6dc0eb6d049e18e8cb0d1aa326dadb2
2018-01-11 18:39:18 -08:00