Commit Graph

677 Commits

Author SHA1 Message Date
Treehugger Robot
faa8d92090 Merge "Preserve interrupted state across waiting for future" am: 3a91c75184 am: f6574a21c2
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1340128

Change-Id: Ica523ae5269ba5e2a339653024870fefa581ad64
2020-06-17 14:53:00 +00:00
Janis Danisevskis
edcacd5374 Preserve interrupted state across waiting for future
A normal synchronous binder call would not be influenced by an
interrupted thread. With the move to asynchronous keystore IPC we wait
on a future which can throw an interrupted exception. The Java crypto
API does not expect the implementation to throw interrupted exceptions
though. So to preserve the expected behavior we wrap the Future.get()
calls in a loop that handles the interrupted exception and sets the
interrupted state after the get completed successfully.

Bug: 147398412
Bug: 155254932
Test: atest android.keystore.cts.CipherTest#testEncryptsAndDecryptsInterrupted
Change-Id: I066180e8028cc426fa1b3739fa007faa17c8c012
Merged-In: I066180e8028cc426fa1b3739fa007faa17c8c012
2020-06-16 19:54:38 -07:00
TreeHugger Robot
8502b97753 Merge "Fixing default timeout constant" into rvc-dev am: 7697d0f3eb
Change-Id: I327671ad92b312cb1484d6433ac48497873f1497
2020-05-21 15:59:55 +00:00
TreeHugger Robot
7697d0f3eb Merge "Fixing default timeout constant" into rvc-dev 2020-05-21 15:58:33 +00:00
TreeHugger Robot
f2fe180f43 Merge "Update KeyChain.createInstallIntent documentation" into rvc-dev am: 0bada478b6
Change-Id: I3f593e73e7166ab9dc1fa9eb9c95c4c2c587df11
2020-05-20 14:53:12 +00:00
Eran Messeri
cdcbb66be6 Update KeyChain.createInstallIntent documentation
Update the KeyChain.createInstallIntent method documentation to reflect
the change where CA certificates can no longer be installed using
this intent.

Bug: 156941631
Test: m docs
Change-Id: I3cf2c677c4c772698c8df5f25224dd67d12b5606
2020-05-20 11:14:06 +01:00
Dorin Drimus
c5a547bb2b Merge "Attest device base properties" am: 547aeb27e8 am: f078d49979
Change-Id: Icbca4968438f659bf3d636100b5b172e63eaefb2
2020-05-18 10:13:21 +00:00
Dorin Drimus
9d5b804ea3 Attest device base properties
Add API to allow inclusion of device base properties to the
attestation certificate generated with a Key in Keystore.

Test: atest KeyAttestationTest
Bug: 152945378

Change-Id: Iaf282709f800501aa4c988ebf51cf3238583f9b6
2020-05-15 07:56:05 +00:00
Bill Yi
b61408add5 Merge android10-qpr2-s3-release to aosp/master - DO NOT MERGE
Change-Id: I7ce0992bd12158655c0f4833fd924c8012386996
Merged-In: I34d1d5f9a751c1d7680a5a5941c39b9fe33a473b
Merged-In: Icd731877c220b0e3b39258812030313cbaba90c0
2020-05-05 20:34:22 +00:00
Max Bires
919a9d6d77 Fixing default timeout constant
The getKeyInfo check was not updated to use the new integer representing
an auth per operation key.

Bug: 152618140
Test: atest AuthBoundKeyTest
Change-Id: Ifa6d37ac878ba267761ed7ae32c544cd4b662d25
2020-04-27 17:45:22 +00:00
Rubin Xu
576c4d816c RESTRICT AUTOMERGE
Update keyguard locked state from TrustManagerService

TrustManagerService holds the ground truth about whether a user is
locked or not, so update keystore using the information there,
instead of doing it from KeyguardStateMonitor. This fixes the issue
of work profile locked state not being correctly pushed to keystore.

Note: since this change is likely to be backported as a security
patch, I'm refraining from doing major refactoring right now.

Bug: 141329041
Bug: 144430870
Test: manually with KeyPairSampleApp
Change-Id: I3472ece73d573a775345ebcceeeb2cc460374c9b
(cherry picked from commit f9418dbb2c)
2020-03-19 04:51:51 +00:00
Max Bires
1cfd95ec0c Fixing how SIDs are added to keys during generation time
SIDs were not being properly applied to key parameters under the new
authentication rework. Now that biometric/credential unlocks are valid
for either auth-per-op or timeout auth bound keys, the SIDs need to be
tacked on appropriately in each authentication flow.

Bug: 148425329
Test: CtsVerifier
Change-Id: I73733b00d2da5ac78db6d77c53de144f4473bb54
2020-03-17 02:57:36 +00:00
Max Bires
a811787a96 Fixing default behavior for keys requiring auth
The default timeout and authentication type is being updated to offer a
correct default that matches the old behavior.

Bug: 148425329
Bug: 149931201
Test: CtsVerifier
Test: atest KeyguardLockedTests

Change-Id: Id20097b04ce881e7028609d2ba1c30c26ba3c8cf
2020-03-11 13:43:52 -07:00
TreeHugger Robot
0ffc3165a3 Merge "Do not allow -1 duration in setUserAuthenticationParameters" into rvc-dev 2020-03-05 21:39:57 +00:00
Kevin Chyn
9f49e8df2a Do not allow -1 duration in setUserAuthenticationParameters
This is a completely new API so callers can follow the new pattern of
using 0 to require auth for every use of the key.

Supporting both -1 and 0 to require auth for every use of the key
increases CtsVerifier complexity exponentially (strongbox,
invalidated by enrollment, etc).

Fixes: 150823346
Test: builds
Change-Id: Ieef53a8b50f5119c5e52656e930bf16b1e8e3d89
2020-03-05 11:17:22 -08:00
Kenny Root
291718cdb7 Merge "Revert "Fixing default behavior for keys requiring auth"" into rvc-dev 2020-03-05 17:10:53 +00:00
Kenny Root
382e724714 Revert "Fixing default behavior for keys requiring auth"
This reverts commit e5b6686b49.

Reason for revert: Droidcop-triggered revert due to breakage https://android-build.googleplex.com/builds/quarterdeck?testMethod=testDismissKeyguard&testClass=android.server.wm.KeyguardLockedTests&atpConfigName=cts%2Fframework%2Fgce-presubmit-wm-cloud-tf-2&testModule=CtsWindowManagerDeviceTestCases&fkbb=6265187&lkbb=6266200&lkgb=6265150&testResults=true&badBuildCount=32&branch=git_rvc-dev-plus-aosp&target=aosp_cf_x86_phone-userdebug, bug b/150847441

Bug: 150847441
Change-Id: I1e648e1174172f8077cea1dd175c4167830adcb6
2020-03-05 16:57:39 +00:00
Kevin Chyn
8586645527 Merge "Fixing default behavior for keys requiring auth" into rvc-dev 2020-03-05 04:06:22 +00:00
Max Bires
e5b6686b49 Fixing default behavior for keys requiring auth
The default timeout and authentication type is being updated to offer a
correct default that matches the old behavior.

Bug: 149931201
Test: CtsVerifier
Change-Id: I3f3d4f8d5b02455c285a882933fd6c37739ee44a
2020-03-04 17:31:06 -08:00
Eran Messeri
3f9578be3e Fix copy-pasted documentation.
Fix the documentation  for USE_INDIVIDUAL_ATTESTATION which was
copy-pasted from another attestation ID type.

Bug: 149475774
Test: That it compiles.
Change-Id: I9366870c8875997321c93fe1db216e91f374b1db
2020-02-28 11:32:33 +00:00
Kevin Chyn
df244da79a Merge changes from topic "biometric-and-credential"
* changes:
  Always start AuthController
  Clean up biometric system server
2020-02-21 21:37:14 +00:00
Kevin Chyn
7d07c89235 Clean up biometric system server
1) BiometricService / AuthService always need to be started, since on
   Android 11 and later, the public credential auth API comes through this
   path.

2) Consolidate getAuthenticatorId() and expose via AuthService. This is
   used only by the platform during key generation. Instead of asking
   each individual service, AuthService will return a list of IDs for
   sensors which are enrolled and meet the required strength.

Test: atest com.android.server.biometrics
Test: fingerprint device, CtsVerifier biometric section
Test: face unlock device, CtsVerifier biometric section
Test: remove biometrics from device, CtsVerifier biometric section

Bug: 148419762
Bug: 149795050

Change-Id: I2c5385b1cd4f343fabb0010e1fe6fb1ea8283391
2020-02-20 11:12:51 -08:00
Rubin Xu
144b057c26 Ensure user is unlocked before binding to KeyChain service
This stops KeyChain from throwing AssertionError when binding to
service fails due to user being locked, which would have crashed
the entire system server.

Bug: 149912024
Test: atest KeyChainTests
Change-Id: Ie110a4210e157cc9b111d845478bdf21e948ba4f
2020-02-20 15:53:06 +00:00
Max Bires
04b682d394 Changing op per auth keys to allow password
Previously, auth per operation keystore keys could only be authorized
with biometrics. There is no reason to restrict this functionality to
biometrics. This change slightly refactors the key parameter builder
interface to allow the caller to specify which authentication types
should be allowed for an auth per op key.

Bug: 147693375
Bug: 140256692
Test: atest keystore
Change-Id: I5cbf3d4e3f0e84d577dbf6b4cb356b1010100925
2020-02-06 11:17:26 -08:00
Rubin Xu
b3a13e1e2c Add KeyGenParameterSpec.setCriticalToDeviceEncryption
Mirror KeyProtection.setCriticalToDeviceEncryption so
the flag can also be set on keys generated by keystore.

Bug: 72178550
Test: atest android.security.keystore.KeyGenParameterSpecTest
Test: atest android.security.ParcelableKeyGenParameterSpecTest
Change-Id: I7f102c82e60f211028c694d499ffd2838b89bb2b
2020-01-14 17:10:18 +00:00
Artur Satayev
7651f0a4c0 Use new UnsupportedAppUsage annotation.
Existing annotations in libcore/ and frameworks/ will deleted after the migration. This also means that any java library that compiles @UnsupportedAppUsage requires a direct dependency on "unsupportedappusage" java_library.

Bug: 145132366
Test: m && diff unsupportedappusage_index.csv
Change-Id: I4bc8c9482e4bb1af21363f951affff7ee3fefeab
Merged-In: I4bc8c9482e4bb1af21363f951affff7ee3fefeab
2020-01-09 15:13:52 +00:00
Automerger Merge Worker
509eee80fa Merge "Make KeyStoreCryptoOperationChunkedStreamer lazy." am: c13f012cc5 am: bb8ecaef09 am: ecb9c6f041
Change-Id: Icbcec2ae8ea5c907d7ce37558b0db0b634643a56
2020-01-06 16:29:26 +00:00
Rob Barnes
c13f012cc5 Merge "Make KeyStoreCryptoOperationChunkedStreamer lazy." 2020-01-06 15:33:06 +00:00
Artur Satayev
53fe96661b Use new UnsupportedAppUsage annotation.
Existing annotations in libcore/ and frameworks/ will deleted after the migration. This also means that any java library that compiles @UnsupportedAppUsage requires a direct dependency on "unsupportedappusage" java_library.

Bug: 145132366
Test: m && diff unsupportedappusage_index.csv
Change-Id: I4bc8c9482e4bb1af21363f951affff7ee3fefeab
2019-12-18 15:42:06 +00:00
Automerger Merge Worker
8ccd0f50d4 Merge "Add new Credential prefix for platform VPNs" am: 0ce0c59535 am: 27d405ab14 am: 5a51aa7af8
Change-Id: I9d83aeb57d05baea53d1afb086ae582d18701265
2019-12-17 18:52:38 +00:00
Benedict Wong
048e248537 Add new Credential prefix for platform VPNs
Platform VPN profiles keyed by apps must use a different key prefix to
prevent the Settings app from seeing them (and thus exposing potentially
sensitive credential information). Thus, the profiles will be
partitioned as follows:

Custom (Settings-app) based profiles continues using VPN_* prefix
App provisioned profiles will use the new PLATFORM_VPN_* prefix

Bug: 144245359
Test: Compiles, FrameworksNetTests passing
Change-Id: If8762e468c6cbbeb80738f14b066ebbad5cc665f
2019-12-17 06:02:51 +00:00
Eran Messeri
c54507664b Wire individual attestation
Properly define the constant for requesting the use of device individual
attestation certificate and use it in AttestationUtils.

This lets callers to DevicePolicyManager.generateKeyPair request the use
of device-unique attestation certificate, on Keymaster implementations
that support this.

Bug: 140193672
Bug: 136494773
Test: atest com.android.cts.devicepolicy.MixedDeviceOwnerTest#testKeyManagement
Change-Id: I74de89e4c121a27b0495dcb99b0775445c3d4eaf
2019-12-13 10:58:57 +00:00
Rob Barnes
73ea6195ac Make KeyStoreCryptoOperationChunkedStreamer lazy.
Only send updates when a configurable threshold is met.
For some scenarios this results in a significant performance
improvement. Specifically sign operations should be 10-40% faster.

Bug: 139891753
Test: atest CtsKeystoreTestCases
Change-Id: I233679d4f8582eeaaa6f21e3102cce08110f0482
2019-12-04 11:38:13 -07:00
TreeHugger Robot
1c5a4c6ded Merge "Declare public app cert constants in Credentials" 2019-12-03 17:37:10 +00:00
Victor Hsieh
de6cd4744b Declare public app cert constants in Credentials
Test: build
Bug: 112038744

Change-Id: I9f426090a2fc5e8f9a293c5443ac531cb8700912
2019-11-25 11:32:03 -08:00
TreeHugger Robot
2f6c5fe32f Merge changes from topic "broadcast_multiple_perm"
* changes:
  AndroidKeyStoreProvider: Add @throws documentation
  RemoteException: Add @throws documentation
  Context: Rename Context.sendBroadcastMultiplePermissions
2019-11-21 06:28:10 +00:00
Roshan Pius
4241a2866c AndroidKeyStoreProvider: Add @throws documentation
Bug: 144791977
Test: Compiles
Change-Id: I9f19e30d58b1b7d504f9e8f7e79dd71a38f81357
2019-11-20 14:48:34 -08:00
Max Bires
88b99511bd Merge "Removing binder access to deprecated KeyStore function reset" am: 9eb7fcfba6 am: 0ae9cd3faa
am: c47567db49

Change-Id: I8e8d072dbf3edcb53eb32f86e0898c1bef791267
2019-11-19 20:20:36 -08:00
Max Bires
7de99c2f1a Merge "Updating accepted HMAC key sizes" am: 1cf90f78f1 am: 7f813b80d3
am: 432cb5d523

Change-Id: I1308b205762df42ed5fdc23da00f84a8cc31d45e
2019-11-19 19:57:30 -08:00
Rob Barnes
c00713055b Merge "Allow for input_data on finish." am: 4a83b14ada am: 02c287a628
am: 51e842e43c

Change-Id: I3ed4477e925a203ae8a7b1dde9744ade4a32e93c
2019-11-19 19:50:18 -08:00
Treehugger Robot
9eb7fcfba6 Merge "Removing binder access to deprecated KeyStore function reset" 2019-11-20 01:40:28 +00:00
Treehugger Robot
1cf90f78f1 Merge "Updating accepted HMAC key sizes" 2019-11-19 23:59:32 +00:00
Rob Barnes
92743aeb44 Allow for input_data on finish.
This additional input will be unused for now, but future changes are
expected to utilize it.

Test: Keystore CTS Tests
Change-Id: I5c388032e3710e3825bdb06b26443a5ae2c034a3
2019-11-14 16:19:20 -07:00
Robert Horvath
3bb0b61820 Merge "Fix NPE when KeyChain binding dies" 2019-11-14 14:10:36 +00:00
Robert Horvath
54c94398bf Fix NPE when KeyChain binding dies
BlockingQueue does not accept null values, change to CountDownLatch for
synchronization.

Bug: 144477553
Test: Enable multiple managed profiles, and run
      `atest UserLifecycleTests#managedProfileStopped`
Change-Id: I1a003568896ce7983a5ac14a710944d914c86bac
2019-11-14 14:01:46 +01:00
TreeHugger Robot
bc7671b9fb Merge "Add @UnsupportedAppUsage to test apis that are known to be used by apps." 2019-11-13 15:46:27 +00:00
Artur Satayev
5a525851a8 Add @UnsupportedAppUsage to test apis that are known to be used by apps.
go/testapi-enforcement

Bug: 133832325
Test: m
Change-Id: Ifc8db120640a1554dcbf1722e61e09c7ddc65dd6
Merged-In: Ifc8db120640a1554dcbf1722e61e09c7ddc65dd6
2019-11-13 15:05:56 +00:00
Roshan Pius
780d117268 keystore: Expose @SystemApi's to wifi mainline module
Two @SystemApi's being added to allow wifi mainline module to access
formal API's:
a) KeyGenParameterSpec.Builder.setUid() to allow wifi to create/store keys
with WIFI_UID.
b) AndroidKeyStoreProvider.getKeyStoreForUid() to allow wifi to get/put
any keys stored with WIFI_UID.

Both of these API's are already permission protected in the lower
layers. There is a map of euid's stored in the native keystore which
limits which uid is allowed to access which other uid's data.

Bug: 142089671
Test: make system-api-stubs-docs-update-current-api
Change-Id: I39b92d2293bcdc26bb0a4a48a1d1e4cc0b20ad0b
2019-11-13 06:08:13 -08:00
Artur Satayev
f0b7d0ba51 Add @UnsupportedAppUsage to test apis that are known to be used by apps.
go/testapi-enforcement

Bug: 133832325
Test: m
Change-Id: Ifc8db120640a1554dcbf1722e61e09c7ddc65dd6
Merged-In: Ifc8db120640a1554dcbf1722e61e09c7ddc65dd6
2019-11-13 12:58:29 +00:00
Max Bires
ca0d4d8f42 Updating accepted HMAC key sizes
In order to keep conformity across the ecosystem, keystore will enforce
that HMAC key sizes coming in through the framework must be limited to
the range of 64-512 bits, inclusive. This will be the case for both TEE
and StrongBox Keymaster implementations.

Bug: 143404829
Test: atest CtsKeystoreTestCases
Change-Id: I2ea867392060f4478b5a01bd747a4345e1fded4c
2019-11-12 13:42:58 -08:00