|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.security.cert.X509CertSelector
public class X509CertSelector
選擇與所有指定標準比對的 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。
共時存取
除非另行指定,否則此類別中所定義的方法不是執行緒安全的。需要共時存取單個物件的多個執行緒應該在它們之間實作同步並提供所需的鎖定。對於每個執行緒都操作一個不同物件的多個執行緒而言,無需實作同步。
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 |
建構子詳細資訊 |
---|
public X509CertSelector()
X509CertSelector
。最初未設置任何標準,所以任何 X509Certificate
都比對。
方法詳細資訊 |
---|
public void setCertificate(X509Certificate cert)
X509Certificate
必須等於傳入到 match
方法的 X509Certificate
。如果它為 null
,則不進行此項檢查。
必需與單個證書比對時,此方法特別有用。雖然可以與 certificateEquals 標準一起指定其他標準,但這樣做通常不實用或不必要。
cert
- 要比對的 X509Certificate
(或者為 null
)getCertificate()
public void setSerialNumber(BigInteger serial)
X509Certificate
中的證書 serialNumber 比對。如果該 serialNumber 為 null
,則與任何證書 serialNumber 比對都可以。
serial
- 要比對的證書 serialNumber(或者為 null
)getSerialNumber()
public void setIssuer(X500Principal issuer)
X509Certificate
中的發佈方標識名比對。如果該發佈方標識名為 null
,則與任何發佈方 標識名比對都可以。
issuer
- X500Principal 形式的標識名(或者為 null
)public void setIssuer(String issuerDN) throws IOException
設置 issuer 標準。指定的標識名必須與 X509Certificate
中的發佈方標識名比對。如果該發佈方標識名為 null
,則與任何發佈方標識名比對都可以。
如果 issuerDN
不為 null
,則應該套件含一個 RFC 2253 格式的標識名。
issuerDN
- RFC 2253 格式的標識名(或者為 null
)
IOException
- 如果出現解析錯誤(錯誤的 DN 形式)public void setIssuer(byte[] issuerDN) throws IOException
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 形式)public void setSubject(X500Principal subject)
X509Certificate
中的主體標識名比對。如果該主體標識名為 null
,則與任何主體標識名比對都可以。
subject
- X500Principal 形式的標識名(或者為 null
)public void setSubject(String subjectDN) throws IOException
設置 subject 標準。指定的標識名必須與 X509Certificate
中的 主體標識名比對。如果該主體標識名為 null
,則與任何主體標識名比對都可以。
如果 subjectDN
不為 null
,則應該套件含一個 RFC 2253 格式的標識名。
subjectDN
- RFC 2253 格式的標識名(或者為 null
)
IOException
- 如果出現解析錯誤(錯誤的 DN 形式)public void setSubject(byte[] subjectDN) throws IOException
X509Certificate
中的主體標識名比對。如果該主體標識名為 null
,則與任何主體標識名比對都可以。
如果 subjectDN
不為 null
,則應該套件含單個 DER 編碼形式的標識名,正如 X.501 中定義的一樣。有關此結構的 ASN.1 表示,請參閱 setIssuer(byte [] issuerDN)
。
subjectDN
- 一個 byte 陣列,包含 ASN.1 DER 格式的標識名(或者為 null
)
IOException
- 如果出現編碼錯誤(錯誤的 DN 形式)public void setSubjectKeyIdentifier(byte[] subjectKeyID)
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()
public void setAuthorityKeyIdentifier(byte[] authorityKeyID)
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。相反,使用逐位元組比較的方式來比較該值。
產生 AuthorityKeyIdentifier
的 keyIdentifier
欄位時,通常從發佈方證書中的 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()
public void setCertificateValid(Date certValid)
X509Certificate
的證書有效期內。如果其值為 null
,則不執行 certificateValid 檢查。
注意,要複製此處提供的 Date
以防後續修改。
certValid
- 要檢查的 Date
(或者為 null
)getCertificateValid()
public void setPrivateKeyValid(Date privateKeyValid)
X509Certificate
的私鑰有效期內。如果為 null
,則不執行 privateKeyValid 檢查。
注意,要複製此處提供的 Date
以防後續修改。
privateKeyValid
- 要檢查的 Date
(或者為 null
)getPrivateKeyValid()
public void setSubjectPublicKeyAlgID(String oid) throws IOException
X509Certificate
必須包含一個具有指定演算法的主體公鑰。如果其值為 null
,則不執行 subjectPublicKeyAlgID 檢查。
oid
- 用於檢查的演算法的物件標識符 (OID)(或者為 null
)。OID 由一組句點分隔的非負整數來表示。
IOException
- 如果該 OID 無效,例如其第一部分不是 0、1 或 2,或第二部分大於 39。getSubjectPublicKeyAlgID()
public void setSubjectPublicKey(PublicKey key)
X509Certificate
必須包含指定的主體公鑰。如果其值為 null
,則不執行 subjectPublicKey 檢查。
key
- 用於檢查的 subjectPublicKey(或者為 null
)getSubjectPublicKey()
public void setSubjectPublicKey(byte[] key) throws IOException
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()
public void setKeyUsage(boolean[] keyUsage)
X509Certificate
必須允許使用指定的 keyUsage 值。如果其值為 null
,則不執行 keyUsage 檢查。注意,沒有 keyUsage 擴展的 X509Certificate
隱式地允許使用所有 keyUsage 值。
注意,要複製此處提供的 boolean 陣列以防後續修改。
keyUsage
- 一個 boolean 陣列,其格式與 X509Certificate.getKeyUsage()
返回的 boolean 陣列格式相同。或者為 null
。getKeyUsage()
public void setExtendedKeyUsage(Set<String> keyPurposeSet) throws IOException
X509Certificate
必須允許其 extendedKeyUsage 擴展中的指定 keyPurpose。如果 keyPurposeSet
為空或為 null
,則不執行 extendedKeyUsage 檢查。注意,沒有 extendedKeyUsage 擴展的 X509Certificate
隱式地允許所有 keyPurpose。
注意,要複製該 Set
以防後續修改。
keyPurposeSet
- string 格式的 keyPurpose OID 的 Set
(或者為 null
)。每個 OID 都由一組句點分隔的非負整數來表示。
IOException
- 如果該 OID 無效,例如其第一部分不是 0、1 或 2,或第二部分大於 39。getExtendedKeyUsage()
public void setMatchAllSubjectAltNames(boolean matchAllNames)
setSubjectAlternativeNames
或 addSubjectAlternativeName
方法中所指定的所有 subjectAlternativeNames。如果允許比對,則 X509Certificate
必須包含所有指定的 subjectAlternativeNames。如果禁止比對,則 X509Certificate
至少必須包含某個指定的 subjectAlternativeName。
預設情況下,matchAllNames 標誌為 true
。
matchAllNames
- 如果為 true
,則啟用該標誌;如果為 false
,則禁用該標誌。getMatchAllSubjectAltNames()
public void setSubjectAlternativeNames(Collection<List<?>> names) throws IOException
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()
public void addSubjectAlternativeName(int type, String name) throws IOException
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
- 如果出現解析錯誤public void addSubjectAlternativeName(int type, byte[] name) throws IOException
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
- 如果出現解析錯誤public void setNameConstraints(byte[] bytes) throws IOException
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()
public void setBasicConstraints(int minMaxPathLen)
X509Certificates
套件括的 basicConstraints 擴展具有的 pathLen 不能小於此值。如果該值為 -2,則只接受最終實體證書。如果該值為 -1,則不執行檢查。
建構正向證書路徑(從目標到受信定位點)時,此限制很有用。如果已建構了部分路徑,則任何候選證書的 maxPathLen 值都必須大於等於這些路徑中的證書數。
minMaxPathLen
- basicConstraints 限制的值
IllegalArgumentException
- 如果該值小於 -2getBasicConstraints()
public void setPolicy(Set<String> certPolicySet) throws IOException
X509Certificate
至少必須包括其證書策略擴展中指定的一種策略。如果 certPolicySet
為空,則 X509Certificate
至少必須包括其證書策略擴展中指定的某個策略。如果 certPolicySet
為 null
,則不執行策略檢查。
注意,要複製該 Set
以防後續修改。
certPolicySet
- string 格式的證書策略 OID 的 Set
(或者為 null
)。每個 OID 都由一組句點分隔的非負整數來表示。
IOException
- 如果出現 OID 的解析錯誤,例如其第一部分不是 0、1 或 2,或第二部分大於 39。getPolicy()
public void setPathToNames(Collection<List<?>> names) throws IOException
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()
public void addPathToName(int type, String name) throws IOException
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
- 如果出現解析錯誤public void addPathToName(int type, byte[] name) throws IOException
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
- 如果出現解析錯誤public X509Certificate getCertificate()
X509Certificate
必須等於傳入到 match
方法的 X509Certificate
。如果它為 null
,則不進行此項檢查。
X509Certificate
(或者為 null
)setCertificate(java.security.cert.X509Certificate)
public BigInteger getSerialNumber()
X509Certificate
中的證書 serialNumber 比對。如果該 serialNumber 為 null
,則任何證書 serialNumber 都可以。
null
)setSerialNumber(java.math.BigInteger)
public X500Principal getIssuer()
X500Principal
的形式返回 issuer 標準。此標識名必須與 X509Certificate
中的發佈方標識名比對。如果該發佈方標識名為 null
,則禁用 issuer 標準,且與任何發佈方標識名比對都可以。
null
)public String getIssuerAsString()
返回以 String
表示的 issuer 標準。此標識名必須與 X509Certificate
中的發佈方標識名比對。如果該發佈方標識名為 null
,則禁用 issuer 標準,且與任何發佈方標識名比對都可以。
如果返回的值不為 null
,則是一個 RFC 2253 格式的標識名。
null
)public byte[] getIssuerAsBytes() throws IOException
X509Certificate
中的發佈方標識名比對。如果該發佈方標識名為 null
,則禁用 issuer 標準,且與任何發佈方標識名比對都可以。
如果返回的值不為 null
,則是包含單個 DER 編碼形式的標識名的 byte 陣列,正如 X.501 中定義的一樣。setIssuer(byte [] issuerDN)
的文檔中提供了此結構的 ASN.1 表示。
注意,要複製返回的 byte 陣列以防後續修改。
null
)
IOException
- 如果出現編碼錯誤public X500Principal getSubject()
X500Principal
的形式返回 subject 標準。此標識名必須與 X509Certificate
中的主體標識名比對。如果該主體標識名為 null
,則禁用 subject 標準,且與任何主體標識名比對都可以。
null
)public String getSubjectAsString()
返回以 String
表示的 subject 標準。此標識名必須與 X509Certificate
中的主體標識名比對。如果該主體標識名為 null
,則禁用 subject 標準,且與任何主體標識名比對都可以。
如果返回的值不為 null
,則是一個 RFC 2253 格式的標識名。
null
)public byte[] getSubjectAsBytes() throws IOException
X509Certificate
中的主體標識名比對。如果該主體標識名為 null
,則禁用 subject 標準,且與任何主體標識名比對都可以。
如果返回的值不為 null
,則是包含單個 DER 編碼形式的標識名的 byte 陣列,正如 X.501 中定義的一樣。setSubject(byte [] subjectDN)
的文檔中提供了此結構的 ASN.1 表示。
注意,要複製返回的 byte 陣列以防後續修改。
null
)
IOException
- 如果出現編碼錯誤public byte[] getSubjectKeyIdentifier()
X509Certificate
必須包含一個具有指定值的 SubjectKeyIdentifier 擴展。如果其值為 null
,則不執行 subjectKeyIdentifier 檢查。
注意,要複製返回的 byte 陣列以防後續修改。
null
)setSubjectKeyIdentifier(byte[])
public byte[] getAuthorityKeyIdentifier()
X509Certificate
必須包含一個具有指定值的 AuthorityKeyIdentifier 擴展。如果其值為 null
,則不執行 authorityKeyIdentifier 檢查。
注意,要複製返回的 byte 陣列以防後續修改。
null
)setAuthorityKeyIdentifier(byte[])
public Date getCertificateValid()
X509Certificate
的證書有效期內。如果其值為 null
,則不執行 certificateValid 檢查。
注意,要複製返回的 Date
以防後續修改。
Date
(或者為 null
)setCertificateValid(java.util.Date)
public Date getPrivateKeyValid()
X509Certificate
的私鑰有效期內。如果其值為 null
,則不執行 privateKeyValid 檢查。
注意,要複製返回的 Date
以防後續修改。
Date
(或者為 null
)setPrivateKeyValid(java.util.Date)
public String getSubjectPublicKeyAlgID()
X509Certificate
必須包含一個具有指定演算法的主體公鑰。如果其值為 null
,則不執行 subjectPublicKeyAlgID 檢查。
null
)。OID 由一組句點分隔的非負整數來表示。setSubjectPublicKeyAlgID(java.lang.String)
public PublicKey getSubjectPublicKey()
X509Certificate
必須包含指定的主體公鑰。如果其值為 null
,則不執行 subjectPublicKey 檢查。
null
)setSubjectPublicKey(java.security.PublicKey)
public boolean[] getKeyUsage()
X509Certificate
必須允許使用指定的 keyUsage 值。如果其值為 null,則不執行 keyUsage 檢查。
注意,要複製返回的 boolean 陣列以防後續修改。
X509Certificate.getKeyUsage()
返回的 boolean 陣列格式相同。或者為 null
。setKeyUsage(boolean[])
public Set<String> getExtendedKeyUsage()
X509Certificate
必須允許其 extendedKeyUsage 擴展中的指定 keyPurpose。如果返回的 keyPurposeSet
為空或為 null
,則不執行 extendedKeyUsage 檢查。注意,沒有 extendedKeyUsage 擴展的 X509Certificate
隱式地允許所有 keyPurpose。
Set
(或者為 null
)setExtendedKeyUsage(java.util.Set)
public boolean getMatchAllSubjectAltNames()
X509Certificate
是否必須包含 setSubjectAlternativeNames
或 addSubjectAlternativeName
方法中所指定的所有或至少某個 subjectAlternativeNames。如果此方法返回值為 true
,則 X509Certificate
必須包含所有指定的 subjectAlternativeNames。如果為 false
,則 X509Certificate
必須至少包含某個指定的 subjectAlternativeNames。
true
;如果禁用此標誌,則返回 false
。預設情況下此標誌為 true
。setMatchAllSubjectAltNames(boolean)
public Collection<List<?>> getSubjectAlternativeNames()
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>)
public byte[] getNameConstraints()
X509Certificate
必須具有滿足指定 NameConstraints 要求的 subject 和 subjectAlternativeNames。
以 byte 陣列的形式返回該 NameConstraints。此 byte 陣列包含 DER 編碼形式的 NameConstraints,因為它們將出現在 RFC 2459 和 X.509 內所定義的 NameConstraints 結構中。setNameConstraints(byte [] bytes)
的文檔中提供了此結構的 ASN.1 表示。
注意,要複製返回的 byte 陣列以防後續修改。
null
。setNameConstraints(byte[])
public int getBasicConstraints()
X509Certificates
套件括的 basicConstraints 擴展具有的 pathLen 不能小於此值。如果該值為 -2,則只接受終最終實體證書。如果該值為 -1,則不執行 basicConstraints 檢查。
setBasicConstraints(int)
public Set<String> getPolicy()
X509Certificate
至少必須包括其證書策略擴展中指定的一種策略。如果返回的 Set
為空,則 X509Certificate
至少必須包括其證書策略擴展中指定的某個策略。如果返回的 Set
為 null
,則不執行策略檢查。
Set
(或者為 null
)setPolicy(java.util.Set)
public Collection<List<?>> getPathToNames()
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>)
public String toString()
CertSelector
的可列印表示形式。
Object
中的 toString
CertSelector
內容的 String
public boolean match(Certificate cert)
Certificate
。
CertSelector
中的 match
cert
- 要檢查的 Certificate
Certificate
,則返回 true
;否則返回 false
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。