- java.lang.Object
-
- java.security.KeyStoreSpi
-
-
构造方法摘要
构造方法 Constructor 描述 KeyStoreSpi()
-
方法摘要
所有方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 abstract Enumeration<String>
engineAliases()
列出此密钥库的所有别名。abstract boolean
engineContainsAlias(String alias)
检查此密钥库中是否存在给定的别名。abstract void
engineDeleteEntry(String alias)
从此密钥库中删除由给定别名标识的条目。boolean
engineEntryInstanceOf(String alias, Class<? 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)
如果由给定别名标识的条目是通过调用setCertificateEntry
创建的,或者通过调用setEntry
与TrustedCertificateEntry
创建的条目,则返回true。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
(具有PrivateKeyEntry
创建的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
类型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)
如果给定别名标识的条目是通过调用创建返回truesetCertificateEntry
,或者创建通过调用setEntry
用TrustedCertificateEntry
。- 参数
-
alias
- 要检查的密钥库条目的别名 - 结果
- 如果给定别名标识的条目包含受信任的证书,则为true,否则为false。
-
engineGetCertificateAlias
public abstract String engineGetCertificateAlias(Certificate cert)
返回其证书与给定证书匹配的第一个密钥库条目的(别名)名称。此方法尝试将给定证书与每个密钥库条目相匹配。 如果正在考虑的条目是通过调用
setCertificateEntry
创建的,或通过调用setEntry
与TrustedCertificateEntry
,则将给定的证书与该条目的证书进行比较。如果正在考虑的条目是通过调用
setKeyEntry
创建的,或通过调用setEntry
与PrivateKeyEntry
,则将给定的证书与该条目的证书链的第一个元素进行比较。- 参数
-
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
则密码参数也null
。 否则KeyStore.ProtectionParameter
的KeyStore.LoadStoreParameter
必须是KeyStore.PasswordProtection
或支持PasswordCallback
的KeyStore.CallbackHandlerProtection
,以便可以提取密码参数。 如果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
- 如果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, Class<? extends KeyStore.Entry> entryClass)
确定密钥库Entry
为指定alias
是指定的一个实例或亚类entryClass
。- 参数
-
alias
- 别名 -
entryClass
- 入门课 - 结果
-
如果指定的
alias
的密钥库Entry
是指定的alias
的实例或子类,entryClass
true,否则为false - 从以下版本开始:
- 1.5
-
engineProbe
public boolean engineProbe(InputStream stream) throws IOException
探测指定的输入流以确定它是否包含此实现支持的密钥库。- 实现要求:
- 此方法默认返回false。 密钥库实现应该覆盖此方法直接窥视数据流或使用其他内容检测机制。
- 参数
-
stream
- 要探测的密钥库数据 - 结果
- 如果密钥库数据被支持,则为true,否则为false
- 异常
-
IOException
- 如果密钥库数据存在I / O问题。 -
NullPointerException
- 如果流是null
。 - 从以下版本开始:
- 9
-
-