Module  java.base
软件包  java.security

Class KeyStoreSpi



  • public abstract class KeyStoreSpi
    extends Object
    该类定义了KeyStore类的 ( SPI )。 该类中的所有抽象方法必须由希望提供特定密钥库类型的密钥库的实现的每个加密服务提供商来实现。
    从以下版本开始:
    1.2
    另请参见:
    KeyStore
    • 构造方法详细信息

      • KeyStoreSpi

        public KeyStoreSpi​()
    • 方法详细信息

      • engineGetKey

        public abstract Key engineGetKey​(String alias,
                                         char[] password)
                                  throws NoSuchAlgorithmException,
                                         UnrecoverableKeyException
        返回与给定别名相关联的密钥,使用给定的密码恢复它。 密钥必须已通过呼叫setKeyEntry与该别名相关联,或通过致电setEntryPrivateKeyEntrySecretKeyEntry
        参数
        alias - 别名
        password - 恢复密钥的密码
        结果
        请求的密钥,如果给定的别名不存在或不标识与密钥相关的条目,则为null。
        异常
        NoSuchAlgorithmException - 如果无法找到恢复密钥的算法
        UnrecoverableKeyException - 如果密钥无法恢复(例如,给定的密码错误)。
      • engineGetCertificateChain

        public abstract Certificate[] engineGetCertificateChain​(String alias)
        返回与给定别名关联的证书链。 证书链必须已经通过调用setKeyEntry与别名关联,或通过调用setEntryPrivateKeyEntry
        参数
        alias - 别名
        结果
        证书链(先以用户的证书和最后的根证书颁发机构排序),如果给定的别名不存在或不包含证书链,则为null
      • engineGetCertificate

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

        如果给定的别名标识了通过调用setCertificateEntry创建的条目,或通过调用setEntryTrustedCertificateEntry创建的条目,则返回该条目中包含的受信任证书。

        如果给定的别名标识了通过调用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创建的现有条目,或通过调用setEntryTrustedCertificateEntry ,则现有条目中的受信任证书将被给定的证书覆盖。

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

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

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

        此方法尝试将给定证书与每个密钥库条目相匹配。 如果正在考虑的条目是通过调用setCertificateEntry创建的,或通过调用setEntryTrustedCertificateEntry ,则将给定的证书与该条目的证书进行比较。

        如果正在考虑的条目是通过调用setKeyEntry创建的,或通过调用setEntryPrivateKeyEntry ,则将给定的证书与该条目的证书链的第一个元素进行比较。

        参数
        cert - 证书匹配。
        结果
        具有匹配证书的第一个条目的别名,如果此密钥库中没有此类条目,则为null。
      • engineLoad

        public abstract void engineLoad​(InputStream stream,
                                        char[] password)
                                 throws IOException,
                                        NoSuchAlgorithmException,
                                        CertificateException
        从给定的输入流加载密钥库。

        可以提供密码来解锁密钥库(例如,密钥库驻留在硬件令牌设备上),或者检查密钥库数据的完整性。 如果没有为完整性检查提供密码,则不执行完整性检查。

        参数
        stream - 加载密钥库的输入流,或 null
        password - 用于检查密钥库完整性的密码,用于解锁密钥库的密码,或 null
        异常
        IOException - 如果密钥库数据存在I / O或格式问题,如果需要密码但未提供密码,或者给定的密码不正确。 如果错误是由于密码错误, IOExceptionIOException应为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.LoadStoreParameternull则密码参数也null 否则KeyStore.ProtectionParameterKeyStore.LoadStoreParameter必须是KeyStore.PasswordProtection或支持PasswordCallbackKeyStore.CallbackHandlerProtection ,以便可以提取密码参数。 如果KeyStore.ProtectionParameter既不是那些类,那么抛出一个NoSuchAlgorithmException

        参数
        param -所述 KeyStore.LoadStoreParameter指定如何加载密钥库,其可以是 null
        异常
        IllegalArgumentException - 如果给定的 KeyStore.LoadStoreParameter输入未被识别
        IOException - 如果存在密钥库数据的I / O或格式问题。 如果错误是由于错误的ProtectionParameter (例如错误的密码), IOExceptionIOException应为UnrecoverableKeyException
        NoSuchAlgorithmException - 如果用于检查密钥库的完整性的算法无法找到
        CertificateException - 如果密钥库中的任何证书无法加载
        从以下版本开始:
        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