Module java.base

Class X509CRLSelector

java.lang.Object
java.security.cert.X509CRLSelector
所有已实现的接口:
Cloneable, CRLSelector

public class X509CRLSelector extends Object implements CRLSelector
选择与所有指定条件匹配的X509CRLsCRLSelector。当从CertStore中选择CRL以检查特定证书的吊销状态时,此类特别有用。

首次构造时,X509CRLSelector没有启用任何条件,每个get方法都返回默认值(null)。因此,match方法将对任何X509CRL返回true。通常,启用多个条件(例如通过调用setIssuerssetDateAndTime),然后将X509CRLSelector传递给CertStore.getCRLs或类似方法。

请参考RFC 5280: Internet X.509 Public Key Infrastructure Certificate and CRL Profile以获取下面提到的X.509 CRL字段和扩展的定义。

并发访问

除非另有说明,此类中定义的方法不是线程安全的。需要同时访问单个对象的多个线程应该在它们之间同步并提供必要的锁定。每个操作不同对象的多个线程不需要同步。

自:
1.4
参见:
  • Constructor Details

    • X509CRLSelector

      public X509CRLSelector()
      创建一个X509CRLSelector。最初,没有设置任何条件,因此任何X509CRL都将匹配。
  • Method Details

    • setIssuers

      public void setIssuers(Collection<X500Principal> issuers)
      设置issuerNames条件。在X509CRL中的发行者可分辨名称必须与指定的至少一个可分辨名称匹配。如果为null,则任何发行者可分辨名称都可以。

      此方法允许调用者通过单个方法调用指定X509CRLs可能包含的完整发行者名称集。指定的值替换issuerNames条件的先前值。

      names参数(如果不为null)是一个Collection,其中包含X500Principal

      请注意,names参数可以包含重复的可分辨名称,但它们可能会从getIssuers方法返回的名称集合中删除。

      请注意,对Collection执行复制以防止后续修改。

      参数:
      issuers - 一个X500Principals的Collection(或null)
      自:
      1.5
      参见:
    • setIssuerNames

      public void setIssuerNames(Collection<?> names) throws IOException
      注意: 使用setIssuers(Collection)或仅在使用此方法时指定专有名称的字节数组形式。有关更多信息,请参见addIssuerName(String)

      设置issuerNames条件。在X509CRL中的发行者可分辨名称必须与指定的至少一个可分辨名称匹配。如果为null,则任何发行者可分辨名称都可以。

      此方法允许调用者通过单个方法调用指定X509CRLs可能包含的完整发行者名称集。指定的值替换issuerNames条件的先前值。

      names参数(如果不为null)是一个包含名称的Collection。每个名称是一个String或表示专有名称的字节数组(RFC 2253或ASN.1 DER编码形式)。如果为此参数的值提供null,则不会执行issuerNames检查。

      请注意,names参数可以包含重复的可分辨名称,但它们可能会从getIssuerNames方法返回的名称集合中删除。

      如果将名称指定为字节数组,则应包含单个X.501中定义的DER编码可分辨名称。此结构的ASN.1表示如下。

      
       Name ::= CHOICE {
         RDNSequence }
      
       RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
      
       RelativeDistinguishedName ::=
         SET SIZE (1 .. MAX) OF AttributeTypeAndValue
      
       AttributeTypeAndValue ::= SEQUENCE {
         type     AttributeType,
         value    AttributeValue }
      
       AttributeType ::= OBJECT IDENTIFIER
      
       AttributeValue ::= ANY DEFINED BY AttributeType
       ....
       DirectoryString ::= CHOICE {
             teletexString           TeletexString (SIZE (1..MAX)),
             printableString         PrintableString (SIZE (1..MAX)),
             universalString         UniversalString (SIZE (1..MAX)),
             utf8String              UTF8String (SIZE (1.. MAX)),
             bmpString               BMPString (SIZE (1..MAX)) }
       

      请注意,对Collection执行深复制以防止后续修改。

      参数:
      names - 一个名称的Collection(或null)
      抛出:
      IOException - 如果发生解析错误
      参见:
    • addIssuer

      public void addIssuer(X500Principal issuer)
      向issuerNames条件添加一个名称。在X509CRL中的发行者可分辨名称必须与指定的至少一个可分辨名称匹配。

      此方法允许调用者向X509CRLs可能包含的发行者名称集中添加一个名称。指定的名称将添加到issuerNames条件的任何先前值中。如果指定的名称是重复的,则可能会被忽略。

      参数:
      issuer - 作为X500Principal的发行者
      自:
      1.5
    • addIssuerName

      @Deprecated(since="16") public void addIssuerName(String name) throws IOException
      Deprecated.
      Use addIssuer(X500Principal) or addIssuerName(byte[]) instead. This method should not be relied on as it can fail to match some CRLs because of a loss of encoding information in the RFC 2253 String form of some distinguished names.
      向issuerNames条件添加一个名称。在X509CRL中的发行者可分辨名称必须与指定的至少一个可分辨名称匹配。

      此方法允许调用者向X509CRLs可能包含的发行者名称集中添加一个名称。指定的名称将添加到issuerNames条件的任何先前值中。如果指定的名称是重复的,则可能会被忽略。

      参数:
      name - 以RFC 2253形式的名称
      抛出:
      IOException - 如果发生解析错误
    • addIssuerName

      public void addIssuerName(byte[] name) throws IOException
      向issuerNames条件添加一个名称。在X509CRL中的发行者可分辨名称必须与指定的至少一个可分辨名称匹配。

      此方法允许调用者向X509CRLs可能包含的发行者名称集中添加一个名称。指定的名称将添加到issuerNames条件的任何先前值中。如果指定的名称是重复的,则可能会被忽略。如果将名称指定为字节数组,则应包含单个X.501中定义的DER编码可分辨名称。此结构的ASN.1表示如下。

      名称以字节数组形式提供。此字节数组应包含单个X.501中定义的DER编码可分辨名称。此结构的ASN.1表示在setIssuerNames(Collection names)的文档中出现。

      请注意,此处提供的字节数组将进行克隆以防止后续修改。

      参数:
      name - 包含ASN.1 DER编码形式名称的字节数组
      抛出:
      IOException - 如果发生解析错误
    • setMinCRLNumber

      public void setMinCRLNumber(BigInteger minCRL)
      设置minCRLNumber条件。必须具有CRL号扩展其值大于或等于指定值的X509CRL。如果为null,则不会执行minCRLNumber检查。
      参数:
      minCRL - 接受的最小CRL号(或null)
    • setMaxCRLNumber

      public void setMaxCRLNumber(BigInteger maxCRL)
      设置maxCRLNumber条件。必须具有CRL号扩展其值小于或等于指定值的X509CRL。如果为null,则不会执行maxCRLNumber检查。
      参数:
      maxCRL - 接受的最大CRL号(或null)
    • setDateAndTime

      public void setDateAndTime(Date dateAndTime)
      设置日期和时间标准。指定的日期必须等于或晚于X509CRL的thisUpdate组件的值,早于nextUpdate组件的值。如果X509CRL不包含nextUpdate组件,则没有匹配项。如果为null,则不会进行日期和时间检查。

      请注意,此处提供的Date是克隆的,以防止后续修改。

      参数:
      dateAndTime - 要匹配的Date(或null
      参见:
    • setCertificateChecking

      public void setCertificateChecking(X509Certificate cert)
      设置正在检查的证书。这不是一个标准,而是可选信息,可能有助于CertStore在检查指定证书的吊销时找到相关的CRL。如果指定为null,则不提供此类可选信息。
      参数:
      cert - 正在检查的X509Certificate(或null
      参见:
    • getIssuers

      public Collection<X500Principal> getIssuers()
      返回发行者名称标准。在X509CRL中的发行者可分辨名称必须与指定的至少一个可分辨名称匹配。如果返回的值为null,则任何发行者可分辨名称都可以。

      如果返回的值不是null,则是一个不可修改的Collection,其中包含X500Principal

      返回:
      一个不可修改的名称Collection(或null
      自:
      1.5
      参见:
    • getIssuerNames

      public Collection<Object> getIssuerNames()
      返回发行者名称标准的副本。在X509CRL中的发行者可分辨名称必须与指定的至少一个可分辨名称匹配。如果返回的值为null,则任何发行者可分辨名称都可以。

      如果返回的值不是null,则是一个包含名称的Collection。每个名称都是一个表示可分辨名称的String或字节数组(分别为RFC 2253或ASN.1 DER编码形式)。请注意,返回的Collection可能包含重复的名称。

      如果将名称指定为字节数组,则应包含单个DER编码的可分辨名称,如X.501中定义。此结构的ASN.1表示在setIssuerNames(Collection names)的文档中给出。

      请注意,对Collection执行深度复制以防止后续修改。

      返回:
      名称的Collection(或null
      参见:
    • getMinCRL

      public BigInteger getMinCRL()
      返回minCRLNumber标准。X509CRL必须具有CRL号扩展,其值大于或等于指定值。如果为null,则不会进行minCRLNumber检查。
      返回:
      接受的最小CRL号(或null
    • getMaxCRL

      public BigInteger getMaxCRL()
      返回maxCRLNumber标准。X509CRL必须具有CRL号扩展,其值小于或等于指定值。如果为null,则不会进行maxCRLNumber检查。
      返回:
      接受的最大CRL号(或null
    • getDateAndTime

      public Date getDateAndTime()
      返回日期和时间标准。指定的日期必须等于或晚于X509CRL的thisUpdate组件的值,早于nextUpdate组件的值。如果X509CRL不包含nextUpdate组件,则没有匹配项。如果为null,则不会进行日期和时间检查。

      请注意,返回的Date是克隆的,以防止后续修改。

      返回:
      要匹配的Date(或null
      参见:
    • getCertificateChecking

      public X509Certificate getCertificateChecking()
      返回正在检查的证书。这不是一个标准,而是可选信息,可能有助于CertStore在检查指定证书的吊销时找到相关的CRL。如果返回的值为null,则不提供此类可选信息。
      返回:
      正在检查的证书(或null
      参见:
    • toString

      public String toString()
      返回X509CRLSelector的可打印表示。
      覆盖:
      toString 在类 Object
      返回:
      描述X509CRLSelector内容的String
    • match

      public boolean match(CRL crl)
      决定是否应选择CRL
      指定者:
      match 在接口 CRLSelector
      参数:
      crl - 要检查的CRL
      返回:
      如果应选择CRL,则为true,否则为false
    • clone

      public Object clone()
      返回此对象的副本。
      指定者:
      clone 在接口 CRLSelector
      覆盖:
      clone 在类 Object
      返回:
      该副本
      参见: