public class KeyInfo
extends Object
implements KeySpec
java.lang.Object | |
↳ | android.security.keystore.KeyInfo |
关于来自Android Keystore system的密钥的信息 。 本课程描述密钥材料在安全硬件外是否以纯文本形式提供,是否需要使用密钥进行用户验证,以及此要求是否由安全硬件执行,密钥的来源,授权使用的密钥的用途(例如,仅限于在GCM
模式下,或仅签名),密钥是否应在休息时加密,密钥的有效期和结束日期。
这个类的实例是不可变的。
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.
}
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.
}
Public methods |
|
---|---|
String[] |
getBlockModes() 获取该组块模式(例如, |
String[] |
getDigests() 获取一组摘要算法(例如, |
String[] |
getEncryptionPaddings() 获取一组填充方案(例如, |
int |
getKeySize() 以位为单位获取密钥的大小。 |
Date |
getKeyValidityForConsumptionEnd() 获取密钥对于解密和验证无效的时间。 |
Date |
getKeyValidityForOriginationEnd() 获取密钥对于加密和签名不再有效的时间。 |
Date |
getKeyValidityStart() 获取密钥尚未生效的时刻。 |
String |
getKeystoreAlias() 获取密钥存储在 |
int |
getOrigin() 获取密钥的来源。 |
int |
getPurposes() 获取可以使用密钥的一组目的(例如,加密,解密,签名)。 |
String[] |
getSignaturePaddings() 获取一组填充方案(例如, |
int |
getUserAuthenticationValidityDurationSeconds() 获取用户成功通过身份验证后授权使用此密钥的持续时间(秒)。 |
boolean |
isInsideSecureHardware() 如果密钥位于安全硬件(例如,可信执行环境(TEE)或安全元件(SE))内,则返回 |
boolean |
isInvalidatedByBiometricEnrollment() 返回 |
boolean |
isUserAuthenticationRequired() 如果密钥仅在用户已通过身份验证时才有权使用,则返回 |
boolean |
isUserAuthenticationRequirementEnforcedBySecureHardware() 如果仅在用户已通过身份验证时才能使用此密钥的要求,则通过安全硬件(例如,可信执行环境(TEE)或安全元件(SE))强制执行此命令返回 |
boolean |
isUserAuthenticationValidWhileOnBody() 返回 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
String[] getBlockModes ()
获取该组块模式(例如, GCM
, CBC
)与该密钥可以加密/解密时使用。 试图在任何其他模块模式下使用密钥将被拒绝。
见KeyProperties
。 BLOCK_MODE
常数。
Returns | |
---|---|
String[] |
String[] getDigests ()
获取一组摘要算法(例如, SHA-256
, SHA-384
)与该键可被使用。
见KeyProperties
。 DIGEST
常量。
Returns | |
---|---|
String[] |
String[] getEncryptionPaddings ()
获取一组填充方案(例如, PKCS7Padding
, PKCS1Padding
, NoPadding
)与该密钥可以加密/解密时使用。 尝试将密钥与任何其他填充方案一起使用将被拒绝。
见KeyProperties
。 ENCRYPTION_PADDING
常量。
Returns | |
---|---|
String[] |
Date getKeyValidityForConsumptionEnd ()
获取密钥对于解密和验证无效的时间。
Returns | |
---|---|
Date |
instant or null if not restricted. |
Date getKeyValidityForOriginationEnd ()
获取密钥对于加密和签名不再有效的时间。
Returns | |
---|---|
Date |
instant or null if not restricted. |
Date getKeyValidityStart ()
获取密钥尚未生效的时刻。
Returns | |
---|---|
Date |
instant or null if not restricted. |
String getKeystoreAlias ()
获取密钥存储在 AndroidKeyStore
下的条目别名。
Returns | |
---|---|
String |
int getPurposes ()
获取可以使用密钥的一组目的(例如,加密,解密,签名)。 试图将钥匙用于任何其他目的将被拒绝。
见KeyProperties
。 PURPOSE
标志。
Returns | |
---|---|
int |
String[] getSignaturePaddings ()
获取一组填充方案(例如, PSS
, PKCS#1
)与该密钥可以签名/验证时使用。 尝试将密钥与任何其他填充方案一起使用将被拒绝。
见KeyProperties
。 SIGNATURE_PADDING
常量。
Returns | |
---|---|
String[] |
int getUserAuthenticationValidityDurationSeconds ()
获取用户成功通过身份验证后授权使用此密钥的持续时间(秒)。 这仅在需要用户认证时才有效(请参阅isUserAuthenticationRequired()
)。
此授权仅适用于密钥和私钥操作。 公钥操作不受限制。
Returns | |
---|---|
int |
duration in seconds or -1 if authentication is required for every use of the key. |
boolean isInsideSecureHardware ()
如果密钥位于安全硬件(例如,可信执行环境(TEE)或安全元件(SE))内,则返回true
。 这些密钥的关键材料仅在安全硬件内部以纯文本形式提供,并且不会暴露在其外部。
Returns | |
---|---|
boolean |
boolean isInvalidatedByBiometricEnrollment ()
返回 true
如果通过注册新指纹或删除所有指纹来使密钥失效。
Returns | |
---|---|
boolean |
boolean isUserAuthenticationRequired ()
如果密钥仅在用户已通过身份验证时才有权使用,则返回 true
。
此授权仅适用于密钥和私钥操作。 公钥操作不受限制。
Returns | |
---|---|
boolean |
boolean isUserAuthenticationRequirementEnforcedBySecureHardware ()
如果仅在用户已通过身份验证时才能使用此密钥的要求由安全硬件(例如,可信执行环境(TEE)或安全元件(SE))执行,则返回 true
。
Returns | |
---|---|
boolean |
boolean isUserAuthenticationValidWhileOnBody ()
返回true
如果在将设备从用户身体上移除时该键将变得不可用。 这仅适用于具有指定有效期的按键,并且仅适用于带有贴身传感器的设备。 在缺乏身上传感器的设备上始终返回false
。
Returns | |
---|---|
boolean |