JavaTM 2
Platform
Std. Ed. v1.4.0

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)
          指定された鍵、アルゴリズムパラメータのセット、および乱数の発生源を使用してこの鍵合意を初期化します。
 void init(Key key, SecureRandom random)
          指定された鍵と乱数の発生源でこの鍵合意を初期化します。
 
クラス 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 - 委譲先
provider - プロバイダ
algorithm - アルゴリズム
メソッドの詳細

getAlgorithm

public final String getAlgorithm()
この KeyAgreement オブジェクトのアルゴリズム名を返します。

これは、この KeyAgreement オブジェクトを作成した getInstance 呼び出しの 1 つで指定された名前と同じです。

戻り値:
この KeyAgreement オブジェクトのアルゴリズム名

getInstance

public static final KeyAgreement getInstance(String algorithm)
                                      throws NoSuchAlgorithmException
指定された鍵合意アルゴリズムを実装する KeyAgreement オブジェクトを作成します。デフォルトのプロバイダのパッケージが、要求された鍵合意アルゴリズムの実装を提供している場合は、その実装を持った KeyAgreement クラスのインスタンスが返されます。アルゴリズムがデフォルトのパッケージで得られない場合は、ほかのプロバイダパッケージが検索されます。

パラメータ:
algorithm - 要求された鍵合意アルゴリズムの標準的な名前。アルゴリズムの標準名については、「Java 暗号化アーキテクチャ API の仕様およびリファレンス」の付録 A を参照
戻り値:
新しい KeyAgreement オブジェクト
例外:
NoSuchAlgorithmException - 指定されたアルゴリズムが、デフォルトのプロバイダパッケージにも、検索したほかのプロバイダパッケージにもない場合

getInstance

public static final KeyAgreement getInstance(String algorithm,
                                             String provider)
                                      throws NoSuchAlgorithmException,
                                             NoSuchProviderException
指定されたプロバイダから、指定された鍵合意アルゴリズムの KeyAgreement オブジェクトを作成します。

パラメータ:
algorithm - 要求された鍵合意アルゴリズムの標準的な名前。アルゴリズムの標準名については、「Java 暗号化アーキテクチャ API の仕様およびリファレンス」の付録 A を参照
provider - プロバイダ名
戻り値:
新しい KeyAgreement オブジェクト
例外:
NoSuchAlgorithmException - 指定されたプロバイダに指定されたアルゴリズムがない場合
NoSuchProviderException - 指定されたプロバイダが設定されていない場合
IllegalArgumentException - provider が null の場合

getInstance

public static final KeyAgreement getInstance(String algorithm,
                                             Provider provider)
                                      throws NoSuchAlgorithmException
指定されたプロバイダから、指定された鍵合意アルゴリズムの KeyAgreement オブジェクトを生成します。provider は登録されている必要はないことに注意してください。

パラメータ:
algorithm - 要求された鍵合意アルゴリズムの標準的な名前。アルゴリズムの標準名については、「Java 暗号化アーキテクチャ API の仕様およびリファレンス」の付録 A を参照
provider - プロバイダ
戻り値:
新しい KeyAgreement オブジェクト
例外:
NoSuchAlgorithmException - 指定されたプロバイダに指定されたアルゴリズムがない場合
IllegalArgumentException - provider が null の場合

getProvider

public final Provider getProvider()
この KeyAgreement オブジェクトのプロバイダを返します。

戻り値:
この KeyAgreement オブジェクトのプロバイダ

init

public final void init(Key key)
                throws InvalidKeyException
指定された鍵でこの鍵合意を初期化します。これには、この鍵合意に必要なすべてのアルゴリズムパラメータを含める必要があります。

この鍵合意が乱数バイトを必要とする場合は、インストールされているプロバイダのうち、もっとも優先順位の高いプロバイダの SecureRandom の実装を乱数の発生源として使用して乱数バイトを取得します。SecureRandom の実装を提供するプロバイダがインストールされていない場合は、システムが提供する乱数の発生源が使用されます。

パラメータ:
key - 当事者の非公開情報。たとえば、Diffie-Hellman の鍵合意の場合は、当事者自身の Diffie-Hellman 非公開鍵
例外:
InvalidKeyException - 指定された鍵がこの鍵合意に不適切な場合。たとえば、型が間違っている場合、またはアルゴリズムの型に互換性がない場合

init

public final void init(Key key,
                       SecureRandom random)
                throws InvalidKeyException
指定された鍵と乱数の発生源でこの鍵合意を初期化します。指定された鍵には、この鍵合意に必要なすべてのアルゴリズムパラメータを含める必要があります。

鍵合意アルゴリズムが乱数バイトを必要とする場合は、指定された乱数の発生源 random から取得します。ただし、基本となるアルゴリズム実装が乱数バイトを必要としない場合、random は無視されます。

パラメータ:
key - 当事者の非公開情報。たとえば、Diffie-Hellman の鍵合意の場合は、当事者自身の Diffie-Hellman 非公開鍵
random - 乱数の発生源
例外:
InvalidKeyException - 指定された鍵がこの鍵合意に不適切な場合。たとえば、型が間違っている場合、またはアルゴリズムの型に互換性がない場合

init

public final void init(Key key,
                       AlgorithmParameterSpec params)
                throws InvalidKeyException,
                       InvalidAlgorithmParameterException
指定された鍵とアルゴリズムパラメータのセットを使用してこの鍵合意を初期化します。

この鍵合意が乱数バイトを必要とする場合は、インストールされているプロバイダのうち、もっとも優先順位の高いプロバイダの SecureRandom の実装を乱数の発生源として使用して乱数バイトを取得します。SecureRandom の実装を提供するプロバイダがインストールされていない場合は、システムが提供する乱数の発生源が使用されます。

パラメータ:
key - 当事者の非公開情報。たとえば、Diffie-Hellman の鍵合意の場合は、当事者自身の Diffie-Hellman 非公開鍵
params - 鍵合意パラメータ
例外:
InvalidKeyException - 指定された鍵がこの鍵合意に不適切な場合。たとえば、型が間違っている場合、またはアルゴリズムの型に互換性がない場合
InvalidAlgorithmParameterException - 指定されたパラメータがこの鍵合意に不適切な場合

init

public final void init(Key key,
                       AlgorithmParameterSpec params,
                       SecureRandom random)
                throws InvalidKeyException,
                       InvalidAlgorithmParameterException
指定された鍵、アルゴリズムパラメータのセット、および乱数の発生源を使用してこの鍵合意を初期化します。

パラメータ:
key - 当事者の非公開情報。たとえば、Diffie-Hellman の鍵合意の場合は、当事者自身の Diffie-Hellman 非公開鍵
params - 鍵合意パラメータ
random - 乱数の発生源
例外:
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 がスローされます。この場合、より大きな出力バッファを使用してこの呼び出しを繰り返します。

このメソッドは、この KeyAgreement オブジェクトをリセットするので、さらにほかの鍵合意に再使用できます。この鍵合意が init メソッドの 1 つで再初期化されない場合、その後の鍵合意では、同じ非公開情報とアルゴリズムパラメータが使用されます。

パラメータ:
sharedSecret - 共有の秘密情報を格納するバッファ
offset - 共有の秘密情報が格納される sharedSecret 内のオフセット
戻り値:
sharedSecret に格納されたバイト数
例外:
IllegalStateException - この鍵合意がまだ完了していない場合
ShortBufferException - 指定された出力バッファが小さすぎて秘密情報を保持できない場合

generateSecret

public final SecretKey generateSecret(String algorithm)
                               throws IllegalStateException,
                                      NoSuchAlgorithmException,
                                      InvalidKeyException
共有の秘密情報を作成して、それを指定されたアルゴリズムの SecretKey オブジェクトとして返します。

このメソッドは、この KeyAgreement オブジェクトをリセットするので、さらにほかの鍵合意に再使用できます。この鍵合意が init メソッドの 1 つで再初期化されない場合、その後の鍵合意では、同じ非公開情報とアルゴリズムパラメータが使用されます。

パラメータ:
algorithm - 要求された秘密鍵アルゴリズム
戻り値:
共有の秘密鍵
例外:
IllegalStateException - この鍵合意がまだ完了していない場合
NoSuchAlgorithmException - 指定された秘密鍵アルゴリズムがない場合
InvalidKeyException - 共有の秘密鍵データを使用して、指定されたアルゴリズムの秘密鍵を生成できない場合 (たとえば、鍵データが短すぎる)

JavaTM 2
Platform
Std. Ed. v1.4.0

バグの報告と機能のリクエスト
これ以外の API リファレンスおよび開発者用ドキュメントについては、 Java 2 SDK SE 開発者用ドキュメントを参照してください。 開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、 およびコード実例が含まれています。

Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.