JavaTM Platform
Standard Ed. 6

java.security
클래스 Signature

java.lang.Object 
  상위를 확장 java.security.SignatureSpi 
      상위를 확장 java.security.Signature


public abstract class Signature
extends SignatureSpi

Signature 클래스는, 어플리케이션에 대해서 디지털 서명 알고리즘의 기능을 제공하기 위해서 사용됩니다. 디지털 서명은, 인증이나 디지털 데이타의 무결성을 보증하기 위해서 사용됩니다.

많은 서명 알고리즘 중(안)에서, DSA 및 SHA-1 를 사용한, NIST 표준의 DSA 를 사용할 수 있습니다. SHA-1 메세지 다이제스트 알고리즘을 사용하는 DSA 알고리즘은,SHA1withDSA 와 같이 지정할 수 있습니다. RSA 의 경우는, 메세지 다이제스트 알고리즘에 복수의 선택사항이 있습니다. 따라서, 서명 알고리즘은,MD2withRSA,MD5withRSA, 또는 SHA1withRSA 와 같이 지정합니다. 디폴트는 없기 때문에, 반드시 알고리즘의 이름을 지정하지 않으면 안됩니다.

Signature 객체는, 디지털 서명을 생성해, 검증하기 위해서 사용할 수 있습니다.

데이터의 서명시 또는 서명의 검증시에 Signature 객체를 사용하는 경우, 3 개의 단계가 있습니다.

  1. 다음의 어느 쪽인가의 방법에 따르는 초기화

  2. 갱신

    초기화의 종류에 응해, 서명 또는 검증의 대상이 되는 바이트를 갱신합니다. update 메소드를 참조해 주세요.

  3. 모든 갱신이 끝난 바이트에 대한 서명 또는 검증합니다. sign 메소드 및 verify 메소드를 참조해 주세요.

이 클래스는, 역사적인 사정으로부터 SignatureSpi 클래스로부터 확장된 abstract 클래스가 되어 있는 것에 주의해 주세요. 어플리케이션의 개발자는, 이 Signature 클래스에서의 메소드 정의인 만큼 배려해 주세요. 슈퍼 클래스의 모든 메소드는, 디지털 서명 알고리즘의 독자적인 구현을 제공할 필요가 있는 암호 서비스 프로바이더로 사용되는 것을 상정하고 있습니다.


필드의 개요
protected static int SIGN
          이 서명 객체가 서명용으로 초기화가 끝난 상태인 것을 나타내는,state 의 가능한 값입니다.
protected  int state
          이 서명 객체의 현재 상태입니다.
protected static int UNINITIALIZED
          이 서명 객체의 초기화가 종료하고 있지 않는 것을 나타내는,state 의 가능한 값입니다.
protected static int VERIFY
          이 서명 객체가 검증용으로 초기화가 끝난 상태인 것을 나타내는,state 의 가능한 값입니다.
 
클래스 java.security. SignatureSpi 로부터 상속된 필드
appRandom
 
생성자 의 개요
protected Signature (String  algorithm)
          지정된 알고리즘에 대한 Signature 객체를 작성합니다.
 
메소드의 개요
 Object clone ()
          구현이 복제 가능한 경우는 복제를 돌려줍니다.
 String getAlgorithm ()
          이 서명 객체에 대한 알고리즘명을 돌려줍니다.
static Signature getInstance (String  algorithm)
          지정된 서명 알고리즘을 구현하는 Signature 객체를 돌려줍니다.
static Signature getInstance (String  algorithm, Provider  provider)
          지정된 서명 알고리즘을 구현하는 Signature 객체를 돌려줍니다.
static Signature getInstance (String  algorithm, String  provider)
          지정된 서명 알고리즘을 구현하는 Signature 객체를 돌려줍니다.
 Object getParameter (String  param)
          추천 되고 있지 않습니다.   
 AlgorithmParameters getParameters ()
          이 서명 객체를 사용하는 파라미터를 돌려줍니다.
 Provider getProvider ()
          이 서명 객체의 프로바이더를 돌려줍니다.
 void initSign (PrivateKey  privateKey)
          서명용으로 이 객체를 초기화합니다.
 void initSign (PrivateKey  privateKey, SecureRandom  random)
          서명용으로 이 객체를 초기화합니다.
 void initVerify (Certificate  certificate)
          서명 객체를, 검증 조작을 위해서(때문에) 지정된 공개키로 초기화합니다.
 void initVerify (PublicKey  publicKey)
          검증용으로 이 객체를 초기화합니다.
 void setParameter (AlgorithmParameterSpec  params)
          서명 엔진을, 지정된 파라미터 세트를 사용해 초기화합니다.
 void setParameter (String  param, Object  value)
          추천 되고 있지 않습니다.  setParameter 를 사용해 주세요.
 byte[] sign ()
          갱신된 모든 데이터의 서명 바이트를 돌려줍니다.
 int sign (byte[] outbuf, int offset, int len)
          서명 조작을 종료해, 결과적으로 얻을 수 있는 서명 바이트를, 지정된 버퍼 outbuf 에 포함합니다 (개시 위치는 offset).
 String toString ()
          이 서명 객체의 캐릭터 라인 표현을 돌려주어, 객체 상태와 사용되는 알고리즘의 이름을 포함한 정보를 제공합니다.
 void update (byte b)
          지정된 바이트를 사용해, 서명 또는 검증의 대상 데이터를 갱신합니다.
 void update (byte[] data)
          지정된 바이트 배열을 사용해, 서명 또는 검증의 대상 데이터를 갱신합니다.
 void update (byte[] data, int off, int len)
          서명 또는 검증하는 데이터를, 지정된 바이트의 배열을 사용해, 지정된 오프셋(offset)로부터 갱신합니다.
 void update (ByteBuffer  data)
          서명 또는 검증하는 데이터를, 지정된 ByteBuffer 를 사용해 갱신합니다.
 boolean verify (byte[] signature)
          건네받은 서명을 검증합니다.
 boolean verify (byte[] signature, int offset, int length)
          지정된 오프셋(offset)로부터 개시해, 지정된 바이트 데이터의 배열이 건네받은 서명을 검증합니다.
 
클래스 java.security. SignatureSpi 로부터 상속된 메소드
engineGetParameter , engineGetParameters , engineInitSign , engineInitSign , engineInitVerify , engineSetParameter , engineSetParameter , engineSign , engineSign , engineUpdate , engineUpdate , engineUpdate , engineVerify , engineVerify
 
클래스 java.lang. Object 로부터 상속된 메소드
equals , finalize , getClass , hashCode , notify , notifyAll , wait , wait , wait
 

필드의 상세

UNINITIALIZED

protected static final int UNINITIALIZED
이 서명 객체의 초기화가 종료하고 있지 않는 것을 나타내는,state 의 가능한 값입니다.

관련 항목:
정수 필드치

SIGN

protected static final int SIGN
이 서명 객체가 서명용으로 초기화가 끝난 상태인 것을 나타내는,state 의 가능한 값입니다.

관련 항목:
정수 필드치

VERIFY

protected static final int VERIFY
이 서명 객체가 검증용으로 초기화가 끝난 상태인 것을 나타내는,state 의 가능한 값입니다.

관련 항목:
정수 필드치

state

protected int state
이 서명 객체의 현재 상태입니다.

생성자 의 상세

Signature

protected Signature(String  algorithm)
지정된 알고리즘에 대한 Signature 객체를 작성합니다.

파라미터:
algorithm - 알고리즘의 표준명을 나타내는 캐릭터 라인 알고리즘의 표준명에 대해서는,「Java 암호화 아키텍쳐(architecture) API 스펙 & 레퍼런스」의 부록 A 를 참조
메소드의 상세

getInstance

public static Signature  getInstance(String  algorithm)
                             throws NoSuchAlgorithmException 
지정된 서명 알고리즘을 구현하는 Signature 객체를 돌려줍니다.

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

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

파라미터:
algorithm - 요구된 알고리즘의 표준적인 이름. 알고리즘의 표준명에 대해서는,「Java 암호화 아키텍쳐(architecture) API 스펙 & 레퍼런스」의 부록 A 를 참조
반환값:
새로운 Signature 객체
예외:
NoSuchAlgorithmException - 지정된 알고리즘의 Signature 구현을 지원하는 Provider 가 존재하지 않는 경우
관련 항목:
Provider

getInstance

public static Signature  getInstance(String  algorithm,
                                    String  provider)
                             throws NoSuchAlgorithmException ,
                                    NoSuchProviderException 
지정된 서명 알고리즘을 구현하는 Signature 객체를 돌려줍니다.

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

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

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

getInstance

public static Signature  getInstance(String  algorithm,
                                    Provider  provider)
                             throws NoSuchAlgorithmException 
지정된 서명 알고리즘을 구현하는 Signature 객체를 돌려줍니다.

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

파라미터:
algorithm - 요구하는 알고리즘의 이름 알고리즘의 표준명에 대해서는,「Java 암호화 아키텍쳐(architecture) API 스펙 & 레퍼런스」의 부록 A 를 참조
provider - 프로바이더
반환값:
새로운 Signature 객체
예외:
NoSuchAlgorithmException - 지정된 Provider 객체로 지정된 알고리즘의 SignatureSpi 구현이 없는 경우
IllegalArgumentException - 프로바이더가 null 의 경우
도입된 버젼:
1.4
관련 항목:
Provider

getProvider

public final Provider  getProvider()
이 서명 객체의 프로바이더를 돌려줍니다.

반환값:
이 서명 객체의 프로바이더

initVerify

public final void initVerify(PublicKey  publicKey)
                      throws InvalidKeyException 
검증용으로 이 객체를 초기화합니다. 이 메소드가 다른 인수로 재차 불려 가면(자), 이 호출의 효과를 취소합니다.

파라미터:
publicKey - 서명이 검증되는 아이덴티티의 공개키
예외:
InvalidKeyException - 열쇠가 무효인 경우

initVerify

public final void initVerify(Certificate  certificate)
                      throws InvalidKeyException 
서명 객체를, 검증 조작을 위해서(때문에) 지정된 공개키로 초기화합니다.  

증명서의 종류가 X. 509 로, 중요와 마크 된 key usage 확장 영역이 있어,key usage 확장 영역의 값에 의해 증명서의 비공개키와 거기에 대응하는 비공개키가 디지털 서명에 사용되지 않는 것으로 있는 경우는,InvalidKeyException 는 throw 됩니다.

파라미터:
certificate - 서명이 검증되는 아이덴티티의 증명서
예외:
InvalidKeyException - 증명서의 공개키가 올바르고 encode되어 있지 않은 경우, 필요한 파라미터 정보가 없는 경우, 또는 디지털 서명용으로 사용할 수 없는 경우
도입된 버젼:
1.3

initSign

public final void initSign(PrivateKey  privateKey)
                    throws InvalidKeyException 
서명용으로 이 객체를 초기화합니다. 이 메소드가 다른 인수로 재차 불려 가면(자), 이 호출의 효과를 취소합니다.

파라미터:
privateKey - 서명을 생성하는 아이덴티티의 비공개키
예외:
InvalidKeyException - 열쇠가 무효인 경우

initSign

public final void initSign(PrivateKey  privateKey,
                           SecureRandom  random)
                    throws InvalidKeyException 
서명용으로 이 객체를 초기화합니다. 이 메소드가 다른 인수로 재차 불려 가면(자), 이 호출의 효과를 취소합니다.

파라미터:
privateKey - 서명을 생성하는 아이덴티티의 비공개키
random - 이 제네레이터의 random number generation의 원
예외:
InvalidKeyException - 열쇠가 무효인 경우

sign

public final byte[] sign()
                  throws SignatureException 
갱신된 모든 데이터의 서명 바이트를 돌려줍니다. 서명의 형식은 기본으로 되는 서명 방식으로 의존합니다.

이 메소드를 호출하면(자), 이 서명 객체는,initSign(PrivateKey) 의 호출을 개입시켜 서명용으로 이전 초기화된 상태에 리셋 됩니다. 즉, 객체는, 필요에 따라서 updatesign 의 신규의 호출을 개입시켜 리셋 되어 같은 서명자로부터 다른 서명을 생성하기 위해서 사용 가능하게 됩니다.

반환값:
서명 조작의 결과의 서명 바이트
예외:
SignatureException - 이 서명 객체가 올바르게 초기화되어 있지 않은 경우, 또는 이 서명 알고리즘이 지정된 입력 데이터를 처리할 수 없는 경우

sign

public final int sign(byte[] outbuf,
                      int offset,
                      int len)
               throws SignatureException 
서명 조작을 종료해, 결과적으로 얻을 수 있는 서명 바이트를, 지정된 버퍼 outbuf 에 포함합니다 (개시 위치는 offset). 서명의 형식은 기본으로 되는 서명 방식으로 의존합니다.

이 서명 객체는, 초기 상태 (initSign 메소드의 1 개에 불려 간 직후 상태)에 리셋 됩니다. 리셋 된 뒤는, 같은 비공개키를 사용해 한층 더 서명을 생성하기 위해서 재사용할 수 있습니다.

파라미터:
outbuf - 최종적인 서명을 포함하는 버퍼
offset - outbuf 에 서명을 포함할 때의 오프셋(offset)
len - outbuf 내에 서명용으로서 할당할 수 있는 바이트수
반환값:
outbuf 에 포함된 바이트수
예외:
SignatureException - 이 서명 객체가 올바르게 초기화되어 있지 않은 경우, 이 서명 알고리즘이 지정된 입력 데이터를 처리할 수 없는 경우, 또는 len 의 값이 실제의 서명의 길이보다 작은 경우
도입된 버젼:
1.2

verify

public final boolean verify(byte[] signature)
                     throws SignatureException 
건네받은 서명을 검증합니다.

이 메소드를 호출하면(자), 객체를 initVerify 를 개입시켜, 이전에 검증용으로 초기화된 상태로 합니다. 즉, 객체를 리셋 하므로,initVerify 에의 호출로 지정한 공개키를 가지는 식별의 다른 서명을 검증할 수 있습니다.

파라미터:
signature - 검증 대상의 서명 바이트
반환값:
서명이 검증되었을 경우는 true, 그렇지 않은 경우는 false
예외:
SignatureException - 이 서명 객체가 올바르게 초기화되어 있지 않은 경우, 지정된 서명의 encode 방법이 올바르지 않은 경우, 지정된 서명의 형태가 부정한 경우, 이 서명 알고리즘이 지정된 입력 데이터를 처리할 수 없는 경우 등

verify

public final boolean verify(byte[] signature,
                            int offset,
                            int length)
                     throws SignatureException 
지정된 오프셋(offset)로부터 개시해, 지정된 바이트 데이터의 배열이 건네받은 서명을 검증합니다.

이 메소드를 호출하면(자), 객체를 initVerify 를 개입시켜, 이전에 검증용으로 초기화된 상태로 합니다. 즉, 객체를 리셋 하므로,initVerify 에의 호출로 지정한 공개키를 가지는 식별의 다른 서명을 검증할 수 있습니다.

파라미터:
signature - 검증 대상의 서명 바이트
offset - 바이트의 배열에서의 개시 오프셋(offset)
length - 오프셋(offset)로부터 개시해 사용되는 바이트수
반환값:
서명이 검증되었을 경우는 true, 그렇지 않은 경우는 false
예외:
SignatureException - 이 서명 객체가 올바르게 초기화되어 있지 않은 경우, 지정된 서명의 encode 방법이 올바르지 않은 경우, 지정된 서명의 형태가 부정한 경우, 이 서명 알고리즘이 지정된 입력 데이터를 처리할 수 없는 경우 등
IllegalArgumentException - signature 바이트 배열이 null 의 경우,offsetlength 가 0 이하의 경우, 또는 offsetlength 와의 합계가 signature 바이트 배열의 길이의 값보다 큰 경우
도입된 버젼:
1.4

update

public final void update(byte b)
                  throws SignatureException 
지정된 바이트를 사용해, 서명 또는 검증의 대상 데이터를 갱신합니다.

파라미터:
b - 갱신에 사용하는 바이트
예외:
SignatureException - 이 서명 객체가 올바르게 초기화되어 있지 않은 경우

update

public final void update(byte[] data)
                  throws SignatureException 
지정된 바이트 배열을 사용해, 서명 또는 검증의 대상 데이터를 갱신합니다.

파라미터:
data - 갱신에 사용하는 바이트 배열
예외:
SignatureException - 이 서명 객체가 올바르게 초기화되어 있지 않은 경우

update

public final void update(byte[] data,
                         int off,
                         int len)
                  throws SignatureException 
서명 또는 검증하는 데이터를, 지정된 바이트의 배열을 사용해, 지정된 오프셋(offset)로부터 갱신합니다.

파라미터:
data - 바이트의 배열
off - 바이트의 배열에서의 개시 오프셋(offset)
len - 오프셋(offset)로부터 개시해 사용되는 바이트수
예외:
SignatureException - 이 서명 객체가 올바르게 초기화되어 있지 않은 경우

update

public final void update(ByteBuffer  data)
                  throws SignatureException 
서명 또는 검증하는 데이터를, 지정된 ByteBuffer 를 사용해 갱신합니다. data.position() 로부터 시작되는 data.remaining() 바이트를 처리합니다. 종료시에, 버퍼의 위치는 리밋트에 동일해집니다만, 리밋트는 변경되지 않습니다.

파라미터:
data - ByteBuffer
예외:
SignatureException - 이 서명 객체가 올바르게 초기화되어 있지 않은 경우
도입된 버젼:
1.5

getAlgorithm

public final String  getAlgorithm()
이 서명 객체에 대한 알고리즘명을 돌려줍니다.

반환값:
이 서명 객체에 대한 알고리즘명

toString

public String  toString()
이 서명 객체의 캐릭터 라인 표현을 돌려주어, 객체 상태와 사용되는 알고리즘의 이름을 포함한 정보를 제공합니다.

오버라이드(override):
클래스 Object 내의 toString
반환값:
이 서명 객체의 캐릭터 라인 표현

setParameter

@Deprecated 
public final void setParameter(String  param,
                                          Object  value)
                        throws InvalidParameterException 
추천 되고 있지 않습니다.  setParameter 를 사용해 주세요.

지정된 알고리즘 파라미터를, 지정된 값으로 설정합니다. 이 메소드는, 이 객체의 다양한 파라미터의 설정을 가능하게 하는 범용적인 기구를 제공합니다. 파라미터는, 예를 들어, 파라미터 사이즈, 서명 생성에 대한 난수 비트의 발생원 (해당하는 경우), 특정의 옵션의 계산을 실행할지 어떨지의 지시 등, 알고리즘에 대해서 설정 가능하면 어떠한 파라미터에서도 설정할 수 있습니다. 각 파라미터의 명명법은, 통일되고 있어 알고리즘에 고유하다라고 하는 것이 바람직합니다만, 현시점에서는 규정되고 있지 않습니다.

파라미터:
param - 파라미터의 캐릭터 라인 식별자
value - 파라미터치
예외:
InvalidParameterException - param 가 이 서명 알고리즘 엔진에 대해서 무효인 경우, 파라미터가 설정이 끝난 상태로 재설정할 수 없는 경우, 시큐리티 예외가 발생했을 경우 등
관련 항목:
getParameter(java.lang.String)

setParameter

public final void setParameter(AlgorithmParameterSpec  params)
                        throws InvalidAlgorithmParameterException 
서명 엔진을, 지정된 파라미터 세트를 사용해 초기화합니다.

파라미터:
params - 파라미터
예외:
InvalidAlgorithmParameterException - 지정된 파라미터가 이 서명 엔진에 대해서 올바르지 않은 경우
관련 항목:
getParameters()

getParameters

public final AlgorithmParameters  getParameters()
이 서명 객체를 사용하는 파라미터를 돌려줍니다.

반환된 파라미터는, 이 서명을 초기화하기 위해서 사용된 파라미터와 같게 되는 일이 있습니다. 혹은, 이 서명이 알고리즘 파라미터를 요구해도, 어느 알고리즘 파라미터에서도 초기화되지 않았던 경우에는, 반환된 파라미터에는, 기본으로 되는 서명의 구현으로 사용되는 디폴트의 파라미터치와 랜덤에 생성된 파라미터치의 편성이 포함되는 일이 있습니다.

반환값:
이 서명으로 사용된 파라미터. 이 서명이 파라미터를 사용하지 않는 경우는 null
도입된 버젼:
1.4
관련 항목:
setParameter(AlgorithmParameterSpec)

getParameter

@Deprecated 
public final Object  getParameter(String  param)
                          throws InvalidParameterException 
추천 되고 있지 않습니다.  

지정된 알고리즘 파라미터의 값을 가져옵니다. 이 메소드는, 이 객체의 다양한 파라미터의 설정을 가능하게 하는 범용적인 기구를 제공합니다. 파라미터는, 예를 들어, 파라미터 사이즈, 서명 생성에 대한 난수 비트의 발생원 (해당하는 경우), 특정의 옵션의 계산을 실행할지 어떨지의 지시 등, 알고리즘에 대해서 설정 가능하면 어떠한 파라미터에서도 설정할 수 있습니다. 각 파라미터의 명명법은, 통일되고 있어 알고리즘에 고유하다라고 하는 것이 바람직합니다만, 현시점에서는 규정되고 있지 않습니다.

파라미터:
param - 파라미터의 캐릭터 라인명
반환값:
파라미터치를 표현하는 객체. 존재하지 않는 경우는 null
예외:
InvalidParameterException - param 가 이 엔진에 대해서 무효인 파라미터인 경우, 또는 이 파라미터를 취득하려고 하고 있는 동안에 다른 예외가 발생했을 경우
관련 항목:
setParameter(String, Object)

clone

public Object  clone()
             throws CloneNotSupportedException 
구현이 복제 가능한 경우는 복제를 돌려줍니다.

오버라이드(override):
클래스 SignatureSpi 내의 clone
반환값:
구현이 복제 가능한 경우는 복제
예외:
CloneNotSupportedException - Cloneable 를 지원하고 있지 않는 구현으로 불려 갔을 경우
관련 항목:
Cloneable

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 도 참조해 주세요.