JavaTM Platform
Standard Ed. 6

javax.crypto
클래스 KeyAgreement

java.lang.Object 
  상위를 확장 javax.crypto.KeyAgreement


public class KeyAgreement
extends Object

이 클래스는, 열쇠의 합의 프로토콜, 즉 열쇠의 교환 프로토콜의 기능을 제공합니다.  

공유의 비밀 작성에 관계하는 열쇠는,KeyPairGenerator 또는 KeyGenerator 의 몇개의 열쇠 제네레이터인가,KeyFactory 에 의해, 또는 열쇠 협정 프로토콜의 중간 국면의 결과로서 작성됩니다.

열쇠 교환의 대응 관계 마다,doPhase 를 호출할 필요가 있습니다. 예를 들어, 열쇠 교환의 상대가 1 개의 경우는,lastPhase 플래그를 true 로 설정해 doPhase 를 1 회 호출할 필요가 있습니다. 열쇠 교환의 상대가 2 개의 경우는, 처음은 lastPhase 플래그를 false 로 설정해, 2 번째는 true 로 설정해,doPhase 를 2 회 호출할 필요가 있습니다. 열쇠 교환의 상대의 수는 임의입니다.

도입된 버젼:
1.4
관련 항목:
KeyGenerator , SecretKey

생성자 의 개요
protected KeyAgreement (KeyAgreementSpi  keyAgreeSpi, Provider  provider, String  algorithm)
          KeyAgreement 객체를 생성합니다.
 
메소드의 개요
 Key doPhase (Key  key, boolean lastPhase)
          이 열쇠 합의에 관계하는 상대의 누군가로부터 받은, 지정된 열쇠를 사용해 이 열쇠 합의의 다음의 단계를 실행합니다.
 byte[] generateSecret ()
          공유의 비밀 정보를 생성해 새로운 버퍼내에 돌려줍니다.
 int generateSecret (byte[] sharedSecret, int offset)
          공유의 비밀 정보를 생성해,offset 로부터 시작되는 sharedSecret 버퍼내에 포함합니다.
 SecretKey generateSecret (String  algorithm)
          공유의 비밀 정보를 작성해, 그것이 지정된 알고리즘의 SecretKey 객체로서 돌려줍니다.
 String getAlgorithm ()
          이 KeyAgreement 객체의 알고리즘명을 돌려줍니다.
static KeyAgreement getInstance (String  algorithm)
          지정한 열쇠 합의 알고리즘을 구현하는 KeyAgreement 객체를 돌려줍니다.
static KeyAgreement getInstance (String  algorithm, Provider  provider)
          지정한 열쇠 합의 알고리즘을 구현하는 KeyAgreement 객체를 돌려줍니다.
static KeyAgreement getInstance (String  algorithm, String  provider)
          지정한 열쇠 합의 알고리즘을 구현하는 KeyAgreement 객체를 돌려줍니다.
 Provider getProvider ()
          이 KeyAgreement 객체의 프로바이더를 돌려줍니다.
 void init (Key  key)
          지정된 열쇠로 이 열쇠 합의를 초기화합니다.
 void init (Key  key, AlgorithmParameterSpec  params)
          지정된 열쇠와 알고리즘 파라미터세트를 사용해 이 열쇠 합의를 초기화합니다.
 void init (Key  key, AlgorithmParameterSpec  params, SecureRandom  random)
          지정된 열쇠, 알고리즘 파라미터세트, 및 random number generation의 원을 사용해 이 열쇠 합의를 초기화합니다.
 void init (Key  key, SecureRandom  random)
          지정된 열쇠와 random number generation의 원으로 이 열쇠 합의를 초기화합니다.
 
클래스 java.lang. Object 로부터 상속된 메소드
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
 

생성자 의 상세

KeyAgreement

protected KeyAgreement(KeyAgreementSpi  keyAgreeSpi,
                       Provider  provider,
                       String  algorithm)
KeyAgreement 객체를 생성합니다.

파라미터:
keyAgreeSpi - delegate
provider - 프로바이더
algorithm - 알고리즘
메소드의 상세

getAlgorithm

public final String  getAlgorithm()
KeyAgreement 객체의 알고리즘명을 돌려줍니다.

이것은, 이 KeyAgreement 객체를 생성한 getInstance 호출의 1 개로 지정된 이름과 같습니다.

반환값:
KeyAgreement 객체의 알고리즘명

getInstance

public static final KeyAgreement  getInstance(String  algorithm)
                                      throws NoSuchAlgorithmException 
지정한 열쇠 합의 알고리즘을 구현하는 KeyAgreement 객체를 돌려줍니다.

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

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

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

getInstance

public static final KeyAgreement  getInstance(String  algorithm,
                                             String  provider)
                                      throws NoSuchAlgorithmException ,
                                             NoSuchProviderException 
지정한 열쇠 합의 알고리즘을 구현하는 KeyAgreement 객체를 돌려줍니다.

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

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

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

getInstance

public static final KeyAgreement  getInstance(String  algorithm,
                                             Provider  provider)
                                      throws NoSuchAlgorithmException 
지정한 열쇠 합의 알고리즘을 구현하는 KeyAgreement 객체를 돌려줍니다.

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

파라미터:
algorithm - 요구된 열쇠 합의 알고리즘의 표준명 표준의 알고리즘명에 대해서는, 「Java 암호화 아키텍쳐(architecture) 레퍼런스 가이드」의 부록 A 를 참조
provider - 프로바이더
반환값:
새로운 KeyAgreement 객체
예외:
NullPointerException - 지정된 알고리즘이 null 인 경우
NoSuchAlgorithmException - 지정된 Provider 객체로 지정된 알고리즘의 KeyAgreementSpi 의 구현이 없는 경우
IllegalArgumentException - provider 가 null 의 경우
관련 항목:
Provider

getProvider

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

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

init

public final void init(Key  key)
                throws InvalidKeyException 
지정된 열쇠로 이 열쇠 합의를 초기화합니다. 이것에는, 이 열쇠 합의에 필요한 모든 알고리즘 파라미터를 포함할 필요가 있습니다.

이 열쇠 합의가 난수 바이트를 필요로 하는 경우는, 인스톨 되고 있는 프로바이더 가운데, 가장 우선 순위의 높은 프로바이더 SecureRandom 의 구현을 random number generation의 원으로서 사용해 난수 바이트를 가져옵니다. SecureRandom 의 구현을 제공하는 프로바이더가 인스톨되어 있지 않은 경우는, 시스템이 제공하는 random number generation의 원이 사용됩니다.

파라미터:
key - 당사자의 비공개 정보. 예를 들어, Diffie-Hellman 의 열쇠 합의의 경우는, 당사자 자신의 Diffie-Hellman 비공개키
예외:
InvalidKeyException - 지정된 열쇠가 이 열쇠 합의에 올바르지 않은 경우. 예를 들어, 형태가 잘못되어 있는 경우, 또는 알고리즘의 형태에 호환성이 없는 경우

init

public final void init(Key  key,
                       SecureRandom  random)
                throws InvalidKeyException 
지정된 열쇠와 random number generation의 원으로 이 열쇠 합의를 초기화합니다. 지정된 열쇠에는, 이 열쇠 합의에 필요한 모든 알고리즘 파라미터를 포함할 필요가 있습니다.

열쇠 합의 알고리즘이 난수 바이트를 필요로 하는 경우는, 지정된 random number generation의 원 random 로부터 가져옵니다. 다만, 기본이 되는 알고리즘 구현이 난수 바이트를 필요로 하지 않는 경우,random 는 무시됩니다.

파라미터:
key - 당사자의 비공개 정보. 예를 들어, Diffie-Hellman 의 열쇠 합의의 경우는, 당사자 자신의 Diffie-Hellman 비공개키
random - random number generation의 원
예외:
InvalidKeyException - 지정된 열쇠가 이 열쇠 합의에 올바르지 않은 경우. 예를 들어, 형태가 잘못되어 있는 경우, 또는 알고리즘의 형태에 호환성이 없는 경우

init

public final void init(Key  key,
                       AlgorithmParameterSpec  params)
                throws InvalidKeyException ,
                       InvalidAlgorithmParameterException 
지정된 열쇠와 알고리즘 파라미터세트를 사용해 이 열쇠 합의를 초기화합니다.

이 열쇠 합의가 난수 바이트를 필요로 하는 경우는, 인스톨 되고 있는 프로바이더 가운데, 가장 우선 순위의 높은 프로바이더 SecureRandom 의 구현을 random number generation의 원으로서 사용해 난수 바이트를 가져옵니다. SecureRandom 의 구현을 제공하는 프로바이더가 인스톨되어 있지 않은 경우는, 시스템이 제공하는 random number generation의 원이 사용됩니다.

파라미터:
key - 당사자의 비공개 정보. 예를 들어, Diffie-Hellman 의 열쇠 합의의 경우는, 당사자 자신의 Diffie-Hellman 비공개키
params - 열쇠 합의 파라미터
예외:
InvalidKeyException - 지정된 열쇠가 이 열쇠 합의에 올바르지 않은 경우. 예를 들어, 형태가 잘못되어 있는 경우, 또는 알고리즘의 형태에 호환성이 없는 경우
InvalidAlgorithmParameterException - 지정된 파라미터가 이 열쇠 합의에 올바르지 않은 경우

init

public final void init(Key  key,
                       AlgorithmParameterSpec  params,
                       SecureRandom  random)
                throws InvalidKeyException ,
                       InvalidAlgorithmParameterException 
지정된 열쇠, 알고리즘 파라미터세트, 및 random number generation의 원을 사용해 이 열쇠 합의를 초기화합니다.

파라미터:
key - 당사자의 비공개 정보. 예를 들어, Diffie-Hellman 의 열쇠 합의의 경우는, 당사자 자신의 Diffie-Hellman 비공개키
params - 열쇠 합의 파라미터
random - random number generation의 원
예외:
InvalidKeyException - 지정된 열쇠가 이 열쇠 합의에 올바르지 않은 경우. 예를 들어, 형태가 잘못되어 있는 경우, 또는 알고리즘의 형태에 호환성이 없는 경우
InvalidAlgorithmParameterException - 지정된 파라미터가 이 열쇠 합의에 올바르지 않은 경우

doPhase

public final Key  doPhase(Key  key,
                         boolean lastPhase)
                  throws InvalidKeyException ,
                         IllegalStateException 
이 열쇠 합의에 관계하는 상대의 누군가로부터 받은, 지정된 열쇠를 사용해 이 열쇠 합의의 다음의 단계를 실행합니다.

파라미터:
key - 이 단계의 열쇠. 예를 들어, 2 당사자 사이의 Diffie-Hellman 의 경우는, 상대의 Diffie-Hellman 공개키
lastPhase - 이것이 이 열쇠 합의의 마지막 단계인가 어떤가를 나타내는 플래그
반환값:
이 단계의 결과의 (중간) 열쇠. 이 단계에서 열쇠가 생성되지 않는 경우는 null
예외:
InvalidKeyException - 지정된 열쇠가 이 단계에 올바르지 않은 경우
IllegalStateException - 이 열쇠 합의가 초기화되어 있지 않은 경우

generateSecret

public final byte[] generateSecret()
                            throws IllegalStateException 
공유의 비밀 정보를 생성해 새로운 버퍼내에 돌려줍니다.

이 메소드는, 이 KeyAgreement 객체를 리셋 하므로, 게다가 다른 열쇠 합의에 재사용할 수 있습니다. 이 열쇠 합의가 init 메소드의 1 개로 재초기화되지 않는 경우, 그 후의 열쇠 합의에서는, 같은 비공개 정보와 알고리즘 파라미터가 사용됩니다.

반환값:
공유의 비밀 정보가 들어간 새로운 버퍼
예외:
IllegalStateException - 이 열쇠 합의가 아직 완료하고 있지 않는 경우

generateSecret

public final int generateSecret(byte[] sharedSecret,
                                int offset)
                         throws IllegalStateException ,
                                ShortBufferException 
공유의 비밀 정보를 생성해,offset 로부터 시작되는 sharedSecret 버퍼내에 포함합니다.

sharedSecret 버퍼가 너무 작아 결과를 보관 유지할 수 없는 경우는,ShortBufferException 가 throw 됩니다. 이 경우, 보다 큰 출력 버퍼를 사용해 이 호출을 반복합니다.

이 메소드는, 이 KeyAgreement 객체를 리셋 하므로, 게다가 다른 열쇠 합의에 재사용할 수 있습니다. 이 열쇠 합의가 init 메소드의 1 개로 재초기화되지 않는 경우, 그 후의 열쇠 합의에서는, 같은 비공개 정보와 알고리즘 파라미터가 사용됩니다.

파라미터:
sharedSecret - 공유의 비밀 정보를 포함하는 버퍼
offset - 공유의 비밀 정보가 포함되는 sharedSecret 내의 오프셋(offset)
반환값:
sharedSecret 에 포함된 바이트수
예외:
IllegalStateException - 이 열쇠 합의가 아직 완료하고 있지 않는 경우
ShortBufferException - 지정된 출력 버퍼가 너무 작아 비밀 정보를 보관 유지할 수 없는 경우

generateSecret

public final SecretKey  generateSecret(String  algorithm)
                               throws IllegalStateException ,
                                      NoSuchAlgorithmException ,
                                      InvalidKeyException 
공유의 비밀 정보를 작성해, 그것이 지정된 알고리즘의 SecretKey 객체로서 돌려줍니다.

이 메소드는, 이 KeyAgreement 객체를 리셋 하므로, 게다가 다른 열쇠 합의에 재사용할 수 있습니다. 이 열쇠 합의가 init 메소드의 1 개로 재초기화되지 않는 경우, 그 후의 열쇠 합의에서는, 같은 비공개 정보와 알고리즘 파라미터가 사용됩니다.

파라미터:
algorithm - 요구된 비밀열쇠 알고리즘
반환값:
공유의 비밀열쇠
예외:
IllegalStateException - 이 열쇠 합의가 아직 완료하고 있지 않는 경우
NoSuchAlgorithmException - 지정된 비밀열쇠 알고리즘이 없는 경우
InvalidKeyException - 공유의 비밀열쇠 데이터를 사용해, 지정된 알고리즘의 비밀열쇠를 생성할 수 없는 경우 (열쇠 데이터가 너무 짧은 등)

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