- java.lang.Object
-
- java.security.KeyStoreSpi
-
-
构造方法摘要
构造方法 构造器 描述 KeyStoreSpi()
-
方法摘要
所有方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 abstract Enumeration<String>
engineAliases()
列出此密钥库的所有别名。abstract boolean
engineContainsAlias(String alias)
检查此密钥库中是否存在给定别名。abstract void
engineDeleteEntry(String alias)
从此密钥库中删除由给定别名标识的条目。boolean
engineEntryInstanceOf(String alias, 类<? extends KeyStore.Entry> entryClass)
确定密钥库Entry
为指定alias
是指定的一个实例或亚类entryClass
。abstract Certificate
engineGetCertificate(String alias)
返回与给定别名关联的证书。abstract String
engineGetCertificateAlias(Certificate cert)
返回其证书与给定证书匹配的第一个密钥库条目的(别名)名称。abstract Certificate[]
engineGetCertificateChain(String alias)
返回与给定别名关联的证书链。abstract Date
engineGetCreationDate(String alias)
返回给定别名标识的条目的创建日期。KeyStore.Entry
engineGetEntry(String alias, KeyStore.ProtectionParameter protParam)
获取具有指定保护参数的指定别名的KeyStore.Entry
。abstract Key
engineGetKey(String alias, char[] password)
返回与给定别名关联的键,使用给定的密码来恢复它。abstract boolean
engineIsCertificateEntry(String alias)
如果给定别名标识的条目是通过调用创建返回truesetCertificateEntry
,或者创建通过调用setEntry
与TrustedCertificateEntry
。abstract boolean
engineIsKeyEntry(String alias)
如果给定别名标识的条目是通过调用setKeyEntry
创建的,或通过调用setEntry
(PrivateKeyEntry
或SecretKeyEntry
)创建的,则返回true。abstract void
engineLoad(InputStream stream, char[] password)
从给定的输入流加载密钥库。void
engineLoad(KeyStore.LoadStoreParameter param)
使用给定的KeyStore.LoadStoreParameter
加载密钥库。boolean
engineProbe(InputStream stream)
探测指定的输入流,以确定它是否包含此实现支持的密钥库。abstract void
engineSetCertificateEntry(String alias, Certificate cert)
将给定证书分配给给定别名。void
engineSetEntry(String alias, KeyStore.Entry entry, KeyStore.ProtectionParameter protParam)
在指定的别名下保存KeyStore.Entry
。abstract void
engineSetKeyEntry(String alias, byte[] key, Certificate[] chain)
将给定的密钥(已经受到保护)分配给给定的别名。abstract void
engineSetKeyEntry(String alias, Key key, char[] password, Certificate[] chain)
将给定的密钥分配给给定的别名,并使用给定的密码对其进行保护。abstract int
engineSize()
检索此密钥库中的条目数。abstract void
engineStore(OutputStream stream, char[] password)
将此密钥库存储到给定的输出流,并使用给定的密码保护其完整性。void
engineStore(KeyStore.LoadStoreParameter param)
使用给定的KeyStore.LoadStoreParmeter
存储此密钥库。
-
-
-
方法详细信息
-
engineGetKey
public abstract Key engineGetKey(String alias, char[] password) throws NoSuchAlgorithmException, UnrecoverableKeyException
返回与给定别名关联的键,使用给定的密码来恢复它。 密钥必须通过致电setKeyEntry
或通过致电setEntry
(PrivateKeyEntry
或SecretKeyEntry
与别名相关联。- 参数
-
alias
- 别名 -
password
- 恢复密钥的密码 - 结果
- 请求的密钥,如果给定的别名不存在或者未标识与密钥相关的条目,则返回null。
- 异常
-
NoSuchAlgorithmException
- 如果找不到恢复密钥的算法 -
UnrecoverableKeyException
- 如果密钥无法恢复(例如,给定的密码错误)。
-
engineGetCertificateChain
public abstract Certificate[] engineGetCertificateChain(String alias)
返回与给定别名关联的证书链。 证书链必须已经通过调用别名关联到setKeyEntry
,或者通过将呼叫setEntry
具有PrivateKeyEntry
。- 参数
-
alias
- 别名 - 结果
- 证书链(首先按用户证书排序,最后根证书颁发机构排序),如果给定别名不存在或不包含证书链,则为null
-
engineGetCertificate
public abstract Certificate engineGetCertificate(String alias)
返回与给定别名关联的证书。如果给定的别名标识通过调用
setCertificateEntry
创建的条目,或通过调用setEntry
并使用TrustedCertificateEntry
创建的条目,则返回该条目中包含的可信证书。如果给定的别名标识通过调用
setKeyEntry
创建的条目,或通过调用setEntry
创建的setKeyEntry
创建的PrivateKeyEntry
,则返回该条目中证书链的第一个元素(如果存在链)。- 参数
-
alias
- 别名 - 结果
- 证书,如果给定的别名不存在或不包含证书,则为null。
-
engineGetCreationDate
public abstract Date engineGetCreationDate(String alias)
返回给定别名标识的条目的创建日期。- 参数
-
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
创建的现有条目,或通过调用setEntry
并使用TrustedCertificateEntry
,则现有条目中的可信证书将被给定证书覆盖。- 参数
-
alias
- 别名 -
cert
- 证书 - 异常
-
KeyStoreException
- 如果给定别名已存在且未标识包含受信任证书的条目,或此操作由于某些其他原因而失败。
-
engineDeleteEntry
public abstract void engineDeleteEntry(String alias) throws KeyStoreException
从此密钥库中删除由给定别名标识的条目。- 参数
-
alias
- 别名 - 异常
-
KeyStoreException
- 如果无法删除条目。
-
engineAliases
public abstract Enumeration<String> engineAliases()
列出此密钥库的所有别名。- 结果
- 枚举别名
-
engineContainsAlias
public abstract boolean engineContainsAlias(String alias)
检查此密钥库中是否存在给定别名。- 参数
-
alias
- 别名 - 结果
- 如果别名存在,则返回true,否则返回false
-
engineSize
public abstract int engineSize()
检索此密钥库中的条目数。- 结果
- 此密钥库中的条目数
-
engineIsKeyEntry
public abstract boolean engineIsKeyEntry(String alias)
如果给定别名标识的条目是通过调用setKeyEntry
创建的,或通过调用setEntry
(PrivateKeyEntry
或SecretKeyEntry
)创建的,则返回true。- 参数
-
alias
- 要检查的密钥库条目的别名 - 结果
- 如果给定别名标识的条目与密钥相关,则为true,否则为false。
-
engineIsCertificateEntry
public abstract boolean engineIsCertificateEntry(String alias)
如果给定别名标识的条目是通过调用setCertificateEntry
创建的,或者通过调用setEntry
并使用TrustedCertificateEntry
创建的,则返回true。- 参数
-
alias
- 要检查的密钥库条目的别名 - 结果
- 如果给定别名标识的条目包含受信任证书,则为true,否则为false。
-
engineGetCertificateAlias
public abstract String engineGetCertificateAlias(Certificate cert)
返回其证书与给定证书匹配的第一个密钥库条目的(别名)名称。此方法尝试将给定证书与每个密钥库条目进行匹配。 如果正在考虑的条目是通过调用
setCertificateEntry
创建的,或者是通过调用setEntry
并使用TrustedCertificateEntry
,则将给定证书与该条目的证书进行比较。如果正在考虑的条目是通过调用
setKeyEntry
创建的,或者是通过调用setEntry
并使用PrivateKeyEntry
,则将给定证书与该条目的证书链的第一个元素进行比较。- 参数
-
cert
-cert
匹配的证书。 - 结果
- 具有匹配证书的第一个条目的别名,如果此密钥库中不存在此类条目,则为null。
-
engineStore
public abstract void engineStore(OutputStream stream, char[] password) throws IOException, NoSuchAlgorithmException, CertificateException
将此密钥库存储到给定的输出流,并使用给定的密码保护其完整性。- 参数
-
stream
- 写入此密钥库的输出流。 -
password
- 生成密钥库完整性检查的密码 - 异常
-
IOException
- 如果数据存在I / O问题 -
NoSuchAlgorithmException
- 如果NoSuchAlgorithmException
合适的数据完整性算法 -
CertificateException
- 如果无法存储密钥库数据中包含的任何证书
-
engineStore
public void engineStore(KeyStore.LoadStoreParameter param) throws IOException, NoSuchAlgorithmException, CertificateException
使用给定的KeyStore.LoadStoreParmeter
存储此密钥库。- 参数
-
param
-KeyStore.LoadStoreParmeter
,指定如何存储密钥库,可能是null
- 异常
-
IllegalArgumentException
- 如果无法识别给定的KeyStore.LoadStoreParmeter
输入 -
IOException
- 如果数据存在I / O问题 -
NoSuchAlgorithmException
- 如果NoSuchAlgorithmException
合适的数据完整性算法 -
CertificateException
- 如果无法存储密钥库数据中包含的任何证书 - 从以下版本开始:
- 1.5
-
engineLoad
public abstract void engineLoad(InputStream stream, char[] password) throws IOException, NoSuchAlgorithmException, CertificateException
从给定的输入流加载密钥库。可以给出密码以解锁密钥库(例如,密钥库驻留在硬件令牌设备上),或者检查密钥库数据的完整性。 如果没有给出完整性检查的密码,则不执行完整性检查。
- 参数
-
stream
- 加载密钥库的输入流,或null
-
password
- 用于检查密钥库完整性的密码,用于解锁密钥库的密码或null
- 异常
-
IOException
- 如果密钥库数据存在I / O或格式问题,如果需要密码但未给出密码,或者给定的密码不正确。 如果错误是由于密码错误引起的, IOException的IOException
应该是UnrecoverableKeyException
-
NoSuchAlgorithmException
- 如果无法找到用于检查密钥库完整性的算法 -
CertificateException
- 如果无法加载密钥库中的任何证书
-
engineLoad
public void engineLoad(KeyStore.LoadStoreParameter param) throws IOException, NoSuchAlgorithmException, CertificateException
使用给定的KeyStore.LoadStoreParameter
加载密钥库。请注意,如果已加载此KeyStore,则会重新初始化它并从给定参数再次加载。
- 实现要求:
-
默认实现检查
KeyStore.LoadStoreParameter
以提取其密码并将其传递给engineLoad(InputStream, char[])
以及null
InputStream
。如果
KeyStore.LoadStoreParameter
是null
那么password参数也将是null
。 否则,KeyStore.ProtectionParameter
的KeyStore.LoadStoreParameter
必须是KeyStore.PasswordProtection
或KeyStore.CallbackHandlerProtection
,它们支持PasswordCallback
以便可以解压缩密码参数。 如果KeyStore.ProtectionParameter
不是那些类,则抛出NoSuchAlgorithmException
。 - 参数
-
param
-的KeyStore.LoadStoreParameter
,它指定如何加载密钥库,其可以是null
- 异常
-
IllegalArgumentException
- 如果无法识别给定的KeyStore.LoadStoreParameter
输入 -
IOException
- 如果密钥库数据存在I / O或格式问题。 如果错误是由于ProtectionParameter
错误(例如密码错误) IOException的IOException
应该是UnrecoverableKeyException
-
NoSuchAlgorithmException
- 如果无法找到用于检查密钥库完整性的算法 -
CertificateException
- 如果无法加载密钥库中的任何证书 - 从以下版本开始:
- 1.5
-
engineGetEntry
public KeyStore.Entry engineGetEntry(String alias, KeyStore.ProtectionParameter protParam) throws KeyStoreException, NoSuchAlgorithmException, UnrecoverableEntryException
获取具有指定保护参数的指定别名的KeyStore.Entry
。- 参数
-
alias
- 获取此别名的KeyStore.Entry
-
protParam
-将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
-Entry
保存 -
protParam
-将ProtectionParameter
用来保护Entry
,这可能是null
- 异常
-
KeyStoreException
- 如果此操作失败 - 从以下版本开始:
- 1.5
-
engineEntryInstanceOf
public boolean engineEntryInstanceOf(String alias, 类<? extends KeyStore.Entry> entryClass)
确定密钥库Entry
为指定alias
是指定的一个实例或亚类entryClass
。- 参数
-
alias
- 别名 -
entryClass
- 入门级 - 结果
-
如果指定的
alias
的密钥库Entry
是指定的alias
的实例或子类,则entryClass
true,否则entryClass
false - 从以下版本开始:
- 1.5
-
engineProbe
public boolean engineProbe(InputStream stream) throws IOException
探测指定的输入流,以确定它是否包含此实现支持的密钥库。- 实现要求:
- 默认情况下,此方法返回false。 密钥库实现应覆盖此方法以直接查看数据流或使用其他内容检测机制。
- 参数
-
stream
- 要探测的密钥库数据 - 结果
- 如果支持密钥库数据,则为true,否则为false
- 异常
-
IOException
- 如果密钥库数据存在I / O问题。 -
NullPointerException
- 如果流是null
。 - 从以下版本开始:
- 9
-
-