summaryrefslogtreecommitdiffstats
path: root/keystore
Commit message (Collapse)AuthorAgeFilesLines
* Merge "Fix a bug in Android Keystore updateAAD." into mnc-devAlex Klyubin2015-06-191-1/+1
|\
| * Fix a bug in Android Keystore updateAAD.Alex Klyubin2015-06-191-1/+1
| | | | | | | | | | | | | | | | | | The variant of CipherSpi.engineUpdateAAD which takes ByteBuffers delegated to a byte[]-taking variant of superclass instead of its own class. Bug: 18088752 Change-Id: I3b426bbdca54bbf7f6f3939589da07b24db14d0d
* | Support more KeySpecs in Android Keystore KeyFactory.Alex Klyubin2015-06-181-22/+76
|/ | | | | | | | | | | | This adds support obtaining RSAPublicKeySpec, ECPublicKeySpec, X509EncodedKeySpec from Android Keystore public keys. Using a KeyFactory to obtain such specs is the endorsed way for obtaining algorithm-specific parameters or X.509 encoding of PublicKey instances. Bug: 18088752 Change-Id: I2c653238e3c89d9cfc97bea6c8a0ef0c6d039385
* Use consistent cases for aliases in AndroidKeystoreBCWorkaround.Narayan Kamath2015-06-181-25/+25
| | | | | | | | | | Should be "with" and not "With". Has the side effect of fixing a test that assumes that these names are case-sensitive. While the test must be fixed separately, this is still good for consistency. bug: 21870226 Change-Id: I884b4abdbb18be064210555aec8e0cd16b0d0bcb
* Remove unnecessary PKCS#1 authorization on legacy keys.Alex Klyubin2015-06-172-6/+4
| | | | | | | | | There is no need to authorize PKCS#1 signature padding scheme when NONE padding scheme is authorized. NONE authorizes the use of any padding scheme. Bug: 18088752 Change-Id: I73ccb373d577c988acde372d972092278923c4e4
* Merge "Prefer GCM to CBC or CTR in documentation." into mnc-devAlex Klyubin2015-06-173-23/+23
|\
| * Prefer GCM to CBC or CTR in documentation.Alex Klyubin2015-06-173-23/+23
| | | | | | | | | | Bug: 21786749 Change-Id: If3824d1321ef1d8730d4384717b0c25d43518fe4
* | Merge "Improve documentation for keys requiring user auth." into mnc-devAlex Klyubin2015-06-174-52/+173
|\ \ | |/ |/|
| * Improve documentation for keys requiring user auth.Alex Klyubin2015-06-174-52/+173
| | | | | | | | | | Bug: 18088752 Change-Id: I24eeb33790a74d8d81d10fcdb1eb058d47144c44
* | Merge "Expose AES GCM backed by Android Keystore." into mnc-devAlex Klyubin2015-06-177-11/+617
|\ \
| * | Expose AES GCM backed by Android Keystore.Alex Klyubin2015-06-177-11/+617
| |/ | | | | | | | | | | Bug: 18088752 Bug: 21786749 Change-Id: Ica90491037d2920f7635195894ba18882fc4406d
* | Drop support for P-192 EC keys.Alex Klyubin2015-06-171-10/+9
|/ | | | | | | | The minimum EC keys size is now 224 bit. This is because keymaster 1.0 does not support EC keys smaller than 224 bit. Bug: 18088752 Change-Id: I8010ff2d6ccaeea7dcf86f697aee1d9ebd683cb2
* Harden KeyInfo.Alex Klyubin2015-06-161-6/+8
| | | | | | | This ensures that KeyInfo instances are truly immutable. Bug: 18088752 Change-Id: Ic157d3b928b129a02c3cab9dd20ba9936a005813
* Harden and clean up KeyProtection.Alex Klyubin2015-06-162-17/+17
| | | | | | | | This ensures that instances of this class are immutable and cleans up some flawed logic discovered when writing up CTS tests. Bug: 18088752 Change-Id: If9cc33192ada5a8982a2b200ab24cb18331cf958
* Harden and clean up KeyGenParameterSpec.Alex Klyubin2015-06-162-34/+73
| | | | | | | | This ensures that instances of this class are immutable and cleans up some flawed logic discovered when writing up CTS tests. Bug: 18088752 Change-Id: I7a27dbfc3445599bccabbd26e39535ce988a2ab2
* Merge "Fix Android Keystore key gen for keys requiring user auth." into mnc-devAlex Klyubin2015-06-151-1/+5
|\
| * Fix Android Keystore key gen for keys requiring user auth.Alex Klyubin2015-06-151-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When Android Keystore generates an asymmetric key pair, it needs to create a self-signed certificate for that pair, in order to expose the key pair in the JCA KeyStore abstraction through which keys are later retrieved. The self-signed certificate is normally signed with the private key. This CL avoids using the private key to sign the certificate if the private key can be used only once the user has been authenticated. For such keys, a fake (non-verifying) signature is used on the certificate, same as for cases where the key is not authorized for signing. Bug: 21852844 Change-Id: Id78bc1f51d12950db4e37c1e0da6c60057d4e693
* | Merge "Remove EcIesParameterSpec until it's needed." into mnc-devAlex Klyubin2015-06-151-272/+0
|\ \
| * | Remove EcIesParameterSpec until it's needed.Alex Klyubin2015-06-151-272/+0
| |/ | | | | | | | | | | | | | | | | This class was added in Android M to enable us to expose ECIES. ECIES is not going to happen in Android M. I'm thus removing this unused class until such time when it's needed. Bug: 18088752 Change-Id: I16ab1bbd0b4334419c9a8f29d64661c150aa8d32
* | Document when self-signed certs have invalid signature.Alex Klyubin2015-06-122-1/+9
|/ | | | | | | | | | This updates the Javadocs of Android Keystore to explain what key authorizations are needed for the self-signed cert create at key generation time to have a valid signature. Bug: 18088752 Bug: 21777596 Change-Id: Id02425133f094a0c5a02e96f4c63aab7175cba5b
* Merge "Fix Android Keystore KeyPairGenerator for RSA PSS keys." into mnc-devAlex Klyubin2015-06-121-0/+30
|\
| * Fix Android Keystore KeyPairGenerator for RSA PSS keys.Alex Klyubin2015-06-121-0/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes a bug where key pair generation fails for RSA signing keys which are not authorized for PKCS#1 signature padding, such as keys authorized only for the RSA PSS signature padding scheme. The issue was that the KeyPairGenerator was failing when attempting to sign the self-signed certificate (needed by Android Keystore) using PKCS#1 padding for which such keys are not authorized. The solution is to not attempt to sign these certificates and instead use a fake signature. Bug: 21809600 Change-Id: I4f04fcf78174937046d2534e0485c6940eae673f
* | Merge "Update Javadocs to reflect meaning of digest and padding NONE." into ↵Alex Klyubin2015-06-125-38/+42
|\ \ | | | | | | | | | mnc-dev
| * | Update Javadocs to reflect meaning of digest and padding NONE.Alex Klyubin2015-06-115-38/+42
| |/ | | | | | | | | | | | | | | | | This also adds information about what digests and paddings may need to be specified for keys used in TLS/SSL for client or server authentication. Bug: 21777596 Change-Id: Icd495458c38c4f912b21a64ca7aab2c88d76461c
* | Obtain entropy later in crypto operations, when possible.Alex Klyubin2015-06-129-40/+86
|/ | | | | | | | | | This makes Android Keystore crypto operations defer pulling entropy from provided SecureRandom until KeyStore.finish, where appropriate. Such as when performing asymmetric encryption or generating signatures. Bug: 18088752 Change-Id: I4a897754e9a846214cf0995c5514f98cf0edd76b
* Merge "Update Javadocs: all new features supported for asymmetric crypto." ↵Alex Klyubin2015-06-122-50/+0
|\ | | | | | | into mnc-dev
| * Update Javadocs: all new features supported for asymmetric crypto.Alex Klyubin2015-06-112-50/+0
| | | | | | | | | | Bug: 20912868 Change-Id: I633d3caa3f40dd0b038b2f7e75825614bed2c0f5
* | Do not require USE_FINGERPRINT for getAuthenticatorId.Alex Klyubin2015-06-112-20/+9
|/ | | | | | | | | | | | | | | | | | | | | | | This removes the requirement to hold the USE_FINGERPRINT permission to successfully invoke FingerprintManager.getAuthenticatorId(). This is needed because Android Keystore classes which run inside app processes occasionally need to access this authenticator ID. The access however is not necessarily triggered by the developer using APIs to do with fingerprints. Thus, if an app does not hold the USE_FINGERPRINT permission and uses Android Keystore API, it may unexpectedly encounter a SecurityException. It's OK to provide access to authenticator ID without requiring USE_FINGERPRINT permission because there are other ways to access this ID without holding that permission, such as though hidden KeyStore API. Once Android Keystore code is restructured to no longer require access to authenticator ID, this CL can be reverted. Bug: 21030147 Change-Id: I9af29830abce34c46e29e5c1682cc3ab88c95c00
* Android Keystore keys are no longer backed by Conscrypt.Alex Klyubin2015-06-1015-202/+675
| | | | | | | | | | | | | | | | | | | | | | | | | This switches Android Keystore asymmetric keys from being backed by Conscrypt (via keystore-engine which is an OpenSSL/BoringSSL ENGINE which talks to keystore via the old KeyStore API) to being backed by the AndroidKeyStore Provider which talks to keystore via the new KeyStore API. In effect, this switches asymmetric crypto offered by Android Keystore from old Keystore API to new KeyStore API, enabling all the new features such as enforcement of authorizations on key use. Some algorithms offered by Android Keystore, such as RSA with OAEP or PSS padding schemes, are not supported by other providers. This complicates matters because Android Keystore only supports public key operations if the corresponding private key is in the keystore. Thus, Android Keystore can only offer these operations for its own public keys only. This requires AndroidKeyStore to use its own subclasses of PublicKey everywhere. The ugliest place is where it needs to return its own subclass of X509Certificate only to be able to return its own subclass of PublicKey from Certificate.getPublicKey(). Bug: 18088752 Bug: 19284418 Bug: 20912868 Change-Id: Id234f9ab9ff72d353ca1ff66768bd3d46da50d64
* Merge "Switch Android Keystore key gen and import to new KeyStore API." into ↵Alex Klyubin2015-06-098-354/+913
|\ | | | | | | mnc-dev
| * Switch Android Keystore key gen and import to new KeyStore API.Alex Klyubin2015-06-098-354/+913
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes Android Keystore's asymmetric key generation and import use the new KeyStore API (similar to keymaster 1.0 API). Because the resulting private keys will be used through Conscrypt/keystore-engine which uses the old Keystore API, this CL implements a temporary workaround where all generated and imported keys are authorized for padding NONE and digest NONE, in addition to padding schemes and digests requested by the user of the Android Keystore API. This workaround is needed because keystore-engine uses digest NONE and padding NONE for all its crypto operations. Bug: 18088752 Bug: 20912868 Change-Id: Idc709039d091294265bd000160b5507f13825849
* | Support for Android Keystore Cipher.wrap and unwrap.Alex Klyubin2015-06-092-7/+150
|/ | | | | | | | | Cipher.wrap and .unwrap are supported by Android Keystore in released versions of Android. The new Android Keystore provider should thus continue supporting these for backward compatibility. Bug: 18088752 Change-Id: I95319b13d5c4e9681f6539016e6449d73f81131d
* Deprecate KeyChain.isBoundKeyAlgorithm.Alex Klyubin2015-06-082-1/+16
| | | | | | | | | | | | | This is bad API. There was never a guarantee that when this method returns true for a key algorithm (e.g., RSA or EC), then all keys of that type will be imported into secure hardware. For example, the secure hardware may reject a key if it's of unsupported size or uses an unsupported public exponent or EC curve. In that case, the key will be imported into keystore/KeyChain without being backed by secure hardware. Bug: 18088752 Change-Id: I8daa574a2e703a347d09d93401cd1ea2d0162ed9
* Merge "Remove deprecated android.security.KeyStore methods." into mnc-devAlex Klyubin2015-06-086-45/+45
|\
| * Remove deprecated android.security.KeyStore methods.Alex Klyubin2015-06-086-45/+45
| | | | | | | | | | | | | | | | | | * delKey -> delete * getPubkey -> exportKey * saw -> list. Bug: 18088752 Change-Id: Ifb794f91a42646d67da1340ee16765cbaf255a49
* | Merge "RSA encrypt with private key in Android Keystore." into mnc-devAlex Klyubin2015-06-082-12/+85
|\ \ | |/ |/|
| * RSA encrypt with private key in Android Keystore.Alex Klyubin2015-06-042-12/+85
| | | | | | | | | | | | | | | | | | | | This adds support for RSA encryption using private key and no padding. This mode of operation is needed because JCA does not offer an RSA Signature primitive that does not apply padding. Bug: 18088752 Bug: 20912868 Change-Id: I0b481b4c19916f601aa270fada5eabfb12987e8d
* | Merge "Export KeyFactory backed by Android Keystore." into mnc-devAlex Klyubin2015-06-043-17/+133
|\ \ | |/ |/|
| * Export KeyFactory backed by Android Keystore.Alex Klyubin2015-06-043-17/+133
| | | | | | | | | | | | | | | | The KeyFactory can be used to obtain information (KeyInfo) about Android Keystore private keys. Bug: 18088752 Change-Id: Ied1a69928f391537de6765cef7dc7d7241cf62bb
* | Merge "Expose RSA and ECDSA Signature from Android Keystore Provider." into ↵Alex Klyubin2015-06-047-3/+866
|\ \ | | | | | | | | | mnc-dev
| * | Expose RSA and ECDSA Signature from Android Keystore Provider.Alex Klyubin2015-06-047-3/+866
| |/ | | | | | | | | | | | | | | The RSA Signature supports PKCS#1 and PSS padding. Bug: 18088752 Bug: 20912868 Change-Id: I03cdc86d1935af36f7c87a0b23d67f813829cfb0
* | Merge "Streamline Android Keystore delete entry operation." into mnc-devAlex Klyubin2015-06-041-5/+4
|\ \
| * | Streamline Android Keystore delete entry operation.Alex Klyubin2015-06-041-5/+4
| |/ | | | | | | | | | | | | This ensures that all four entry subtypes are deleted. Bug: 18088752 Change-Id: Ia020dbede562a123c8c81cc9449ba5ab4aac61dd
* | Merge "Reliably delete keys if key generation fails." into mnc-devAlex Klyubin2015-06-042-57/+73
|\ \
| * | Reliably delete keys if key generation fails.Alex Klyubin2015-06-042-57/+73
| |/ | | | | | | | | Bug: 18088752 Change-Id: Iea68f3f96fc872d5628f163a1314ebd080c9d39e
* | Merge "Add optional additional entropy to finish" into mnc-devChad Brubaker2015-06-041-2/+7
|\ \ | |/ |/|
| * Add optional additional entropy to finishChad Brubaker2015-06-041-2/+7
| | | | | | | | | | | | | | | | | | | | If provided the extra entropy will be added to the device before calling finish. If entropy is provided and the device does not support supplying additional entropy then finish will fail with KM_ERROR_UNIMPLEMENTED. (cherry-picked from commit 9ce30624a448f439e19960d0dd88103c04676e7d) Change-Id: If26be118bf382604f6f8e96e833b76e6f9e94d58
* | Expose RSA Cipher from Android Keystore Provider.Alex Klyubin2015-06-0310-16/+724
|/ | | | | | | | | The RSA Cipher supports OAEPPadding, PKCS1Padding and NoPadding padding schemes. Bug: 18088752 Bug: 20912868 Change-Id: Ie050e12705bb553a402760a1d253fdb2247a1d50
* Merge "Remove KM_TAG_CHUNK_LENGTH and add KM_TAG_AEAD_TAG" into mnc-devAlex Klyubin2015-06-031-2/+2
|\
| * Remove KM_TAG_CHUNK_LENGTH and add KM_TAG_AEAD_TAGAlex Klyubin2015-06-021-2/+2
| | | | | | | | Change-Id: I384f3d2fee2f68279c6518d9ac0a79e29bed0e52