JavaTM Platform
Standard Ed. 6

java.security.cert
클래스 CertificateFactory

java.lang.Object 
  상위를 확장 java.security.cert.CertificateFactory


public class CertificateFactory
extends Object

증명서 팩토리의 기능을 정의합니다. 증명서 팩토리는, 증명서 객체, 증명서 패스 (CertPath) 및 증명서의 취소 리스트 (CRL) 객체를 부호로부터 생성하기 위해서 사용합니다.

복수의 증명서로부터 되는 encode에서는, 서로 관련성이 없다고 생각되는 증명서의 컬렉션을 해석하는 경우에,generateCertificates 를 사용합니다. 그렇지 않은 경우는,CertPath (증명서 체인)를 생성해 CertPathValidator 로 검증할 경우에 generateCertPath 를 사용합니다.

X. 509 의 증명서 팩토리는,java.security.cert.X509Certificate 의 인스턴스인 증명서, 및 java.security.cert.X509CRL 의 인스턴스인 CRL 를 돌려줍니다.

다음의 예는, Base64 로 encode 된 증명서를 가지는 파일을 읽어냅니다. 이러한 증명서는, 선두가 -----BEGIN CERTIFICATE----- 에 의해 단락지어져 끝이 -----END CERTIFICATE----- 에 의해 단락지어집니다. generateCertificate 의 각 호출이 1 개의 증명서만을 사용해, 입력 스트림의 읽기 위치가 파일내의 다음의 증명서에 놓여지도록(듯이),FileInputStream (markreset 를 지원하고 있지 않다)를 BufferedInputStream (이러한 메소드를 지원)로 변환합니다.

 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);
 }
 

도입된 버젼:
1.2
관련 항목:
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 객체를 생성해,CertificateList 로 초기화합니다.
 CRL generateCRL (InputStream  inStream)
          증명서의 취소 리스트 (CRL) 객체를 생성해, 입력 스트림 inStream 로부터 읽어내진 데이터를 사용해 초기화합니다.
 Collection <? extends CRL > generateCRLs (InputStream  inStream)
          지정된 입력 스트림 inStream 로부터 읽어내진 CRL 의 코레크션뷰를 돌려줍니다.
 Iterator <String > getCertPathEncodings ()
          이 증명서 팩토리로 지원하는 CertPath 의 encode의 반복을 돌려줍니다.
static CertificateFactory getInstance (String  type)
          지정된 타입의 증명서를 구현하는 증명서 팩토리 객체를 돌려줍니다.
static CertificateFactory getInstance (String  type, Provider  provider)
          지정된 타입의 증명서 팩토리 객체를 돌려줍니다.
static CertificateFactory getInstance (String  type, String  provider)
          지정된 타입의 증명서 팩토리 객체를 돌려줍니다.
 Provider getProvider ()
          이 증명서 팩토리의 프로바이더를 돌려줍니다.
 String getType ()
          이 증명서 팩토리에 관련한 증명서 타입의 이름을 돌려줍니다.
 
클래스 java.lang. Object 로부터 상속된 메소드
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
 

생성자 의 상세

CertificateFactory

protected CertificateFactory(CertificateFactorySpi  certFacSpi,
                             Provider  provider,
                             String  type)
지정된 타입의 CertificateFactory 객체를 작성해, 지정된 프로바이더의 구현 (SPI 객체)을 거기에 캡슐화합니다.

파라미터:
certFacSpi - 프로바이더의 구현
provider - 프로바이더
type - 증명서 타입
메소드의 상세

getInstance

public static final CertificateFactory  getInstance(String  type)
                                            throws CertificateException 
지정된 타입의 증명서를 구현하는 증명서 팩토리 객체를 돌려줍니다.

이 메소드는, 최우선의 Provider 로부터 순서에, 등록을 마친 시큐리티 Provider 의 리스트를 횡단(traverse) 합니다. 지정된 타입을 지원하는 최초의 Provider 의 CertificateFactorySpi 구현을 캡슐화하는 새로운 CertificateFactory 객체가 돌려주어집니다.

등록이 끝난 프로바이더의 리스트는,Security.getProviders() 메소드 경유로 취득할 수 있습니다.

파라미터:
type - 요구된 증명서 타입의 이름. 표준의 증명서 타입의 자세한 것은,「Java 암호화 아키텍쳐(architecture) API 스펙 & 레퍼런스」의 부록 A 를 참조
반환값:
지정된 타입의 증명서 팩토리 객체
예외:
CertificateException - 지정된 타입의 CertificateFactorySpi 구현을 지원하는 Provider 가 존재하지 않는 경우
관련 항목:
Provider

getInstance

public static final CertificateFactory  getInstance(String  type,
                                                   String  provider)
                                            throws CertificateException ,
                                                   NoSuchProviderException 
지정된 타입의 증명서 팩토리 객체를 돌려줍니다.

지정된 프로바이더의 CertificateFactorySpi 구현을 캡슐화하는 새로운 CertificateFactory 객체가 돌려주어집니다. 지정한 프로바이더는, 시큐리티 프로바이더 리스트에 등록할 필요가 있습니다.

등록이 끝난 프로바이더의 리스트는,Security.getProviders() 메소드 경유로 취득할 수 있습니다.

파라미터:
type - 증명서 타입 표준의 증명서 타입의 자세한 것은,「Java 암호화 아키텍쳐(architecture) API 스펙 & 레퍼런스」의 부록 A 를 참조
provider - 프로바이더명
반환값:
지정된 타입의 증명서 팩토리 객체
예외:
CertificateException - 지정된 프로바이더로 지정된 알고리즘의 CertificateFactorySpi 구현이 없는 경우
NoSuchProviderException - 지정된 프로바이더가 시큐리티 프로바이더 리스트에 등록되지 않은 경우
IllegalArgumentException - 프로바이더의 이름이 null 나 빈 상태(empty)의 경우
관련 항목:
Provider

getInstance

public static final CertificateFactory  getInstance(String  type,
                                                   Provider  provider)
                                            throws CertificateException 
지정된 타입의 증명서 팩토리 객체를 돌려줍니다.

지정된 Provider 객체의 CertificateFactorySpi 구현을 캡슐화하는 새로운 CertificateFactory 객체가 돌려주어집니다. 지정된 Provider 객체는, 프로바이더 리스트에 등록할 필요는 없습니다.

파라미터:
type - 증명서 타입 표준의 증명서 타입의 자세한 것은,「Java 암호화 아키텍쳐(architecture) API 스펙 & 레퍼런스」의 부록 A 를 참조
provider - 프로바이더
반환값:
지정된 타입의 증명서 팩토리 객체
예외:
CertificateException - 지정된 Provider 객체로 지정된 알고리즘의 CertificateFactorySpi 구현이 없는 경우
IllegalArgumentException - provider 가 null 의 경우
도입된 버젼:
1.4
관련 항목:
Provider

getProvider

public final Provider  getProvider()
이 증명서 팩토리의 프로바이더를 돌려줍니다.

반환값:
이 증명서 팩토리의 프로바이더

getType

public final String  getType()
이 증명서 팩토리에 관련한 증명서 타입의 이름을 돌려줍니다.

반환값:
이 증명서 팩토리에 관련지을 수 있었던 증명서 타입의 이름

generateCertificate

public final Certificate  generateCertificate(InputStream  inStream)
                                      throws CertificateException 
증명서 객체를 생성해, 입력 스트림 inStream 로부터 읽어내진 데이터를 사용해 그 증명서 객체를 초기화합니다.

이 증명서 팩토리에 의해 지원되고 있는 특수 형식의 증명서를 이용하기 위해서, 반환된 증명서 객체를 대응하는 증명서 클래스에 형태 캐스트 할 수 있습니다. 예를 들어, 이 증명서 팩토리가 X. 509 증명서를 구현하는 경우, 반환된 증명서 객체를 X509Certificate 클래스에 형태 캐스트 할 수 있습니다.

X. 509 증명서의 증명서 팩토리의 경우는,inStream 로 제공되는 증명서는 DER 로 encode 될 필요가 있어, 바이너리 또는 프린트 가능 (Base64)인 부호로 제공되는 일도 있습니다. 증명서가 Base64 의 부호로 제공되었을 경우, 선두는 -----BEGIN CERTIFICATE----- 에 의해 단락지어져 끝은 -----END CERTIFICATE----- 에 의해 단락지어질 필요가 있습니다.

지정된 입력 스트림이 markreset 를 지원하고 있지 않는 경우, 이 메소드는 입력 스트림 전체를 사용합니다. 그렇지 않은 경우, 이 메소드가 불려 갈 때마다 증명서를 1 개 소비해, 입력 스트림의 read 위치는, 고유의 end-of-certificate 마커의 나중에 다음에 사용 가능한 바이트로 설정됩니다. 고유의 end-of-certificate 마커 (EOF 이외)가 입력 스트림의 데이터에 포함되지 않고, 증명서가 구문 분석 된 후에 데이터가 계속되는 경우는,CertificateException 가 throw 됩니다.

파라미터:
inStream - 증명서 데이터를 가지는 입력 스트림
반환값:
입력 스트림의 데이터를 사용해 초기화된 증명서 객체
예외:
CertificateException - 구문 분석 에러의 경우

getCertPathEncodings

public final Iterator <String > getCertPathEncodings()
이 증명서 팩토리로 지원하는 CertPath 의 encode의 반복을 돌려줍니다. 반복의 처음은 디폴트의 encode가 됩니다. 표준의 encode명과 그 형식에 대해서는,「Java Certification Path API 개발자 안내」 의 부록 A 를 참조해 주세요.  

반환된 Iteratorremove 메소드로 변경하려고 하면(자),UnsupportedOperationException 가 throw 됩니다.

반환값:
지원되는 CertPath 의 encode의 이름 (String)을 반복하는 Iterator
도입된 버젼:
1.4

generateCertPath

public final CertPath  generateCertPath(InputStream  inStream)
                                throws CertificateException 
CertPath 객체를 생성해,InputStream 인 inStream 로부터 읽힌 데이터로 초기화합니다. 데이터는 디폴트의 encode가 되고 있으면(자) 가정됩니다. 디폴트의 encode의 이름은,getCertPathEncodings 메소드로 반환되는 Iterator 의 최초의 요소가 됩니다.

파라미터:
inStream - 데이터가 포함되는 InputStream
반환값:
InputStream 로부터의 데이터로 초기화된 CertPath
예외:
CertificateException - 복호화중에 예외가 발생했을 경우
도입된 버젼:
1.4

generateCertPath

public final CertPath  generateCertPath(InputStream  inStream,
                                       String  encoding)
                                throws CertificateException 
CertPath 객체를 생성해,InputStream 인 inStream 로부터 읽힌 데이터로 초기화합니다. 데이터는 지정한 encode가 되고 있으면(자) 가정됩니다. 표준의 encode명과 그 형식에 대해서는,「Java Certification Path API 개발자 안내」 의 부록 A 를 참조해 주세요.

파라미터:
inStream - 데이터가 포함되는 InputStream
encoding - 데이터로 사용되는 encode
반환값:
InputStream 로부터의 데이터로 초기화된 CertPath
예외:
CertificateException - 복호화중에 예외가 발생했을 경우, 또는 지정한 encode가 지원되어 있지 않은 경우
도입된 버젼:
1.4

generateCertPath

public final CertPath  generateCertPath(List <?  extends Certificate > certificates)
                                throws CertificateException 
CertPath 객체를 생성해,CertificateList 로 초기화합니다.

제공되는 증명서는,CertificateFactory 로 지원되고 있는 종류일 필요가 있습니다. 이것들은, 지정된 List 객체로부터 카피됩니다.

파라미터:
certificates - CertificateList
반환값:
제공된 증명서의 리스트로 초기화된 CertPath
예외:
CertificateException - 예외가 발생하는 경우
도입된 버젼:
1.4

generateCertificates

public final Collection <?  extends Certificate > generateCertificates(InputStream  inStream)
                                                             throws CertificateException 
지정된 입력 스트림 inStream 로부터 읽어내진 증명서의 코레크션뷰를 돌려줍니다. 코레크션뷰는 빈 상태(empty)의 경우도 있습니다.

이 증명서 팩토리에 의해 지원되고 있는 특수한 형식의 증명서를 이용하기 위해서, 반환된 코레크션뷰의 각 요소를 대응하는 증명서 클래스에 형태 캐스트 할 수 있습니다. 예를 들어, 이 증명서 팩토리가 X. 509 증명서를 구현하는 경우, 반환된 컬렉션내의 요소를 X509Certificate 클래스에 형태 캐스트 할 수 있습니다.

X. 509 증명서로 사용하는 증명서 팩토리의 경우,inStream 에는,generateCertificate 로 설명되고 있는 형식의, DER 로 encode 된 일련의 증명서가 포함됩니다. 또,inStream 에는 PKCS#7 증명서 체인이 포함됩니다. 이것은 PKCS#7 SignedData 객체이며, 상위 필드는 certificates 뿐입니다. 특히, 서명 및 내용은 무시됩니다. 이 형식의 경우, 복수의 증명서를 1 회에 다운로드할 수 있습니다. 증명서가 없는 경우는, 빈 상태(empty)의 컬렉션이 돌려주어집니다.

지정된 입력 스트림이 markreset 를 지원하고 있지 않는 경우, 이 메소드는 입력 스트림 전체를 사용합니다.

파라미터:
inStream - 증명서를 가지는 입력 스트림
반환값:
입력 스트림로부터의 데이터를 사용해 초기화된 java.security.cert.Certificate 객체의 코레크션뷰. 빈 상태(empty)의 경우도 있다
예외:
CertificateException - 구문 분석 에러의 경우

generateCRL

public final CRL  generateCRL(InputStream  inStream)
                      throws CRLException 
증명서의 취소 리스트 (CRL) 객체를 생성해, 입력 스트림 inStream 로부터 읽어내진 데이터를 사용해 초기화합니다.

이 증명서 팩토리에 의해 지원되고 있는 특수한 형식의 CRL 를 이용하기 위해서, 반환된 CRL 객체를 대응하는 CRL 클래스에 형태 캐스트 할 수 있습니다. 예를 들어, 이 증명서 팩토리가 X. 509 CRL 를 구현하는 경우, 반환된 CRL 객체를 X509CRL 클래스에 형태 캐스트 할 수 있습니다.

지정된 입력 스트림이 markreset 를 지원하고 있지 않는 경우, 이 메소드는 입력 스트림 전체를 사용합니다. 그렇지 않은 경우, 이 메소드가 불려 갈 때마다 CRL 를 1 개 소비해, 입력 스트림의 read 위치는, 고유의 end-of-CRL 마커의 나중에 다음에 사용 가능한 바이트로 설정됩니다. 고유의 end-of-CRL 마커 (EOF 이외)가 입력 스트림의 데이터에 포함되지 않고, CRL 가 구문 분석 된 후에 데이터가 계속되는 경우는,CertificateException 가 throw 됩니다.

파라미터:
inStream - CRL 데이터를 가지는 입력 스트림
반환값:
입력 스트림의 데이터를 사용해 초기화된 CRL 객체
예외:
CRLException - 구문 분석 에러의 경우

generateCRLs

public final Collection <?  extends CRL > generateCRLs(InputStream  inStream)
                                             throws CRLException 
지정된 입력 스트림 inStream 로부터 읽어내진 CRL 의 코레크션뷰를 돌려줍니다. 코레크션뷰는 빈 상태(empty)의 경우도 있습니다.

이 증명서 팩토리에 의해 지원되고 있는 특수한 형식의 CRL 를 이용하기 위해서, 반환된 코레크션뷰의 각 요소를 대응하는 CRL 클래스에 형태 캐스트 할 수 있습니다. 예를 들어, 이 증명서 팩토리가 X. 509 CRL 를 구현하는 경우, 반환된 컬렉션내의 요소를 X509CRL 클래스에 형태 캐스트 할 수 있습니다.

X. 509 CRL 의 증명서 팩토리의 경우는,inStream 에는, DER 로 encode 된 일련의 CRL 가 포함됩니다. 또,inStream 에는 PKCS#7 CRL 세트가 포함됩니다. 이것은 PKCS#7 SignedData 객체로, 상위 필드는 crls 뿐입니다. 특히, 서명 및 내용은 무시됩니다. 이 형식의 경우, 복수의 CRL 를 1 회에 다운로드할 수 있습니다. CRL 가 없는 경우는, 빈 상태(empty)의 컬렉션이 돌려주어집니다.

지정된 입력 스트림이 markreset 를 지원하고 있지 않는 경우, 이 메소드는 입력 스트림 전체를 사용합니다.

파라미터:
inStream - CRL 를 가지는 입력 스트림
반환값:
입력 스트림로부터의 데이터를 사용해 초기화된 java.security.cert.Certificate 객체의 코레크션뷰. 빈 상태(empty)의 경우도 있다
예외:
CRLException - 구문 분석 에러의 경우

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.