Commit Graph

690 Commits

Author SHA1 Message Date
Automerger Merge Worker
76e6503ea9 Merge "Merge "Remove DERInteger usages" am: 1835a24839 am: 07e62d7649 am: 96bdc2d785 am: a96a45bedf" into rvc-qpr-dev-plus-aosp am: a4eb2e220c
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1305793

Change-Id: I095ed2a27b4d483d1a64e2d1da0b5a2813e8e806
2020-07-03 12:51:32 +00:00
Daulet Zhanguzin
96bdc2d785 Merge "Remove DERInteger usages" am: 1835a24839 am: 07e62d7649
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1305793

Change-Id: I7ec9709e9f152fac13b3f56dc1f9238869502c39
2020-07-03 12:02:35 +00:00
Daulet Zhanguzin
1835a24839 Merge "Remove DERInteger usages" 2020-07-03 11:42:50 +00:00
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
5f489cd753 Merge "Fixing default timeout constant" into rvc-dev am: 7697d0f3eb am: 1b701701e9 am: 587b4e8610 am: 391cd6531f
Change-Id: If4fde553a5e6a9e32a57f0ed03c45d58d3ca5184
2020-05-21 16:54:24 +00:00
TreeHugger Robot
391cd6531f Merge "Fixing default timeout constant" into rvc-dev am: 7697d0f3eb am: 1b701701e9 am: 587b4e8610
Change-Id: I273a445c1c5df04274aad8649329a963a84b4f6b
2020-05-21 16:39:00 +00: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
Automerger Merge Worker
14b28225f3 Merge "Merge "Update KeyChain.createInstallIntent documentation" into rvc-dev am: 0bada478b6 am: 0839676e96 am: e74c164d35" into rvc-qpr-dev-plus-aosp am: 8d792c53d0
Change-Id: I756af38c6f1e274bfc037743199fc187f1246def
2020-05-20 15:26:37 +00:00
TreeHugger Robot
4e7b1cb7ff Merge "Update KeyChain.createInstallIntent documentation" into rvc-dev am: 0bada478b6 am: 0839676e96 am: e74c164d35
Change-Id: I2cdb689ea776948f4e0c2b1a794227aa6a1d45c6
2020-05-20 15:09:04 +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
2ebf90de55 Merge "Attest device base properties" am: 547aeb27e8 am: f078d49979 am: c5a547bb2b am: 9acc5b49d5 am: d2c9212ff3
Change-Id: If6f974dae2bfb94e34e1c03833e6eca000f5774e
2020-05-18 10:46:44 +00: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
Eran Messeri
74e5dc0006 Revert "Added check for misprovisioned Pixel 2 device."
Revert "Minor changes to check for misprovisioned Pixel 2 devices"

This reverts commits f1bbe75ede and
e238d589f1.
This code is no longer needed as Pixel 2 devices are not supported
on master.

Bug: 156316516
Test: atest com.android.cts.devicepolicy.MixedDeviceOwnerTest#testKeyManagement
Change-Id: Ia32b1712b53d4bc72118507c5177ff5db5fa6cdc
2020-05-13 17:25:42 +01:00
Daulet Zhanguzin
d3d06ceea2 Remove DERInteger usages
Not really used in AndroidKeyStore

Test: Treehugger
Bug: 154796679
Change-Id: Id21b256b3221fd4353401c81e538a46b2f7c6246
2020-05-13 16:27:11 +01: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
Janis Danisevskis
022c8ef713 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
2020-04-30 15:50:11 +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
TreeHugger Robot
2104bd6ac5 Merge "Removing errant @hide annotation" 2020-03-20 17:20:49 +00:00
Max Bires
d407c0be20 Removing errant @hide annotation
There is no reason that setIsStrongBoxBacked() should be hidden for
KeyProtection. Users should be expected to take advantage of using
StrongBox for protecting imported keys if they choose to.

Bug: 148901504
Test: doc string change
Change-Id: Ie906cb75fd853d3465ff066493c6df50d68d7e9c
2020-03-19 13:46:38 -07: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