Most visited

Recently visited

Added in API level 1

X509CertSelector

public class X509CertSelector
extends Object implements CertSelector

java.lang.Object
   ↳ java.security.cert.X509CertSelector


一个CertSelector ,它选择符合所有指定条件的X509Certificates CertStore选择证书以构建符合PKIX的认证路径时,此类特别有用。

当第一次构造中, X509CertSelector启用没有标准,并且每个所述get方法返回默认值( null ,或-1getBasicConstraints方法)。 因此, match方法将返回true任何X509Certificate 通常,可以使用多个条件(例如,通过调用setIssuersetKeyUsage ),然后将X509CertSelector传递给CertStore.getCertificates或某种类似的方法。

可以启用多个标准(例如,通过调用setIssuersetSerialNumber ),使得match方法通常与单个X509Certificate唯一匹配。 我们通常说,因为两个签发CA可能具有相同的辨别名,并且每个颁发具有相同序列号的证书。 其他独特的组合包括发行者,主题,subjectKeyIdentifier和/或subjectPublicKey标准。

有关 下面提到的X.509证书扩展的定义,请参阅 RFC 3280: Internet X.509 Public Key Infrastructure Certificate and CRL Profile

并发访问

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

也可以看看:

Summary

Public constructors

X509CertSelector()

创建一个 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()

X500Principal返回发行人标准。

byte[] getIssuerAsBytes()

将发行者标准作为字节数组返回。

String getIssuerAsString()

诋毁 ,使用 getIssuer()或者 getIssuerAsBytes()代替。

boolean[] getKeyUsage()

返回keyUsage标准。

boolean getMatchAllSubjectAltNames()

指示 X509Certificate必须包含 setSubjectAlternativeNamesaddSubjectAlternativeName方法中指定的全部或至少一个 addSubjectAlternativeName

byte[] getNameConstraints()

返回名称约束条件。

Collection<List<?>> getPathToNames()

返回pathToNames标准的副本。

Set<String> getPolicy()

返回策略标准。

Date getPrivateKeyValid()

返回privateKeyValid条件。

BigInteger getSerialNumber()

返回serialNumber标准。

X500Principal getSubject()

X500Principal返回主题标准。

Collection<List<?>> getSubjectAlternativeNames()

返回subjectAlternativeNames标准的副本。

byte[] getSubjectAsBytes()

将主题标准作为字节数组返回。

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)

设置基本约束约束。

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)

启用/禁用匹配 setSubjectAlternativeNamesaddSubjectAlternativeName方法中指定的所有 addSubjectAlternativeName

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()

返回 CertSelector的可打印表示。

Inherited methods

From class java.lang.Object
From interface java.security.cert.CertSelector

Public constructors

X509CertSelector

Added in API level 1
X509CertSelector ()

创建一个X509CertSelector 最初,没有标准设置,因此任何X509Certificate将匹配。

Public methods

addPathToName

Added in API level 1
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

addPathToName

Added in API level 1
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

addSubjectAlternativeName

Added in API level 1
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

addSubjectAlternativeName

Added in API level 1
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

clone

Added in API level 1
Object clone ()

返回此对象的副本。

Returns
Object the copy

getAuthorityKeyIdentifier

Added in API level 1
byte[] getAuthorityKeyIdentifier ()

返回authorityKeyIdentifier标准。 X509Certificate必须包含具有指定值的AuthorityKeyIdentifier扩展。 如果null ,则不会执行authorityKeyIdentifier检查。

请注意,返回的字节数组被克隆以防止后续修改。

Returns
byte[] the key identifier (or null)

也可以看看:

getBasicConstraints

Added in API level 1
int getBasicConstraints ()

返回基本约束约束。 如果该值大于或等于零,则X509Certificates必须包含一个至少具有此值的pathLen的basicConstraints扩展。 如果值为-2,则只接受最终实体证书。 如果值为-1,则不执行basicConstraints检查。

Returns
int the value for the basic constraints constraint

也可以看看:

getCertificate

Added in API level 1
X509Certificate getCertificate ()

返回certificateEquals条件。 指定X509Certificate必须等于X509Certificate传递给match方法。 如果null ,此检查不适用。

Returns
X509Certificate the X509Certificate to match (or null)

也可以看看:

getCertificateValid

Added in API level 1
Date getCertificateValid ()

返回certificateValid条件。 指定的日期必须在X509Certificate的证书有效期内。 如果null ,则不会执行certificateValid检查。

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

Returns
Date the Date to check (or null)

也可以看看:

getExtendedKeyUsage

Added in API level 1
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)

也可以看看:

getIssuer

Added in API level 1
X500Principal getIssuer ()

X500Principal返回发行者标准。 该专有名称必须与X509Certificate中的发行人专有名称相匹配。 如果null ,发行人标准被禁用,并且任何发行人专有名称都将被执行。

Returns
X500Principal the required issuer distinguished name as X500Principal (or null)

getIssuerAsBytes

Added in API level 1
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

getIssuerAsString

Added in API level 1
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)

getKeyUsage

Added in API level 1
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.

也可以看看:

getMatchAllSubjectAltNames

Added in API level 1
boolean getMatchAllSubjectAltNames ()

指示X509Certificate必须包含setSubjectAlternativeNamesaddSubjectAlternativeName方法中指定的全部或至少一个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.

也可以看看:

getNameConstraints

Added in API level 1
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.

也可以看看:

getPathToNames

Added in API level 1
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)

也可以看看:

getPolicy

Added in API level 1
Set<String> getPolicy ()

返回策略标准。 X509Certificate必须在其证书策略扩展中至少包含一个指定的策略。 如果返回的Set为空,则X509Certificate必须在其证书策略扩展中至少包含一些指定的策略。 如果Set返回的是null ,则不会执行政策检查。

Returns
Set<String> an immutable Set of certificate policy OIDs in string format (or null)

也可以看看:

getPrivateKeyValid

Added in API level 1
Date getPrivateKeyValid ()

返回privateKeyValid条件。 指定的日期必须在X509Certificate的私钥有效期内。 如果null ,则不会执行privateKeyValid检查。

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

Returns
Date the Date to check (or null)

也可以看看:

getSerialNumber

Added in API level 1
BigInteger getSerialNumber ()

返回serialNumber标准。 指定的序列号必须与X509Certificate中的证书序列号相X509Certificate 如果null ,任何证书序列号都可以。

Returns
BigInteger the certificate serial number to match (or null)

也可以看看:

getSubject

Added in API level 1
X500Principal getSubject ()

X500Principal返回主题标准。 该专有名称必须与X509Certificate中的主题专有名称相匹配。 如果null ,主题标准被禁用,并且任何主题专有名称都会执行。

Returns
X500Principal the required subject distinguished name as X500Principal (or null)

getSubjectAlternativeNames

Added in API level 1
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)

也可以看看:

getSubjectAsBytes

Added in API level 1
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

getSubjectAsString

Added in API level 1
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)

getSubjectKeyIdentifier

Added in API level 1
byte[] getSubjectKeyIdentifier ()

返回subjectKeyIdentifier标准。 X509Certificate必须包含具有指定值的SubjectKeyIdentifier扩展名。 如果null ,则不会执行subjectKeyIdentifier检查。

请注意,返回的字节数组被克隆以防止后续修改。

Returns
byte[] the key identifier (or null)

也可以看看:

getSubjectPublicKey

Added in API level 1
PublicKey getSubjectPublicKey ()

返回subjectPublicKey条件。 X509Certificate必须包含指定的主题公钥。 如果null ,则不会执行subjectPublicKey检查。

Returns
PublicKey the subject public key to check for (or null)

也可以看看:

getSubjectPublicKeyAlgID

Added in API level 1
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.

也可以看看:

match

Added in API level 1
boolean match (Certificate cert)

决定是否应该选择 Certificate

Parameters
cert Certificate: the Certificate to be checked
Returns
boolean true if the Certificate should be selected, false otherwise

setAuthorityKeyIdentifier

Added in API level 1
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解析。 而是使用逐字节比较来比较值。

当填充AuthorityKeyIdentifierkeyIdentifier字段时,该值通常取自颁发者证书中的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)

也可以看看:

setBasicConstraints

Added in API level 1
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

也可以看看:

setCertificate

Added in API level 1
void setCertificate (X509Certificate cert)

设置certificateEquals标准。 指定X509Certificate必须等于X509Certificate传递给match方法。 如果null ,那么这个检查不适用。

当需要匹配单个证书时,此方法特别有用。 尽管可以结合certificateEquals标准指定其他标准,但通常不实际或不必要。

Parameters
cert X509Certificate: the X509Certificate to match (or null)

也可以看看:

setCertificateValid

Added in API level 1
void setCertificateValid (Date certValid)

设置certificateValid条件。 指定的日期必须在X509Certificate的证书有效期内。 如果null ,则不会执行证书null检查。

请注意, Date提供的 Date已被克隆,以防止后续修改。

Parameters
certValid Date: the Date to check (or null)

也可以看看:

setExtendedKeyUsage

Added in API level 1
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.

也可以看看:

setIssuer

Added in API level 1
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)

setIssuer

Added in API level 1
void setIssuer (X500Principal issuer)

设置发行人标准。 指定的专有名称必须与X509Certificate中的发行者专有名称匹配。 如果null ,任何发行人专有名称都可以。

Parameters
issuer X500Principal: a distinguished name as X500Principal (or null)

setIssuer

Added in API level 1
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)

setKeyUsage

Added in API level 1
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.

也可以看看:

setMatchAllSubjectAltNames

Added in API level 1
void setMatchAllSubjectAltNames (boolean matchAllNames)

启用/禁用匹配setSubjectAlternativeNamesaddSubjectAlternativeName方法中指定的所有addSubjectAlternativeName 如果启用,则X509Certificate必须包含所有指定的主题替代名称。 如果禁用,则X509Certificate必须至少包含一个指定的主题替代名称。

matchAllNames标志默认为 true

Parameters
matchAllNames boolean: if true, the flag is enabled; if false, the flag is disabled.

也可以看看:

setNameConstraints

Added in API level 1
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

也可以看看:

setPathToNames

Added in API level 1
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

也可以看看:

setPolicy

Added in API level 1
void setPolicy (Set<String> certPolicySet)

设置策略约束。 X509Certificate必须在其证书策略扩展中至少包含一个指定的策略。 如果certPolicySet为空,则X509Certificate必须在其证书策略扩展中至少包含某些指定的策略。 如果certPolicySetnull ,则不执行政策检查。

请注意, 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.

也可以看看:

setPrivateKeyValid

Added in API level 1
void setPrivateKeyValid (Date privateKeyValid)

设置privateKeyValid条件。 指定的日期必须在X509Certificate的私钥有效期内。 如果null ,则不会执行privateKeyValid检查。

请注意, Date提供的 Date已被克隆以防止后续修改。

Parameters
privateKeyValid Date: the Date to check (or null)

也可以看看:

setSerialNumber

Added in API level 1
void setSerialNumber (BigInteger serial)

设置serialNumber标准。 指定的序列号必须与X509Certificate中的证书序列号相X509Certificate 如果null ,任何证书序列号都可以。

Parameters
serial BigInteger: the certificate serial number to match (or null)

也可以看看:

setSubject

Added in API level 1
void setSubject (X500Principal subject)

设置主题标准。 指定的专有名称必须与X509Certificate中的主题专有名称匹配。 如果null ,任何主题专有名称都可以。

Parameters
subject X500Principal: a distinguished name as X500Principal (or null)

setSubject

Added in API level 1
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)

setSubject

Added in API level 1
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)

setSubjectAlternativeNames

Added in API level 1
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

也可以看看:

setSubjectKeyIdentifier

Added in API level 1
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)

也可以看看:

setSubjectPublicKey

Added in API level 1
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)

也可以看看:

setSubjectPublicKey

Added in API level 1
void setSubjectPublicKey (PublicKey key)

设置subjectPublicKey标准。 X509Certificate必须包含指定的主题公钥。 如果null ,则不会执行subjectPublicKey检查。

Parameters
key PublicKey: the subject public key to check for (or null)

也可以看看:

setSubjectPublicKeyAlgID

Added in API level 1
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.

也可以看看:

toString

Added in API level 1
String toString ()

返回 CertSelector的可打印表示。

Returns
String a String describing the contents of the CertSelector

Hooray!