public class X509CertSelector
extends Object
implements CertSelector
java.lang.Object | |
↳ | java.security.cert.X509CertSelector |
一个CertSelector
,它选择符合所有指定条件的X509Certificates
。 从CertStore
选择证书以构建符合PKIX的认证路径时,此类特别有用。
当第一次构造中, X509CertSelector
启用没有标准,并且每个所述get
方法返回默认值( null
,或-1
为getBasicConstraints
方法)。 因此, match
方法将返回true
任何X509Certificate
。 通常,可以使用多个条件(例如,通过调用setIssuer
或setKeyUsage
),然后将X509CertSelector
传递给CertStore.getCertificates
或某种类似的方法。
可以启用多个标准(例如,通过调用setIssuer
和setSerialNumber
),使得match
方法通常与单个X509Certificate
唯一匹配。 我们通常说,因为两个签发CA可能具有相同的辨别名,并且每个颁发具有相同序列号的证书。 其他独特的组合包括发行者,主题,subjectKeyIdentifier和/或subjectPublicKey标准。
有关 下面提到的X.509证书扩展的定义,请参阅 RFC 3280: Internet X.509 Public Key Infrastructure Certificate and CRL Profile 。
并发访问
除非另有说明,否则此类中定义的方法不是线程安全的。 需要同时访问单个对象的多个线程应该自己同步并提供必要的锁定。 每个操作单独对象的多个线程不需要同步。
也可以看看:
Public constructors |
|
---|---|
X509CertSelector() 创建一个 |
Public methods |
|
---|---|
void |
addPathToName(int type, String name) 向pathToNames标准添加一个名称。 |
void |
addPathToName(int type, byte[] name) 向pathToNames标准添加一个名称。 |
void |
addSubjectAlternativeName(int type, String name) 为subjectAlternativeNames标准添加一个名称。 |
void |
addSubjectAlternativeName(int type, byte[] name) 为subjectAlternativeNames标准添加一个名称。 |
Object |
clone() 返回此对象的副本。 |
byte[] |
getAuthorityKeyIdentifier() 返回authorityKeyIdentifier标准。 |
int |
getBasicConstraints() 返回基本约束约束。 |
X509Certificate |
getCertificate() 返回certificateEquals条件。 |
Date |
getCertificateValid() 返回certificateValid条件。 |
Set<String> |
getExtendedKeyUsage() 返回extendedKeyUsage标准。 |
X500Principal |
getIssuer() 以 |
byte[] |
getIssuerAsBytes() 将发行者标准作为字节数组返回。 |
String |
getIssuerAsString() 诋毁 ,使用 getIssuer()或者 getIssuerAsBytes()代替。 |
boolean[] |
getKeyUsage() 返回keyUsage标准。 |
boolean |
getMatchAllSubjectAltNames() 指示 |
byte[] |
getNameConstraints() 返回名称约束条件。 |
Collection<List<?>> |
getPathToNames() 返回pathToNames标准的副本。 |
Set<String> |
getPolicy() 返回策略标准。 |
Date |
getPrivateKeyValid() 返回privateKeyValid条件。 |
BigInteger |
getSerialNumber() 返回serialNumber标准。 |
X500Principal |
getSubject() 以 |
Collection<List<?>> |
getSubjectAlternativeNames() 返回subjectAlternativeNames标准的副本。 |
byte[] |
getSubjectAsBytes() 将主题标准作为字节数组返回。 |
String |
getSubjectAsString() 诋毁 ,使用 getSubject()或者 getSubjectAsBytes()代替。 |
byte[] |
getSubjectKeyIdentifier() 返回subjectKeyIdentifier标准。 |
PublicKey |
getSubjectPublicKey() 返回subjectPublicKey条件。 |
String |
getSubjectPublicKeyAlgID() 返回subjectPublicKeyAlgID标准。 |
boolean |
match(Certificate cert) 决定是否应该选择 |
void |
setAuthorityKeyIdentifier(byte[] authorityKeyID) 设置authorityKeyIdentifier标准。 |
void |
setBasicConstraints(int minMaxPathLen) 设置基本约束约束。 |
void |
setCertificate(X509Certificate cert) 设置certificateEquals标准。 |
void |
setCertificateValid(Date certValid) 设置certificateValid条件。 |
void |
setExtendedKeyUsage(Set<String> keyPurposeSet) 设置extendedKeyUsage标准。 |
void |
setIssuer(byte[] issuerDN) 设置发行人标准。 |
void |
setIssuer(X500Principal issuer) 设置发行人标准。 |
void |
setIssuer(String issuerDN) 诋毁 ,使用 setIssuer(X500Principal)或者 setIssuer(byte[])代替。 |
void |
setKeyUsage(boolean[] keyUsage) 设置keyUsage标准。 |
void |
setMatchAllSubjectAltNames(boolean matchAllNames) 启用/禁用匹配 |
void |
setNameConstraints(byte[] bytes) 设置名称约束条件。 |
void |
setPathToNames(Collection<List<?>> names) 设置pathToNames标准。 |
void |
setPolicy(Set<String> certPolicySet) 设置策略约束。 |
void |
setPrivateKeyValid(Date privateKeyValid) 设置privateKeyValid条件。 |
void |
setSerialNumber(BigInteger serial) 设置serialNumber标准。 |
void |
setSubject(X500Principal subject) 设置主题标准。 |
void |
setSubject(byte[] subjectDN) 设置主题标准。 |
void |
setSubject(String subjectDN) 诋毁 ,使用 setSubject(X500Principal)或者 setSubject(byte[])代替。 |
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() 返回 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
|
From interface java.security.cert.CertSelector
|
X509CertSelector ()
创建一个X509CertSelector
。 最初,没有标准设置,因此任何X509Certificate
将匹配。
void addPathToName (int type, String name)
向pathToNames标准添加一个名称。 X509Certificate
不得包含禁止构建指定名称路径的名称约束。
这种方法允许调用者的名称添加到一套的名字X509Certificates
的名称约束必须允许。 指定的名称将添加到pathToNames标准的任何以前的值中。 如果名称是重复的,则可能会被忽略。
该名称以字符串格式提供。 RFC 822,DNS和URI名称对这些类型使用已建立的字符串格式(受RFC 3280中的限制)。 IPv4地址名称使用虚线四舍五入符号提供。 OID地址名称表示为一系列由句点分隔的非负整数。 目录名称(专有名称)以RFC 2253格式提供。 没有为otherName,X.400名称,EDI参与方名称,IPv6地址名称或任何其他类型的名称定义标准字符串格式。 应该使用addPathToName(int type, byte [] name)
方法来指定它们。
注意:对于专有名称, 请改为使用addPathToName(int, byte[]) 。 不应该依赖此方法,因为它可能无法匹配某些证书,因为某些专有名称的RFC 2253字符串形式中的编码信息丢失。
Parameters | |
---|---|
type |
int : the name type (0-8, as specified in RFC 3280, section 4.2.1.7) |
name |
String : the name in string form |
Throws | |
---|---|
IOException |
if a parsing error occurs |
void addPathToName (int type, byte[] name)
向pathToNames标准添加一个名称。 X509Certificate
不得包含禁止构建指定名称路径的名称约束。
这种方法允许调用者的名称添加到一套的名字X509Certificates
的名称约束必须允许。 指定的名称将添加到pathToNames标准的任何以前的值中。 如果名称是重复的,则可能会被忽略。
该名称是以字节数组的形式提供的。 该字节数组应包含DER编码名称,因为它将出现在RFC 3280和X.509中定义的GeneralName结构中。 此结构的ASN.1定义显示在addSubjectAlternativeName(int type, byte [] name)
的文档中。
请注意,这里提供的字节数组被克隆,以防止后续修改。
Parameters | |
---|---|
type |
int : the name type (0-8, as specified in RFC 3280, section 4.2.1.7) |
name |
byte : a byte array containing the name in ASN.1 DER encoded form |
Throws | |
---|---|
IOException |
if a parsing error occurs |
void addSubjectAlternativeName (int type, String name)
为subjectAlternativeNames标准添加一个名称。 X509Certificate
必须包含全部或至少一个指定的subjectAlternativeNames,具体取决于matchAllNames标志的值(请参阅setMatchAllSubjectAltNames
)。
这种方法允许调用者为一组主题替代名称添加一个名称。 指定的名称将添加到subjectAlternativeNames标准的任何先前值。 如果指定的名称是重复的,则可能会被忽略。
该名称以字符串格式提供。 RFC 822 ,DNS和URI名称对这些类型使用已建立的字符串格式(受限于RFC 3280中的限制)。 IPv4地址名称使用虚线四舍五入符号提供。 OID地址名称表示为一系列由句点分隔的非负整数。 目录名称(专有名称)以RFC 2253格式提供。 没有为otherName,X.400名称,EDI参与方名称,IPv6地址名称或任何其他类型的名称定义标准字符串格式。 应该使用addSubjectAlternativeName(int type, byte [] name)
方法来指定它们。
注意:对于专有名称, 请改为使用addSubjectAlternativeName(int, byte[]) 。 不应该依赖此方法,因为它可能无法匹配某些证书,因为某些专有名称的RFC 2253字符串形式中的编码信息丢失。
Parameters | |
---|---|
type |
int : the name type (0-8, as specified in RFC 3280, section 4.2.1.7) |
name |
String : the name in string form (not null ) |
Throws | |
---|---|
IOException |
if a parsing error occurs |
void addSubjectAlternativeName (int type, byte[] name)
为subjectAlternativeNames标准添加一个名称。 X509Certificate
必须包含全部或至少一个指定的subjectAlternativeNames,具体取决于matchAllNames标志的值(请参阅setMatchAllSubjectAltNames
)。
这种方法允许调用者为一组主题替代名称添加一个名称。 指定的名称将添加到subjectAlternativeNames标准的任何先前值。 如果指定的名称是重复的,则可能会被忽略。
该名称是以字节数组的形式提供的。 该字节数组应包含DER编码名称,因为它将出现在RFC 3280和X.509中定义的GeneralName结构中。 编码的字节数组应该只包含名称的编码值,并且不应在GeneralName结构中包含与该名称关联的标签。 这个结构的ASN.1定义如下。
GeneralName ::= CHOICE {
otherName [0] OtherName,
rfc822Name [1] IA5String,
dNSName [2] IA5String,
x400Address [3] ORAddress,
directoryName [4] Name,
ediPartyName [5] EDIPartyName,
uniformResourceIdentifier [6] IA5String,
iPAddress [7] OCTET STRING,
registeredID [8] OBJECT IDENTIFIER}
请注意,这里提供的字节数组被克隆,以防止后续修改。
Parameters | |
---|---|
type |
int : the name type (0-8, as listed above) |
name |
byte : a byte array containing the name in ASN.1 DER encoded form |
Throws | |
---|---|
IOException |
if a parsing error occurs |
byte[] getAuthorityKeyIdentifier ()
返回authorityKeyIdentifier标准。 X509Certificate
必须包含具有指定值的AuthorityKeyIdentifier扩展。 如果null
,则不会执行authorityKeyIdentifier检查。
请注意,返回的字节数组被克隆以防止后续修改。
Returns | |
---|---|
byte[] |
the key identifier (or null ) |
int getBasicConstraints ()
返回基本约束约束。 如果该值大于或等于零,则X509Certificates
必须包含一个至少具有此值的pathLen的basicConstraints扩展。 如果值为-2,则只接受最终实体证书。 如果值为-1,则不执行basicConstraints检查。
Returns | |
---|---|
int |
the value for the basic constraints constraint |
也可以看看:
X509Certificate getCertificate ()
返回certificateEquals条件。 指定X509Certificate
必须等于X509Certificate
传递给match
方法。 如果null
,此检查不适用。
Returns | |
---|---|
X509Certificate |
the X509Certificate to match (or null ) |
Date getCertificateValid ()
返回certificateValid条件。 指定的日期必须在X509Certificate
的证书有效期内。 如果null
,则不会执行certificateValid检查。
请注意,返回的 Date
已克隆,以防止后续修改。
Returns | |
---|---|
Date |
the Date to check (or null ) |
也可以看看:
Set<String> getExtendedKeyUsage ()
返回extendedKeyUsage标准。 X509Certificate
必须在其扩展密钥使用扩展中允许指定的密钥用途。 如果返回的keyPurposeSet
为空或null
,则不会执行extendedKeyUsage检查。 请注意,没有extendedKeyUsage扩展名的X509Certificate
隐式允许所有关键用途。
Returns | |
---|---|
Set<String> |
an immutable Set of key purpose OIDs in string format (or null ) |
也可以看看:
X500Principal getIssuer ()
以X500Principal
返回发行者标准。 该专有名称必须与X509Certificate
中的发行人专有名称相匹配。 如果null
,发行人标准被禁用,并且任何发行人专有名称都将被执行。
Returns | |
---|---|
X500Principal |
the required issuer distinguished name as X500Principal (or null ) |
byte[] getIssuerAsBytes ()
将发行者标准作为字节数组返回。 该专有名称必须与X509Certificate
中的发行者专有名称相匹配。 如果null
,发行者标准被禁用,并且任何发行者专有名称都将被执行。
如果返回的值不是null
,则它是一个包含单个DER编码的可分辨名称的字节数组,如X.501中所定义。 该结构的ASN.1表示法在setIssuer(byte [] issuerDN)
的文档中提供。
请注意,返回的字节数组被克隆以防止后续修改。
Returns | |
---|---|
byte[] |
a byte array containing the required issuer distinguished name in ASN.1 DER format (or null ) |
Throws | |
---|---|
IOException |
if an encoding error occurs |
String getIssuerAsString ()
诋毁 ,使用getIssuer()或者getIssuerAsBytes()代替。 不应该依赖此方法,因为它可能无法匹配某些证书,因为某些专有名称的RFC 2253字符串形式中的编码信息丢失。
将发行者标准作为String
返回。 该专有名称必须与X509Certificate
中的发行人专有名称相匹配。 如果null
,发行人标准被禁用,并且任何发行人专有名称都会执行。
如果返回的值不是 null
,则它是以RFC 2253格式显示的专有名称。
Returns | |
---|---|
String |
the required issuer distinguished name in RFC 2253 format (or null ) |
boolean[] getKeyUsage ()
返回keyUsage标准。 X509Certificate
必须允许指定的keyUsage值。 如果为null,则不会执行keyUsage检查。
请注意,返回的布尔数组被克隆以防止后续修改。
Returns | |
---|---|
boolean[] |
a boolean array in the same format as the boolean array returned by X509Certificate.getKeyUsage() . Or null . |
也可以看看:
boolean getMatchAllSubjectAltNames ()
指示X509Certificate
必须包含setSubjectAlternativeNames
或addSubjectAlternativeName
方法中指定的全部或至少一个addSubjectAlternativeName
。 如果是true
,则X509Certificate
必须包含所有指定的主题替代名称。 如果false
,则X509Certificate
必须包含至少一个指定的主题替代名称。
Returns | |
---|---|
boolean |
true if the flag is enabled; false if the flag is disabled. The flag is true by default. |
byte[] getNameConstraints ()
返回名称约束条件。 X509Certificate
必须具有符合指定名称约束的主题和主题替代名称。
名称约束作为字节数组返回。 该字节数组包含名称约束的DER编码形式,因为它们出现在RFC 3280和X.509中定义的NameConstraints结构中。 该结构的ASN.1表示法在setNameConstraints(byte [] bytes)
的文档中提供。
请注意,返回的字节数组被克隆以防止后续修改。
Returns | |
---|---|
byte[] |
a byte array containing the ASN.1 DER encoding of a NameConstraints extension used for checking name constraints. null if no name constraints check will be performed. |
也可以看看:
Collection<List<?>> getPathToNames ()
返回pathToNames标准的副本。 X509Certificate
不得包含禁止构建指定名称路径的名称约束。 如果返回的值是null
,则不会执行pathToNames检查。
如果返回的值不是null
,则它是一个Collection
,其中每个名称的一个条目将包含在pathToNames条件中。 每个条目是List
其第一条目是Integer
(名称类型,0-8),其第二条目是String
或字节数组(名称,分别以字符串或ASN.1 DER编码形式)。 可以有多个相同类型的名称。 请注意,返回的Collection
可能包含重复的名称(相同的名称和名称类型)。
Collection
中的每个名称可以指定为String
或ASN.1编码的字节数组。 有关所用格式的更多详细信息,请参阅addPathToName(int type, String name)
和addPathToName(int type, byte [] name)
。
请注意,在 Collection
上执行深层复制以防止后续修改。
Returns | |
---|---|
Collection<List<?>> |
a Collection of names (or null ) |
也可以看看:
Set<String> getPolicy ()
返回策略标准。 X509Certificate
必须在其证书策略扩展中至少包含一个指定的策略。 如果返回的Set
为空,则X509Certificate
必须在其证书策略扩展中至少包含一些指定的策略。 如果Set
返回的是null
,则不会执行政策检查。
Returns | |
---|---|
Set<String> |
an immutable Set of certificate policy OIDs in string format (or null ) |
也可以看看:
Date getPrivateKeyValid ()
返回privateKeyValid条件。 指定的日期必须在X509Certificate
的私钥有效期内。 如果null
,则不会执行privateKeyValid检查。
请注意,返回的 Date
已克隆,以防止后续修改。
Returns | |
---|---|
Date |
the Date to check (or null ) |
也可以看看:
BigInteger getSerialNumber ()
返回serialNumber标准。 指定的序列号必须与X509Certificate
中的证书序列号相X509Certificate
。 如果null
,任何证书序列号都可以。
Returns | |
---|---|
BigInteger |
the certificate serial number to match (or null ) |
也可以看看:
X500Principal getSubject ()
以X500Principal
返回主题标准。 该专有名称必须与X509Certificate
中的主题专有名称相匹配。 如果null
,主题标准被禁用,并且任何主题专有名称都会执行。
Returns | |
---|---|
X500Principal |
the required subject distinguished name as X500Principal (or null ) |
Collection<List<?>> getSubjectAlternativeNames ()
返回subjectAlternativeNames标准的副本。 X509Certificate
必须包含所有或至少一个指定的subjectAlternativeNames,具体取决于matchAllNames标志的值(请参阅getMatchAllSubjectAltNames
)。 如果返回值为null
,则不会执行subjectAlternativeNames检查。
如果返回的值不是null
,则它是一个Collection
,每个名称的一个条目将包含在主题替代名称条件中。 每个条目是List
其第一条目是Integer
(名称类型,0-8),其第二条目是String
或字节数组(名称,分别以字符串或ASN.1 DER编码形式)。 可以有多个相同类型的名称。 请注意,返回的Collection
可能包含重复的名称(相同的名称和名称类型)。
Collection
中的每个主题替代名称可以指定为String
或ASN.1编码的字节数组。 有关所用格式的更多详细信息,请参阅addSubjectAlternativeName(int type, String name)
和addSubjectAlternativeName(int type, byte [] name)
。
请注意,在 Collection
上执行深层复制以防止后续修改。
Returns | |
---|---|
Collection<List<?>> |
a Collection of names (or null ) |
byte[] getSubjectAsBytes ()
将主题标准作为字节数组返回。 此专有名称必须与X509Certificate
中的主题专有名称相匹配。 如果null
,主题标准被禁用,并且任何主题专有名称都会执行。
如果返回的值不是null
,则它是一个包含单个DER编码的专有名称的字节数组,如X.501中所定义。 此结构的ASN.1表示法在setSubject(byte [] subjectDN)
的文档中提供。
请注意,返回的字节数组被克隆以防止后续修改。
Returns | |
---|---|
byte[] |
a byte array containing the required subject distinguished name in ASN.1 DER format (or null ) |
Throws | |
---|---|
IOException |
if an encoding error occurs |
String getSubjectAsString ()
诋毁 ,使用getSubject()或者getSubjectAsBytes()代替。 不应该依赖此方法,因为它可能无法匹配某些证书,因为某些专有名称的RFC 2253字符串形式中的编码信息丢失。
以String
返回主题标准。 此专有名称必须与X509Certificate
中的主题专有名称相匹配。 如果null
,主题标准被禁用,并且任何主题专有名称都会执行。
如果返回的值不是 null
,则它是以RFC 2253格式显示的专有名称。
Returns | |
---|---|
String |
the required subject distinguished name in RFC 2253 format (or null ) |
byte[] getSubjectKeyIdentifier ()
返回subjectKeyIdentifier标准。 X509Certificate
必须包含具有指定值的SubjectKeyIdentifier扩展名。 如果null
,则不会执行subjectKeyIdentifier检查。
请注意,返回的字节数组被克隆以防止后续修改。
Returns | |
---|---|
byte[] |
the key identifier (or null ) |
PublicKey getSubjectPublicKey ()
返回subjectPublicKey条件。 X509Certificate
必须包含指定的主题公钥。 如果null
,则不会执行subjectPublicKey检查。
Returns | |
---|---|
PublicKey |
the subject public key to check for (or null ) |
也可以看看:
String getSubjectPublicKeyAlgID ()
返回subjectPublicKeyAlgID标准。 X509Certificate
必须包含具有指定算法的主题公钥。 如果null
,则不会执行subjectPublicKeyAlgID检查。
Returns | |
---|---|
String |
the object identifier (OID) of the signature algorithm to check for (or null ). An OID is represented by a set of nonnegative integers separated by periods. |
boolean match (Certificate cert)
决定是否应该选择 Certificate
。
Parameters | |
---|---|
cert |
Certificate : the Certificate to be checked |
Returns | |
---|---|
boolean |
true if the Certificate should be selected, false otherwise |
void setAuthorityKeyIdentifier (byte[] authorityKeyID)
设置authorityKeyIdentifier标准。 X509Certificate
必须包含AuthorityKeyIdentifier扩展名,扩展名的内容与指定的条件值匹配。 如果标准值为null
,则不会执行authorityKeyIdentifier检查。
如果authorityKeyID
不是null
,它应该包含与AuthorityKeyIdentifier扩展的扩展值(不包括对象标识符,关键性设置和封装OCTET STRING)内容相对应的单个DER编码值。 下面是该结构的ASN.1表示法。
AuthorityKeyIdentifier ::= SEQUENCE {
keyIdentifier [0] KeyIdentifier OPTIONAL,
authorityCertIssuer [1] GeneralNames OPTIONAL,
authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL }
KeyIdentifier ::= OCTET STRING
授权密钥标识符未被X509CertSelector
解析。 而是使用逐字节比较来比较值。
当填充AuthorityKeyIdentifier
的keyIdentifier
字段时,该值通常取自颁发者证书中的SubjectKeyIdentifier
扩展名。 但请注意,发行人证书上X509Certificate.getExtensionValue(<SubjectKeyIdentifier Object Identifier>)
的结果可能不会直接用作setAuthorityKeyIdentifier
的输入。 这是因为SubjectKeyIdentifier仅包含KeyIdentifier OCTET STRING,而不包含KeyIdentifier,GeneralNames和CertificateSerialNumber的序列。 为了使用发行者证书SubjectKeyIdentifier
扩展名的扩展值,需要提取嵌入的KeyIdentifier
OCTET STRING的值,然后DER将这个OCTET STRING编码到SEQUENCE中。 有关SubjectKeyIdentifier的更多详细信息,请参阅setSubjectKeyIdentifier(byte[])
。
还要注意,这里提供的字节数组被克隆以防止后续的修改。
Parameters | |
---|---|
authorityKeyID |
byte : the authority key identifier (or null ) |
也可以看看:
void setBasicConstraints (int minMaxPathLen)
设置基本约束约束。 如果该值大于或等于零,则X509Certificates
必须包含一个至少具有此值的pathLen的basicConstraints扩展。 如果值为-2,则只接受最终实体证书。 如果值为-1,则不执行检查。
当构建一个证书路径时(从目标到信任锚点),此约束非常有用。如果已经构建了部分路径,则任何候选证书的maxPathLen值必须大于或等于部分路径中的证书数量。
Parameters | |
---|---|
minMaxPathLen |
int : the value for the basic constraints constraint |
Throws | |
---|---|
IllegalArgumentException |
if the value is less than -2 |
也可以看看:
void setCertificate (X509Certificate cert)
设置certificateEquals标准。 指定X509Certificate
必须等于X509Certificate
传递给match
方法。 如果null
,那么这个检查不适用。
当需要匹配单个证书时,此方法特别有用。 尽管可以结合certificateEquals标准指定其他标准,但通常不实际或不必要。
Parameters | |
---|---|
cert |
X509Certificate : the X509Certificate to match (or null ) |
也可以看看:
void setCertificateValid (Date certValid)
设置certificateValid条件。 指定的日期必须在X509Certificate
的证书有效期内。 如果null
,则不会执行证书null
检查。
请注意, Date
提供的 Date
已被克隆,以防止后续修改。
Parameters | |
---|---|
certValid |
Date : the Date to check (or null ) |
也可以看看:
void setExtendedKeyUsage (Set<String> keyPurposeSet)
设置extendedKeyUsage标准。 X509Certificate
必须在其扩展密钥使用扩展中允许指定的密钥用途。 如果keyPurposeSet
为空或null
,则不会执行extendedKeyUsage检查。 请注意,没有extendedKeyUsage扩展名的X509Certificate
隐式允许所有的关键目的。
请注意, Set
被克隆以防止后续修改。
Parameters | |
---|---|
keyPurposeSet |
Set : a Set of key purpose OIDs in string format (or null ). Each OID is represented by a set of nonnegative integers separated by periods. |
Throws | |
---|---|
IOException |
if the OID is invalid, such as the first component being not 0, 1 or 2 or the second component being greater than 39. |
也可以看看:
void setIssuer (byte[] issuerDN)
设置发行人标准。 指定的专有名称必须与X509Certificate
中的发行者专有名称匹配。 如果指定null
,则发行者标准将被禁用,并且任何发行者专有名称都将被执行。
如果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)) }
请注意,此处指定的字节数组已被克隆,以防止后续修改。
Parameters | |
---|---|
issuerDN |
byte : a byte array containing the distinguished name in ASN.1 DER encoded form (or null ) |
Throws | |
---|---|
IOException |
if an encoding error occurs (incorrect form for DN) |
void setIssuer (X500Principal issuer)
设置发行人标准。 指定的专有名称必须与X509Certificate
中的发行者专有名称匹配。 如果null
,任何发行人专有名称都可以。
Parameters | |
---|---|
issuer |
X500Principal : a distinguished name as X500Principal (or null ) |
void setIssuer (String issuerDN)
诋毁 ,使用setIssuer(X500Principal)或者setIssuer(byte[])代替。 不应该依赖此方法,因为它可能无法匹配某些证书,因为RFC 2253字符串形式的某些专有名称中的编码信息丢失。
设置发行人标准。 指定的专有名称必须与X509Certificate
中的发行者专有名称匹配。 如果null
,任何发行人专有名称都可以。
如果 issuerDN
不是 null
,它应该包含一个专有名称,采用RFC 2253格式。
Parameters | |
---|---|
issuerDN |
String : a distinguished name in RFC 2253 format (or null ) |
Throws | |
---|---|
IOException |
if a parsing error occurs (incorrect form for DN) |
void setKeyUsage (boolean[] keyUsage)
设置keyUsage标准。 X509Certificate
必须允许指定的keyUsage值。 如果null
,则不会执行keyUsage检查。 请注意,没有keyUsage扩展名的X509Certificate
隐式允许所有keyUsage值。
请注意,此处提供的布尔数组被克隆以防止后续修改。
Parameters | |
---|---|
keyUsage |
boolean : a boolean array in the same format as the boolean array returned by X509Certificate.getKeyUsage() . Or null . |
也可以看看:
void setMatchAllSubjectAltNames (boolean matchAllNames)
启用/禁用匹配setSubjectAlternativeNames
或addSubjectAlternativeName
方法中指定的所有addSubjectAlternativeName
。 如果启用,则X509Certificate
必须包含所有指定的主题替代名称。 如果禁用,则X509Certificate
必须至少包含一个指定的主题替代名称。
matchAllNames标志默认为 true
。
Parameters | |
---|---|
matchAllNames |
boolean : if true , the flag is enabled; if false , the flag is disabled. |
也可以看看:
void setNameConstraints (byte[] bytes)
设置名称约束条件。 X509Certificate
必须具有符合指定名称限制的主题和主题替代名称。
名称约束被指定为一个字节数组。 这个字节数组应该包含DER编码形式的名称约束,因为它们出现在RFC 3280和X.509中定义的NameConstraints结构中。 这个结构的ASN.1定义如下。
NameConstraints ::= SEQUENCE {
permittedSubtrees [0] GeneralSubtrees OPTIONAL,
excludedSubtrees [1] GeneralSubtrees OPTIONAL }
GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree
GeneralSubtree ::= SEQUENCE {
base GeneralName,
minimum [0] BaseDistance DEFAULT 0,
maximum [1] BaseDistance OPTIONAL }
BaseDistance ::= INTEGER (0..MAX)
GeneralName ::= CHOICE {
otherName [0] OtherName,
rfc822Name [1] IA5String,
dNSName [2] IA5String,
x400Address [3] ORAddress,
directoryName [4] Name,
ediPartyName [5] EDIPartyName,
uniformResourceIdentifier [6] IA5String,
iPAddress [7] OCTET STRING,
registeredID [8] OBJECT IDENTIFIER}
请注意,这里提供的字节数组被克隆,以防止后续修改。
Parameters | |
---|---|
bytes |
byte : a byte array containing the ASN.1 DER encoding of a NameConstraints extension to be used for checking name constraints. Only the value of the extension is included, not the OID or criticality flag. Can be null , in which case no name constraints check will be performed. |
Throws | |
---|---|
IOException |
if a parsing error occurs |
也可以看看:
void setPathToNames (Collection<List<?>> names)
设置pathToNames标准。 X509Certificate
不得包含禁止构建指定名称路径的名称约束。
该方法允许调用者使用单个方法调用来指定X509Certificates
的名称约束必须允许的完整名称集。 指定的值将替换pathToNames标准的以前的值。
这个约束在构建认证路径时很有用(从目标到信任锚点),如果已经构建了部分路径,则任何候选证书都不能包含名称约束,禁止在部分路径中建立任何名称的路径。
names
参数(如果不是null
)是Collection
,每个名称的一个条目将包含在pathToNames条件中。 每个条目是List
其第一条目是Integer
(名称类型,0-8),其第二条目是String
或字节数组(名称,分别以字符串或ASN.1 DER编码形式)。 可以有多个相同类型的名称。 如果提供null
作为此参数的值,则不会执行pathToNames检查。
Collection
中的每个名称可以指定为String
或ASN.1编码的字节数组。 有关所用格式的更多详细信息,请参阅addPathToName(int type, String name)
和addPathToName(int type, byte [] name)
。
注意:对于专有名称,请指定字节数组形式而不是字符串形式。 有关更多信息,请参阅addPathToName(int, String)
中的说明。
请注意, names
参数可以包含重复的名称(相同的名称和名称类型),但它们可能会从 getPathToNames
方法返回的名称的 Collection
中删除。
请注意,在 Collection
上执行深层复制以防止后续修改。
Parameters | |
---|---|
names |
Collection : a Collection with one entry per name (or null ) |
Throws | |
---|---|
IOException |
if a parsing error occurs |
也可以看看:
void setPolicy (Set<String> certPolicySet)
设置策略约束。 X509Certificate
必须在其证书策略扩展中至少包含一个指定的策略。 如果certPolicySet
为空,则X509Certificate
必须在其证书策略扩展中至少包含某些指定的策略。 如果certPolicySet
是null
,则不执行政策检查。
请注意, Set
被克隆以防止后续修改。
Parameters | |
---|---|
certPolicySet |
Set : a Set of certificate policy OIDs in string format (or null ). Each OID is represented by a set of nonnegative integers separated by periods. |
Throws | |
---|---|
IOException |
if a parsing error occurs on the OID such as the first component is not 0, 1 or 2 or the second component is greater than 39. |
也可以看看:
void setPrivateKeyValid (Date privateKeyValid)
设置privateKeyValid条件。 指定的日期必须在X509Certificate
的私钥有效期内。 如果null
,则不会执行privateKeyValid检查。
请注意, Date
提供的 Date
已被克隆以防止后续修改。
Parameters | |
---|---|
privateKeyValid |
Date : the Date to check (or null ) |
也可以看看:
void setSerialNumber (BigInteger serial)
设置serialNumber标准。 指定的序列号必须与X509Certificate
中的证书序列号相X509Certificate
。 如果null
,任何证书序列号都可以。
Parameters | |
---|---|
serial |
BigInteger : the certificate serial number to match (or null ) |
也可以看看:
void setSubject (X500Principal subject)
设置主题标准。 指定的专有名称必须与X509Certificate
中的主题专有名称匹配。 如果null
,任何主题专有名称都可以。
Parameters | |
---|---|
subject |
X500Principal : a distinguished name as X500Principal (or null ) |
void setSubject (byte[] subjectDN)
设置主题标准。 指定的专有名称必须与X509Certificate
中的主题专有名称匹配。 如果null
,任何主题专有名称都可以。
如果subjectDN
不是null
,它应该包含一个单独的DER编码的专有名称,如X.501中所定义。 有关此结构的ASN.1表示法,请参阅setIssuer(byte [] issuerDN)
。
Parameters | |
---|---|
subjectDN |
byte : a byte array containing the distinguished name in ASN.1 DER format (or null ) |
Throws | |
---|---|
IOException |
if an encoding error occurs (incorrect form for DN) |
void setSubject (String subjectDN)
诋毁 ,使用setSubject(X500Principal)或者setSubject(byte[])代替。 不应该依赖此方法,因为它可能无法匹配某些证书,因为某些专有名称的RFC 2253字符串形式中的编码信息丢失。
设置主题标准。 指定的专有名称必须与X509Certificate
中的主题专有名称匹配。 如果null
,任何主题专有名称都可以。
如果 subjectDN
不是 null
,它应该包含一个专有名称,采用RFC 2253格式。
Parameters | |
---|---|
subjectDN |
String : a distinguished name in RFC 2253 format (or null ) |
Throws | |
---|---|
IOException |
if a parsing error occurs (incorrect form for DN) |
void setSubjectAlternativeNames (Collection<List<?>> names)
设置subjectAlternativeNames标准。 X509Certificate
必须包含所有或至少一个指定的subjectAlternativeNames,具体取决于matchAllNames标志的值(请参阅setMatchAllSubjectAltNames
)。
此方法允许调用方使用单个方法调用来指定subjectAlternativeNames标准的完整主题替代名称集。 指定的值将替换subjectAlternativeNames标准的以前的值。
names
参数(如果不是null
)是Collection
,每个名称的一个条目将包含在主题替代名称条件中。 每个条目是List
其第一条目是Integer
(名称类型,0-8),其第二条目是String
或字节数组(名称,分别以字符串或ASN.1 DER编码形式)。 可以有多个相同类型的名称。 如果提供null
作为此参数的值,则不会执行subjectAlternativeNames检查。
Collection
中的每个主题替代名称可以指定为String
或ASN.1编码的字节数组。 有关所用格式的更多详细信息,请参阅addSubjectAlternativeName(int type, String name)
和addSubjectAlternativeName(int type, byte [] name)
。
注意:对于专有名称,请指定字节数组形式而不是字符串形式。 有关更多信息,请参阅addSubjectAlternativeName(int, String)
中的说明。
请注意, names
参数可以包含重复的名称(相同的名称和名称类型),但它们可能会从 getSubjectAlternativeNames
方法返回的名称的 Collection
中删除。
请注意,在 Collection
上执行深层复制以防止后续修改。
Parameters | |
---|---|
names |
Collection : a Collection of names (or null ) |
Throws | |
---|---|
IOException |
if a parsing error occurs |
也可以看看:
void setSubjectKeyIdentifier (byte[] subjectKeyID)
设置subjectKeyIdentifier标准。 X509Certificate
必须包含一个SubjectKeyIdentifier扩展,扩展的内容与指定的标准值匹配。 如果标准值是null
,则不会执行subjectKeyIdentifier检查。
如果subjectKeyID
不是null
,它应该包含与SubjectKeyIdentifier扩展名的扩展值(不包括对象标识符,关键性设置和封装OCTET STRING)内容相对应的单个DER编码值。 下面是该结构的ASN.1表示法。
SubjectKeyIdentifier ::= KeyIdentifier
KeyIdentifier ::= OCTET STRING
由于主题密钥标识符的格式不是任何标准规定的,所以主题密钥标识符不被X509CertSelector
解析。 而是使用逐字节比较来比较值。
请注意,这里提供的字节数组被克隆,以防止后续修改。
Parameters | |
---|---|
subjectKeyID |
byte : the subject key identifier (or null ) |
也可以看看:
void setSubjectPublicKey (byte[] key)
设置subjectPublicKey标准。 X509Certificate
必须包含指定的主题公钥。 如果null
,则不会执行subjectPublicKey检查。
因为此方法允许将公钥指定为字节数组,所以它可以用于未知的密钥类型。
如果key
不是null
,它应该包含一个单一的DER编码的SubjectPublicKeyInfo结构,如X.509中所定义。 该结构的ASN.1表示法如下。
SubjectPublicKeyInfo ::= SEQUENCE {
algorithm AlgorithmIdentifier,
subjectPublicKey BIT STRING }
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL }
-- contains a value of the type
-- registered for use with the
-- algorithm object identifier value
请注意,这里提供的字节数组被克隆,以防止后续修改。
Parameters | |
---|---|
key |
byte : a byte array containing the subject public key in ASN.1 DER form (or null ) |
Throws | |
---|---|
IOException |
if an encoding error occurs (incorrect form for subject public key) |
也可以看看:
void setSubjectPublicKey (PublicKey key)
设置subjectPublicKey标准。 X509Certificate
必须包含指定的主题公钥。 如果null
,则不会执行subjectPublicKey检查。
Parameters | |
---|---|
key |
PublicKey : the subject public key to check for (or null ) |
也可以看看:
void setSubjectPublicKeyAlgID (String oid)
设置subjectPublicKeyAlgID标准。 X509Certificate
必须包含具有指定算法的主题公钥。 如果null
,则不会执行subjectPublicKeyAlgID检查。
Parameters | |
---|---|
oid |
String : The object identifier (OID) of the algorithm to check for (or null ). An OID is represented by a set of nonnegative integers separated by periods. |
Throws | |
---|---|
IOException |
if the OID is invalid, such as the first component being not 0, 1 or 2 or the second component being greater than 39. |
也可以看看:
String toString ()
返回 CertSelector
的可打印表示。
Returns | |
---|---|
String |
a String describing the contents of the CertSelector |