所有类


java.security.cert
类 X509CertSelector

java.lang.Object
  继承者 java.security.cert.X509CertSelector
所有已实现的接口:
Cloneable, CertSelector

public class X509CertSelector
   
   
   
   
   
extends Object
implements CertSelector

选择与所有指定标准匹配的 X509CertificatesCertSelector。从 CertStore 中选择证书以构建一个符合 PKIX 的证书路径时,此类特别有用。

最初构造 X509CertSelector 时,它没有启用任何标准,并且每个 get 方法都返回一个默认值(null,对于 getBasicConstraints 方法,则返回 -1)。因此,对于任意 X509Certificate 而言,match 方法都将返回 true。通常,启用多种标准(例如通过调用 setIssuersetKeyUsage),然后将 X509CertSelector 传递到 CertStore.getCertificates 或某个类似方法。

可以启用多种标准(例如通过调用 setIssuersetSerialNumber),这样通常 match 方法会惟一地匹配单个 X509Certificate。我们在此说“通常”,是因为两个发布证书的 CA 可能具有相同的标识名,并且这两个 CA 发布了具有相同序列号的证书。其他独特的组合包含 issuer、subject、subjectKeyIdentifier 和/或 subjectPublicKey 标准。

有关下面所述各个 X.509 证书扩展的定义,请参阅 RFC 2459。

并发访问

除非另行指定,否则此类中所定义的方法不是线程安全的。需要并发访问单个对象的多个线程应该在它们之间实现同步并提供所需的锁定。对于每个线程都操作一个不同对象的多个线程而言,无需实现同步。

从以下版本开始:
1.4
另请参见:
CertSelector, X509Certificate

构造方法摘要
X509CertSelector()
          创建一个 X509CertSelector
 
方法摘要
 voidaddPathToName(int type, byte[] name)
          向 pathToNames 标准中添加一个名称。
 voidaddPathToName(int type, String name)
          向 pathToNames 标准中添加一个名称。
 voidaddSubjectAlternativeName(int type, byte[] name)
          向 subjectAlternativeNames 标准中添加一个名称。
 voidaddSubjectAlternativeName(int type, String name)
          向 subjectAlternativeNames 标准中添加一个名称。
 Objectclone()
          返回此对象的副本。
 byte[]getAuthorityKeyIdentifier()
          返回 authorityKeyIdentifier 标准。
 intgetBasicConstraints()
          返回 BasicConstraints 限制。
 X509CertificategetCertificate()
          返回 certificateEquals 标准。
 DategetCertificateValid()
          返回 certificateValid 标准。
 Set<String>getExtendedKeyUsage()
          返回 extendedKeyUsage 标准。
 X500PrincipalgetIssuer()
          以 X500Principal 的形式返回 issuer 标准。
 byte[]getIssuerAsBytes()
          返回以 byte 数组表示的 issuer 标准。
 StringgetIssuerAsString()
          已过时,使用 getIssuer()getIssuerAsBytes() 替代。
 boolean[]getKeyUsage()
          返回 keyUsage 标准。
 booleangetMatchAllSubjectAltNames()
          指示 X509Certificate 是否必须包含 setSubjectAlternativeNamesaddSubjectAlternativeName 方法中所指定的所有或至少某个 subjectAlternativeNames。
 byte[]getNameConstraints()
          返回 NameConstraints 标准。
 Collection<List<?>>getPathToNames()
          返回 pathToNames 标准的一个副本。
 Set<String>getPolicy()
          返回策略标准。
 DategetPrivateKeyValid()
          返回 privateKeyValid 标准。
 BigIntegergetSerialNumber()
          返回 serialNumber 标准。
 X500PrincipalgetSubject()
          以 X500Principal 的形式返回 subject 标准。
 Collection<List<?>>getSubjectAlternativeNames()
          返回 subjectAlternativeNames 标准的一个副本。
 byte[]getSubjectAsBytes()
          以 byte 数组的形式返回 subject 标准。
 StringgetSubjectAsString()
          已过时,使用 getSubject()getSubjectAsBytes() 替代。
 byte[]getSubjectKeyIdentifier()
          返回 subjectKeyIdentifier 标准。
 PublicKeygetSubjectPublicKey()
          返回 subjectPublicKey 标准。
 StringgetSubjectPublicKeyAlgID()
          返回 subjectPublicKeyAlgID 标准。
 booleanmatch(Certificate cert)
          决定是否应该选择某个 Certificate
 voidsetAuthorityKeyIdentifier(byte[] authorityKeyID)
          设置 authorityKeyIdentifier 扩展。
 voidsetBasicConstraints(int minMaxPathLen)
          设置 basicConstraints 限制。
 voidsetCertificate(X509Certificate cert)
          设置 certificateEquals 标准。
 voidsetCertificateValid(Date certValid)
          设置 certificateValid 标准。
 voidsetExtendedKeyUsage(Set<String> keyPurposeSet)
          设置 extendedKeyUsage 标准。
 voidsetIssuer(byte[] issuerDN)
          设置 issuer 标准。
 voidsetIssuer(String issuerDN)
          已过时,使用 setIssuer(X500Principal)setIssuer(byte[]) 替代。
 voidsetIssuer(X500Principal issuer)
          设置 issuer 标准。
 voidsetKeyUsage(boolean[] keyUsage)
          设置 keyUsage 标准。
 voidsetMatchAllSubjectAltNames(boolean matchAllNames)
          允许/禁止匹配 setSubjectAlternativeNamesaddSubjectAlternativeName 方法中所指定的所有 subjectAlternativeNames。
 voidsetNameConstraints(byte[] bytes)
          设置 NameConstraints 标准。
 voidsetPathToNames(Collection<List<?>> names)
          设置 pathToNames 标准。
 voidsetPolicy(Set<String> certPolicySet)
          设置策略限制。
 voidsetPrivateKeyValid(Date privateKeyValid)
          设置 privateKeyValid 标准。
 voidsetSerialNumber(BigInteger serial)
          设置 serialNumber 标准。
 voidsetSubject(byte[] subjectDN)
          设置 subject 标准。
 voidsetSubject(String subjectDN)
          已过时,使用 setSubject(X500Principal)setSubject(byte[]) 替代。
 voidsetSubject(X500Principal subject)
          设置 subject 标准。
 voidsetSubjectAlternativeNames(Collection<List<?>> names)
          设置 subjectAlternativeNames 标准。
 voidsetSubjectKeyIdentifier(byte[] subjectKeyID)
          设置 subjectKeyIdentifier 标准。
 voidsetSubjectPublicKey(byte[] key)
          设置 subjectPublicKey 标准。
 voidsetSubjectPublicKey(PublicKey key)
          设置 subjectPublicKey 标准。
 voidsetSubjectPublicKeyAlgID(String oid)
          设置 subjectPublicKeyAlgID 标准。
 StringtoString()
          返回该 CertSelector 的可打印表示形式。
 
从类 java.lang.Object 继承的方法
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

X509CertSelector

public X509CertSelector()
创建一个 X509CertSelector。最初未设置任何标准,所以任何 X509Certificate 都匹配。

方法详细信息

setCertificate

public void setCertificate(X509Certificate cert)
设置 certificateEquals 标准。指定的 X509Certificate 必须等于传入到 match 方法的 X509Certificate。如果它为 null,则不进行此项检查。

必需与单个证书匹配时,此方法特别有用。虽然可以与 certificateEquals 标准一起指定其他标准,但这样做通常不实用或不必要。

参数:
cert - 要匹配的 X509Certificate(或者为 null
另请参见:
getCertificate()

setSerialNumber

public void setSerialNumber(BigInteger serial)
设置 serialNumber 标准。指定的 serialNumber 必须与 X509Certificate 中的证书 serialNumber 匹配。如果该 serialNumber 为 null,则与任何证书 serialNumber 匹配都可以。

参数:
serial - 要匹配的证书 serialNumber(或者为 null
另请参见:
getSerialNumber()

setIssuer

public void setIssuer(X500Principal issuer)
设置 issuer 标准。指定的标识名必须与 X509Certificate 中的发布方标识名匹配。如果该发布方标识名为 null,则与任何发布方 标识名匹配都可以。

参数:
issuer - X500Principal 形式的标识名(或者为 null
从以下版本开始:
1.5

setIssuer

public void setIssuer(String issuerDN)
               throws IOException
已过时,使用 setIssuer(X500Principal)setIssuer(byte[]) 替代。由于某些 RFC 2253 String 形式的标识名中会丢失编码信息,所以当此方法与某些证书不匹配时不应该依赖它。

设置 issuer 标准。指定的标识名必须与 X509Certificate 中的发布方标识名匹配。如果该发布方标识名为 null,则与任何发布方标识名匹配都可以。

如果 issuerDN 不为 null,则应该包含一个 RFC 2253 格式的标识名。

参数:
issuerDN - RFC 2253 格式的标识名(或者为 null
抛出:
IOException - 如果出现解析错误(错误的 DN 形式)

setIssuer

public void setIssuer(byte[] issuerDN)
               throws IOException
设置 issuer 标准。指定的标识名必须与 X509Certificate 中的发布方标识名匹配。如果指定了 null,则禁用 issuer 标准,且与任何发布方标识名匹配都可以。

如果 issuerDN 不为 null,则应该包含单个 DER 编码形式的标识名,正如 X.501 中定义的一样。此结构的 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)) }
 

注意,要复制此处指定的 byte 数组以防后续修改。

参数:
issuerDN - 一个 byte 数组,包含 ASN.1 DER 编码形式的标识名(或者为 null
抛出:
IOException - 如果出现编码错误(错误的 DN 形式)

setSubject

public void setSubject(X500Principal subject)
设置 subject 标准。指定的标识名必须与 X509Certificate 中的主体标识名匹配。如果该主体标识名为 null,则与任何主体标识名匹配都可以。

参数:
subject - X500Principal 形式的标识名(或者为 null
从以下版本开始:
1.5

setSubject

public void setSubject(String subjectDN)
                throws IOException
已过时,使用 setSubject(X500Principal)setSubject(byte[]) 替代。由于某些 RFC 2253 String 形式的标识名中会丢失编码信息,所以当此方法与某些证书不匹配时不应该依赖它。

设置 subject 标准。指定的标识名必须与 X509Certificate 中的 主体标识名匹配。如果该主体标识名为 null,则与任何主体标识名匹配都可以。

如果 subjectDN 不为 null,则应该包含一个 RFC 2253 格式的标识名。

参数:
subjectDN - RFC 2253 格式的标识名(或者为 null
抛出:
IOException - 如果出现解析错误(错误的 DN 形式)