模块  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 ,或者通过将呼叫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创建的,或通过调用 setEntryPrivateKeyEntrySecretKeyEntry )创建的,则返回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。
      • 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那么password参数也将是null 否则, KeyStore.ProtectionParameterKeyStore.LoadStoreParameter必须是KeyStore.PasswordProtectionKeyStore.CallbackHandlerProtection ,它们支持PasswordCallback以便可以解压缩密码参数。 如果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,
                                             <? 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