587 Commits

Author SHA1 Message Date
Mathew Inwood
31755f94e1 Limit access to suspected false positives.
Members modified herein are suspected to be false positives: i.e. things
that were added to the greylist in P, but subsequent data analysis
suggests that they are not, in fact, used after all.

Add a maxTargetSdk=P to these APIs. This is lower-risk that simply
removing these things from the greylist, as none of out data sources are
perfect nor complete.

For APIs that are not supported yet by annotations, move them to
hiddenapi-greylist-max-p.txt instead which has the same effect.

Exempted-From-Owner-Approval: Automatic changes to the codebase
affecting only @UnsupportedAppUsage annotations, themselves added
without requiring owners approval earlier.

Bug: 115609023
Test: m
Change-Id: I020a9c09672ebcae64c5357abc4993e07e744687
2018-12-28 11:50:04 +00:00
Max Bires
21ffe60b70 Merge "Adding check for HMAC/EC key size for StrongBox" am: ffee7d8ce0 am: f5992f894a
am: 717fca1d59

Change-Id: I15c12c940722bb6a810f86b039d9a3d2f0eadac4
2018-12-26 18:44:14 -08:00
Treehugger Robot
ffee7d8ce0 Merge "Adding check for HMAC/EC key size for StrongBox" 2018-12-27 01:58:05 +00:00
Rob Barnes
03e04e83db Merge "Changed uid output parameter from an int array to a list of strings." am: 7eae0132c1 am: 4718f665d4
am: 23ae50885f

Change-Id: Ieefd1262586a3fbcf13999193c1e058abf1e0a8e
2018-12-20 16:21:15 -08:00
Rob Barnes
7eae0132c1 Merge "Changed uid output parameter from an int array to a list of strings." 2018-12-20 23:33:25 +00:00
Max Bires
d255a2136f Adding check for HMAC/EC key size for StrongBox
engineInit() for AndroidKeyStoreKeyGeneratorSpi does not make a call
into the backing Keymaster implementation until generate is called on it
to actually create the key. If a disallowed spec for StrongBox is passed
in, the backing StrongBox implementation won't be able to revoke it
until engineGenerateKey() is called, which will create different
behaviors between TEE backed implementations (which support a wider
range of algorithm spec parameters) and StrongBox implementations from a
public API perspective. This change will make sure HMAC is the same for
StrongBox.

This is also being done for EC keys in
AndroidKeyStoreKeyPairGeneratorSpi.java

Bug: 113525261
Bug: 114487149
Test: atest cts/tests/tests/keystore/src/android/keystore/cts/KeyGeneratorTest.java
Test: atest
cts/tests/tests/keystore/src/android/keystore/cts/KeyPairGeneratorTest.java
Change-Id: I728bb5222c9bf0ad84cdf2b8c0b78a4dd99f7186
2018-12-19 14:35:55 -08:00
Rob Barnes
ebe2674dbc Changed uid output parameter from an int array to a list of strings.
Why?: 1) Returning an array list is unsafe because it must be allocated in Java and C++ must not change the size. 2) List<Integer> is not supported by AIDL, but List<String> is. I decided it was simpler to pass back integers encoded as strings than to create yet another parcelable.

Bug: b/119616956
Test: ./list_auth_bound_keys_test.sh
Test: Temporarily modified settings app to call listUidsOfAuthBoundKeys
Change-Id: I3bf7578c96e800c8d35fba897f52220136dcd657
2018-12-12 11:05:20 -07:00
Xin Li
15b123ef45 DO NOT MERGE - Merge pie-platform-release (PPRL.181205.001) into master
Bug: 120502534
Change-Id: Idc8bfb6d97a869b76cfb87ca1a494201baf9e8bd
2018-12-11 14:13:44 -08:00
Adrian Roos
6fc3189e37 Merge "API: Make implicit APIs from type usage explicit" 2018-11-30 16:25:06 +00:00
Adrian Roos
27432dba6b API: Make implicit APIs from type usage explicit
API stubs generation implicitly made any types used by an API also part
of that API. This has caused DeviceIdAttestationException and
ImsFeature.Capabilities to become implicit APIs, so they are added to
the API files.

After this, using non-API types in APIs will become an error to prevent
implicit APIs occuring in the future.

Bug: 119556446
Test: METALAVA_PREPEND_ARGS="--error ReferencesHidden" make
Exempt-From-Owner-Approval: Identical CL has been approved on other branch
Change-Id: I5fe4f20502b8d4e287b28e9f07139456d4191e22
Merged-In: I5fe4f20502b8d4e287b28e9f07139456d4191e22
(cherry picked from commit 8f91e5fde8272e2040c60222d6a5ba0314fa44ac)
2018-11-22 15:22:09 +00:00
Janis Danisevskis
a258be6742 Merge "Fix deleting legacy key blobs" am: c24a4b5f44 am: b3c61fac5f
am: 4d8a0decdb

Change-Id: I74ba06e7371696806a8ab1adbd7e65d806e208c4
2018-11-21 15:15:17 -08:00
Janis Danisevskis
4d8a0decdb Merge "Fix deleting legacy key blobs" am: c24a4b5f44
am: b3c61fac5f

Change-Id: I90950d0ecd4b5995ae513ed343f4d8b250183ff5
2018-11-21 15:06:01 -08:00
Janis Danisevskis
906147cdb3 Fix deleting legacy key blobs
Since the keystore alias prefix USERSKEY was deprecated
Credentials.deleteUserKeyTypeForAlias tried to delete key the
remaining prefix first and if that failed tried to delete the
legacy prefix.
However, KeyStore.delete returns true if the key was deleted or
did not exist. So the first call to delete would return true
whether the key existed or not and the legacy alias would never be
deleted.

This patch introduces a new flavor of KeyStore.delete, that returns an
error code instead of a boolean. The caller can now distinguish
the nature of the failure. Credentials.deleteUserKeyTypeForAlias now
checks this return code and attempts to delete the legacy variant if
KEY_NOT_FOUND was returned.

Bug: 117818447
Change-Id: Ifae1f3dbb07d85d94f430ead2cdd3e39d22436a4
2018-11-21 18:42:17 +00:00
TreeHugger Robot
271339ffdf Merge "API: Make implicit APIs from type usage explicit" 2018-11-19 17:21:27 +00:00
Janis Danisevskis
e299490621 Merge "Fix IllegalArgumentException in KeyChain" am: 932f96b27f am: e73f8e8827
am: 28b8cd58ca

Change-Id: I327e931490d3d81b824b134795a57add7c257c74
2018-11-16 15:18:16 -08:00
Janis Danisevskis
28b8cd58ca Merge "Fix IllegalArgumentException in KeyChain" am: 932f96b27f
am: e73f8e8827

Change-Id: I3b779c5456525d4980284baa532eafb415695b47
2018-11-16 14:55:26 -08:00
TreeHugger Robot
278913ae62 Merge "Update KeyStore for new biometric modalities" 2018-11-16 22:52:30 +00:00
Janis Danisevskis
2b106adaf5 Fix IllegalArgumentException in KeyChain
The legacy support importKey method uses the wrong method to add date
fields to the import keymaster arguments.

Bug: 119549023
Change-Id: Iff841086f6616303b365ad28aae429ccae1f3406
2018-11-15 14:58:03 -08:00
Rob Barnes
bf5c28da56 Merge "Added listUidsForAuthBoundKeys to KeyStore" am: 73e9640194 am: 3090f045a7
am: 919f2169e7

Change-Id: I3ed8dcb49baffac2215b0a32e25241bcbd74e9c8
2018-11-15 10:12:38 -08:00
Rob Barnes
919f2169e7 Merge "Added listUidsForAuthBoundKeys to KeyStore" am: 73e9640194
am: 3090f045a7

Change-Id: I10ebfdc276a6af84b32b116c6d93f488ad0c97b8
2018-11-15 10:01:53 -08:00
Rob Barnes
73e9640194 Merge "Added listUidsForAuthBoundKeys to KeyStore" 2018-11-15 17:32:31 +00:00
Adrian Roos
8f91e5fde8 API: Make implicit APIs from type usage explicit
API stubs generation implicitly made any types used by an API also part
of that API. This has caused DeviceIdAttestationException and
ImsFeature.Capabilities to become implicit APIs, so they are added to
the API files.

After this, using non-API types in APIs will become an error to prevent
implicit APIs occuring in the future.

Bug: 119556446
Test: METALAVA_PREPEND_ARGS="--error ReferencesHidden" make
Change-Id: I5fe4f20502b8d4e287b28e9f07139456d4191e22
2018-11-15 07:14:49 -08:00
Janis Danisevskis
463e2b0d3c Merge "Multi-threaded keystore" am: 9f248989bf am: cbd890315e
am: 444162a57c

Change-Id: I2c09961a74c7de92d85f3d2045dd065c94bc6fac
2018-11-15 06:39:39 -08:00
Janis Danisevskis
444162a57c Merge "Multi-threaded keystore" am: 9f248989bf
am: cbd890315e

Change-Id: Ie394840ac3e0bd571b9dfb6654c28d8a4032617f
2018-11-14 17:56:37 -08:00
Rob Barnes
f1a678e0fe Added listUidsForAuthBoundKeys to KeyStore
listUidsForAuthBoundKeys was added to IKeyStoreService.
This CL exposes this method in KeyStore for system apps.
This method will be hidden for non system apps.

Bug: b/112321280
Test: listUidsForAuthBoundKeys in IKeyStoreService has its own tests
Test: This method cannot be tested directly from CTS
Change-Id: Iac9e863079a1367ddb3a599bc3825baea96a1c31
2018-11-14 13:14:35 -07:00
Janis Danisevskis
b0358e72be Multi-threaded keystore
This patch makes the framework use the asynchronous keystore api model.

Bug: 111443219
Test: Ran full keystore cts test suite
Change-Id: I8d1fdc70cb9eb501d3f22a97d1221904c2ef8f9a
2018-11-14 09:59:16 -08:00
Janis Danisevskis
3a33ccca7d Merge changes from topic "async_keystore" am: e8c144fe17 am: 07b06e1bdb
am: d46d33cf25

Change-Id: Id9fcb7d5bac0a24de8ca64e79d50131a5930b8ed
2018-11-09 13:28:56 -08:00
Janis Danisevskis
3a72e2b08e Remove legacy functions form IKeystoreService.aidl am: 1864c95616 am: 036229c8df
am: 5c5fe83c4d

Change-Id: Id2fa59fcbe111a968abef088b76fb97dbe2e369e
2018-11-09 13:21:46 -08:00
Janis Danisevskis
d46d33cf25 Merge changes from topic "async_keystore" am: e8c144fe17
am: 07b06e1bdb

Change-Id: Ie2326ec19b82bf3977e490617fb9935b07dd818a
2018-11-08 15:38:43 -08:00
Janis Danisevskis
5c5fe83c4d Remove legacy functions form IKeystoreService.aidl am: 1864c95616
am: 036229c8df

Change-Id: I7475f8bd936147efaf4344ba625e50875534b8b8
2018-11-08 15:33:21 -08:00
Janis Danisevskis
1864c95616 Remove legacy functions form IKeystoreService.aidl
In preparation for making the keystore service asynchronous we remove
redundant legacy functionality from the protocol.

This patch removes the functions get_pubkey, sign, verify, generate,
and import_key. Which have long been superseded by exportKey
(get_pubkey), begin/update/finish (sign, verify), generateKey
(generate), and importKey (import_key).

This patch also removes isOperationAuthorized.

Test: KeyStore CTS tests
Bug: 111443219
Change-Id: Ib3bd6f40b4e948e5ad6b2ef5278b18ff46201d71
2018-11-08 12:53:57 -08:00
Janis Danisevskis
d257538507 Add return code KEY_ALREADY exists
In preparation to the async keystore interface we change the semantics
form unconditionally overwriting existing keys to reporting that the key
exists. For compatibility we reimplement the same semantic in the
calling code.

Bug: 111443219
Test: KeyStore CTS test
Change-Id: I1fa5428fa7ada97d5068778cd4590593c992554d
2018-11-08 12:53:57 -08:00
Kevin Chyn
057b743fe9 Update KeyStore for new biometric modalities
Biometrics are now generic from KeyStore point of view

Bug: 113624536

Test: Unable to create keys when no templates enrolled
Test: Able to create keys when templates are enrolled
Test: No regression in Fingerprint
      Keys are invalidated after enrolling another FP

Change-Id: I6bdc20eb58c8a0c10a986519d4ba9e1843ebc89d
2018-11-02 18:09:25 -07:00
Eran Messeri
9ccec4d2d4 Handle issuer and key type restrictions.
The caller to KeyChain.choosePrivateKeyAlias can restrict the set of
aliases that are displayed to the user to select from by specifying the
issuers that the associated certificates should be issued by or the key
types that these certificates should contain.

Until now this functionality was not implemented. This was mostly
affecting Chrome
(https://bugs.chromium.org/p/chromium/issues/detail?id=753756).

Support this functionality by passing the issuers and key types into the
KeyChainActivity (from KeyChain) and, prior to displaying the aliases
associated with the certificates, check if each certificate adheres to
the criteria (key type, issues) specified.

Bug: 62910781
Test: m -j RunKeyChainRoboTests
Change-Id: I75e071545699891cfbd77d4f706fc5ef35b85516
2018-09-05 13:58:32 +01:00
Eva Bertels
f1bbe75ede Minor changes to check for misprovisioned Pixel 2 devices
Check for brand parameter specified in config file. Implementing suggestion that was added to the original CL (ag/4791307) after it was submitted.

Bug: 69471841
Test: atest com.android.cts.devicepolicy.MixedDeviceOwnerTest#testKeyManagement
Change-Id: I9b257f406d5b47265db4dbf022df75865f496cdd
2018-08-28 17:19:51 +01:00
Eva Bertels
dbb8dc5a71 Added check for misprovisioned Pixel 2 device.
Some Pixel devices had a wrong brand value provisioned into keymaster.
Due to this misprovisioning those devices fail device ID attestation because it includes a check for the correct brand value.
This is now solved by re-trying Device ID attestation if we are running on a potentially misprovisioned device, allowing for the known incorrect brand value.

Bug: 69471841
Test: atest com.android.cts.devicepolicy.MixedDeviceOwnerTest#testKeyManagement
Change-Id: If715ebdd4ab6d7fcfffab60b40fd2dc8fa1fda44
Merged-In: Ia0da5478d6092c1927d26600a6893ae8ce53da51
(cherry picked from commit 3f821a8e17f97a6f0b3ae408b2e7f2bfde666df4)
2018-08-24 22:00:28 +00:00
Eva Bertels
eeedc9e276 Merge "Added check for misprovisioned Pixel 2 device." into pi-dev
am: ec94be1526

Change-Id: I443bd4a96e616616e4608f1e9a8c5d8554647e56
2018-08-24 11:21:06 -07:00
Eva Bertels
e238d589f1 Added check for misprovisioned Pixel 2 device.
Some Pixel devices had a wrong brand value provisioned into keymaster.
Due to this misprovisioning those devices fail device ID attestation because it includes a check for the correct brand value.
This is now solved by re-trying Device ID attestation if we are running on a potentially misprovisioned device, allowing for the known incorrect brand value.

Bug: 69471841
Test: atest com.android.cts.devicepolicy.MixedDeviceOwnerTest#testKeyManagement
Change-Id: Ia0da5478d6092c1927d26600a6893ae8ce53da51
2018-08-24 13:43:47 +01:00
Eva Bertels
3f821a8e17 Added check for misprovisioned Pixel 2 device.
Some Pixel devices had a wrong brand value provisioned into keymaster.
Due to this misprovisioning those devices fail device ID attestation because it includes a check for the correct brand value.
This is now solved by re-trying Device ID attestation if we are running on a potentially misprovisioned device, allowing for the known incorrect brand value.

Bug: 69471841
Test: atest com.android.cts.devicepolicy.MixedDeviceOwnerTest#testKeyManagement
Change-Id: If715ebdd4ab6d7fcfffab60b40fd2dc8fa1fda44
Merged-In: Ia0da5478d6092c1927d26600a6893ae8ce53da51
2018-08-24 11:39:20 +00:00
Mathew Inwood
29779732e6 Merge "Add @UnsupportedAppUsage annotations" am: d9381f5e56
am: e2a6ad99ae

Change-Id: I3a0236e8388f7f5448a10873a3e0f0ca502fa625
2018-08-17 03:16:13 -07:00
Mathew Inwood
e2a6ad99ae Merge "Add @UnsupportedAppUsage annotations"
am: d9381f5e56

Change-Id: I3940d669bb1f4fedc8a7fbbcdb8de2ef954674a8
2018-08-17 02:13:11 -07:00
Mathew Inwood
4dbdcf43ad Add @UnsupportedAppUsage annotations
For packages:
  android.security.net.config
  android.security.keystore
  android.security.keymaster
  android.security

This is an automatically generated CL. See go/UnsupportedAppUsage
for more details.

Exempted-From-Owner-Approval: Mechanical changes to the codebase
which have been approved by Android API council and announced on
android-eng@

Bug: 110868826
Test: m
Change-Id: Ifed4da56531195f64fd53d84f14b4e8298843b2c
Merged-In: I7762dd647bede8abc9be2c538af3a3a99a25a73e
2018-08-16 18:49:37 +01:00
Mathew Inwood
e420f8b5fb Add @UnsupportedAppUsage annotations
For packages:
  android.security.net.config
  android.security.keystore
  android.security.keymaster
  android.security

This is an automatically generated CL. See go/UnsupportedAppUsage
for more details.

Exempted-From-Owner-Approval: Mechanical changes to the codebase
which have been approved by Android API council and announced on
android-eng@

Bug: 110868826
Test: m
Change-Id: I7762dd647bede8abc9be2c538af3a3a99a25a73e
2018-08-16 18:40:47 +01:00
Janis Danisevskis
dbb6114d96 Merge "Fix symmetric key generation in strongbox" into pi-dev
am: 0e43e2ef96

Change-Id: I154ab21e8f0d804225f993d187e2aad66a5cdeac
2018-08-15 12:10:17 -07:00
TreeHugger Robot
0e43e2ef96 Merge "Fix symmetric key generation in strongbox" into pi-dev 2018-08-15 18:53:16 +00:00
TreeHugger Robot
cb71d0b2fc Merge "Fix symmetric key generation in strongbox" 2018-08-15 16:10:30 +00:00
Mathew Inwood
8f29903747 Merge "Code reformatting for upcoming annotations." am: 60c8cfdd0f am: 02763a1c3e am: 842e882507
am: e377a769bd

Change-Id: I67465690c2addbbfbe53472e5b45783821990567
2018-08-01 18:08:20 -07:00
Mathew Inwood
842e882507 Merge "Code reformatting for upcoming annotations." am: 60c8cfdd0f
am: 02763a1c3e

Change-Id: Icdbef4bd0e71876a3ddb296ca38a243209f2eaf9
2018-08-01 16:35:28 -07:00
Mathew Inwood
02763a1c3e Merge "Code reformatting for upcoming annotations."
am: 60c8cfdd0f

Change-Id: I4fcf520f53dddd6e70edf0d59fd13ae218c336a5
2018-08-01 16:01:52 -07:00
Mathew Inwood
efb481646e Code reformatting for upcoming annotations.
@UnsupportedAppUsage annotations are added automatically, but this does
not work when there are multiple definitions on the same line.

Test: m
Bug: 110868826
Change-Id: I2c26c136cdfa557e45cf1ee0b39dab9c17abde56
2018-08-01 10:24:49 +01:00