|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.security.cert.CertificateFactory
public class CertificateFactory
此類別定義了用於從相關的編碼中產生證書、證書路徑 (CertPath
) 和證書撤消列表 (CRL) 物件的 CertificateFactory 功能。
為了實作多個證書組成的編碼,如果要解析一個可能由多個不相關證書組成的集合時,應使用 generateCertificates
。否則,如果要產生 CertPath
(證書鏈)並隨後使用 CertPathValidator
驗證它,則應使用 generateCertPath
。
X.509 的 CertificateFactory 返回的證書必須是 java.security.cert.X509Certificate
的實例,CRL 的 CertificateFactory 返回的證書則必須是 java.security.cert.X509CRL
的實例。
以下範例程式碼讀取一個具有 Base64 編碼證書的檔案,該證書由 -----BEGIN CERTIFICATE----- 語句開始,由 -----END CERTIFICATE----- 語句結束。我們將 FileInputStream
(它不支持 mark
和 reset
)轉換成 BufferedInputStream
(它支持這些方法),這樣每次調用 generateCertificate
只需要一個證書,並將輸入串流的讀取位置定位在檔案中的下一個證書處:
FileInputStream fis = new FileInputStream(filename); BufferedInputStream bis = new BufferedInputStream(fis); CertificateFactory cf = CertificateFactory.getInstance("X.509"); while (bis.available() > 0) { Certificate cert = cf.generateCertificate(bis); System.out.println(cert.toString()); }
以下範例程式碼將解析存儲在檔案中的 PKCS#7 格式的證書答覆,並從中提取所有的證書:
FileInputStream fis = new FileInputStream(filename); CertificateFactory cf = CertificateFactory.getInstance("X.509"); Collection c = cf.generateCertificates(fis); Iterator i = c.iterator(); while (i.hasNext()) { Certificate cert = (Certificate)i.next(); System.out.println(cert); }
Certificate
,
X509Certificate
,
CertPath
,
CRL
,
X509CRL
建構子摘要 | |
---|---|
protected |
CertificateFactory(CertificateFactorySpi certFacSpi,
Provider provider,
String type)
創建給定型別的 CertificateFactory 物件,並在其中封裝給定的提供者實作(SPI 物件)。 |
方法摘要 | |
---|---|
Certificate |
generateCertificate(InputStream inStream)
產生一個證書物件,並使用從輸入串流 inStream 中讀取的資料對它進行初始化。 |
Collection<? extends Certificate> |
generateCertificates(InputStream inStream)
返回從給定輸入串流 inStream 中讀取的證書的集合視圖(可能為空)。 |
CertPath |
generateCertPath(InputStream inStream)
產生一個 CertPath 物件,並使用從 InputStream inStream 中讀取的資料對它進行初始化。 |
CertPath |
generateCertPath(InputStream inStream,
String encoding)
產生一個 CertPath 物件,並使用從 InputStream inStream 中讀取的資料對它進行初始化。 |
CertPath |
generateCertPath(List<? extends Certificate> certificates)
產生一個 CertPath 物件,並使用一個 Certificate 的 List 對它進行初始化。 |
CRL |
generateCRL(InputStream inStream)
產生一個證書撤消列表 (CRL) 物件,並使用從輸入串流 inStream 中讀取的資料對它進行初始化。 |
Collection<? extends CRL> |
generateCRLs(InputStream inStream)
返回從給定輸入串流 inStream 中讀取的 CRL 的集合視圖(可能為空)。 |
Iterator<String> |
getCertPathEncodings()
返回此 CertificateFactory 支持的 CertPath 編碼的迭代器,預設編碼方式優先。 |
static CertificateFactory |
getInstance(String type)
返回實作指定證書型別的 CertificateFactory 物件。 |
static CertificateFactory |
getInstance(String type,
Provider provider)
返回指定證書型別的 CertificateFactory 物件。 |
static CertificateFactory |
getInstance(String type,
String provider)
返回指定證書型別的 CertificateFactory 物件。 |
Provider |
getProvider()
返回此 CertificateFactory 的提供者。 |
String |
getType()
返回與此 CertificateFactory 關聯的證書型別的名稱。 |
從類別 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
建構子詳細資訊 |
---|
protected CertificateFactory(CertificateFactorySpi certFacSpi, Provider provider, String type)
certFacSpi
- 提供者實作。provider
- 提供者。type
- 證書型別。方法詳細資訊 |
---|
public static final CertificateFactory getInstance(String type) throws CertificateException
此方法從首選提供者開始遍歷已註冊安全提供者列表。返回封裝 CertificateFactorySpi 實作的新 CertificateFactory 物件,該實作取自第一個支持指定型別的 Provider。
注意,可以通過 Security.getProviders()
方法獲取已註冊提供者列表。
type
- 所請求的證書型別的名稱。有關標準證書型別的資訊,請參閱
Java Cryptography Architecture API Specification & Reference 中的附錄 A。
CertificateException
- 如果沒有 Provider 支持指定型別的 CertificateFactorySpi 實作。Provider
public static final CertificateFactory getInstance(String type, String provider) throws CertificateException, NoSuchProviderException
返回封裝 CertificateFactorySpi 實作的新 CertificateFactory 物件,該實作取自指定提供者。指定提供者必須在安全提供者列表中註冊。
注意,可以通過 Security.getProviders()
方法獲取已註冊提供者列表。
type
- 證書型別。有關標準證書型別的資訊,請參閱
Java Cryptography Architecture API Specification & Reference 中的附錄 A。provider
- 提供者的名稱。
CertificateException
- 如果指定演算法的 CertificateFactorySpi 實作不能從指定提供者獲得。
NoSuchProviderException
- 如果指定提供者未在安全提供者列表中註冊。
IllegalArgumentException
- 如果提供者的名稱為 null 或空。Provider
public static final CertificateFactory getInstance(String type, Provider provider) throws CertificateException
返回封裝 CertificateFactorySpi 實作的新 CertificateFactory 物件,該實作取自指定 Provider 物件。注意,指定 Provider 物件並不一定要在提供者列表中註冊。
type
- 證書型別。有關標準證書型別的資訊,請參閱
Java Cryptography Architecture API Specification & Reference 中的附錄 A。provider
- 提供者。
CertificateException
- 如果指定演算法的 CertificateFactorySpi 實作不能從指定提供者物件獲得。
IllegalArgumentException
- 如果 provider
為 null。Provider
public final Provider getProvider()
public final String getType()
public final Certificate generateCertificate(InputStream inStream) throws CertificateException
inStream
中讀取的資料對它進行初始化。
為了利用受此 CertificateFactory 支持的專門的證書格式,可將返回的證書物件的型別強制轉換為相應的證書類別。例如,如果此 CertificateFactory 實作 X.509 證書,則可將返回的證書物件的型別強制轉換為 X509Certificate
類別。
在用於 X.509 證書的 CertificateFactory 情況中,inStream
中提供的證書必須是 DER 編碼的,並且可以用二進制或可列印的 (Base64) 編碼形式提供。如果以 Base64 編碼的形式提供該證書,則該證書必須由 -----BEGIN CERTIFICATE----- 語句開始,由 -----END CERTIFICATE----- 語句結束。
注意,如果給定的輸入串流不支持 mark
和 reset
,則此方法將使用整個輸入串流。否則,每次調用此方法都需要一個證書,並且將輸入串流的讀取位置定位在固有的證書結尾標記後的下一個可用位元組處。如果輸入串流中的資料不包含固有的證書結尾標記(不同於 EOF),並且在解析該證書後有一個尾隨資料,則將拋出 CertificateException
。
inStream
- 帶有證書資料的輸入串流。
CertificateException
- 如果發生解析錯誤。public final Iterator<String> getCertPathEncodings()
CertPath
編碼的迭代器,預設編碼方式優先。有關標準編碼名稱及其格式的資訊,請參見 Java Certification Path API Programmer's Guide 中的附錄 A。
試圖修改返回的 Iterator
(通過其 remove
方法)會導致拋出 UnsupportedOperationException
。
CertPath
編碼名稱(以 String
的形式)上進行迭代的 Iterator
public final CertPath generateCertPath(InputStream inStream) throws CertificateException
CertPath
物件,並使用從 InputStream
inStream 中讀取的資料對它進行初始化。假定資料是以預設編碼方式進行編碼的。預設編碼名稱是 getCertPathEncodings
方法返回的 Iterator
的第一個元素。
inStream
- 套件含資料的 InputStream
InputStream
中的資料初始化的 CertPath
CertificateException
- 如果解碼時出現異常public final CertPath generateCertPath(InputStream inStream, String encoding) throws CertificateException
CertPath
物件,並使用從 InputStream
inStream 中讀取的資料對它進行初始化。假定資料是以指定的編碼方式進行編碼的。有關標準編碼名稱及其格式的資訊,請參見 Java Certification Path API Programmer's Guide 中的附錄 A。
inStream
- 套件含資料的 InputStream
encoding
- 資料使用的編碼
InputStream
中的資料初始化的 CertPath
CertificateException
- 如果解碼時出現異常或者不支持所請求的編碼public final CertPath generateCertPath(List<? extends Certificate> certificates) throws CertificateException
CertPath
物件,並使用一個 Certificate
的 List
對它進行初始化。
所提供的證書必須是該 CertificateFactory
支持的型別。將從提供的 List
物件中複製出這些證書。
certificates
- Certificate
的 List
CertPath
CertificateException
- 如果出現異常public final Collection<? extends Certificate> generateCertificates(InputStream inStream) throws CertificateException
inStream
中讀取的證書的集合視圖(可能為空)。
為了利用此 CertificateFactory 所支持的特殊證書格式,可將返回的集合視圖中的每個元素的型別強制轉換為相應的證書類別。例如,如果此 CertificateFactory 實作 X.509 證書,則可將返回集合中的元素的型別強制轉換為 X509Certificate
類別。
在用於 X.509 證書的 CertificateFactory 的情況中,inStream
可能包含一個 DER 編碼的證書序列,這些證書使用 generateCertificate
所描述的格式。另外,inStream
可能包含一個 PKCS#7 證書鏈。這是一個 PKCS#7 SignedData 物件,具有唯一認可 的有效欄位。需要特別指出的是,簽章和內容會被忽略。此格式允許同時下載多個證書。如果沒有證書,則返回一個空集合。
注意,如果給定的輸入串流不支持 mark
和 reset
,則此方法將使用整個輸入串流。
inStream
- 帶有證書的輸入串流。
CertificateException
- 如果發生解析錯誤。public final CRL generateCRL(InputStream inStream) throws CRLException
inStream
中讀取的資料對它進行初始化。
為了利用此受 CertificateFactory 支持的專門的 CRL 格式,可將返回的 CRL 物件的型別強制轉換為相應的 CRL 類別。例如,如果此 CertificateFactory 實作 X.509 CRL,則可將返回的 CRL 物件的型別強制轉換為 X509CRL
類別。
注意,如果給定的輸入串流不支持 mark
和 reset
,則此方法將使用整個輸入串流。否則,每次調用此方法都需要一個 CRL,並且將輸入串流的讀取位置定位在固有 CRL 結尾標記後的下一個可用位元組處。如果輸入串流中的資料不包含固有的 CRL 結尾標記(不同於 EOF),並且在解析該 CRL 後有一個尾隨資料,則將拋出 CRLException
。
inStream
- 帶有 CRL 資料的輸入串流。
CRLException
- 如果發生解析錯誤。public final Collection<? extends CRL> generateCRLs(InputStream inStream) throws CRLException
inStream
中讀取的 CRL 的集合視圖(可能為空)。
為了利用受此 CertificateFactory 支持的專門的 CRL 格式,可將返回的集合視圖中的每個元素的型別強制轉換為相應的 CRL 類別。例如,如果此 CertificateFactory 實作 X.509 CRL,則可將返回集合中的元素型別強制轉換為 X509CRL
類別。
在用於 X.509 CRL 的 CertificateFactory 情況中,inStream
可能包含一個 DER 編碼的 CRL 序列。另外,inStream
可能包含一個 PKCS#7 CRL 集合。這是一個 PKCS#7 SignedData 物件,具有唯一被 crl 的有效欄位。需要特別指出的是,簽章和內容會被忽略。此格式允許同時下載多個 CRL。如果沒有 CRL,則返回一個空集合。
注意,如果給定的輸入串流不支持 mark
和 reset
,則此方法將使用整個輸入串流。
inStream
- 帶有 CRL 的輸入串流。
CRLException
- 如果發生解析錯誤。
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。