- Dec 18, 2020
-
-
Janis Danisevskis authored
Test: Keystore cts tests. Change-Id: I316fdb8beae018ac91c172dede735e6b0759368a
-
Janis Danisevskis authored
* Correctly recover public key from certificate. * KeyStore2ParameterUtils: iterate through set flags instead of unset flags. * Return private key on Keystore.getKey() instead of public key. Test: Keystore CTS tests Change-Id: I99c1bd49ff5cf7a2d89b54559504e67b3def0cd3
-
- Dec 15, 2020
-
-
Tianjie authored
So other packages can load the keystore with namespace. Test: build Change-Id: I7de3e51df438b794adb3793a189396999bdd1b88
-
Janis Danisevskis authored
Test: Keystore CTS test. Change-Id: I097b58fa6c403ff426d99ed484ed324e1419b4e3
-
- Dec 11, 2020
-
-
Shawn Willden authored
Revert "Revert "Keystore 2.0: Move keymint spec to security name..." Revert "Revert "Keystore 2.0: Move keymint spec to security name..." Revert^2 "Remove references to keymint1" 34536a352803a08776cc4f373d93a94e1fcbf98e Bug: 175345910 Bug: 171429297 Change-Id: I694e677e4e20419440f12cb7981f0c0c4ca29e08
-
Orion Hodson authored
Revert "Keystore 2.0: Move keymint spec to security namespace." Revert "Keystore 2.0: Move keymint spec to security namespace." Revert "Move keymint to android.hardware.security." Revert "Configure CF to start KeyMint service by default." Revert "Move keymint to android.hardware.security." Revert "Move keymint to android.hardware.security." Revert submission 1522123-move_keymint Reason for revert: Build breakage Bug: 175345910 Bug: 171429297 Reverted Changes: Ief0e9884a:Keystore 2.0: Move keymint spec to security namesp... Idb54e8846:Keystore 2.0: Move keymint spec to security namesp... I9f70db0e4:Remove references to keymint1 I2b4ce3349:Keystore 2.0 SPI: Move keymint spec to security na... I2498073aa:Move keymint to android.hardware.security. I098711e7d:Move keymint to android.hardware.security. I3ec8d70fe:Configure CF to start KeyMint service by default. Icbb373c50:Move keymint to android.hardware.security. I86bccf40e:Move keymint to android.hardware.security. Change-Id: Icd279f358db2387bf2bf232b0548762fab51e67d
-
- Dec 09, 2020
-
-
Janis Danisevskis authored
Test: N/A Change-Id: I2b4ce3349baf29eb67a31f0c436b964d69d70b02
-
- Nov 24, 2020
-
-
Janis Danisevskis authored
Priviously we installed the legacy keystore SPI by the name KeyStore.AndroidKeyStore and set an alias to KeyStore.AndroidKeyStoreLegacy. This conflicted with with the Keystore provider which also registers as KeyStore.AndroidKeyStore. This patch registers the old provider only by the name KeyStore.AndroidKeyStore. Test: CtsLibcoreTestCases:libcore.java.security.ProviderTest#test_Provider_Properties Also, the device boots. Change-Id: I38a248a996839f397bdcae30fd1b03a883209df2
-
- Nov 18, 2020
-
-
Janis Danisevskis authored
Test: CtsLibcoreTestCases:libcore.java.security.ProviderTest#test_Provider_Properties Bug: 173480441 Change-Id: I188cd778a25d221991280eb461a7ec052503790c
-
Janis Danisevskis authored
We are now using KeyMint types for KeyParameter and SecurityLevel. Test: None Change-Id: I3db72c17a9cb999a0248df4c37588dfc2ad84f74
-
- Nov 14, 2020
-
-
Janis Danisevskis authored
With this patch we install the old Keystore provider as AndroidKeyStoreLegacy when the Keystore 2.0 provider is installed as AndroidKeyStore. This allows system components to keep using the old keystore while we can run CTS tests against the new provider. The tests are still mostly failing at this point. Installing the new SPI can be enabled by setting the property ro.android.security.keystore2.enable=true Bug: 159476414 Test: This enables running CTS tests against Keystore 2.0. Change-Id: I9731d9783ccf8f2705a5ca7335e00c8f4c8debba
-
Janis Danisevskis authored
We delegate the generation of self signed certificates to the KeyMint backend. Also we use the KeyParamter AIDL type instead of KeymasterArguments to construct parameter lists. Bug: 159476414 Test: None Change-Id: I441a4d4df4ef04e3da8aeaff3274c609d549c979
-
Janis Danisevskis authored
We no longer need to get the key characteristics from the Keystore daemon to construct the KeyInfo for a key. Also we have to extract the key info from the KeyParameter AIDL type rather than from the hand written KeymasterArguments. This patch also exposes the correct security level for a key through KeyInfo. Bug: 159476414 Test: None Change-Id: I86a85e481e19fdadfed38a42aeac4ffe5f8b83fa
-
Janis Danisevskis authored
This patch adjusts the AndroidKeyStoreProvider to register all services with the correct packages names. And the utility functions load key using the correct Keystore 2.0 methods. Bug: 159476414 Test: None Change-Id: I9268fd66d28e89e188e85991bcf90c7f19809232
-
Janis Danisevskis authored
This patch evolves the Crypto SPI to use the new Keystore 2.0 shim. The main changes are: * The SPI uses the AIDL defined KeyParameter instead of KeymasterArguments. * Operations are created directly from the KeystoreSecurityLevel that is part of the AndroidKeyStoreKey object. Also this patch deletes the DeletatingX509Certificate class. This is no longer needed, because public key operations are no longer performed by Keystore 2.0. We can delegate public certificate operations simply by wrapping such certificates into public keys that are understood by other providers, such as BouncyCastle. Bug: 159476414 Test: None Change-Id: Ice874a8121d80bf788da059b4e8420c7dd799d81
-
Janis Danisevskis authored
The wire type for key parameters is now generated from AIDL rather than the hand written parcelable KeymasterArguments. So we need some of the utilities for creating key parameters that the latter provided. We also nicked some utility function from KeymasterUtils. Bug: 159476414 Test: None Change-Id: I12c674b6a00dd3abbed4972d80ceb766a73881e8
-
Janis Danisevskis authored
This patch makes the chunked streamer observe the simplified Keystore 2.0 operation interface. Keystore is now required to consume all supplied data or reject data outright if too much (more than 32KiB) is supplied in a single transaction. This allows for a simplified streamer logic and a simplified interface. We also no longer send entropy to Keystore. This will be handled by the Keystore 2.0 daemon. Test: None Bug: 159476414 Change-Id: Ie75d10fd5d5ac0da60e23e35467d0a7873230dea
-
Janis Danisevskis authored
Keystore 2.0 does no longer report an error code if an operation requires user authorization. Instead this is indicated by sending us an operation challenge. In that case we have to check if the authorization can possibly succeed. We changed the utility class by adding a predicate function that checks exactly that, and we handle other errors separately instead of having one exception handling path that does all. Test: None Bug: 159476414 Change-Id: I9a373cf8f0a0b181df54c26fe314d71b6835bb97
-
Janis Danisevskis authored
KeyStoreKeys can now be constructed from key entry metadata and key descriptors as defined by the new Keystore AIDL spec. AndroidKeystorePublicKey can now create the private key proxy. KeyStoreKeys also cache the key characteristic, which should drastically reduce the frequency by which the SPI has to call into the Keystore 2.0 daemon. Test: None Bug: 159476414 Change-Id: Ia0a7841582621897760be49d39dd5442b70b3aa0
-
Janis Danisevskis authored
This patch adds a shim around the Keystore 2.0 AIDL spec. The new shim is modularized like the AIDL spec into the base Keystore module Keystore2, the security level specific interface KeystoreSecurityLevel, and the operation specific interface KeystoreOperation. Other system maintenance specific interfaces have yet to be added. Bug: 159476414 Bug: 171305684 Test: None Change-Id: I070f73739e4b37ce10568939ac666e40b14a52a8
-
- Nov 13, 2020
-
-
Janis Danisevskis authored
This patch copies the relevant portion of the Keystore SPI to the new package name android.security.keystore2. The purpose of this is to illustrate the evolution from the existing Keystore SPI to the Keystore 2.0 SPI while keeping the existing Keystore SPI intact. Reviewers are advised to check the equivalence of this code to the corresponding files in android/security/keystore (<-- no 2 here). Subsequent patches can them be reviewed as evolution towards the new SPI rather than completely new code. Test: None. When the evolution is complete, Keystore CTS tests can be used to check for regressions. Bug: 159476414 Change-Id: I21a01a679e789868ce820b5f73221e616a456a61
-
- Nov 12, 2020
-
-
Janis Danisevskis authored
This patch adds a forEach function for int arrays to android.security.keystore.ArrayUtils. A utility function with the intendet use in Keystore 2.0 Key paramter handling. Test: None Change-Id: I2c02b300ee68fcd548c128deb0266fe603226807
-
- Nov 11, 2020
-
-
Janis Danisevskis authored
This patch adds set/getSecurityLevel to KeyInfo and KeyGenParameterSpec and it deprecates the superseded function isInSecureHardware. It also deprecates the system API set/getUid and replaces it with the more generic set/getNamespace. Test: None Change-Id: Id2f54596510954862b5077a935f3daf07211f29c
-
- Nov 05, 2020
-
-
Janis Danisevskis authored
In anticipation of the new Keystore 2.0 SPI we made this nested class public (like its siblings) so that the new SPI which resides in a different package may access it. It is hidden though because it does not constitute public API surface. Test: None Bug: 171305684 Change-Id: I1dbe3d02c03f97f843813c26c16aaef7152ca478
-
Janis Danisevskis authored
This patch adds the SecurityLevelEnum to KeyProperties. This enum can be used by the public API surface to express levels of enforcements of key properties. And to select a designated residence for a newly generated or imported key. The values UNKNOWN and UNKNOWN_SECURE are used to convey to older target APIs API levels that have not been defined when they where published. Test: None Change-Id: I88681f21b8a8ea9a383d32ba99f3ab7d7c8909c3
-
- Nov 04, 2020
-
-
Mathew Inwood authored
These are APIs that have @UnsupportedAppUsage but for which we don't have any evidence of them currently being used, so should be safe to remove from the unsupported list. Bug: 170729553 Test: Treehugger Merged-In: I626caf7c1fe46c5ab1f39c2895b42a34319f771a Change-Id: I54e5ecd11e76ca1de3c5893e3a98b0108e735413
-
- Oct 27, 2020
-
-
Janis Danisevskis authored
The encryption-required flag is only available in already deprecated API KeyPairGeneratorSpec and KeyStoreParameter will be ignored from Android S. Keys are and have been encrypted by default for a long time and if additional binding to the LSKF is desired it can be requested by KeyGenParameterSpec.Builder#setUserAuthenticationRequired(boolean). Test: None Change-Id: I5bd4acb4bba276decd1930ae2e96a55f95627e10
-
Janis Danisevskis authored
Keystore 2.0 will no longer support free form blobs. Certificates and certificate chains will have types fields associated with an alias. Other free form blobs will need to be migrated to a different key value store. Bug: 171305684 Test: None Change-Id: I93270f0086329229dc36c2b14c88f229351e6560
-
- Oct 23, 2020
-
-
Janis Danisevskis authored
Test: None Change-Id: Iba25385b42db8059cc0811e99463e01acb98e00f
-
- Oct 19, 2020
-
-
Anton Hansson authored
I ran these commands: cd frameworks/base grep -rl '@TestApi' --include '*.java' | xargs perl -i -p0e \ 's/\@SystemApi[\s\n]+(\@\w+[\s\n]+)?\@TestApi/\@SystemApi\1/gs' grep -rl '@TestApi' --include '*.java' | xargs perl -i -p0e \ 's/\@TestApi[\s\n]+(\@\w+[\s\n]+)?\@SystemApi/\1\@SystemApi/gs' Bug: 171179806 Test: m checkapi Change-Id: I772790b783b0a8730b8bf680c9e569a886b8d789 Merged-In: I772790b783b0a8730b8bf680c9e569a886b8d789
-
- Aug 20, 2020
-
-
Max Bires authored
This file maps to about 4 minutes and 15 seconds of tests within Keystore to be added to presubmit. Fixes: 158797959 Test: atest --test-mapping Change-Id: Ib40cc5106277ca25e08f6922a840924bd6ce4cf3
-
- Jul 15, 2020
-
-
Rubin Xu authored
This change includes the following commits that are related to CertInstaller and KeyChain: 7a5c8fe4afd KeyChain: Unify manual and programmatic key installation flows a894225c7da Added functionality to select type of certificate to be installed from the Settings app a9131939a35 Add KeyChain.KEY_ALIAS_SELECTION_DENIED constant. 485be505f19 Fix KeyChain.KEY_ALIAS_SELECTION_DENIED Bug: 161347472 Test: builds & manual testing Change-Id: I560bade479b41a5b88f81ea6dfdecba689c2f4ad
-
- Jun 17, 2020
-
-
Janis Danisevskis authored
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
-
- May 20, 2020
-
-
Eran Messeri authored
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
-
- May 19, 2020
-
-
Janis Danisevskis authored
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 (cherry picked from commit 022c8ef7)
-
- May 15, 2020
-
-
Dorin Drimus authored
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
-
- May 13, 2020
-
-
Daulet Zhanguzin authored
Not really used in AndroidKeyStore Test: Treehugger Bug: 154796679 Change-Id: Id21b256b3221fd4353401c81e538a46b2f7c6246
-
- Apr 27, 2020
-
-
Max Bires authored
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
-
- Mar 19, 2020
-
-
Rubin Xu authored
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 f9418dbb)
-
- Mar 17, 2020
-
-
Max Bires authored
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
-