模块 java.base

类 KeyStoreSpi

java.lang.Object
java.security.KeyStoreSpi

public abstract class KeyStoreSpi extends Object
这个类定义了服务提供商接口 (SPIKeyStore 类。此类中的所有抽象方法必须由每个希望为特定密钥库类型提供密钥库实现的密码服务提供者来实现。
自从:
1.2
参见:
  • 构造方法详细信息

    • 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 ,则它必须附有证明相应公钥的证书链。

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

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

      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 创建的,或者是通过使用 PrivateKeyEntrySecretKeyEntry 调用 setEntry 创建的,则返回 true
      参数:
      alias - 要检查的密钥库条目的别名
      返回:
      true 如果给定别名标识的条目与密钥相关,false 否则。
    • engineIsCertificateEntry

      public abstract boolean engineIsCertificateEntry(String  alias)
      如果给定别名标识的条目是通过调用 setCertificateEntry 创建的,或者是通过调用 setEntryTrustedCertificateEntry 创建的,则返回 true
      参数:
      alias - 要检查的密钥库条目的别名
      返回:
      true 如果给定别名标识的条目包含可信证书,false 否则。
    • engineGetCertificateAlias

      public abstract String  engineGetCertificateAlias(Certificate  cert)
      返回其证书与给定证书匹配的第一个密钥库条目的(别名)名称。

      此方法尝试将给定的证书与每个密钥库条目进行匹配。如果正在考虑的条目是通过调用 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

      使用给定的 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 - 从中加载密钥库的输入流,或 null
      password - 用于检查密钥库完整性的密码,用于解锁密钥库的密码,或 null
      抛出:
      IOException - 如果密钥库数据存在 I/O 或格式问题,如果需要密码但没有给出,或者如果给定的密码不正确。如果错误是由于密码错误,IOExceptioncause 应该是UnrecoverableKeyException
      NoSuchAlgorithmException - 如果找不到用于检查密钥库完整性的算法
      CertificateException - 如果无法加载密钥库中的任何证书
    • engineLoad

      使用给定的 KeyStore.LoadStoreParameter 加载密钥库。

      请注意,如果此 KeyStore 已被加载,则会重新初始化并从给定参数再次加载。

      实现要求:
      默认实现检查 KeyStore.LoadStoreParameter 以提取其密码并将其与 null InputStream 一起传递给 engineLoad(InputStream, char[])

      如果 KeyStore.LoadStoreParameternull 那么密码参数也将是 null 。否则,KeyStore.LoadStoreParameterKeyStore.ProtectionParameter 必须是支持PasswordCallbackKeyStore.PasswordProtectionKeyStore.CallbackHandlerProtection 才能提取密码参数。如果 KeyStore.ProtectionParameter 不是这些类中的任何一个,则抛出 NoSuchAlgorithmException

      参数:
      param - 指定如何加载密钥库的 KeyStore.LoadStoreParameter,可能是 null
      抛出:
      IllegalArgumentException - 如果给定的 KeyStore.LoadStoreParameter 输入未被识别
      IOException - 如果密钥库数据存在 I/O 或格式问题。如果错误是由于ProtectionParameter不正确(例如密码错误)引起的,则IOExceptioncause 应该是UnrecoverableKeyException
      NoSuchAlgorithmException - 如果找不到用于检查密钥库完整性的算法
      CertificateException - 如果无法加载密钥库中的任何证书
      自从:
      1.5
    • engineGetAttributes

      public Set <KeyStore.Entry.Attribute > engineGetAttributes(String  alias)
      检索与给定别名关联的属性。
      实现要求:
      默认实现返回一个空的 SetKeyStoreSpi 支持属性的实现应该覆盖这个方法。
      参数:
      alias - 别名
      返回:
      不可修改的 Set 属性。如果给定的别名不存在或没有与别名关联的属性,则此集合为空。对于包含受保护属性的 PrivateKeyEntrySecretKeyEntry 条目,该集合也可能为空。这些受保护的属性应填充到 engineGetEntry(java.lang.String, java.security.KeyStore.ProtectionParameter) 返回的结果中,并且可以通过调用 KeyStore.Entry.getAttributes() 方法来检索。
      自从:
      18
    • engineGetEntry

      为具有指定保护参数的指定别名获取 KeyStore.Entry
      参数:
      alias - 获取此别名的 KeyStore.Entry
      protParam - ProtectionParameter 用于保护 Entry,可能是 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 - ProtectionParameter 用于保护 Entry,可能是 null
      抛出:
      KeyStoreException - 如果此操作失败
      自从:
      1.5
    • engineEntryInstanceOf

      public boolean engineEntryInstanceOf(String  alias, Class <? extends KeyStore.Entry > entryClass)
      确定指定 alias 的密钥库 Entry 是否是指定 entryClass 的实例或子类。
      参数:
      alias - 别名
      entryClass - 入门级
      返回:
      true 如果指定 alias 的密钥库 Entry 是指定 entryClass 的实例或子类,否则为 false
      自从:
      1.5
    • engineProbe

      public boolean engineProbe(InputStream  stream) throws IOException
      探测指定的输入流以确定它是否包含此实现支持的密钥库。
      实现要求:
      此方法默认返回 false。 Keystore 实现应该覆盖此方法以直接查看数据流或使用其他内容检测机制。
      参数:
      stream - 要探测的密钥库数据
      返回:
      true 如果支持密钥库数据,否则 false
      抛出:
      IOException - 如果密钥库数据存在 I/O 问题。
      NullPointerException - 如果流是 null
      自从:
      9