JavaTM 2 Platform
Standard Ed. 6

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
 
方法摘要
 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 是否必須包含 setSubjectAlternativeNamesaddSubjectAlternativeName 方法中所指定的所有或至少某個 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)
          允許/禁止比對 setSubjectAlternativeNamesaddSubjectAlternativeName 方法中所指定的所有 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 形式)

setSubject

public void setSubject(byte[] subjectDN)
                throws IOException
設置 subject 標準。指定的標識名必須與 X509Certificate 中的主體標識名比對。如果該主體標識名為 null,則與任何主體標識名比對都可以。

如果 subjectDN 不為 null,則應該套件含單個 DER 編碼形式的標識名,正如 X.501 中定義的一樣。有關此結構的 ASN.1 表示,請參閱 setIssuer(byte [] issuerDN)

參數:
subjectDN - 一個 byte 陣列,包含 ASN.1 DER 格式的標識名(或者為 null
拋出:
IOException - 如果出現編碼錯誤(錯誤的 DN 形式)

setSubjectKeyIdentifier

public void setSubjectKeyIdentifier(byte[] subjectKeyID)
設置 subjectKeyIdentifier 標準。X509Certificate 必須包含一個 SubjectKeyIdentifier 擴展,且該擴展的內容與指定的標準值比對。如果該標準值為 null,則不執行 subjectKeyIdentifier 檢查。

如果 subjectKeyID 不為 null,則應該套件含與 SubjectKeyIdentifier 擴展的擴展值內容(不包括物件標識符、關鍵性設置和封裝 OCTET STRING)相對應的 DER 編碼形式的值。此結構的 ASN.1 表示如下:


 SubjectKeyIdentifier ::= KeyIdentifier

 KeyIdentifier ::= OCTET STRING
 

由於任何標準都沒有要求 SubjectKeyIdentifier 的格式,所以 X509CertSelector 不解析 SubjectKeyIdentifier。相反,使用逐位元組比較的方式來比較該值。

注意,要複製此處提供的 byte 陣列以防後續修改。

參數:
subjectKeyID - SubjectKeyIdentifier(或者為 null
另請參見:
getSubjectKeyIdentifier()

setAuthorityKeyIdentifier

public 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。相反,使用逐位元組比較的方式來比較該值。

產生 AuthorityKeyIdentifierkeyIdentifier 欄位時,通常從發佈方證書中的 SubjectKeyIdentifier 擴展中獲取該值。但是要注意,在發佈方的證書上執行 X509Certificate.getExtensionValue(<SubjectKeyIdentifier Object Identifier>) 所得到的結果可能無法直接用作 setAuthorityKeyIdentifier 的輸入。這是因為 SubjectKeyIdentifier 只包含一個 KeyIdentifier OCTET STRING(八位位元組字元串),而不是 KeyIdentifier、GeneralNames 和 CertificateSerialNumber 的 SEQUENCE。為了使用發佈方證書的 SubjectKeyIdentifier 擴展的擴展值,必需提取嵌入的 KeyIdentifier OCTET STRING 值,然後將此 OCTET STRING 以 DER 編碼方式放入一個 SEQUENCE 中。有關 SubjectKeyIdentifier 的更多詳細資訊,請參見 setSubjectKeyIdentifier(byte[] subjectKeyID)

還要注意,要複製此處提供的 byte 陣列以防後續修改。

參數:
authorityKeyID - AuthorityKeyIdentifier(或者為 null
另請參見:
getAuthorityKeyIdentifier()

setCertificateValid

public void setCertificateValid(Date certValid)
設置 certificateValid 標準。指定的日期必須在 X509Certificate 的證書有效期內。如果其值為 null,則不執行 certificateValid 檢查。

注意,要複製此處提供的 Date 以防後續修改。

參數:
certValid - 要檢查的 Date(或者為 null
另請參見:
getCertificateValid()

setPrivateKeyValid

public void setPrivateKeyValid(Date privateKeyValid)
設置 privateKeyValid 標準。指定的日期必須在 X509Certificate 的私鑰有效期內。如果為 null,則不執行 privateKeyValid 檢查。

注意,要複製此處提供的 Date 以防後續修改。

參數:
privateKeyValid - 要檢查的 Date(或者為 null
另請參見:
getPrivateKeyValid()

setSubjectPublicKeyAlgID

public void setSubjectPublicKeyAlgID(String oid)
                              throws IOException
設置 subjectPublicKeyAlgID 標準。X509Certificate 必須包含一個具有指定演算法的主體公鑰。如果其值為 null,則不執行 subjectPublicKeyAlgID 檢查。

參數:
oid - 用於檢查的演算法的物件標識符 (OID)(或者為 null)。OID 由一組句點分隔的非負整數來表示。
拋出:
IOException - 如果該 OID 無效,例如其第一部分不是 0、1 或 2,或第二部分大於 39。
另請參見:
getSubjectPublicKeyAlgID()

setSubjectPublicKey

public void setSubjectPublicKey(PublicKey key)
設置 subjectPublicKey 標準。X509Certificate 必須包含指定的主體公鑰。如果其值為 null,則不執行 subjectPublicKey 檢查。

參數:
key - 用於檢查的 subjectPublicKey(或者為 null
另請參見:
getSubjectPublicKey()

setSubjectPublicKey

public void setSubjectPublicKey(byte[] key)
                         throws IOException
設置 subjectPublicKey 標準。X509Certificate 必須包含指定的主體公鑰。如果其值為 null,則不執行 subjectPublicKey 檢查。

因為此方法允許以 byte 陣列的方式指定公鑰,所以可將其用於未知的密鑰型別。

如果 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
 

注意,要複製此處提供的 byte 陣列以防後續修改。

參數:
key - 一個 byte 陣列,包含 ASN.1 DER 編碼形式的 subjectPublicKey(或者為 null
拋出:
IOException - 如果出現編碼錯誤(subjectPublicKey 形式不正確)
另請參見:
getSubjectPublicKey()

setKeyUsage

public void setKeyUsage(boolean[] keyUsage)
設置 keyUsage 標準。X509Certificate 必須允許使用指定的 keyUsage 值。如果其值為 null,則不執行 keyUsage 檢查。注意,沒有 keyUsage 擴展的 X509Certificate 隱式地允許使用所有 keyUsage 值。

注意,要複製此處提供的 boolean 陣列以防後續修改。

參數:
keyUsage - 一個 boolean 陣列,其格式與 X509Certificate.getKeyUsage() 返回的 boolean 陣列格式相同。或者為 null
另請參見:
getKeyUsage()

setExtendedKeyUsage

public void setExtendedKeyUsage(Set<String> keyPurposeSet)
                         throws IOException
設置 extendedKeyUsage 標準。X509Certificate 必須允許其 extendedKeyUsage 擴展中的指定 keyPurpose。如果 keyPurposeSet 為空或為 null,則不執行 extendedKeyUsage 檢查。注意,沒有 extendedKeyUsage 擴展的 X509Certificate 隱式地允許所有 keyPurpose。

注意,要複製該 Set 以防後續修改。

參數:
keyPurposeSet - string 格式的 keyPurpose OID 的 Set(或者為 null)。每個 OID 都由一組句點分隔的非負整數來表示。
拋出:
IOException - 如果該 OID 無效,例如其第一部分不是 0、1 或 2,或第二部分大於 39。
另請參見:
getExtendedKeyUsage()

setMatchAllSubjectAltNames

public void setMatchAllSubjectAltNames(boolean matchAllNames)
允許/禁止比對 setSubjectAlternativeNamesaddSubjectAlternativeName 方法中所指定的所有 subjectAlternativeNames。如果允許比對,則 X509Certificate 必須包含所有指定的 subjectAlternativeNames。如果禁止比對,則 X509Certificate 至少必須包含某個指定的 subjectAlternativeName。

預設情況下,matchAllNames 標誌為 true

參數:
matchAllNames - 如果為 true,則啟用該標誌;如果為 false,則禁用該標誌。
另請參見:
getMatchAllSubjectAltNames()

setSubjectAlternativeNames

public void setSubjectAlternativeNames(Collection<List<?>> names)
                                throws IOException
設置 subjectAlternativeNames 標準。X509Certificate 必須包含所有或至少某個指定的 subjectAlternativeNames,這取決於 matchAllNames 標誌的值(參見 setMatchAllSubjectAltNames)。

此方法允許調用方(使用單個方法調用)為 subjectAlternativeNames 標準指定完整的 subjectAlternativeNames 集。指定的值會替換 subjectAlternativeNames 標準以前的值。

names 參數(如果不為 null)是一個 Collection,subjectAlternativeNames 標準中所包括的每個名稱都對應該集合中的一項。每一項都是一個 List,該 List 的第一項是一個 Integer(0-8,表示名稱型別),第二項是一個 String 或 byte 陣列(分別為 string 或 ASN.1 DER 編碼形式,表示名稱)。相同型別可以有多個名稱。如果為此參數提供的值為 null,則不執行 subjectAlternativeNames 檢查。

Collection 中的每個 subjectAlternativeNames 都可以指定為一個 String 或 一個 ASN.1 編碼的 byte 陣列。有關所用格式的更多詳細資訊,請參閱 addSubjectAlternativeName(int type, String name)addSubjectAlternativeName(int type, byte [] name)

註:對於標識名,應指定為 byte 陣列,而不是 String。有關更多資訊,請參閱 addSubjectAlternativeName(int, String) 中的注視。

注意,names 參數可以包含重複的名稱(相同的名稱和名稱型別),但是可能從 getSubjectAlternativeNames 方法返回的名稱 Collection 中將這些名稱移除。

注意,要對該 Collection 執行深層複製以防後續修改。

參數:
names - 一個名稱 Collection(或者為 null
拋出:
IOException - 如果出現解析錯誤
另請參見:
getSubjectAlternativeNames()

addSubjectAlternativeName

public void addSubjectAlternativeName(int type,
                                      String name)
                               throws IOException
向 subjectAlternativeNames 標準中添加一個名稱。X509Certificate 必須包含所有或至少某個指定的 subjectAlternativeNames,這取決於 matchAllNames 標誌的值(參見 setMatchAllSubjectAltNames)。

此方法允許調用方向 subjectAlternativeNames 集中添加一個名稱。將指定的名稱添加到 subjectAlternativeNames 標準的以前值中。如果指定的名稱是重複的,則忽略它。

以 string 格式提供該名稱。RFC 822、DNS 和 URI 名稱使用這些型別(受 RFC 2459 中所包括的限制的影響)的 string 格式。使用四點表示法(dotted quad notation)提供 IPv4 位址名。OID 位址名用一系列句點分隔的非負整數來表示。以 RFC 2253 格式提供目錄名(標識名)。對於 otherNames、X.400 名、EDI 方的名稱、IPv6 位址名或其他所有名稱型別,則沒有定義標準 string 格式。應該使用 addSubjectAlternativeName(int type, byte [] name) 方法指定它們。

註:對於標識名,請使用 addSubjectAlternativeName(int, byte[])。由於某些 RFC 2253 String 形式的標識名中會丟失編碼資訊,所以當此方法與某些證書不比對時不應該依賴它。

參數:
type - 名稱型別(0-8,在 RFC 2459 的 4.2.1.7 部分中指定)
name - string 形式的名稱(不能為 null
拋出:
IOException - 如果出現解析錯誤

addSubjectAlternativeName

public void addSubjectAlternativeName(int type,
                                      byte[] name)
                               throws IOException
向 subjectAlternativeNames 標準中添加一個名稱。X509Certificate 必須包含所有或至少某個指定的 subjectAlternativeNames,這取決於 matchAllNames 標誌的值(參見 setMatchAllSubjectAltNames)。

此方法允許調用方向 subjectAlternativeNames 集中添加一個名稱。將指定的名稱添加到 subjectAlternativeNames 標準的以前值中。如果指定的名稱是重複的,則忽略它。

以 byte 陣列的形式提供該名稱。此 byte 陣列應該套件含 DER 編碼名稱,因為它將出現在 RFC 2459 和 X.509 內所定義的 GeneralName 結構中。已編碼的 byte 陣列應該只包含該名稱的已編碼值,不應該套件括 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}
 

注意,要複製此處提供的 byte 陣列以防後續修改。

參數:
type - 名稱型別(0-8,如上所列)
name - 一個 byte 陣列,包含 ASN.1 DER 編碼形式的名稱
拋出:
IOException - 如果出現解析錯誤

setNameConstraints

public void setNameConstraints(byte[] bytes)
                        throws IOException
設置 NameConstraints 標準。X509Certificate 必須具有滿足指定 NameConstraints 要求的 subject 和 subjectAlternativeNames。

以 byte 陣列的形式指定該 NameConstraints。此 byte 陣列應該套件含 DER 編碼形式的 NameConstraints,因為它們將出現在 RFC 2459 和 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}
 

注意,要複製此處提供的 byte 陣列以防後續修改。

參數:
bytes - 一個 byte 陣列,包含為檢查 NameConstraints 所使用的 NameConstraints 擴展的 ASN.1 DER 編碼。只包括該擴展的值,不包括 OID 或關鍵性標誌。其值可以為 null,此時將不執行 NameConstraints 檢查。
拋出:
IOException - 如果出現解析錯誤
另請參見:
getNameConstraints()

setBasicConstraints

public void setBasicConstraints(int minMaxPathLen)
設置 basicConstraints 限制。如果該值大於等於零,則 X509Certificates 套件括的 basicConstraints 擴展具有的 pathLen 不能小於此值。如果該值為 -2,則只接受最終實體證書。如果該值為 -1,則不執行檢查。

建構正向證書路徑(從目標到受信定位點)時,此限制很有用。如果已建構了部分路徑,則任何候選證書的 maxPathLen 值都必須大於等於這些路徑中的證書數。

參數:
minMaxPathLen - basicConstraints 限制的值
拋出:
IllegalArgumentException - 如果該值小於 -2
另請參見:
getBasicConstraints()

setPolicy

public void setPolicy(Set<String> certPolicySet)
               throws IOException
設置策略限制。X509Certificate 至少必須包括其證書策略擴展中指定的一種策略。如果 certPolicySet 為空,則 X509Certificate 至少必須包括其證書策略擴展中指定的某個策略。如果 certPolicySetnull,則不執行策略檢查。

注意,要複製該 Set 以防後續修改。

參數:
certPolicySet - string 格式的證書策略 OID 的 Set(或者為 null)。每個 OID 都由一組句點分隔的非負整數來表示。
拋出:
IOException - 如果出現 OID 的解析錯誤,例如其第一部分不是 0、1 或 2,或第二部分大於 39。
另請參見:
getPolicy()

setPathToNames

public void setPathToNames(Collection<List<?>> names)
                    throws IOException
設置 pathToNames 標準。X509Certificate 不能包括禁止建構指定名稱路徑的 NameConstraints。

此方法允許調用方(使用單個方法調用)指定 X509Certificates 的 NameConstraints 必須允許使用的完整名稱集。指定的值會替換 pathToNames 標準以前的值。

建構正向證書路徑(從目標到受信定位點)時,此限制很有用。如果已建構了部分路徑,則任何候選證書所包括的 NameConstraints 都不能禁止建構到達這些路徑中任意名稱的路徑。

names 參數(如果不為 null)是一個 Collection,pathToNames 標準中所包括的每個名稱都對應該集合中的一項。每一項都是一個 List,該 List 的第一項是一個 Integer(0-8,表示名稱型別),第二項是一個 String 或 byte 陣列(分別為 string 或 ASN.1 DER 編碼形式,表示名稱)。相同型別可以有多個名稱。如果提供的參數值為 null,則不執行 pathToNames 檢查。

Collection 中的每個名稱都可以指定為一個 String 或一個 ASN.1 編碼的 byte 陣列。有關所用格式的更多詳細資訊,請參閱 addPathToName(int type, String name)addPathToName(int type, byte [] name)

註:對於標識名,應指定為 byte 陣列,而不是 String。有關更多資訊,請參閱 addPathToName(int, String) 中的註釋。

注意,names 參數可以包含重複的名稱(相同的名稱和名稱型別),但是可能從 getPathToNames 方法返回的名稱 Collection 中將這些名稱移除。

注意,要對該 Collection 執行深層複製以防後續修改。

參數:
names - 每個名稱都對應一項的 Collection(或者為 null
拋出:
IOException - 如果出現解析錯誤
另請參見:
getPathToNames()

addPathToName

public void addPathToName(int type,
                          String name)
                   throws IOException
向 pathToNames 標準中添加一個名稱。X509Certificate 不能包括禁止建構指定名稱路徑的 NameConstraints。

此方法允許調用方向 X509Certificates 的 NameConstraints 必須允許使用的名稱集中添加一個名稱。將指定的名稱添加到 pathToNames 標準的以前值中。如果該名稱是重複的,則忽略它。

以 string 格式提供該名稱。RFC 822、DNS 和 URI 名稱使用這些型別(受 RFC 2459 中所包括的限制的影響)的 string 格式。使用四點表示法(dotted quad notation)提供 IPv4 位址名。OID 位址名用一系列句點分隔的非負整數來表示。以 RFC 2253 格式提供目錄名(標識名)。對於 otherNames、X.400 名、EDI 方的名稱、IPv6 位址名或其他所有名稱型別,則沒有定義標準 string 格式。應該使用 addPathToName(int type, byte [] name) 方法指定它們。

註:對於標識名,請使用 addPathToName(int, byte[])。由於某些 RFC 2253 String 形式的標識名中會丟失編碼資訊,所以當此方法與某些證書不比對時不應該依賴它。

參數:
type - 名稱型別(0-8,在 RFC 2459 的 4.2.1.7 部分中指定)
name - string 形式的名稱
拋出:
IOException - 如果出現解析錯誤

addPathToName

public void addPathToName(int type,
                          byte[] name)
                   throws IOException
向 pathToNames 標準中添加一個名稱。X509Certificate 不能包括禁止建構指定名稱路徑的 NameConstraints。

此方法允許調用方向 X509Certificates 的 NameConstraints 必須允許使用的名稱集中添加一個名稱。將指定的名稱添加到 pathToNames 標準的以前值中。如果該名稱是重複的,則忽略它。

以 byte 陣列的形式提供該名稱。此 byte 陣列應該套件含 DER 編碼名稱,因為它將出現在 RFC 2459 和 X.509 內所定義的 GeneralName 結構中。addSubjectAlternativeName(int type, byte [] name) 的文檔中有此結構的 ASN.1 定義。

注意,要複製此處提供的 byte 陣列以防後續修改。

參數:
type - 名稱型別(0-8,在 RFC 2459 的 4.2.1.7 部分中指定)
name - 一個 byte 陣列,包含 ASN.1 DER 編碼名稱
拋出:
IOException - 如果出現解析錯誤

getCertificate

public X509Certificate getCertificate()
返回 certificateEquals 標準。指定的 X509Certificate 必須等於傳入到 match 方法的 X509Certificate。如果它為 null,則不進行此項檢查。

返回:
要比對的 X509Certificate(或者為 null
另請參見:
setCertificate(java.security.cert.X509Certificate)

getSerialNumber

public BigInteger getSerialNumber()
返回 serialNumber 標準。指定的 serialNumber 必須與 X509Certificate 中的證書 serialNumber 比對。如果該 serialNumber 為 null,則任何證書 serialNumber 都可以。

返回:
要比對的證書 serialNumber(或者為 null
另請參見:
setSerialNumber(java.math.BigInteger)

getIssuer

public X500Principal getIssuer()
X500Principal 的形式返回 issuer 標準。此標識名必須與 X509Certificate 中的發佈方標識名比對。如果該發佈方標識名為 null,則禁用 issuer 標準,且與任何發佈方標識名比對都可以。

返回:
以 X500Principal 形式返回所要求的發佈方標識名(或者為 null
從以下版本開始:
1.5

getIssuerAsString

public String getIssuerAsString()
已過時,使用 getIssuer()getIssuerAsBytes() 替代。由於某些 RFC 2253 String 形式的標識名中會丟失編碼資訊,所以當此方法與某些證書不比對時不應該依賴它。

返回以 String 表示的 issuer 標準。此標識名必須與 X509Certificate 中的發佈方標識名比對。如果該發佈方標識名為 null,則禁用 issuer 標準,且與任何發佈方標識名比對都可以。

如果返回的值不為 null,則是一個 RFC 2253 格式的標識名。

返回:
以 RFC 2253 格式返回所要求的發佈方標識名(或者為 null

getIssuerAsBytes

public byte[] getIssuerAsBytes()
                        throws IOException
返回以 byte 陣列表示的 issuer 標準。此標識名必須與 X509Certificate 中的發佈方標識名比對。如果該發佈方標識名為 null,則禁用 issuer 標準,且與任何發佈方標識名比對都可以。

如果返回的值不為 null,則是包含單個 DER 編碼形式的標識名的 byte 陣列,正如 X.501 中定義的一樣。setIssuer(byte [] issuerDN) 的文檔中提供了此結構的 ASN.1 表示。

注意,要複製返回的 byte 陣列以防後續修改。

返回:
一個 byte 陣列,以 ASN.1 DER 格式包含所要求的發佈方標識名(或者為 null
拋出:
IOException - 如果出現編碼錯誤

getSubject

public X500Principal getSubject()
X500Principal 的形式返回 subject 標準。此標識名必須與 X509Certificate 中的主體標識名比對。如果該主體標識名為 null,則禁用 subject 標準,且與任何主體標識名比對都可以。

返回:
以 X500Principal 形式返回所要求的主體標識名(或者為 null
從以下版本開始:
1.5

getSubjectAsString

public String getSubjectAsString()
已過時,使用 getSubject()getSubjectAsBytes() 替代。由於某些 RFC 2253 String 形式的標識名中會丟失編碼資訊,所以當此方法與某些證書不比對時不應該依賴它。

返回以 String 表示的 subject 標準。此標識名必須與 X509Certificate 中的主體標識名比對。如果該主體標識名為 null,則禁用 subject 標準,且與任何主體標識名比對都可以。

如果返回的值不為 null,則是一個 RFC 2253 格式的標識名。

返回:
以 RFC 2253 格式返回所要求的主體標識名(或者為 null

getSubjectAsBytes

public byte[] getSubjectAsBytes()
                         throws IOException
以 byte 陣列的形式返回 subject 標準。此標識名必須與 X509Certificate 中的主體標識名比對。如果該主體標識名為 null,則禁用 subject 標準,且與任何主體標識名比對都可以。

如果返回的值不為 null,則是包含單個 DER 編碼形式的標識名的 byte 陣列,正如 X.501 中定義的一樣。setSubject(byte [] subjectDN) 的文檔中提供了此結構的 ASN.1 表示。

注意,要複製返回的 byte 陣列以防後續修改。

返回:
一個 byte 陣列,以 ASN.1 DER 格式包含所要求的主體標識名(或者為 null
拋出:
IOException - 如果出現編碼錯誤

getSubjectKeyIdentifier

public byte[] getSubjectKeyIdentifier()
返回 subjectKeyIdentifier 標準。X509Certificate 必須包含一個具有指定值的 SubjectKeyIdentifier 擴展。如果其值為 null,則不執行 subjectKeyIdentifier 檢查。

注意,要複製返回的 byte 陣列以防後續修改。

返回:
密鑰標識符(或者為 null
另請參見:
setSubjectKeyIdentifier(byte[])

getAuthorityKeyIdentifier

public byte[] getAuthorityKeyIdentifier()
返回 authorityKeyIdentifier 標準。X509Certificate 必須包含一個具有指定值的 AuthorityKeyIdentifier 擴展。如果其值為 null,則不執行 authorityKeyIdentifier 檢查。

注意,要複製返回的 byte 陣列以防後續修改。

返回:
密鑰標識符(或者為 null
另請參見:
setAuthorityKeyIdentifier(byte[])

getCertificateValid

public Date getCertificateValid()
返回 certificateValid 標準。指定的日期必須在 X509Certificate 的證書有效期內。如果其值為 null,則不執行 certificateValid 檢查。

注意,要複製返回的 Date 以防後續修改。

返回:
要檢查的 Date(或者為 null
另請參見:
setCertificateValid(java.util.Date)

getPrivateKeyValid

public Date getPrivateKeyValid()
返回 privateKeyValid 標準。指定的日期必須在 X509Certificate 的私鑰有效期內。如果其值為 null,則不執行 privateKeyValid 檢查。

注意,要複製返回的 Date 以防後續修改。

返回:
要檢查的 Date(或者為 null
另請參見:
setPrivateKeyValid(java.util.Date)

getSubjectPublicKeyAlgID

public String getSubjectPublicKeyAlgID()
返回 subjectPublicKeyAlgID 標準。X509Certificate 必須包含一個具有指定演算法的主體公鑰。如果其值為 null,則不執行 subjectPublicKeyAlgID 檢查。

返回:
用於檢查的簽章演算法的物件標識符 (OID)(或者為 null)。OID 由一組句點分隔的非負整數來表示。
另請參見:
setSubjectPublicKeyAlgID(java.lang.String)

getSubjectPublicKey

public PublicKey getSubjectPublicKey()
返回 subjectPublicKey 標準。X509Certificate 必須包含指定的主體公鑰。如果其值為 null,則不執行 subjectPublicKey 檢查。

返回:
用於檢查的 subjectPublicKey(或者為 null
另請參見:
setSubjectPublicKey(java.security.PublicKey)

getKeyUsage

public boolean[] getKeyUsage()
返回 keyUsage 標準。X509Certificate 必須允許使用指定的 keyUsage 值。如果其值為 null,則不執行 keyUsage 檢查。

注意,要複製返回的 boolean 陣列以防後續修改。

返回:
一個 boolean 陣列,其格式與 X509Certificate.getKeyUsage() 返回的 boolean 陣列格式相同。或者為 null
另請參見:
setKeyUsage(boolean[])

getExtendedKeyUsage

public Set<String> getExtendedKeyUsage()
返回 extendedKeyUsage 標準。X509Certificate 必須允許其 extendedKeyUsage 擴展中的指定 keyPurpose。如果返回的 keyPurposeSet 為空或為 null,則不執行 extendedKeyUsage 檢查。注意,沒有 extendedKeyUsage 擴展的 X509Certificate 隱式地允許所有 keyPurpose。

返回:
一個 string 格式的 keyPurpose OID 的不可變 Set(或者為 null
另請參見:
setExtendedKeyUsage(java.util.Set)

getMatchAllSubjectAltNames

public boolean getMatchAllSubjectAltNames()
指示 X509Certificate 是否必須包含 setSubjectAlternativeNamesaddSubjectAlternativeName 方法中所指定的所有或至少某個 subjectAlternativeNames。如果此方法返回值為 true,則 X509Certificate 必須包含所有指定的 subjectAlternativeNames。如果為 false,則 X509Certificate 必須至少包含某個指定的 subjectAlternativeNames。

返回:
如果啟用此標誌,則返回 true;如果禁用此標誌,則返回 false。預設情況下此標誌為 true
另請參見:
setMatchAllSubjectAltNames(boolean)

getSubjectAlternativeNames

public Collection<List<?>> getSubjectAlternativeNames()
返回 subjectAlternativeNames 標準的一個副本。X509Certificate 必須包含所有或至少某個指定的 subjectAlternativeNames,這取決於 matchAllNames 標誌的值(參見 getMatchAllSubjectAltNames)。如果返回的值為 null,則不執行 subjectAlternativeNames 檢查。

如果返回的值不為 null,則是一個 Collection,subjectAlternativeNames 標準中所包括的每個名稱在該集合中都對應一項。每一項都是一個 List,該 List 的第一項是一個 Integer(0-8,表示名稱型別),第二項是一個 String 或 byte 陣列(分別為 string 或 ASN.1 DER 編碼形式,表示名稱)。相同型別可以有多個名稱。注意,返回的 Collection 可能包含重複的名稱(相同的名稱和名稱型別)。

Collection 中的每個 subjectAlternativeNames 都可以指定為一個 String 或 一個 ASN.1 編碼的 byte 陣列。有關所用格式的更多詳細資訊,請參閱 addSubjectAlternativeName(int type, String name)addSubjectAlternativeName(int type, byte [] name)

注意,要對該 Collection 執行深層複製以防後續修改。

返回:
一個名稱 Collection(或者為 null
另請參見:
setSubjectAlternativeNames(java.util.Collection>)

getNameConstraints

public byte[] getNameConstraints()
返回 NameConstraints 標準。X509Certificate 必須具有滿足指定 NameConstraints 要求的 subject 和 subjectAlternativeNames。

以 byte 陣列的形式返回該 NameConstraints。此 byte 陣列包含 DER 編碼形式的 NameConstraints,因為它們將出現在 RFC 2459 和 X.509 內所定義的 NameConstraints 結構中。setNameConstraints(byte [] bytes) 的文檔中提供了此結構的 ASN.1 表示。

注意,要複製返回的 byte 陣列以防後續修改。

返回:
一個 byte 陣列,包含為檢查 NameConstraints 所使用的 NameConstraints 擴展的 ASN.1 DER 編碼,如果不執行 NameConstraints 檢查,則返回 null
另請參見:
setNameConstraints(byte[])

getBasicConstraints

public int getBasicConstraints()
返回 BasicConstraints 限制。如果該值大於等於零,則 X509Certificates 套件括的 basicConstraints 擴展具有的 pathLen 不能小於此值。如果該值為 -2,則只接受終最終實體證書。如果該值為 -1,則不執行 basicConstraints 檢查。

返回:
basicConstraints 限制的值
另請參見:
setBasicConstraints(int)

getPolicy

public Set<String> getPolicy()
返回策略標準。X509Certificate 至少必須包括其證書策略擴展中指定的一種策略。如果返回的 Set 為空,則 X509Certificate 至少必須包括其證書策略擴展中指定的某個策略。如果返回的 Setnull,則不執行策略檢查。

返回:
一個 string 格式的證書策略 OID 的不可變 Set(或者為 null
另請參見:
setPolicy(java.util.Set)

getPathToNames

public Collection<List<?>> getPathToNames()
返回 pathToNames 標準的一個副本。X509Certificate 不能包括禁止建構指定名稱路徑的 NameConstraints。如果返回的值為 null,則不執行 pathToNames 檢查。

如果返回的值不為 null,則是一個 Collection,pathToNames 標準中所包括的每個名稱在該集合中都對應一項。每一項都是一個 List,該 List 的第一項是一個 Integer(0-8,表示名稱型別),第二項是一個 String 或 byte 陣列(分別為 string 或 ASN.1 DER 編碼形式,表示名稱)。相同型別可以有多個名稱。注意,返回的 Collection 可能包含重複的名稱(相同的名稱和名稱型別)。

Collection 中的每個名稱都可以指定為一個 String 或一個 ASN.1 編碼的 byte 陣列。有關所用格式的更多詳細資訊,請參閱 addPathToName(int type, String name)addPathToName(int type, byte [] name)

注意,要對該 Collection 執行深層複製以防後續修改。

返回:
一個名稱 Collection(或者為 null
另請參見:
setPathToNames(java.util.Collection>)

toString

public String toString()
返回該 CertSelector 的可列印表示形式。

覆寫:
類別 Object 中的 toString
返回:
描述此 CertSelector 內容的 String

match

public boolean match(Certificate cert)
決定是否應該選擇某個 Certificate

指定者:
介面 CertSelector 中的 match
參數:
cert - 要檢查的 Certificate
返回:
如果應該選擇該 Certificate,則返回 true;否則返回 false

clone

public Object clone()
返回此物件的副本。

指定者:
介面 CertSelector 中的 clone
覆寫:
類別 Object 中的 clone
返回:
副本
另請參見:
Cloneable

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only