java.security

接口
异常
java.lang.Object
  继承者 java.security.KeyStoreSpi

public abstract class KeyStoreSpi
     
extends Object

此类为 KeyStore 类定义服务提供者接口 (SPI)。希望提供特定 keystore 类型的 keystore 实现的每个加密服务提供者必须实现此类中所有的抽象方法。

从以下版本开始:
1.2
另请参见:
KeyStore

构造方法摘要
KeyStoreSpi()
           
 
方法摘要
abstract  Enumeration<String> engineAliases()
          列出此 keystore 的所有别名。
abstract  boolean engineContainsAlias(String alias)
          检查给定别名是否存在于此 keystore 中。
abstract  void engineDeleteEntry(String alias)
          删除由此 keystore 中给定的别名标识的项。
 boolean engineEntryInstanceOf(String alias, Class<? extends KeyStore.Entry> entryClass)
          确定指定 alias 的 keystore Entry 是否是指定 entryClass 的实例或子类。
abstract  Certificate engineGetCertificate(String alias)
          返回与给定别名关联的证书。
abstract  String engineGetCertificateAlias(Certificate cert)
          返回其证书和给定证书匹配的第一个 keystore 项的名称(别名)。
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 或者调用使用 TrustedCertificateEntry 作为参数的 setEntry 来创建的,则返回 true。
abstract  boolean engineIsKeyEntry(String alias)
          如果给定别名标识的项是通过调用 setKeyEntry 或者调用使用 PrivateKeyEntrySecretKeyEntry 作为参数的 setEntry 创建的,则返回 true。
abstract  void engineLoad(InputStream stream, char[] password)
          从给定的输入流中加载此 KeyStore。
 void engineLoad(KeyStore.LoadStoreParameter param)
          使用给定的 KeyStore.LoadStoreParameter 加载该 keystore。
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()
          获取此 keystore 中项的数目。
 void engineStore(KeyStore.LoadStoreParameter param)
          使用给定的 KeyStore.LoadStoreParmeter 存储此 keystore。
abstract  void engineStore(OutputStream stream, char[] password)
          将此 keystore 存储到给定输出流中,并用给定的密码保护其完整性。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

KeyStoreSpi

public KeyStoreSpi()
方法详细信息

engineGetKey

public abstract Key engineGetKey(String alias,
                                 char[] password)
                          throws NoSuchAlgorithmException,
                                 UnrecoverableKeyException
返回与给定别名关联的密钥,使用给定密码恢复它。必须通过调用 setKeyEntry 或者调用使用 PrivateKeyEntrySecretKeyEntry 作为参数的 setEntry 将密钥与别名关联。

参数:
alias - 别名
password - 恢复密钥所用的密码
返回:
请求的密钥,如果给定别名不存在或不标识与密钥相关的项,则返回 null。
抛出:
NoSuchAlgorithmException - 如果不能找到恢复密钥的算法
UnrecoverableKeyException - 如果不能恢复密钥(例如,给定的密码错误)。

engineGetCertificateChain

public abstract Certificate[] engineGetCertificateChain(String alias)
返回与给定别名关联的证书链。必须通过调用 setKeyEntry,或者调用使用 PrivateKeyEntry 做参数的 setEntry 将密钥与别名关联。

参数:
alias - 别名
返回:
证书链(按用户证书在前根证书授权中心在后的顺序),如果给定别名不存在或不包含证书链,则返回 null

engineGetCertificate

public abstract Certificate engineGetCertificate(String alias)
返回与给定别名关联的证书。

如果给定的别名标识通过调用 setCertificateEntry 创建的项,或标识通过调用使用 TrustedCertificateEntry 参数的 setEntry 创建的项,那么返回包含在该项中的可信证书。

如果给定的别名标识通过调用 setKeyEntry 创建的项,或标识通过调用使用 PrivateKeyEntry 作为参数的 setEntry 创建的项,那么返回该项中证书链(如果存在证书链)的第一个元素。

参数:
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 类型,则它必须附带证明相应公钥的证书链。

如果给定的别名已经存在,则与别名关联的 keystore 信息被给定的密钥(可能和证书链)重写。

参数:
alias - 别名
key - 要与别名关联的密钥
password - 保护密钥的密码
chain - 相应公钥的证书链(只在给定密钥的类型为 java.security.PrivateKey 时需要)。
抛出:
KeyStoreException - 如果不能保护给定密钥,或此操作由于某些其他原因而失败

engineSetKeyEntry

public abstract void engineSetKeyEntry(String alias,
                                       byte[] key,
                                       Certificate[] chain)
                                throws KeyStoreException
将给定密钥(已经被保护)分配给给定别名。

如果被保护密钥的类型为 java.security.PrivateKey,则它必须附带证明相应公钥的证书链。

如果给定的别名已经存在,则与别名关联的 keystore 信息被给定的密钥(可能和证书链)重写。

参数:
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

public abstract void engineDeleteEntry(String alias)
                                throws KeyStoreException
删除由此 keystore 中给定的别名标识的项。

参数:
alias - 别名
抛出:
KeyStoreException - 如果该项不能被移除

engineAliases

public abstract Enumeration<String> engineAliases()
列出此 keystore 的所有别名。

返回:
别名的枚举

engineContainsAlias

public abstract boolean engineContainsAlias(String alias)
检查给定别名是否存在于此 keystore 中。

参数:
alias - 别名
返回:
如果别名存在,则返回 true;否则,返回 false

engineSize

public abstract int engineSize()
获取此 keystore 中项的数目。

返回:
此 keystore 中的项的数目

engineIsKeyEntry

public abstract boolean engineIsKeyEntry(String alias)
如果给定别名标识的项是通过调用 setKeyEntry 或者调用使用 PrivateKeyEntrySecretKeyEntry 作为参数的 setEntry 创建的,则返回 true。

参数:
alias - 要检查的 keystore 项的别名
返回:
如果给定别名标识的项与密钥相关,则返回 true;否则返回 false。

engineIsCertificateEntry

public abstract boolean engineIsCertificateEntry(String alias)
如果给定别名标识的项是通过调用 setCertificateEntry 或者调用使用 TrustedCertificateEntry 作为参数的 setEntry 来创建的,则返回 true。

参数:
alias - 要检查的 keystore 项的别名
返回:
如果给定别名标识的项包含一个可信证书,则返回 true;否则,返回 false。

engineGetCertificateAlias

public abstract String engineGetCertificateAlias(Certificate cert)
返回其证书和给定证书匹配的第一个 keystore 项的名称(别名)。

此方法试图将给定证书与每一个 keystore 项相匹配。如果将被考虑的项是通过调用 setCertificateEntry 或者调用使用 TrustedCertificateEntry 作为参数的 setEntry 创建的,则将给定证书与该项的证书进行比较。

如果将被考虑的项是通过调用 setKeyEntry 或者调用使用 PrivateKeyEntry 作为参数的 setEntry 创建的,则将给定证书与该项证书链的第一个元素进行比较。

参数:
cert - 要匹配的证书
返回:
带有匹配证书的第一个项的别名;如果在此 keystore 中没有此类项存在,则返回 null。

engineStore

public abstract void engineStore(OutputStream stream,
                                 char[] password)
                          throws IOException,
                                 NoSuchAlgorithmException,
                                 CertificateException
将此 keystore 存储到给定输出流中,并用给定的密码保护其完整性。

参数:
stream - 要写入此 keystore 的输出流。
password - 生成 keystore 完整性检验的密码
抛出:
IOException - 如果存在数据的 I/O 问题
NoSuchAlgorithmException - 如果不能找到恰当的数据完整性算法
CertificateException - 如果包含在 keystore 数据中的任何证书不能被存储

engineStore

public void engineStore(KeyStore.LoadStoreParameter param)
                 throws IOException,
                        NoSuchAlgorithmException,
                        CertificateException
使用给定的 KeyStore.LoadStoreParmeter 存储此 keystore。

参数:
param - 指出存储 keystore 的方式的 KeyStore.LoadStoreParmeter,可以为 null
抛出:
IllegalArgumentException - 如果给定的 KeyStore.LoadStoreParmeter 输入无法识别
IOException - 如果存在数据 I/O 问题
NoSuchAlgorithmException - 如果不能找到恰当的数据完整性算法
CertificateException - 如果 keystore 数据中的任何证书不能被存储
从以下版本开始:
1.5

engineLoad

public abstract void engineLoad(InputStream stream,
                                char[] password)
                         throws IOException,
                                NoSuchAlgorithmException,
                                CertificateException
从给定的输入流中加载此 KeyStore。

可能给出密码来解锁 keystore(例如驻留在硬件标记设备上的 keystore)或检验 keystore 数据的完整性。如果没有给出用于完整性检验的密码,那么就不会执行完整性检验。

参数:
stream - 从其加载 keystore 的输入流,或 null
password - 用来检验 keystore 完整性的密码,用来解锁 keystore 的密码,或 null
抛出:
IOException - 如果存在 keystore 数据的 I/O 或格式问题,如果需要密码却没有给出,或者给出的密码错误。如果错误是由于密码错误,则 IOExceptioncause 应该是一个 UnrecoverableKeyException
NoSuchAlgorithmException - 如果不能找到用来检验 keystore 完整性的算法
CertificateException - 如果不能加载 keystore 中的任何证书

engineLoad

public void engineLoad(KeyStore.LoadStoreParameter param)
                throws IOException,
                       NoSuchAlgorithmException,
                       CertificateException
使用给定的 KeyStore.LoadStoreParameter 加载该 keystore。

注意,如果此 KeyStore 已经被加载,则它将再次从给定参数中被初始化和加载。

参数:
param - 指出加载 keystore 的方式的 KeyStore.LoadStoreParameter,可以为 null
抛出:
IllegalArgumentException - 如果给定的 KeyStore.LoadStoreParameter 输入无法识别
IOException - 如果存在 keystore 数据的 I/O 或格式问题。如果错误是由于 ProtectionParameter 不正确(如密码错误),则 IOExceptioncause 应该是一个 UnrecoverableKeyException
NoSuchAlgorithmException - 如果不能找到用来检验 keystore 完整性的算法
CertificateException - 如果不能加载 keystore 中的任何证书
从以下版本开始:
1.5

engineGetEntry

public KeyStore.Entry engineGetEntry(String alias,
                                     KeyStore.ProtectionParameter protParam)
                              throws KeyStoreException,
                                     NoSuchAlgorithmException,
                                     UnrecoverableEntryException
使用指定保护参数获取指定别名的 KeyStore.Entry

参数:
alias - 获取此别名的 KeyStore.Entry
protParam - 用来保护 EntryProtectionParameter,可以为 null
返回:
指定别名的 KeyStore.Entry;如果不存在这样的项,则返回 null
抛出:
KeyStoreException - 如果操作失败
NoSuchAlgorithmException - 如果不能找到恢复项的算法
UnrecoverableEntryException - 如果指定的 protParam 不足或无效
UnrecoverableKeyException - 如果该项是 PrivateKeyEntrySecretKeyEntry 并且指定的 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 - 用来保护 EntryProtectionParameter,可以为 null
抛出:
KeyStoreException - 如果此操作失败
从以下版本开始:
1.5

engineEntryInstanceOf

public boolean engineEntryInstanceOf(String alias,
                                     Class<? extends KeyStore.Entry> entryClass)
确定指定 alias 的 keystore Entry 是否是指定 entryClass 的实例或子类。

参数:
alias - 别名
entryClass - 项的类
返回:
如果指定 alias 的 keystore Entry 是指定 entryClass 的实例或子类,则返回 true;否则返回 false。
从以下版本开始:
1.5