|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.security.cert
类 X509CertSelector
java.lang.Object java.security.cert.X509CertSelector
- 所有已实现的接口:
- Cloneable, CertSelector
-
public class X509CertSelector
- extends Object
- implements CertSelector
选择与所有指定标准匹配的 X509Certificates
的 CertSelector
。从 CertStore
中选择证书以构建一个符合 PKIX 的证书路径时,此类特别有用。
最初构造 X509CertSelector
时,它没有启用任何标准,并且每个 get
方法都返回一个默认值(null
,对于 getBasicConstraints
方法,则返回 -1
)。因此,对于任意 X509Certificate
而言,match
方法都将返回 true
。通常,启用多种标准(例如通过调用 setIssuer
或 setKeyUsage
),然后将 X509CertSelector
传递到 CertStore.getCertificates
或某个类似方法。
可以启用多种标准(例如通过调用 setIssuer
和 setSerialNumber
),这样通常 match
方法会惟一地匹配单个 X509Certificate
。我们在此说“通常”,是因为两个发布证书的 CA 可能具有相同的标识名,并且这两个 CA 发布了具有相同序列号的证书。其他独特的组合包含 issuer、subject、subjectKeyIdentifier 和/或 subjectPublicKey 标准。
有关下面所述各个 X.509 证书扩展的定义,请参阅 RFC 2459。
并发访问
除非另行指定,否则此类中所定义的方法不是线程安全的。需要并发访问单个对象的多个线程应该在它们之间实现同步并提供所需的锁定。对于每个线程都操作一个不同对象的多个线程而言,无需实现同步。
- 从以下版本开始:
- 1.4
- 另请参见:
-
CertSelector
,X509Certificate
构造方法摘要 | |
---|---|
X509CertSelector() 创建一个 X509CertSelector 。 |
方法摘要 | |
---|---|
void |
addPathToName(int type, byte[] name) 向 pathToNames 标准中添加一个名称。 |
void |
addPathToName(int type, String name) 向 pathToNames 标准中添加一个名称。 |
void |
addSubjectAlternativeName(int type, byte[] name) 向 subjectAlternativeNames 标准中添加一个名称。 |
void |
addSubjectAlternativeName(int type, String name) 向 subjectAlternativeNames 标准中添加一个名称。 |
Object |
clone() 返回此对象的副本。 |
byte[] |
getAuthorityKeyIdentifier() 返回 authorityKeyIdentifier 标准。 |
int |
getBasicConstraints() 返回 BasicConstraints 限制。 |
X509Certificate |
getCertificate() 返回 certificateEquals 标准。 |
Date |
getCertificateValid() 返回 certificateValid 标准。 |
Set<String> |
getExtendedKeyUsage() 返回 extendedKeyUsage 标准。 |
X500Principal |
getIssuer() 以 X500Principal 的形式返回 issuer 标准。 |
byte[] |
getIssuerAsBytes() 返回以 byte 数组表示的 issuer 标准。 |
String |
getIssuerAsString() 已过时,使用 getIssuer() 或 getIssuerAsBytes() 替代。 |
boolean[] |
getKeyUsage() 返回 keyUsage 标准。 |
boolean |
getMatchAllSubjectAltNames() 指示 X509Certificate 是否必须包含 setSubjectAlternativeNames 或 addSubjectAlternativeName 方法中所指定的所有或至少某个 subjectAlternativeNames。 |
byte[] |
getNameConstraints() 返回 NameConstraints 标准。 |
Collection<List<?>> |
getPathToNames() 返回 pathToNames 标准的一个副本。 |
Set<String> |
getPolicy() 返回策略标准。 |
Date |
getPrivateKeyValid() 返回 privateKeyValid 标准。 |
BigInteger |
getSerialNumber() 返回 serialNumber 标准。 |
X500Principal |
getSubject() 以 X500Principal 的形式返回 subject 标准。 |
Collection<List<?>> |
getSubjectAlternativeNames() 返回 subjectAlternativeNames 标准的一个副本。 |
byte[] |
getSubjectAsBytes() 以 byte 数组的形式返回 subject 标准。 |
String |
getSubjectAsString() 已过时,使用 getSubject() 或 getSubjectAsBytes() 替代。 |
byte[] |
getSubjectKeyIdentifier() 返回 subjectKeyIdentifier 标准。 |
PublicKey |
getSubjectPublicKey() 返回 subjectPublicKey 标准。 |
String |
getSubjectPublicKeyAlgID() 返回 subjectPublicKeyAlgID 标准。 |
boolean |
match(Certificate cert) 决定是否应该选择某个 Certificate 。 |
void |
setAuthorityKeyIdentifier(byte[] authorityKeyID) 设置 authorityKeyIdentifier 扩展。 |
void |
setBasicConstraints(int minMaxPathLen) 设置 basicConstraints 限制。 |
void |
setCertificate(X509Certificate cert) 设置 certificateEquals 标准。 |
void |
setCertificateValid(Date certValid) 设置 certificateValid 标准。 |
void |
setExtendedKeyUsage(Set<String> keyPurposeSet) 设置 extendedKeyUsage 标准。 |
void |
setIssuer(byte[] issuerDN) 设置 issuer 标准。 |
void |
setIssuer(String issuerDN) 已过时,使用 setIssuer(X500Principal) 或 setIssuer(byte[]) 替代。 |
void |
setIssuer(X500Principal issuer) 设置 issuer 标准。 |
void |
setKeyUsage(boolean[] keyUsage) 设置 keyUsage 标准。 |
void |
setMatchAllSubjectAltNames(boolean matchAllNames) 允许/禁止匹配 setSubjectAlternativeNames 或 addSubjectAlternativeName 方法中所指定的所有 subjectAlternativeNames。 |
void |
setNameConstraints(byte[] bytes) 设置 NameConstraints 标准。 |
void |
setPathToNames(Collection<List<?>> names) 设置 pathToNames 标准。 |
void |
setPolicy(Set<String> certPolicySet) 设置策略限制。 |
void |
setPrivateKeyValid(Date privateKeyValid) 设置 privateKeyValid 标准。 |
void |
setSerialNumber(BigInteger serial) 设置 serialNumber 标准。 |
void |
setSubject(byte[] subjectDN) 设置 subject 标准。 |
void |
setSubject(String subjectDN) 已过时,使用 setSubject(X500Principal) 或 setSubject(byte[]) 替代。 |
void |
setSubject(X500Principal subject) 设置 subject 标准。 |
void |
setSubjectAlternativeNames(Collection<List<?>> names) 设置 subjectAlternativeNames 标准。 |
void |
setSubjectKeyIdentifier(byte[] subjectKeyID) 设置 subjectKeyIdentifier 标准。 |
void |
setSubjectPublicKey(byte[] key) 设置 subjectPublicKey 标准。 |
void |
setSubjectPublicKey(PublicKey key) 设置 subjectPublicKey 标准。 |
void |
setSubjectPublicKeyAlgID(String oid) 设置 subjectPublicKeyAlgID 标准。 |
String |
toString() 返回该 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 形式)