public class KeyAgreement extends Object
共有の秘密の確立に関係する鍵は、鍵ジェネレータのいずれか (KeyPairGenerator
または KeyGenerator
) か KeyFactory
によって、または鍵協定プロトコルの中間フェーズの結果として作成されます。
鍵交換の対応関係ごとに、doPhase
を呼び出す必要があります。たとえば、鍵交換の相手が 1 つの場合は、lastPhase
フラグを true
に設定して doPhase
を 1 回呼び出す必要があります。鍵交換の相手が 2 つの場合は、最初は lastPhase
フラグを false
に設定し、2 回目は true
に設定して、doPhase
を 2 回呼び出す必要があります。鍵交換の相手の数は任意です。
Java プラットフォームの実装は、すべて次の標準の KeyAgreement
アルゴリズムをサポートする必要があります。
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)
指定された鍵と乱数発生の元でこの鍵合意を初期化します。
|
protected KeyAgreement(KeyAgreementSpi keyAgreeSpi, Provider provider, String algorithm)
keyAgreeSpi
- 委譲先provider
- プロバイダalgorithm
- アルゴリズムpublic final String getAlgorithm()
KeyAgreement
オブジェクトのアルゴリズム名を返します。
これは、この KeyAgreement
オブジェクトを作成した getInstance
呼び出しのいずれかに指定された名前と同じです。
KeyAgreement
オブジェクトのアルゴリズム名。public static final KeyAgreement getInstance(String algorithm) throws NoSuchAlgorithmException
KeyAgreement
オブジェクトを返します。
このメソッドは、最優先の Provider から順に、登録済みのセキュリティー Provider のリストをトラバースします。指定されたアルゴリズムをサポートする最初のプロバイダの KeyAgreementSpi 実装をカプセル化する新しい KeyAgreement オブジェクトが返されます。
登録済みプロバイダのリストは、Security.getProviders()
メソッド経由で取得できます。
algorithm
- 要求された鍵合意アルゴリズムの標準名。標準のアルゴリズム名については、Java 暗号化アーキテクチャー標準アルゴリズム名のドキュメントの KeyAgreement のセクションを参照。KeyAgreement
オブジェクト。NullPointerException
- 指定されたアルゴリズムが null である場合。NoSuchAlgorithmException
- 指定したアルゴリズムの KeyAgreementSpi 実装をサポートするプロバイダが存在しない場合。Provider
public static final KeyAgreement getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
KeyAgreement
オブジェクトを返します。
指定されたプロバイダからの KeyAgreementSpi の実装をカプセル化する新しい KeyAgreement オブジェクトが返されます。指定したプロバイダは、セキュリティープロバイダリストに登録する必要があります。
登録済みプロバイダのリストは、Security.getProviders()
メソッド経由で取得できます。
algorithm
- 要求された鍵合意アルゴリズムの標準名。標準のアルゴリズム名については、Java 暗号化アーキテクチャー標準アルゴリズム名のドキュメントの KeyAgreement のセクションを参照。provider
- プロバイダ名KeyAgreement
オブジェクト。NullPointerException
- 指定されたアルゴリズムが null である場合。NoSuchAlgorithmException
- 指定されたプロバイダに指定されたアルゴリズムの KeyAgreementSpi の実装がない場合。NoSuchProviderException
- 指定されたプロバイダがセキュリティープロバイダリストに登録されていない場合IllegalArgumentException
- provider
が null または空の場合Provider
public static final KeyAgreement getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
KeyAgreement
オブジェクトを返します。
指定された Provider オブジェクトからの KeyAgreementSpi の実装をカプセル化する新しい KeyAgreement オブジェクトが返されます。指定された Provider オブジェクトは、プロバイダリストに登録する必要はありません。
algorithm
- 要求された鍵合意アルゴリズムの標準名。標準のアルゴリズム名については、Java 暗号化アーキテクチャー標準アルゴリズム名のドキュメントの KeyAgreement のセクションを参照。provider
- プロバイダKeyAgreement
オブジェクト。NullPointerException
- 指定されたアルゴリズムが null である場合。NoSuchAlgorithmException
- 指定された Provider オブジェクトに指定されたアルゴリズムの KeyAgreementSpi の実装がない場合。IllegalArgumentException
- provider
が null の場合Provider
public final Provider getProvider()
KeyAgreement
オブジェクトのプロバイダを返します。KeyAgreement
オブジェクトのプロバイダpublic final void init(Key key) throws InvalidKeyException
この鍵合意が乱数バイトを必要とする場合は、インストールされているプロバイダのうち、もっとも優先順位の高いプロバイダの
の実装を乱数発生の元として使用して乱数バイトを取得します。SecureRandom を提供するプロバイダが 1 つもインストールされていない場合は、システムが提供する乱数発生の元が使用されます。SecureRandom
key
- 当事者の非公開情報。たとえば、Diffie-Hellman の鍵合意の場合は、当事者自身の Diffie-Hellman 非公開鍵InvalidKeyException
- 指定された鍵がこの鍵合意に不適切な場合。たとえば、型が間違っている場合、またはアルゴリズムの型に互換性がない場合。public final void init(Key key, SecureRandom random) throws InvalidKeyException
鍵合意アルゴリズムが乱数バイトを必要とする場合は、指定された乱数発生の元 random
から取得します。ただし、基本となるアルゴリズム実装が乱数バイトを必要としない場合、random
は無視されます。
key
- 当事者の非公開情報。たとえば、Diffie-Hellman の鍵合意の場合は、当事者自身の Diffie-Hellman 非公開鍵random
- 乱数発生の元InvalidKeyException
- 指定された鍵がこの鍵合意に不適切な場合。たとえば、型が間違っている場合、またはアルゴリズムの型に互換性がない場合。public final void init(Key key, AlgorithmParameterSpec params) throws InvalidKeyException, InvalidAlgorithmParameterException
この鍵合意が乱数バイトを必要とする場合は、インストールされているプロバイダのうち、もっとも優先順位の高いプロバイダの
の実装を乱数発生の元として使用して乱数バイトを取得します。SecureRandom を提供するプロバイダが 1 つもインストールされていない場合は、システムが提供する乱数発生の元が使用されます。SecureRandom
key
- 当事者の非公開情報。たとえば、Diffie-Hellman の鍵合意の場合は、当事者自身の Diffie-Hellman 非公開鍵params
- 鍵合意パラメータInvalidKeyException
- 指定された鍵がこの鍵合意に不適切な場合。たとえば、型が間違っている場合、またはアルゴリズムの型に互換性がない場合。InvalidAlgorithmParameterException
- 指定されたパラメータがこの鍵合意に不適切な場合。public final void init(Key key, AlgorithmParameterSpec params, SecureRandom random) throws InvalidKeyException, InvalidAlgorithmParameterException
key
- 当事者の非公開情報。たとえば、Diffie-Hellman の鍵合意の場合は、当事者自身の Diffie-Hellman 非公開鍵params
- 鍵合意パラメータrandom
- 乱数発生の元InvalidKeyException
- 指定された鍵がこの鍵合意に不適切な場合。たとえば、型が間違っている場合、またはアルゴリズムの型に互換性がない場合。InvalidAlgorithmParameterException
- 指定されたパラメータがこの鍵合意に不適切な場合。public final Key doPhase(Key key, boolean lastPhase) throws InvalidKeyException, IllegalStateException
key
- この段階の鍵。たとえば、2 当事者間の Diffie-Hellman の場合は、相手の Diffie-Hellman 公開鍵lastPhase
- これがこの鍵合意の最後の段階かどうかを示すフラグ。InvalidKeyException
- 指定された鍵がこの段階に不適切な場合。IllegalStateException
- この鍵合意が初期化されていない場合。public final byte[] generateSecret() throws IllegalStateException
このメソッドは、この KeyAgreement
オブジェクトをリセットするので、さらにほかの鍵合意に再使用できます。この鍵合意が init
メソッドの 1 つで再初期化されない場合、その後の鍵合意では、同じ非公開情報とアルゴリズムパラメータが使用されます。
IllegalStateException
- この鍵合意がまだ完了していない場合public final int generateSecret(byte[] sharedSecret, int offset) throws IllegalStateException, ShortBufferException
offset
から始まる sharedSecret
バッファー内に格納します。
sharedSecret
バッファーが小さすぎて結果を保持できない場合は、ShortBufferException
がスローされます。この場合、より大きな出力バッファーを使用してこの呼び出しを繰り返します。
このメソッドは、この KeyAgreement
オブジェクトをリセットするので、さらにほかの鍵合意に再使用できます。この鍵合意が init
メソッドの 1 つで再初期化されない場合、その後の鍵合意では、同じ非公開情報とアルゴリズムパラメータが使用されます。
sharedSecret
- 共有の秘密情報を格納するバッファーoffset
- 共有の秘密情報が格納される sharedSecret
内のオフセットsharedSecret
に格納されたバイト数IllegalStateException
- この鍵合意がまだ完了していない場合ShortBufferException
- 指定された出力バッファーが小さすぎて秘密情報を保持できない場合public final SecretKey generateSecret(String algorithm) throws IllegalStateException, NoSuchAlgorithmException, InvalidKeyException
SecretKey
オブジェクトとして返します。
このメソッドは、この KeyAgreement
オブジェクトをリセットするので、さらにほかの鍵合意に再使用できます。この鍵合意が init
メソッドの 1 つで再初期化されない場合、その後の鍵合意では、同じ非公開情報とアルゴリズムパラメータが使用されます。
algorithm
- 要求された秘密鍵アルゴリズムIllegalStateException
- この鍵合意がまだ完了していない場合NoSuchAlgorithmException
- 指定された秘密鍵アルゴリズムがない場合InvalidKeyException
- 共有の秘密鍵データを使用して、指定されたアルゴリズムの秘密鍵を生成できない場合 (鍵データが短すぎるなど) バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.