Most visited

Recently visited

Added in API level 23

KeyInfo

public class KeyInfo
extends Object implements KeySpec

java.lang.Object
   ↳ android.security.keystore.KeyInfo


关于来自Android Keystore system的密钥的信息 本课程描述密钥材料在安全硬件外是否以纯文本形式提供,是否需要使用密钥进行用户验证,以及此要求是否由安全硬件执行,密钥的来源,授权使用的密钥的用途(例如,仅限于在GCM模式下,或仅签名),密钥是否应在休息时加密,密钥的有效期和结束日期。

这个类的实例是不可变的。

Example: Symmetric Key

The following example illustrates how to obtain a KeyInfo describing the provided Android Keystore SecretKey.
SecretKey key = ...; // Android Keystore key

 SecretKeyFactory factory = SecretKeyFactory.getInstance(key.getAlgorithm(), "AndroidKeyStore");
 KeyInfo keyInfo;
 try {
     keyInfo = (KeyInfo) factory.getKeySpec(key, KeyInfo.class);
 } catch (InvalidKeySpecException e) {
     // Not an Android KeyStore key.
 }

Example: Private Key

The following example illustrates how to obtain a KeyInfo describing the provided Android KeyStore PrivateKey.
PrivateKey key = ...; // Android KeyStore key

 KeyFactory factory = KeyFactory.getInstance(key.getAlgorithm(), "AndroidKeyStore");
 KeyInfo keyInfo;
 try {
     keyInfo = factory.getKeySpec(key, KeyInfo.class);
 } catch (InvalidKeySpecException e) {
     // Not an Android KeyStore key.
 }

Summary

Public methods

String[] getBlockModes()

获取该组块模式(例如, GCMCBC )与该密钥可以加密/解密时使用。

String[] getDigests()

获取一组摘要算法(例如, SHA-256SHA-384 )与该键可被使用。

String[] getEncryptionPaddings()

获取一组填充方案(例如, PKCS7PaddingPKCS1PaddingNoPadding )与该密钥可以加密/解密时使用。

int getKeySize()

以位为单位获取密钥的大小。

Date getKeyValidityForConsumptionEnd()

获取密钥对于解密和验证无效的时间。

Date getKeyValidityForOriginationEnd()

获取密钥对于加密和签名不再有效的时间。

Date getKeyValidityStart()

获取密钥尚未生效的时刻。

String getKeystoreAlias()

获取密钥存储在 AndroidKeyStore中的条目别名。

int getOrigin()

获取密钥的来源。

int getPurposes()

获取可以使用密钥的一组目的(例如,加密,解密,签名)。

String[] getSignaturePaddings()

获取一组填充方案(例如, PSSPKCS#1 )与该密钥可以签名/验证时使用。

int getUserAuthenticationValidityDurationSeconds()

获取用户成功通过身份验证后授权使用此密钥的持续时间(秒)。

boolean isInsideSecureHardware()

如果密钥位于安全硬件(例如,可信执行环境(TEE)或安全元件(SE))内,则返回 true

boolean isInvalidatedByBiometricEnrollment()

返回 true如果通过注册新指纹或删除所有指纹而使密钥失效。

boolean isUserAuthenticationRequired()

如果密钥仅在用户已通过身份验证时才有权使用,则返回 true

boolean isUserAuthenticationRequirementEnforcedBySecureHardware()

如果仅在用户已通过身份验证时才能使用此密钥的要求,则通过安全硬件(例如,可信执行环境(TEE)或安全元件(SE))强制执行此命令返回 true

boolean isUserAuthenticationValidWhileOnBody()

返回 true如果在将设备从用户身体上移除时该键将变得不可用。

Inherited methods

From class java.lang.Object

Public methods

getBlockModes

Added in API level 23
String[] getBlockModes ()

获取该组块模式(例如, GCMCBC )与该密钥可以加密/解密时使用。 试图在任何其他模块模式下使用密钥将被拒绝。

KeyProperties BLOCK_MODE常数。

Returns
String[]

getDigests

Added in API level 23
String[] getDigests ()

获取一组摘要算法(例如, SHA-256SHA-384 )与该键可被使用。

KeyProperties DIGEST常量。

Returns
String[]

getEncryptionPaddings

Added in API level 23
String[] getEncryptionPaddings ()

获取一组填充方案(例如, PKCS7PaddingPKCS1PaddingNoPadding )与该密钥可以加密/解密时使用。 尝试将密钥与任何其他填充方案一起使用将被拒绝。

KeyProperties ENCRYPTION_PADDING常量。

Returns
String[]

getKeySize

Added in API level 23
int getKeySize ()

以位为单位获取密钥的大小。

Returns
int

getKeyValidityForConsumptionEnd

Added in API level 23
Date getKeyValidityForConsumptionEnd ()

获取密钥对于解密和验证无效的时间。

Returns
Date instant or null if not restricted.

getKeyValidityForOriginationEnd

Added in API level 23
Date getKeyValidityForOriginationEnd ()

获取密钥对于加密和签名不再有效的时间。

Returns
Date instant or null if not restricted.

getKeyValidityStart

Added in API level 23
Date getKeyValidityStart ()

获取密钥尚未生效的时刻。

Returns
Date instant or null if not restricted.

getKeystoreAlias

Added in API level 23
String getKeystoreAlias ()

获取密钥存储在 AndroidKeyStore下的条目别名。

Returns
String

getOrigin

Added in API level 23
int getOrigin ()

获取密钥的来源。 KeyProperties ORIGIN常量。

Returns
int

getPurposes

Added in API level 23
int getPurposes ()

获取可以使用密钥的一组目的(例如,加密,解密,签名)。 试图将钥匙用于任何其他目的将被拒绝。

KeyProperties PURPOSE标志。

Returns
int

getSignaturePaddings

Added in API level 23
String[] getSignaturePaddings ()

获取一组填充方案(例如, PSSPKCS#1 )与该密钥可以签名/验证时使用。 尝试将密钥与任何其他填充方案一起使用将被拒绝。

KeyProperties SIGNATURE_PADDING常量。

Returns
String[]

getUserAuthenticationValidityDurationSeconds

Added in API level 23
int getUserAuthenticationValidityDurationSeconds ()

获取用户成功通过身份验证后授权使用此密钥的持续时间(秒)。 这仅在需要用户认证时才有效(请参阅isUserAuthenticationRequired() )。

此授权仅适用于密钥和私钥操作。 公钥操作不受限制。

Returns
int duration in seconds or -1 if authentication is required for every use of the key.

也可以看看:

isInsideSecureHardware

Added in API level 23
boolean isInsideSecureHardware ()

如果密钥位于安全硬件(例如,可信执行环境(TEE)或安全元件(SE))内,则返回true 这些密钥的关键材料仅在安全硬件内部以纯文本形式提供,并且不会暴露在其外部。

Returns
boolean

isInvalidatedByBiometricEnrollment

Added in API level 24
boolean isInvalidatedByBiometricEnrollment ()

返回 true如果通过注册新指纹或删除所有指纹来使密钥失效。

Returns
boolean

isUserAuthenticationRequired

Added in API level 23
boolean isUserAuthenticationRequired ()

如果密钥仅在用户已通过身份验证时才有权使用,则返回 true

此授权仅适用于密钥和私钥操作。 公钥操作不受限制。

Returns
boolean

也可以看看:

isUserAuthenticationRequirementEnforcedBySecureHardware

Added in API level 23
boolean isUserAuthenticationRequirementEnforcedBySecureHardware ()

如果仅在用户已通过身份验证时才能使用此密钥的要求由安全硬件(例如,可信执行环境(TEE)或安全元件(SE))执行,则返回 true

Returns
boolean

也可以看看:

isUserAuthenticationValidWhileOnBody

Added in API level 24
boolean isUserAuthenticationValidWhileOnBody ()

返回true如果在将设备从用户身体上移除时该键将变得不可用。 这仅适用于具有指定有效期的按键,并且仅适用于带有贴身传感器的设备。 在缺乏身上传感器的设备上始终返回false

Returns
boolean

Hooray!