diff --git a/api/current.txt b/api/current.txt index 66c0447867bd6..bec686dab7e02 100644 --- a/api/current.txt +++ b/api/current.txt @@ -28040,6 +28040,43 @@ package android.sax { package android.security { + public class CryptoOperationException extends java.lang.RuntimeException { + ctor public CryptoOperationException(); + ctor public CryptoOperationException(java.lang.String); + ctor public CryptoOperationException(java.lang.String, java.lang.Throwable); + ctor public CryptoOperationException(java.lang.Throwable); + } + + public class EcIesParameterSpec implements java.security.spec.AlgorithmParameterSpec { + method public int getDemCipherKeySize(); + method public java.lang.String getDemCipherTransformation(); + method public java.lang.String getDemMacAlgorithm(); + method public int getDemMacKeySize(); + method public java.lang.String getKemKdfAlgorithm(); + method public int getKemPointFormat(); + field public static final android.security.EcIesParameterSpec DEFAULT; + } + + public static class EcIesParameterSpec.Builder { + ctor public EcIesParameterSpec.Builder(); + method public android.security.EcIesParameterSpec build(); + method public android.security.EcIesParameterSpec.Builder setDemCipherKeySize(int); + method public android.security.EcIesParameterSpec.Builder setDemCipherTransformation(java.lang.String); + method public android.security.EcIesParameterSpec.Builder setDemMacAlgorithm(java.lang.String); + method public android.security.EcIesParameterSpec.Builder setDemMacKeySize(int); + method public android.security.EcIesParameterSpec.Builder setKemKdfAlgorithm(java.lang.String); + method public android.security.EcIesParameterSpec.Builder setKemPointFormat(int); + } + + public static abstract class EcIesParameterSpec.PointFormat { + field public static final int COMPRESSED = 1; // 0x1 + field public static final int UNCOMPRESSED = 0; // 0x0 + field public static final int UNSPECIFIED = -1; // 0xffffffff + } + + public static abstract class EcIesParameterSpec.PointFormatEnum implements java.lang.annotation.Annotation { + } + public final class KeyChain { ctor public KeyChain(); method public static void choosePrivateKeyAlias(android.app.Activity, android.security.KeyChainAliasCallback, java.lang.String[], java.security.Principal[], java.lang.String, int, java.lang.String); @@ -28066,17 +28103,77 @@ package android.security { ctor public KeyChainException(java.lang.Throwable); } + public class KeyExpiredException extends android.security.CryptoOperationException { + ctor public KeyExpiredException(); + ctor public KeyExpiredException(java.lang.String); + ctor public KeyExpiredException(java.lang.String, java.lang.Throwable); + } + + public class KeyGeneratorSpec implements java.security.spec.AlgorithmParameterSpec { + method public java.lang.String[] getBlockModes(); + method public android.content.Context getContext(); + method public java.lang.String[] getEncryptionPaddings(); + method public int getKeySize(); + method public java.util.Date getKeyValidityForConsumptionEnd(); + method public java.util.Date getKeyValidityForOriginationEnd(); + method public java.util.Date getKeyValidityStart(); + method public java.lang.String getKeystoreAlias(); + method public int getPurposes(); + method public int getUserAuthenticationValidityDurationSeconds(); + method public int getUserAuthenticators(); + method public boolean isEncryptionRequired(); + method public boolean isInvalidatedOnNewFingerprintEnrolled(); + method public boolean isRandomizedEncryptionRequired(); + } + + public static class KeyGeneratorSpec.Builder { + ctor public KeyGeneratorSpec.Builder(android.content.Context); + method public android.security.KeyGeneratorSpec build(); + method public android.security.KeyGeneratorSpec.Builder setAlias(java.lang.String); + method public android.security.KeyGeneratorSpec.Builder setBlockModes(java.lang.String...); + method public android.security.KeyGeneratorSpec.Builder setEncryptionPaddings(java.lang.String...); + method public android.security.KeyGeneratorSpec.Builder setEncryptionRequired(boolean); + method public android.security.KeyGeneratorSpec.Builder setInvalidatedOnNewFingerprintEnrolled(boolean); + method public android.security.KeyGeneratorSpec.Builder setKeySize(int); + method public android.security.KeyGeneratorSpec.Builder setKeyValidityEnd(java.util.Date); + method public android.security.KeyGeneratorSpec.Builder setKeyValidityForConsumptionEnd(java.util.Date); + method public android.security.KeyGeneratorSpec.Builder setKeyValidityForOriginationEnd(java.util.Date); + method public android.security.KeyGeneratorSpec.Builder setKeyValidityStart(java.util.Date); + method public android.security.KeyGeneratorSpec.Builder setPurposes(int); + method public android.security.KeyGeneratorSpec.Builder setRandomizedEncryptionRequired(boolean); + method public android.security.KeyGeneratorSpec.Builder setUserAuthenticationValidityDurationSeconds(int); + method public android.security.KeyGeneratorSpec.Builder setUserAuthenticators(int); + } + + public class KeyNotYetValidException extends android.security.CryptoOperationException { + ctor public KeyNotYetValidException(); + ctor public KeyNotYetValidException(java.lang.String); + ctor public KeyNotYetValidException(java.lang.String, java.lang.Throwable); + } + public final class KeyPairGeneratorSpec implements java.security.spec.AlgorithmParameterSpec { method public java.security.spec.AlgorithmParameterSpec getAlgorithmParameterSpec(); + method public java.lang.String[] getBlockModes(); method public android.content.Context getContext(); + method public java.lang.String[] getDigests(); + method public java.lang.String[] getEncryptionPaddings(); method public java.util.Date getEndDate(); method public int getKeySize(); method public java.lang.String getKeyType(); + method public java.util.Date getKeyValidityForConsumptionEnd(); + method public java.util.Date getKeyValidityForOriginationEnd(); + method public java.util.Date getKeyValidityStart(); method public java.lang.String getKeystoreAlias(); + method public int getPurposes(); method public java.math.BigInteger getSerialNumber(); + method public java.lang.String[] getSignaturePaddings(); method public java.util.Date getStartDate(); method public javax.security.auth.x500.X500Principal getSubjectDN(); + method public int getUserAuthenticationValidityDurationSeconds(); + method public int getUserAuthenticators(); method public boolean isEncryptionRequired(); + method public boolean isInvalidatedOnNewFingerprintEnrolled(); + method public boolean isRandomizedEncryptionRequired(); } public static final class KeyPairGeneratorSpec.Builder { @@ -28084,23 +28181,110 @@ package android.security { method public android.security.KeyPairGeneratorSpec build(); method public android.security.KeyPairGeneratorSpec.Builder setAlgorithmParameterSpec(java.security.spec.AlgorithmParameterSpec); method public android.security.KeyPairGeneratorSpec.Builder setAlias(java.lang.String); + method public android.security.KeyPairGeneratorSpec.Builder setBlockModes(java.lang.String...); + method public android.security.KeyPairGeneratorSpec.Builder setDigests(java.lang.String...); + method public android.security.KeyPairGeneratorSpec.Builder setEncryptionPaddings(java.lang.String...); method public android.security.KeyPairGeneratorSpec.Builder setEncryptionRequired(); method public android.security.KeyPairGeneratorSpec.Builder setEndDate(java.util.Date); + method public android.security.KeyPairGeneratorSpec.Builder setInvalidatedOnNewFingerprintEnrolled(boolean); method public android.security.KeyPairGeneratorSpec.Builder setKeySize(int); method public android.security.KeyPairGeneratorSpec.Builder setKeyType(java.lang.String) throws java.security.NoSuchAlgorithmException; + method public android.security.KeyPairGeneratorSpec.Builder setKeyValidityEnd(java.util.Date); + method public android.security.KeyPairGeneratorSpec.Builder setKeyValidityForConsumptionEnd(java.util.Date); + method public android.security.KeyPairGeneratorSpec.Builder setKeyValidityForOriginationEnd(java.util.Date); + method public android.security.KeyPairGeneratorSpec.Builder setKeyValidityStart(java.util.Date); + method public android.security.KeyPairGeneratorSpec.Builder setPurposes(int); + method public android.security.KeyPairGeneratorSpec.Builder setRandomizedEncryptionRequired(boolean); method public android.security.KeyPairGeneratorSpec.Builder setSerialNumber(java.math.BigInteger); + method public android.security.KeyPairGeneratorSpec.Builder setSignaturePaddings(java.lang.String...); method public android.security.KeyPairGeneratorSpec.Builder setStartDate(java.util.Date); method public android.security.KeyPairGeneratorSpec.Builder setSubject(javax.security.auth.x500.X500Principal); + method public android.security.KeyPairGeneratorSpec.Builder setUserAuthenticationValidityDurationSeconds(int); + method public android.security.KeyPairGeneratorSpec.Builder setUserAuthenticators(int); + } + + public abstract class KeyStoreKeyProperties { + } + + public static abstract class KeyStoreKeyProperties.Origin { + field public static final int GENERATED = 1; // 0x1 + field public static final int IMPORTED = 2; // 0x2 + } + + public static abstract class KeyStoreKeyProperties.OriginEnum implements java.lang.annotation.Annotation { + } + + public static abstract class KeyStoreKeyProperties.Purpose { + field public static final int DECRYPT = 2; // 0x2 + field public static final int ENCRYPT = 1; // 0x1 + field public static final int SIGN = 4; // 0x4 + field public static final int VERIFY = 8; // 0x8 + } + + public static abstract class KeyStoreKeyProperties.PurposeEnum implements java.lang.annotation.Annotation { + } + + public static abstract class KeyStoreKeyProperties.UserAuthenticator { + field public static final int FINGERPRINT_READER = 2; // 0x2 + field public static final int LOCK_SCREEN = 1; // 0x1 + } + + public static abstract class KeyStoreKeyProperties.UserAuthenticatorEnum implements java.lang.annotation.Annotation { + } + + public class KeyStoreKeySpec implements java.security.spec.KeySpec { + method public java.lang.String[] getBlockModes(); + method public java.lang.String[] getDigests(); + method public java.lang.String[] getEncryptionPaddings(); + method public int getKeySize(); + method public java.util.Date getKeyValidityForConsumptionEnd(); + method public java.util.Date getKeyValidityForOriginationEnd(); + method public java.util.Date getKeyValidityStart(); + method public java.lang.String getKeystoreAlias(); + method public int getOrigin(); + method public int getPurposes(); + method public java.lang.String[] getSignaturePaddings(); + method public int getTeeEnforcedUserAuthenticators(); + method public int getUserAuthenticationValidityDurationSeconds(); + method public int getUserAuthenticators(); + method public boolean isInvalidatedOnNewFingerprintEnrolled(); + method public boolean isTeeBacked(); } public final class KeyStoreParameter implements java.security.KeyStore.ProtectionParameter { + method public java.lang.String[] getBlockModes(); + method public java.lang.String[] getDigests(); + method public java.lang.String[] getEncryptionPaddings(); + method public java.util.Date getKeyValidityForConsumptionEnd(); + method public java.util.Date getKeyValidityForOriginationEnd(); + method public java.util.Date getKeyValidityStart(); + method public int getPurposes(); + method public java.lang.String[] getSignaturePaddings(); + method public int getUserAuthenticationValidityDurationSeconds(); + method public int getUserAuthenticators(); + method public boolean isDigestsSpecified(); method public boolean isEncryptionRequired(); + method public boolean isInvalidatedOnNewFingerprintEnrolled(); + method public boolean isRandomizedEncryptionRequired(); } public static final class KeyStoreParameter.Builder { ctor public KeyStoreParameter.Builder(android.content.Context); method public android.security.KeyStoreParameter build(); + method public android.security.KeyStoreParameter.Builder setBlockModes(java.lang.String...); + method public android.security.KeyStoreParameter.Builder setDigests(java.lang.String...); + method public android.security.KeyStoreParameter.Builder setEncryptionPaddings(java.lang.String...); method public android.security.KeyStoreParameter.Builder setEncryptionRequired(boolean); + method public android.security.KeyStoreParameter.Builder setInvalidatedOnNewFingerprintEnrolled(boolean); + method public android.security.KeyStoreParameter.Builder setKeyValidityEnd(java.util.Date); + method public android.security.KeyStoreParameter.Builder setKeyValidityForConsumptionEnd(java.util.Date); + method public android.security.KeyStoreParameter.Builder setKeyValidityForOriginationEnd(java.util.Date); + method public android.security.KeyStoreParameter.Builder setKeyValidityStart(java.util.Date); + method public android.security.KeyStoreParameter.Builder setPurposes(int); + method public android.security.KeyStoreParameter.Builder setRandomizedEncryptionRequired(boolean); + method public android.security.KeyStoreParameter.Builder setSignaturePaddings(java.lang.String...); + method public android.security.KeyStoreParameter.Builder setUserAuthenticationValidityDurationSeconds(int); + method public android.security.KeyStoreParameter.Builder setUserAuthenticators(int); } public class NetworkSecurityPolicy { @@ -28108,6 +28292,17 @@ package android.security { method public boolean isCleartextTrafficPermitted(); } + public class NewFingerprintEnrolledException extends android.security.CryptoOperationException { + ctor public NewFingerprintEnrolledException(); + ctor public NewFingerprintEnrolledException(java.lang.String); + } + + public class UserNotAuthenticatedException extends android.security.CryptoOperationException { + ctor public UserNotAuthenticatedException(); + ctor public UserNotAuthenticatedException(java.lang.String); + ctor public UserNotAuthenticatedException(java.lang.String, java.lang.Throwable); + } + } package android.service.carrier { diff --git a/api/system-current.txt b/api/system-current.txt index 7694bf563c19c..2cfa9a7eade01 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -30040,6 +30040,43 @@ package android.sax { package android.security { + public class CryptoOperationException extends java.lang.RuntimeException { + ctor public CryptoOperationException(); + ctor public CryptoOperationException(java.lang.String); + ctor public CryptoOperationException(java.lang.String, java.lang.Throwable); + ctor public CryptoOperationException(java.lang.Throwable); + } + + public class EcIesParameterSpec implements java.security.spec.AlgorithmParameterSpec { + method public int getDemCipherKeySize(); + method public java.lang.String getDemCipherTransformation(); + method public java.lang.String getDemMacAlgorithm(); + method public int getDemMacKeySize(); + method public java.lang.String getKemKdfAlgorithm(); + method public int getKemPointFormat(); + field public static final android.security.EcIesParameterSpec DEFAULT; + } + + public static class EcIesParameterSpec.Builder { + ctor public EcIesParameterSpec.Builder(); + method public android.security.EcIesParameterSpec build(); + method public android.security.EcIesParameterSpec.Builder setDemCipherKeySize(int); + method public android.security.EcIesParameterSpec.Builder setDemCipherTransformation(java.lang.String); + method public android.security.EcIesParameterSpec.Builder setDemMacAlgorithm(java.lang.String); + method public android.security.EcIesParameterSpec.Builder setDemMacKeySize(int); + method public android.security.EcIesParameterSpec.Builder setKemKdfAlgorithm(java.lang.String); + method public android.security.EcIesParameterSpec.Builder setKemPointFormat(int); + } + + public static abstract class EcIesParameterSpec.PointFormat { + field public static final int COMPRESSED = 1; // 0x1 + field public static final int UNCOMPRESSED = 0; // 0x0 + field public static final int UNSPECIFIED = -1; // 0xffffffff + } + + public static abstract class EcIesParameterSpec.PointFormatEnum implements java.lang.annotation.Annotation { + } + public final class KeyChain { ctor public KeyChain(); method public static void choosePrivateKeyAlias(android.app.Activity, android.security.KeyChainAliasCallback, java.lang.String[], java.security.Principal[], java.lang.String, int, java.lang.String); @@ -30066,17 +30103,77 @@ package android.security { ctor public KeyChainException(java.lang.Throwable); } + public class KeyExpiredException extends android.security.CryptoOperationException { + ctor public KeyExpiredException(); + ctor public KeyExpiredException(java.lang.String); + ctor public KeyExpiredException(java.lang.String, java.lang.Throwable); + } + + public class KeyGeneratorSpec implements java.security.spec.AlgorithmParameterSpec { + method public java.lang.String[] getBlockModes(); + method public android.content.Context getContext(); + method public java.lang.String[] getEncryptionPaddings(); + method public int getKeySize(); + method public java.util.Date getKeyValidityForConsumptionEnd(); + method public java.util.Date getKeyValidityForOriginationEnd(); + method public java.util.Date getKeyValidityStart(); + method public java.lang.String getKeystoreAlias(); + method public int getPurposes(); + method public int getUserAuthenticationValidityDurationSeconds(); + method public int getUserAuthenticators(); + method public boolean isEncryptionRequired(); + method public boolean isInvalidatedOnNewFingerprintEnrolled(); + method public boolean isRandomizedEncryptionRequired(); + } + + public static class KeyGeneratorSpec.Builder { + ctor public KeyGeneratorSpec.Builder(android.content.Context); + method public android.security.KeyGeneratorSpec build(); + method public android.security.KeyGeneratorSpec.Builder setAlias(java.lang.String); + method public android.security.KeyGeneratorSpec.Builder setBlockModes(java.lang.String...); + method public android.security.KeyGeneratorSpec.Builder setEncryptionPaddings(java.lang.String...); + method public android.security.KeyGeneratorSpec.Builder setEncryptionRequired(boolean); + method public android.security.KeyGeneratorSpec.Builder setInvalidatedOnNewFingerprintEnrolled(boolean); + method public android.security.KeyGeneratorSpec.Builder setKeySize(int); + method public android.security.KeyGeneratorSpec.Builder setKeyValidityEnd(java.util.Date); + method public android.security.KeyGeneratorSpec.Builder setKeyValidityForConsumptionEnd(java.util.Date); + method public android.security.KeyGeneratorSpec.Builder setKeyValidityForOriginationEnd(java.util.Date); + method public android.security.KeyGeneratorSpec.Builder setKeyValidityStart(java.util.Date); + method public android.security.KeyGeneratorSpec.Builder setPurposes(int); + method public android.security.KeyGeneratorSpec.Builder setRandomizedEncryptionRequired(boolean); + method public android.security.KeyGeneratorSpec.Builder setUserAuthenticationValidityDurationSeconds(int); + method public android.security.KeyGeneratorSpec.Builder setUserAuthenticators(int); + } + + public class KeyNotYetValidException extends android.security.CryptoOperationException { + ctor public KeyNotYetValidException(); + ctor public KeyNotYetValidException(java.lang.String); + ctor public KeyNotYetValidException(java.lang.String, java.lang.Throwable); + } + public final class KeyPairGeneratorSpec implements java.security.spec.AlgorithmParameterSpec { method public java.security.spec.AlgorithmParameterSpec getAlgorithmParameterSpec(); + method public java.lang.String[] getBlockModes(); method public android.content.Context getContext(); + method public java.lang.String[] getDigests(); + method public java.lang.String[] getEncryptionPaddings(); method public java.util.Date getEndDate(); method public int getKeySize(); method public java.lang.String getKeyType(); + method public java.util.Date getKeyValidityForConsumptionEnd(); + method public java.util.Date getKeyValidityForOriginationEnd(); + method public java.util.Date getKeyValidityStart(); method public java.lang.String getKeystoreAlias(); + method public int getPurposes(); method public java.math.BigInteger getSerialNumber(); + method public java.lang.String[] getSignaturePaddings(); method public java.util.Date getStartDate(); method public javax.security.auth.x500.X500Principal getSubjectDN(); + method public int getUserAuthenticationValidityDurationSeconds(); + method public int getUserAuthenticators(); method public boolean isEncryptionRequired(); + method public boolean isInvalidatedOnNewFingerprintEnrolled(); + method public boolean isRandomizedEncryptionRequired(); } public static final class KeyPairGeneratorSpec.Builder { @@ -30084,23 +30181,110 @@ package android.security { method public android.security.KeyPairGeneratorSpec build(); method public android.security.KeyPairGeneratorSpec.Builder setAlgorithmParameterSpec(java.security.spec.AlgorithmParameterSpec); method public android.security.KeyPairGeneratorSpec.Builder setAlias(java.lang.String); + method public android.security.KeyPairGeneratorSpec.Builder setBlockModes(java.lang.String...); + method public android.security.KeyPairGeneratorSpec.Builder setDigests(java.lang.String...); + method public android.security.KeyPairGeneratorSpec.Builder setEncryptionPaddings(java.lang.String...); method public android.security.KeyPairGeneratorSpec.Builder setEncryptionRequired(); method public android.security.KeyPairGeneratorSpec.Builder setEndDate(java.util.Date); + method public android.security.KeyPairGeneratorSpec.Builder setInvalidatedOnNewFingerprintEnrolled(boolean); method public android.security.KeyPairGeneratorSpec.Builder setKeySize(int); method public android.security.KeyPairGeneratorSpec.Builder setKeyType(java.lang.String) throws java.security.NoSuchAlgorithmException; + method public android.security.KeyPairGeneratorSpec.Builder setKeyValidityEnd(java.util.Date); + method public android.security.KeyPairGeneratorSpec.Builder setKeyValidityForConsumptionEnd(java.util.Date); + method public android.security.KeyPairGeneratorSpec.Builder setKeyValidityForOriginationEnd(java.util.Date); + method public android.security.KeyPairGeneratorSpec.Builder setKeyValidityStart(java.util.Date); + method public android.security.KeyPairGeneratorSpec.Builder setPurposes(int); + method public android.security.KeyPairGeneratorSpec.Builder setRandomizedEncryptionRequired(boolean); method public android.security.KeyPairGeneratorSpec.Builder setSerialNumber(java.math.BigInteger); + method public android.security.KeyPairGeneratorSpec.Builder setSignaturePaddings(java.lang.String...); method public android.security.KeyPairGeneratorSpec.Builder setStartDate(java.util.Date); method public android.security.KeyPairGeneratorSpec.Builder setSubject(javax.security.auth.x500.X500Principal); + method public android.security.KeyPairGeneratorSpec.Builder setUserAuthenticationValidityDurationSeconds(int); + method public android.security.KeyPairGeneratorSpec.Builder setUserAuthenticators(int); + } + + public abstract class KeyStoreKeyProperties { + } + + public static abstract class KeyStoreKeyProperties.Origin { + field public static final int GENERATED = 1; // 0x1 + field public static final int IMPORTED = 2; // 0x2 + } + + public static abstract class KeyStoreKeyProperties.OriginEnum implements java.lang.annotation.Annotation { + } + + public static abstract class KeyStoreKeyProperties.Purpose { + field public static final int DECRYPT = 2; // 0x2 + field public static final int ENCRYPT = 1; // 0x1 + field public static final int SIGN = 4; // 0x4 + field public static final int VERIFY = 8; // 0x8 + } + + public static abstract class KeyStoreKeyProperties.PurposeEnum implements java.lang.annotation.Annotation { + } + + public static abstract class KeyStoreKeyProperties.UserAuthenticator { + field public static final int FINGERPRINT_READER = 2; // 0x2 + field public static final int LOCK_SCREEN = 1; // 0x1 + } + + public static abstract class KeyStoreKeyProperties.UserAuthenticatorEnum implements java.lang.annotation.Annotation { + } + + public class KeyStoreKeySpec implements java.security.spec.KeySpec { + method public java.lang.String[] getBlockModes(); + method public java.lang.String[] getDigests(); + method public java.lang.String[] getEncryptionPaddings(); + method public int getKeySize(); + method public java.util.Date getKeyValidityForConsumptionEnd(); + method public java.util.Date getKeyValidityForOriginationEnd(); + method public java.util.Date getKeyValidityStart(); + method public java.lang.String getKeystoreAlias(); + method public int getOrigin(); + method public int getPurposes(); + method public java.lang.String[] getSignaturePaddings(); + method public int getTeeEnforcedUserAuthenticators(); + method public int getUserAuthenticationValidityDurationSeconds(); + method public int getUserAuthenticators(); + method public boolean isInvalidatedOnNewFingerprintEnrolled(); + method public boolean isTeeBacked(); } public final class KeyStoreParameter implements java.security.KeyStore.ProtectionParameter { + method public java.lang.String[] getBlockModes(); + method public java.lang.String[] getDigests(); + method public java.lang.String[] getEncryptionPaddings(); + method public java.util.Date getKeyValidityForConsumptionEnd(); + method public java.util.Date getKeyValidityForOriginationEnd(); + method public java.util.Date getKeyValidityStart(); + method public int getPurposes(); + method public java.lang.String[] getSignaturePaddings(); + method public int getUserAuthenticationValidityDurationSeconds(); + method public int getUserAuthenticators(); + method public boolean isDigestsSpecified(); method public boolean isEncryptionRequired(); + method public boolean isInvalidatedOnNewFingerprintEnrolled(); + method public boolean isRandomizedEncryptionRequired(); } public static final class KeyStoreParameter.Builder { ctor public KeyStoreParameter.Builder(android.content.Context); method public android.security.KeyStoreParameter build(); + method public android.security.KeyStoreParameter.Builder setBlockModes(java.lang.String...); + method public android.security.KeyStoreParameter.Builder setDigests(java.lang.String...); + method public android.security.KeyStoreParameter.Builder setEncryptionPaddings(java.lang.String...); method public android.security.KeyStoreParameter.Builder setEncryptionRequired(boolean); + method public android.security.KeyStoreParameter.Builder setInvalidatedOnNewFingerprintEnrolled(boolean); + method public android.security.KeyStoreParameter.Builder setKeyValidityEnd(java.util.Date); + method public android.security.KeyStoreParameter.Builder setKeyValidityForConsumptionEnd(java.util.Date); + method public android.security.KeyStoreParameter.Builder setKeyValidityForOriginationEnd(java.util.Date); + method public android.security.KeyStoreParameter.Builder setKeyValidityStart(java.util.Date); + method public android.security.KeyStoreParameter.Builder setPurposes(int); + method public android.security.KeyStoreParameter.Builder setRandomizedEncryptionRequired(boolean); + method public android.security.KeyStoreParameter.Builder setSignaturePaddings(java.lang.String...); + method public android.security.KeyStoreParameter.Builder setUserAuthenticationValidityDurationSeconds(int); + method public android.security.KeyStoreParameter.Builder setUserAuthenticators(int); } public class NetworkSecurityPolicy { @@ -30108,6 +30292,17 @@ package android.security { method public boolean isCleartextTrafficPermitted(); } + public class NewFingerprintEnrolledException extends android.security.CryptoOperationException { + ctor public NewFingerprintEnrolledException(); + ctor public NewFingerprintEnrolledException(java.lang.String); + } + + public class UserNotAuthenticatedException extends android.security.CryptoOperationException { + ctor public UserNotAuthenticatedException(); + ctor public UserNotAuthenticatedException(java.lang.String); + ctor public UserNotAuthenticatedException(java.lang.String, java.lang.Throwable); + } + } package android.service.carrier { diff --git a/docs/html/training/articles/keystore.jd b/docs/html/training/articles/keystore.jd index bbbda67e6fd01..a4fc2d23adfe5 100644 --- a/docs/html/training/articles/keystore.jd +++ b/docs/html/training/articles/keystore.jd @@ -26,11 +26,10 @@ page.title=Android Keystore System -

The Android Keystore system lets you store private keys - in a container to make it more difficult to extract from the - device. Once keys are in the keystore, they can be used for - cryptographic operations with the private key material remaining - non-exportable.

+

The Android Keystore system lets you store cryptographic keys in a container + to make it more difficult to extract from the device. Once keys are in the + keystore, they can be used for cryptographic operations with the key material + remaining non-exportable.

The Keystore system is used by the {@link android.security.KeyChain} API as well as the Android @@ -59,7 +58,8 @@ Android Keystore Provider

To use this feature, you use the standard {@link java.security.KeyStore} -and {@link java.security.KeyPairGenerator} classes along with the +and {@link java.security.KeyPairGenerator} or +{@link javax.crypto.KeyGenerator} classes along with the {@code AndroidKeyStore} provider introduced in Android 4.3 (API level 18).

{@code AndroidKeyStore} is registered as a {@link @@ -67,7 +67,9 @@ and {@link java.security.KeyPairGenerator} classes along with the java.security.KeyStore#getInstance(String) KeyStore.getInstance(type)} method and as a provider for use with the {@link java.security.KeyPairGenerator#getInstance(String, String) - KeyPairGenerator.getInstance(algorithm, provider)} method.

+ KeyPairGenerator.getInstance(algorithm, provider)} and {@link + javax.crypto.KeyGenerator#getInstance(String, String) + KeyGenerator.getInstance(algorithm, provider)} methods.

Generating a New Private Key

@@ -81,6 +83,11 @@ and {@link java.security.KeyPairGenerator} classes along with the {@sample development/samples/ApiDemos/src/com/example/android/apis/security/KeyStoreUsage.java generate} +

Generating a New Secret Key

+ +

To generate the key, use a {@link javax.crypto.KeyGenerator} with + {@link android.security.KeyGeneratorSpec}. +

Working with Keystore Entries

Using the {@code AndroidKeyStore} provider takes place through diff --git a/keystore/java/android/security/CryptoOperationException.java b/keystore/java/android/security/CryptoOperationException.java index 00c142fbec9d3..1c9d005e00f9f 100644 --- a/keystore/java/android/security/CryptoOperationException.java +++ b/keystore/java/android/security/CryptoOperationException.java @@ -25,8 +25,6 @@ package android.security; * permitted to throw a checked exception during operation. Because crypto operations can fail * for a variety of reasons after initialization, this base class provides type-safety for unchecked * exceptions that may be thrown in those cases. - * - * @hide */ public class CryptoOperationException extends RuntimeException { diff --git a/keystore/java/android/security/EcIesParameterSpec.java b/keystore/java/android/security/EcIesParameterSpec.java index 0f198127cd3c2..38266795f38ed 100644 --- a/keystore/java/android/security/EcIesParameterSpec.java +++ b/keystore/java/android/security/EcIesParameterSpec.java @@ -46,8 +46,6 @@ import javax.crypto.Mac; * MAC algorithm specified by {@link #getDemMacAlgorithm()} (e.g., {@code HmacSHA1} for standard * DEM1). * - * - * @hide */ public class EcIesParameterSpec implements AlgorithmParameterSpec { @@ -124,6 +122,8 @@ public class EcIesParameterSpec implements AlgorithmParameterSpec { /** * Returns KEM EC curve name (e.g., {@code secp256r1}) or {@code null} if not specified. + * + * @hide */ public String getKemCurveName() { return mKemCurveName; @@ -200,6 +200,8 @@ public class EcIesParameterSpec implements AlgorithmParameterSpec { * Sets KEM EC curve name. For example, {@code P-256} or {@code secp256r1}. * *

NOTE: Only curves with cofactor of {@code 1} are supported. + * + * @hide */ public Builder setKemCurveName(String name) { mKemCurveName = name; diff --git a/keystore/java/android/security/KeyExpiredException.java b/keystore/java/android/security/KeyExpiredException.java index 35a5accbc94c7..a02dc33c489cd 100644 --- a/keystore/java/android/security/KeyExpiredException.java +++ b/keystore/java/android/security/KeyExpiredException.java @@ -19,8 +19,6 @@ package android.security; /** * Indicates that a cryptographic operation failed because the employed key's validity end date * is in the past. - * - * @hide */ public class KeyExpiredException extends CryptoOperationException { diff --git a/keystore/java/android/security/KeyGeneratorSpec.java b/keystore/java/android/security/KeyGeneratorSpec.java index 22db83e6759f2..7ecc47e4014f4 100644 --- a/keystore/java/android/security/KeyGeneratorSpec.java +++ b/keystore/java/android/security/KeyGeneratorSpec.java @@ -37,15 +37,13 @@ import javax.crypto.SecretKey; *

After generation, the {@code keyStoreAlias} is used with the * {@link java.security.KeyStore#getEntry(String, java.security.KeyStore.ProtectionParameter)} * interface to retrieve the {@link SecretKey}. - * - * @hide */ public class KeyGeneratorSpec implements AlgorithmParameterSpec { private final Context mContext; private final String mKeystoreAlias; private final int mFlags; - private final Integer mKeySize; + private final int mKeySize; private final Date mKeyValidityStart; private final Date mKeyValidityForOriginationEnd; private final Date mKeyValidityForConsumptionEnd; @@ -61,7 +59,7 @@ public class KeyGeneratorSpec implements AlgorithmParameterSpec { Context context, String keyStoreAlias, int flags, - Integer keySize, + int keySize, Date keyValidityStart, Date keyValidityForOriginationEnd, Date keyValidityForConsumptionEnd, @@ -122,9 +120,9 @@ public class KeyGeneratorSpec implements AlgorithmParameterSpec { } /** - * Gets the requested key size or {@code null} if the default size should be used. + * Returns the requested key size or {@code -1} if default size should be used. */ - public Integer getKeySize() { + public int getKeySize() { return mKeySize; } @@ -216,8 +214,6 @@ public class KeyGeneratorSpec implements AlgorithmParameterSpec { * authenticators protecting access to this key. * * @see #getUserAuthenticators() - * - * @hide */ public boolean isInvalidatedOnNewFingerprintEnrolled() { return mInvalidatedOnNewFingerprintEnrolled; @@ -234,7 +230,7 @@ public class KeyGeneratorSpec implements AlgorithmParameterSpec { private final Context mContext; private String mKeystoreAlias; private int mFlags; - private Integer mKeySize; + private int mKeySize = -1; private Date mKeyValidityStart; private Date mKeyValidityForOriginationEnd; private Date mKeyValidityForConsumptionEnd; @@ -460,8 +456,6 @@ public class KeyGeneratorSpec implements AlgorithmParameterSpec { *

By default, enrolling a new fingerprint does not invalidate the key. * * @see #setUserAuthenticators(Set) - * - * @hide */ public Builder setInvalidatedOnNewFingerprintEnrolled(boolean invalidated) { mInvalidatedOnNewFingerprintEnrolled = invalidated; diff --git a/keystore/java/android/security/KeyNotYetValidException.java b/keystore/java/android/security/KeyNotYetValidException.java index f1c2cac672b93..964cd7ed24dfc 100644 --- a/keystore/java/android/security/KeyNotYetValidException.java +++ b/keystore/java/android/security/KeyNotYetValidException.java @@ -19,8 +19,6 @@ package android.security; /** * Indicates that a cryptographic operation failed because the employed key's validity start date * is in the future. - * - * @hide */ public class KeyNotYetValidException extends CryptoOperationException { diff --git a/keystore/java/android/security/KeyPairGeneratorSpec.java b/keystore/java/android/security/KeyPairGeneratorSpec.java index ed2d8568ad88b..e297d26a013ce 100644 --- a/keystore/java/android/security/KeyPairGeneratorSpec.java +++ b/keystore/java/android/security/KeyPairGeneratorSpec.java @@ -311,8 +311,6 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * Gets the time instant before which the key pair is not yet valid. * * @return instant or {@code null} if not restricted. - * - * @hide */ public Date getKeyValidityStart() { return mKeyValidityStart; @@ -323,8 +321,6 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * verification. * * @return instant or {@code null} if not restricted. - * - * @hide */ public Date getKeyValidityForConsumptionEnd() { return mKeyValidityForConsumptionEnd; @@ -334,8 +330,6 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * Gets the time instant after which the key pair is no longer valid for encryption and signing. * * @return instant or {@code null} if not restricted. - * - * @hide */ public Date getKeyValidityForOriginationEnd() { return mKeyValidityForOriginationEnd; @@ -343,8 +337,6 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { /** * Gets the set of purposes for which the key can be used. - * - * @hide */ public @KeyStoreKeyProperties.PurposeEnum int getPurposes() { return mPurposes; @@ -352,8 +344,6 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { /** * Gets the set of digest algorithms with which the key can be used. - * - * @hide */ public String[] getDigests() { return ArrayUtils.cloneIfNotEmpty(mDigests); @@ -361,8 +351,6 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { /** * Gets the set of padding schemes with which the key can be used when encrypting/decrypting. - * - * @hide */ public String[] getEncryptionPaddings() { return ArrayUtils.cloneIfNotEmpty(mEncryptionPaddings); @@ -370,8 +358,6 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { /** * Gets the set of padding schemes with which the key can be used when signing/verifying. - * - * @hide */ public String[] getSignaturePaddings() { return ArrayUtils.cloneIfNotEmpty(mSignaturePaddings); @@ -379,8 +365,6 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { /** * Gets the set of block modes with which the key can be used. - * - * @hide */ public String[] getBlockModes() { return ArrayUtils.cloneIfNotEmpty(mBlockModes); @@ -394,8 +378,6 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * weaknesses due to which ciphertext may leak information about plaintext. For example, if a * given plaintext always produces the same ciphertext, an attacker may see the repeated * ciphertexts and be able to deduce something about the plaintext. - * - * @hide */ public boolean isRandomizedEncryptionRequired() { return mRandomizedEncryptionRequired; @@ -409,8 +391,6 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * restricted. * * @return user authenticators or {@code 0} if the key can be used without user authentication. - * - * @hide */ public @KeyStoreKeyProperties.UserAuthenticatorEnum int getUserAuthenticators() { return mUserAuthenticators; @@ -425,8 +405,6 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * * @return duration in seconds or {@code -1} if not restricted. {@code 0} means authentication * is required for every use of the key. - * - * @hide */ public int getUserAuthenticationValidityDurationSeconds() { return mUserAuthenticationValidityDurationSeconds; @@ -438,8 +416,6 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * authenticators protecting access to this key. * * @see #getUserAuthenticators() - * - * @hide */ public boolean isInvalidatedOnNewFingerprintEnrolled() { return mInvalidatedOnNewFingerprintEnrolled; @@ -642,8 +618,6 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { *

By default, the key is valid at any instant. * * @see #setKeyValidityEnd(Date) - * - * @hide */ public Builder setKeyValidityStart(Date startDate) { mKeyValidityStart = startDate; @@ -658,8 +632,6 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * @see #setKeyValidityStart(Date) * @see #setKeyValidityForConsumptionEnd(Date) * @see #setKeyValidityForOriginationEnd(Date) - * - * @hide */ public Builder setKeyValidityEnd(Date endDate) { setKeyValidityForOriginationEnd(endDate); @@ -673,8 +645,6 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { *

By default, the key is valid at any instant. * * @see #setKeyValidityForConsumptionEnd(Date) - * - * @hide */ public Builder setKeyValidityForOriginationEnd(Date endDate) { mKeyValidityForOriginationEnd = endDate; @@ -688,8 +658,6 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { *

By default, the key is valid at any instant. * * @see #setKeyValidityForOriginationEnd(Date) - * - * @hide */ public Builder setKeyValidityForConsumptionEnd(Date endDate) { mKeyValidityForConsumptionEnd = endDate; @@ -700,8 +668,6 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * Sets the set of purposes for which the key can be used. * *

This must be specified for all keys. There is no default. - * - * @hide */ public Builder setPurposes(@KeyStoreKeyProperties.PurposeEnum int purposes) { mPurposes = purposes; @@ -713,8 +679,6 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * to use the key with any other digest will be rejected. * *

This must be specified for keys which are used for signing/verification. - * - * @hide */ public Builder setDigests(String... digests) { mDigests = ArrayUtils.cloneIfNotEmpty(digests); @@ -727,8 +691,6 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * rejected. * *

This must be specified for keys which are used for encryption/decryption. - * - * @hide */ public Builder setEncryptionPaddings(String... paddings) { mEncryptionPaddings = ArrayUtils.cloneIfNotEmpty(paddings); @@ -741,8 +703,6 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * rejected. * *

This must be specified for RSA keys which are used for signing/verification. - * - * @hide */ public Builder setSignaturePaddings(String... paddings) { mSignaturePaddings = ArrayUtils.cloneIfNotEmpty(paddings); @@ -754,8 +714,6 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * Attempts to use the key with any other block modes will be rejected. * *

This must be specified for encryption/decryption keys. - * - * @hide */ public Builder setBlockModes(String... blockModes) { mBlockModes = ArrayUtils.cloneIfNotEmpty(blockModes); @@ -781,8 +739,6 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { *

  • If you are using RSA encryption without padding, consider switching to padding * schemes which offer {@code IND-CPA}, such as PKCS#1 or OAEP.
  • * - * - * @hide */ public Builder setRandomizedEncryptionRequired(boolean required) { mRandomizedEncryptionRequired = required; @@ -802,8 +758,6 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * without user authentication. * * @see #setUserAuthenticationValidityDurationSeconds(int) - * - * @hide */ public Builder setUserAuthenticators( @KeyStoreKeyProperties.UserAuthenticatorEnum int userAuthenticators) { @@ -824,8 +778,6 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * every use of the key. * * @see #setUserAuthenticators(int) - * - * @hide */ public Builder setUserAuthenticationValidityDurationSeconds(int seconds) { mUserAuthenticationValidityDurationSeconds = seconds; @@ -840,8 +792,6 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { *

    By default, enrolling a new fingerprint does not invalidate the key. * * @see #setUserAuthenticators(Set) - * - * @hide */ public Builder setInvalidatedOnNewFingerprintEnrolled(boolean invalidated) { mInvalidatedOnNewFingerprintEnrolled = invalidated; diff --git a/keystore/java/android/security/KeyStoreKeyGeneratorSpi.java b/keystore/java/android/security/KeyStoreKeyGeneratorSpi.java index 3b2804531283c..72c485ad56d91 100644 --- a/keystore/java/android/security/KeyStoreKeyGeneratorSpi.java +++ b/keystore/java/android/security/KeyStoreKeyGeneratorSpi.java @@ -133,7 +133,7 @@ public abstract class KeyStoreKeyGeneratorSpi extends KeyGeneratorSpi { throw new IllegalStateException("Digest algorithm must be specified for HMAC key"); } } - int keySizeBits = (spec.getKeySize() != null) ? spec.getKeySize() : mDefaultKeySizeBits; + int keySizeBits = (spec.getKeySize() != -1) ? spec.getKeySize() : mDefaultKeySizeBits; args.addInt(KeymasterDefs.KM_TAG_KEY_SIZE, keySizeBits); @KeyStoreKeyProperties.PurposeEnum int purposes = spec.getPurposes(); int[] keymasterBlockModes = KeymasterUtils.getKeymasterBlockModesFromJcaBlockModes( diff --git a/keystore/java/android/security/KeyStoreKeyProperties.java b/keystore/java/android/security/KeyStoreKeyProperties.java index 7f3f1a4a487d3..b1f330f355ef9 100644 --- a/keystore/java/android/security/KeyStoreKeyProperties.java +++ b/keystore/java/android/security/KeyStoreKeyProperties.java @@ -27,8 +27,6 @@ import java.util.Collection; /** * Properties of {@code AndroidKeyStore} keys. - * - * @hide */ public abstract class KeyStoreKeyProperties { private KeyStoreKeyProperties() {} diff --git a/keystore/java/android/security/KeyStoreKeySpec.java b/keystore/java/android/security/KeyStoreKeySpec.java index 2ff1a64381bf0..a89e4dd0f5b10 100644 --- a/keystore/java/android/security/KeyStoreKeySpec.java +++ b/keystore/java/android/security/KeyStoreKeySpec.java @@ -22,8 +22,6 @@ import java.util.Date; /** * Information about a key from the Android * KeyStore. - * - * @hide */ public class KeyStoreKeySpec implements KeySpec { private final String mKeystoreAlias; diff --git a/keystore/java/android/security/KeyStoreParameter.java b/keystore/java/android/security/KeyStoreParameter.java index a04bc6c882a37..c24b74f42e202 100644 --- a/keystore/java/android/security/KeyStoreParameter.java +++ b/keystore/java/android/security/KeyStoreParameter.java @@ -108,7 +108,6 @@ public final class KeyStoreParameter implements ProtectionParameter { * Gets the time instant before which the key is not yet valid. * * @return instant or {@code null} if not restricted. - * @hide */ public Date getKeyValidityStart() { return mKeyValidityStart; @@ -118,8 +117,6 @@ public final class KeyStoreParameter implements ProtectionParameter { * Gets the time instant after which the key is no long valid for decryption and verification. * * @return instant or {@code null} if not restricted. - * - * @hide */ public Date getKeyValidityForConsumptionEnd() { return mKeyValidityForConsumptionEnd; @@ -129,8 +126,6 @@ public final class KeyStoreParameter implements ProtectionParameter { * Gets the time instant after which the key is no long valid for encryption and signing. * * @return instant or {@code null} if not restricted. - * - * @hide */ public Date getKeyValidityForOriginationEnd() { return mKeyValidityForOriginationEnd; @@ -138,8 +133,6 @@ public final class KeyStoreParameter implements ProtectionParameter { /** * Gets the set of purposes for which the key can be used. - * - * @hide */ public @KeyStoreKeyProperties.PurposeEnum int getPurposes() { return mPurposes; @@ -147,8 +140,6 @@ public final class KeyStoreParameter implements ProtectionParameter { /** * Gets the set of padding schemes with which the key can be used when encrypting/decrypting. - * - * @hide */ public String[] getEncryptionPaddings() { return ArrayUtils.cloneIfNotEmpty(mEncryptionPaddings); @@ -157,8 +148,6 @@ public final class KeyStoreParameter implements ProtectionParameter { /** * Gets the set of padding schemes with which the key can be used when signing or verifying * signatures. - * - * @hide */ public String[] getSignaturePaddings() { return ArrayUtils.cloneIfNotEmpty(mSignaturePaddings); @@ -170,8 +159,6 @@ public final class KeyStoreParameter implements ProtectionParameter { * @throws IllegalStateException if this set has not been specified. * * @see #isDigestsSpecified() - * - * @hide */ public String[] getDigests() { if (mDigests == null) { @@ -185,8 +172,6 @@ public final class KeyStoreParameter implements ProtectionParameter { * specified. * * @see #getDigests() - * - * @hide */ public boolean isDigestsSpecified() { return mDigests != null; @@ -194,8 +179,6 @@ public final class KeyStoreParameter implements ProtectionParameter { /** * Gets the set of block modes with which the key can be used. - * - * @hide */ public String[] getBlockModes() { return ArrayUtils.cloneIfNotEmpty(mBlockModes); @@ -209,8 +192,6 @@ public final class KeyStoreParameter implements ProtectionParameter { * weaknesses due to which ciphertext may leak information about plaintext. For example, if a * given plaintext always produces the same ciphertext, an attacker may see the repeated * ciphertexts and be able to deduce something about the plaintext. - * - * @hide */ public boolean isRandomizedEncryptionRequired() { return mRandomizedEncryptionRequired; @@ -221,8 +202,6 @@ public final class KeyStoreParameter implements ProtectionParameter { * used iff the user has authenticated to at least one of these user authenticators. * * @return user authenticators or {@code 0} if the key can be used without user authentication. - * - * @hide */ public @KeyStoreKeyProperties.UserAuthenticatorEnum int getUserAuthenticators() { return mUserAuthenticators; @@ -234,8 +213,6 @@ public final class KeyStoreParameter implements ProtectionParameter { * * @return duration in seconds or {@code -1} if not restricted. {@code 0} means authentication * is required for every use of the key. - * - * @hide */ public int getUserAuthenticationValidityDurationSeconds() { return mUserAuthenticationValidityDurationSeconds; @@ -247,8 +224,6 @@ public final class KeyStoreParameter implements ProtectionParameter { * authenticators protecting access to this key. * * @see #getUserAuthenticators() - * - * @hide */ public boolean isInvalidatedOnNewFingerprintEnrolled() { return mInvalidatedOnNewFingerprintEnrolled; @@ -321,8 +296,6 @@ public final class KeyStoreParameter implements ProtectionParameter { *

    By default, the key is valid at any instant. * * @see #setKeyValidityEnd(Date) - * - * @hide */ public Builder setKeyValidityStart(Date startDate) { mKeyValidityStart = startDate; @@ -337,8 +310,6 @@ public final class KeyStoreParameter implements ProtectionParameter { * @see #setKeyValidityStart(Date) * @see #setKeyValidityForConsumptionEnd(Date) * @see #setKeyValidityForOriginationEnd(Date) - * - * @hide */ public Builder setKeyValidityEnd(Date endDate) { setKeyValidityForOriginationEnd(endDate); @@ -352,8 +323,6 @@ public final class KeyStoreParameter implements ProtectionParameter { *

    By default, the key is valid at any instant. * * @see #setKeyValidityForConsumptionEnd(Date) - * - * @hide */ public Builder setKeyValidityForOriginationEnd(Date endDate) { mKeyValidityForOriginationEnd = endDate; @@ -367,8 +336,6 @@ public final class KeyStoreParameter implements ProtectionParameter { *

    By default, the key is valid at any instant. * * @see #setKeyValidityForOriginationEnd(Date) - * - * @hide */ public Builder setKeyValidityForConsumptionEnd(Date endDate) { mKeyValidityForConsumptionEnd = endDate; @@ -379,8 +346,6 @@ public final class KeyStoreParameter implements ProtectionParameter { * Sets the set of purposes for which the key can be used. * *

    This must be specified for all keys. There is no default. - * - * @hide */ public Builder setPurposes(@KeyStoreKeyProperties.PurposeEnum int purposes) { mPurposes = purposes; @@ -393,8 +358,6 @@ public final class KeyStoreParameter implements ProtectionParameter { * rejected. * *

    This must be specified for keys which are used for encryption/decryption. - * - * @hide */ public Builder setEncryptionPaddings(String... paddings) { mEncryptionPaddings = ArrayUtils.cloneIfNotEmpty(paddings); @@ -407,8 +370,6 @@ public final class KeyStoreParameter implements ProtectionParameter { * rejected. * *

    This must be specified for RSA keys which are used for signing/verification. - * - * @hide */ public Builder setSignaturePaddings(String... paddings) { mSignaturePaddings = ArrayUtils.cloneIfNotEmpty(paddings); @@ -422,8 +383,6 @@ public final class KeyStoreParameter implements ProtectionParameter { * *

    For HMAC keys, the default is the digest specified in {@link Key#getAlgorithm()}. For * asymmetric signing keys this constraint must be specified. - * - * @hide */ public Builder setDigests(String... digests) { mDigests = ArrayUtils.cloneIfNotEmpty(digests); @@ -435,8 +394,6 @@ public final class KeyStoreParameter implements ProtectionParameter { * Attempts to use the key with any other block modes will be rejected. * *

    This must be specified for encryption/decryption keys. - * - * @hide */ public Builder setBlockModes(String... blockModes) { mBlockModes = ArrayUtils.cloneIfNotEmpty(blockModes); @@ -476,8 +433,6 @@ public final class KeyStoreParameter implements ProtectionParameter { *

  • If you are using RSA encryption without padding, consider switching to padding * schemes which offer {@code IND-CPA}, such as PKCS#1 or OAEP.
  • * - * - * @hide */ public Builder setRandomizedEncryptionRequired(boolean required) { mRandomizedEncryptionRequired = required; @@ -494,8 +449,6 @@ public final class KeyStoreParameter implements ProtectionParameter { * without user authentication. * * @see #setUserAuthenticationValidityDurationSeconds(int) - * - * @hide */ public Builder setUserAuthenticators( @KeyStoreKeyProperties.UserAuthenticatorEnum int userAuthenticators) { @@ -513,8 +466,6 @@ public final class KeyStoreParameter implements ProtectionParameter { * every use of the key. * * @see #setUserAuthenticators(int) - * - * @hide */ public Builder setUserAuthenticationValidityDurationSeconds(int seconds) { mUserAuthenticationValidityDurationSeconds = seconds; @@ -529,8 +480,6 @@ public final class KeyStoreParameter implements ProtectionParameter { *

    By default, enrolling a new fingerprint does not invalidate the key. * * @see #setUserAuthenticators(Set) - * - * @hide */ public Builder setInvalidatedOnNewFingerprintEnrolled(boolean invalidated) { mInvalidatedOnNewFingerprintEnrolled = invalidated; diff --git a/keystore/java/android/security/NewFingerprintEnrolledException.java b/keystore/java/android/security/NewFingerprintEnrolledException.java index 6da4a2a194001..806b214d5f44d 100644 --- a/keystore/java/android/security/NewFingerprintEnrolledException.java +++ b/keystore/java/android/security/NewFingerprintEnrolledException.java @@ -19,8 +19,6 @@ package android.security; /** * Indicates that a cryptographic operation could not be performed because the key used by the * operation is permanently invalid because a new fingerprint was enrolled. - * - * @hide */ public class NewFingerprintEnrolledException extends CryptoOperationException { diff --git a/keystore/java/android/security/UserNotAuthenticatedException.java b/keystore/java/android/security/UserNotAuthenticatedException.java index e6342ef79673d..f5f5f41d941eb 100644 --- a/keystore/java/android/security/UserNotAuthenticatedException.java +++ b/keystore/java/android/security/UserNotAuthenticatedException.java @@ -19,8 +19,6 @@ package android.security; /** * Indicates that a cryptographic operation could not be performed because the user has not been * authenticated recently enough. - * - * @hide */ public class UserNotAuthenticatedException extends CryptoOperationException {