KeyStore 类。此类中的所有抽象方法必须由每个希望为特定密钥库类型提供密钥库实现的密码服务提供者来实现。
- 自从:
- 1.2
- 参见:
-
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述abstract Enumeration<String>列出此密钥库的所有别名。abstract booleanengineContainsAlias(String alias) 检查此密钥库中是否存在给定的别名。abstract voidengineDeleteEntry(String alias) 从此密钥库中删除由给定别名标识的条目。booleanengineEntryInstanceOf(String alias, Class<? extends KeyStore.Entry> entryClass) 确定指定alias的密钥库Entry是否是指定entryClass的实例或子类。engineGetAttributes(String alias) 检索与给定别名关联的属性。abstract CertificateengineGetCertificate(String alias) 返回与给定别名关联的证书。abstract String返回其证书与给定证书匹配的第一个密钥库条目的(别名)名称。abstract Certificate[]engineGetCertificateChain(String alias) 返回与给定别名关联的证书链。abstract DateengineGetCreationDate(String alias) 返回由给定别名标识的条目的创建日期。engineGetEntry(String alias, KeyStore.ProtectionParameter protParam) 为具有指定保护参数的指定别名获取KeyStore.Entry。abstract KeyengineGetKey(String alias, char[] password) 返回与给定别名关联的密钥,使用给定密码恢复它。abstract booleanengineIsCertificateEntry(String alias) 如果给定别名标识的条目是通过调用setCertificateEntry创建的,或者是通过调用setEntry和TrustedCertificateEntry创建的,则返回true。abstract booleanengineIsKeyEntry(String alias) 如果由给定别名标识的条目是通过调用setKeyEntry创建的,或者是通过使用PrivateKeyEntry或SecretKeyEntry调用setEntry创建的,则返回true。abstract voidengineLoad(InputStream stream, char[] password) 从给定的输入流加载密钥库。void使用给定的KeyStore.LoadStoreParameter加载密钥库。booleanengineProbe(InputStream stream) 探测指定的输入流以确定它是否包含此实现支持的密钥库。abstract voidengineSetCertificateEntry(String alias, Certificate cert) 将给定的证书分配给给定的别名。voidengineSetEntry(String alias, KeyStore.Entry entry, KeyStore.ProtectionParameter protParam) 在指定的别名下保存一个KeyStore.Entry。abstract voidengineSetKeyEntry(String alias, byte[] key, Certificate[] chain) 将给定的密钥(已经受到保护)分配给给定的别名。abstract voidengineSetKeyEntry(String alias, Key key, char[] password, Certificate[] chain) 将给定的密钥分配给给定的别名,用给定的密码保护它。abstract int检索此密钥库中的条目数。abstract voidengineStore(OutputStream stream, char[] password) 将此密钥库存储到给定的输出流,并使用给定的密码保护其完整性。void使用给定的KeyStore.LoadStoreParameter存储此密钥库。
-
构造方法详细信息
-
KeyStoreSpi
public KeyStoreSpi()子类调用的构造方法。
-
-
方法详情
-
engineGetKey
public abstract Key engineGetKey(String alias, char[] password) throws NoSuchAlgorithmException , UnrecoverableKeyException 返回与给定别名关联的密钥,使用给定密码恢复它。密钥必须已通过调用setKeyEntry或使用PrivateKeyEntry或SecretKeyEntry调用setEntry与别名相关联。- 参数:
alias- 别名password- 恢复密钥的密码- 返回:
-
请求的密钥,或
null如果给定的别名不存在或未标识与密钥相关的条目。 - 抛出:
NoSuchAlgorithmException- 如果找不到恢复密钥的算法UnrecoverableKeyException- 如果密钥无法恢复(例如,给定的密码错误)。
-
engineGetCertificateChain
返回与给定别名关联的证书链。证书链必须已通过调用setKeyEntry或使用PrivateKeyEntry调用setEntry与别名相关联。- 参数:
alias- 别名- 返回:
-
证书链(首先是用户证书,最后是根证书颁发机构),或者
null如果给定的别名 * 不存在或不包含证书链
-
engineGetCertificate
返回与给定别名关联的证书。如果给定的别名标识了通过调用
setCertificateEntry创建的条目,或者通过使用TrustedCertificateEntry调用setEntry创建的条目,则返回该条目中包含的可信证书。如果给定的别名标识通过调用
setKeyEntry创建的条目,或通过使用PrivateKeyEntry调用setEntry创建的条目,则返回该条目中证书链的第一个元素(如果链存在)。- 参数:
alias- 别名- 返回:
-
证书,或者
null如果给定的别名不存在或不包含证书。
-
engineGetCreationDate
返回由给定别名标识的条目的创建日期。- 参数:
alias- 别名- 返回:
-
此条目的创建日期,如果给定的别名不存在,则为
null
-
engineSetKeyEntry
public abstract void engineSetKeyEntry(String alias, Key key, char[] password, Certificate [] chain) throws KeyStoreException 将给定的密钥分配给给定的别名,用给定的密码保护它。如果给定密钥的类型为
java.security.PrivateKey,则它必须附有证明相应公钥的证书链。如果给定的别名已经存在,则与其关联的密钥库信息将被给定的密钥(可能还有证书链)重写。
- 参数:
alias- 别名key- 与别名关联的键password- 保护密钥的密码chain- 相应公钥的证书链(仅当给定密钥的类型为java.security.PrivateKey时才需要)。- 抛出:
KeyStoreException- 如果无法保护给定的密钥,或者由于其他原因此操作失败
-
engineSetKeyEntry
public abstract void engineSetKeyEntry(String alias, byte[] key, Certificate [] chain) throws KeyStoreException 将给定的密钥(已经受到保护)分配给给定的别名。如果受保护密钥的类型为
java.security.PrivateKey,则它必须附有证明相应公钥的证书链。如果给定的别名已经存在,则与其关联的密钥库信息将被给定的密钥(可能还有证书链)重写。
- 参数:
alias- 别名key- 与别名关联的密钥(受保护格式)chain- 相应公钥的证书链(仅当受保护密钥的类型为java.security.PrivateKey时才有用)。- 抛出:
KeyStoreException- 如果此操作失败。
-
engineSetCertificateEntry
public abstract void engineSetCertificateEntry(String alias, Certificate cert) throws KeyStoreException 将给定的证书分配给给定的别名。如果给定的别名标识了通过调用
setCertificateEntry创建的现有条目,或者通过使用TrustedCertificateEntry调用setEntry创建的现有条目,则现有条目中的受信任证书将被给定证书覆盖。- 参数:
alias- 别名cert- 证书- 抛出:
KeyStoreException- 如果给定的别名已经存在并且没有标识包含受信任证书的条目,或者由于其他原因此操作失败。
-
engineDeleteEntry
从此密钥库中删除由给定别名标识的条目。- 参数:
alias- 别名- 抛出:
KeyStoreException- 如果条目无法删除。
-
engineAliases
列出此密钥库的所有别名。- 返回:
- 别名的枚举
-
engineContainsAlias
检查此密钥库中是否存在给定的别名。- 参数:
alias- 别名- 返回:
true如果别名存在,false否则
-
engineSize
public abstract int engineSize()检索此密钥库中的条目数。- 返回:
- 此密钥库中的条目数
-
engineIsKeyEntry
如果由给定别名标识的条目是通过调用setKeyEntry创建的,或者是通过使用PrivateKeyEntry或SecretKeyEntry调用setEntry创建的,则返回true。- 参数:
alias- 要检查的密钥库条目的别名- 返回:
true如果给定别名标识的条目与密钥相关,false否则。
-
engineIsCertificateEntry
如果给定别名标识的条目是通过调用setCertificateEntry创建的,或者是通过调用setEntry和TrustedCertificateEntry创建的,则返回true。- 参数:
alias- 要检查的密钥库条目的别名- 返回:
true如果给定别名标识的条目包含可信证书,false否则。
-
engineGetCertificateAlias
返回其证书与给定证书匹配的第一个密钥库条目的(别名)名称。此方法尝试将给定的证书与每个密钥库条目进行匹配。如果正在考虑的条目是通过调用
setCertificateEntry创建的,或者是通过使用TrustedCertificateEntry调用setEntry创建的,则将给定的证书与该条目的证书进行比较。如果正在考虑的条目是通过调用
setKeyEntry创建的,或者是通过使用PrivateKeyEntry调用setEntry创建的,则将给定的证书与该条目的证书链的第一个元素进行比较。- 参数:
cert- 要匹配的证书。- 返回:
-
具有匹配证书的第一个条目的别名,如果此密钥库中不存在此类条目,则为
null。
-
engineStore
public abstract void engineStore(OutputStream stream, char[] password) throws IOException , NoSuchAlgorithmException , CertificateException 将此密钥库存储到给定的输出流,并使用给定的密码保护其完整性。- 参数:
stream- 写入此密钥库的输出流。password- 生成密钥库完整性检查的密码。如果密钥库不支持或不需要完整性检查,则可能是null。- 抛出:
IOException- 如果数据出现 I/O 问题NoSuchAlgorithmException- 如果找不到合适的数据完整性算法CertificateException- 如果无法存储密钥库数据中包含的任何证书
-
engineStore
public void engineStore(KeyStore.LoadStoreParameter param) throws IOException , NoSuchAlgorithmException , CertificateException 使用给定的KeyStore.LoadStoreParameter存储此密钥库。- 实现要求:
-
默认实现抛出一个
UnsupportedOperationException。 - 参数:
param- 指定如何存储密钥库的KeyStore.LoadStoreParameter,可能是null- 抛出:
IllegalArgumentException- 如果给定的KeyStore.LoadStoreParameter输入未被识别IOException- 如果数据出现 I/O 问题NoSuchAlgorithmException- 如果找不到合适的数据完整性算法CertificateException- 如果无法存储密钥库数据中包含的任何证书UnsupportedOperationException- 如果实现不支持这个操作- 自从:
- 1.5
-
engineLoad
public abstract void engineLoad(InputStream stream, char[] password) throws IOException , NoSuchAlgorithmException , CertificateException 从给定的输入流加载密钥库。可以给出密码来解锁密钥库(例如,密钥库驻留在硬件令牌设备上),或检查密钥库数据的完整性。如果没有为完整性检查提供密码,则不执行完整性检查。
- 参数:
stream- 从中加载密钥库的输入流,或nullpassword- 用于检查密钥库完整性的密码,用于解锁密钥库的密码,或null- 抛出:
IOException- 如果密钥库数据存在 I/O 或格式问题,如果需要密码但没有给出,或者如果给定的密码不正确。如果错误是由于密码错误,IOException的cause应该是UnrecoverableKeyExceptionNoSuchAlgorithmException- 如果找不到用于检查密钥库完整性的算法CertificateException- 如果无法加载密钥库中的任何证书
-
engineLoad
public void engineLoad(KeyStore.LoadStoreParameter param) throws IOException , NoSuchAlgorithmException , CertificateException 使用给定的KeyStore.LoadStoreParameter加载密钥库。请注意,如果此 KeyStore 已被加载,则会重新初始化并从给定参数再次加载。
- 实现要求:
-
默认实现检查
KeyStore.LoadStoreParameter以提取其密码并将其与nullInputStream一起传递给engineLoad(InputStream, char[])。如果
KeyStore.LoadStoreParameter是null那么密码参数也将是null。否则,KeyStore.LoadStoreParameter的KeyStore.ProtectionParameter必须是支持PasswordCallback的KeyStore.PasswordProtection或KeyStore.CallbackHandlerProtection才能提取密码参数。如果KeyStore.ProtectionParameter不是这些类中的任何一个,则抛出NoSuchAlgorithmException。 - 参数:
param- 指定如何加载密钥库的KeyStore.LoadStoreParameter,可能是null- 抛出:
IllegalArgumentException- 如果给定的KeyStore.LoadStoreParameter输入未被识别IOException- 如果密钥库数据存在 I/O 或格式问题。如果错误是由于ProtectionParameter不正确(例如密码错误)引起的,则IOException的cause应该是UnrecoverableKeyExceptionNoSuchAlgorithmException- 如果找不到用于检查密钥库完整性的算法CertificateException- 如果无法加载密钥库中的任何证书- 自从:
- 1.5
-
engineGetAttributes
检索与给定别名关联的属性。- 实现要求:
-
默认实现返回一个空的
Set。KeyStoreSpi支持属性的实现应该覆盖这个方法。 - 参数:
alias- 别名- 返回:
-
不可修改的
Set属性。如果给定的别名不存在或没有与别名关联的属性,则此集合为空。对于包含受保护属性的PrivateKeyEntry或SecretKeyEntry条目,该集合也可能为空。这些受保护的属性应填充到engineGetEntry(java.lang.String, java.security.KeyStore.ProtectionParameter)返回的结果中,并且可以通过调用KeyStore.Entry.getAttributes()方法来检索。 - 自从:
- 18
-
engineGetEntry
public KeyStore.Entry engineGetEntry(String alias, KeyStore.ProtectionParameter protParam) throws KeyStoreException , NoSuchAlgorithmException , UnrecoverableEntryException 为具有指定保护参数的指定别名获取KeyStore.Entry。- 参数:
alias- 获取此别名的KeyStore.EntryprotParam-ProtectionParameter用于保护Entry,可能是null- 返回:
-
指定别名的
KeyStore.Entry,如果没有这样的条目,则为null - 抛出:
KeyStoreException- 如果操作失败NoSuchAlgorithmException- 如果找不到用于恢复条目的算法UnrecoverableEntryException- 如果指定的protParam不足或无效UnrecoverableKeyException- 如果条目是PrivateKeyEntry或SecretKeyEntry并且指定的protParam不包含恢复密钥所需的信息(例如错误的密码)- 自从:
- 1.5
-
engineSetEntry
public void engineSetEntry(String alias, KeyStore.Entry entry, KeyStore.ProtectionParameter protParam) throws KeyStoreException 在指定的别名下保存一个KeyStore.Entry。指定的保护参数用于保护Entry。如果指定别名的条目已存在,则将其重写。
- 参数:
alias- 将KeyStore.Entry保存在此别名下entry- 要保存的EntryprotParam-ProtectionParameter用于保护Entry,可能是null- 抛出:
KeyStoreException- 如果此操作失败- 自从:
- 1.5
-
engineEntryInstanceOf
确定指定alias的密钥库Entry是否是指定entryClass的实例或子类。- 参数:
alias- 别名entryClass- 入门级- 返回:
true如果指定alias的密钥库Entry是指定entryClass的实例或子类,否则为 false- 自从:
- 1.5
-
engineProbe
探测指定的输入流以确定它是否包含此实现支持的密钥库。- 实现要求:
-
此方法默认返回
false。 Keystore 实现应该覆盖此方法以直接查看数据流或使用其他内容检测机制。 - 参数:
stream- 要探测的密钥库数据- 返回:
true如果支持密钥库数据,否则false- 抛出:
IOException- 如果密钥库数据存在 I/O 问题。NullPointerException- 如果流是null。- 自从:
- 9
-