クラスKeyAgreement
共有の秘密の確立に関係するキーは、キー・ジェネレータのいずれか(KeyPairGeneratorまたはKeyGenerator)かKeyFactoryによって、またはキー協定プロトコルの中間フェーズの結果として作成されます。
キー交換の対応関係ごとに、doPhaseを呼び出す必要があります。 たとえば、キー交換の相手が1つの 合は、lastPhaseフラグをtrueに設定してdoPhaseを1回呼び出す必要があります。 キー交換の相手が2つの 合は、最初はlastPhaseフラグをfalseに設定し、2回目はtrueに設定して、doPhaseを2回呼び出す必要があります。 キー交換の相手の数は任意です。 た し、2つ以上のパーティを持つキー交換のサポートは、実装固有であるか、標準キー契約アルゴリズ で指定されています。
Javaプラットフォー の実装は、すべて次の標準のKeyAgreementアルゴリズ をサポートする必要があります。
DiffieHellman
- 導入されたバージョン:
- 1.4
- 関連 目:
-
コンストラクタのサマリー
コンストラクタ修飾子コンストラクタ説明protectedKeyAgreement(KeyAgreementSpi keyAgreeSpi, Provider provider, String algorithm) KeyAgreementオブジェクトを作成します。 -
メソッドのサマリー
修飾子と型メソッド説明final Keyこのキー合意に関係する相手の れかから受け取った、指定されたキーを使用してこのキー合意の次の段階を実行します。final byte[]共有の秘密情 を生成して新しいバッファ内に返します。final intgenerateSecret(byte[] sharedSecret, int offset) 共有の秘密情 を生成して、offsetから始まるsharedSecretバッファ内に 納します。final SecretKeygenerateSecret(String algorithm) 共有の秘密情 を作成して、それを指定されたアルゴリズ のSecretKeyオブジェクトとして返します。final StringこのKeyAgreementオブジェクトのアルゴリズ 名を返します。static final KeyAgreementgetInstance(String algorithm) 指定したキー合意アルゴリズ を実装するKeyAgreementオブジェクトを返します。static final KeyAgreementgetInstance(String algorithm, String provider) 指定したキー合意アルゴリズ を実装するKeyAgreementオブジェクトを返します。static final KeyAgreementgetInstance(String algorithm, Provider provider) 指定したキー合意アルゴリズ を実装するKeyAgreementオブジェクトを返します。final ProviderこのKeyAgreementオブジェクトのプロバイダを返します。final void指定されたキーでこのキー合意を初期化します。これには、このキー合意に必要なすべてのアルゴリズ ・パラメータを含める必要があります。final voidinit(Key key, SecureRandom random) 指定されたキーと乱数発生の元でこのキー合意を初期化します。final voidinit(Key key, AlgorithmParameterSpec params) 指定されたキーとアルゴリズ ・パラメータのセットを使用してこのキー合意を初期化します。final voidinit(Key key, AlgorithmParameterSpec params, SecureRandom random) 指定されたキー、アルゴリズ ・パラメータのセット、および乱数発生の元を使用してこのキー合意を初期化します。
-
コンストラクタの詳細
-
KeyAgreement
protected KeyAgreement(KeyAgreementSpi keyAgreeSpi, Provider provider, String algorithm) KeyAgreementオブジェクトを作成します。- パラメータ:
keyAgreeSpi- 委譲先provider- プロバイダalgorithm- アルゴリズ
-
-
メソッドの詳細
-
getAlgorithm
public final String getAlgorithm()このKeyAgreementオブジェクトのアルゴリズ 名を返します。これは、この
KeyAgreementオブジェクトを作成したgetInstance呼出しのいずれかに指定された名前と同じです。- 戻り値:
- この
KeyAgreementオブジェクトのアルゴリズ 名。
-
getInstance
public static final KeyAgreement getInstance(String algorithm) throws NoSuchAlgorithmException 指定したキー合意アルゴリズ を実装するKeyAgreementオブジェクトを返します。このメソッドは、最も優先されるプロバイダから始まる登録済セキュリティ・プロバイダのリストを横断します。 指定されたアルゴリズ をサポートする最初のプロバイダから
KeyAgreementSpi実装をカプセル化する新しいKeyAgreementオブジェクトが返されます。登録済みプロバイダのリストは、
Security.getProviders()メソッド経由で取得できます。- 実装上のノート:
- JDKリファレンス実装では、さらに
jdk.security.provider.preferredSecurityプロパティを使用して、指定したアルゴリズ の優先プロバイダ 序を決定します。 これは、Security.getProviders()によって返されるプロバイダの 序とは異なる 合があります。 - パラメータ:
algorithm- 要求されたキー合意アルゴリズ の標準名。 標準アルゴリズ 名の詳細は、「Javaセキュリティ標準アルゴリズ 名仕様」のKeyAgreementの を参照してく さい。- 戻り値:
- 新しい
KeyAgreementオブジェクト - スロー:
NoSuchAlgorithmException-Providerが、指定されたアルゴリズ のKeyAgreementSpi実装をサポートしていない 合NullPointerException-algorithmがnullである 合- 関連 目:
-
getInstance
public static final KeyAgreement getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException 指定したキー合意アルゴリズ を実装するKeyAgreementオブジェクトを返します。指定したプロバイダから
KeyAgreementSpi実装をカプセル化する新しいKeyAgreementオブジェクトが返されます。 指定したプロバイダは、セキュリティ・プロバイダ・リストに登録する必要があります。登録済みプロバイダのリストは、
Security.getProviders()メソッド経由で取得できます。- パラメータ:
algorithm- 要求されたキー合意アルゴリズ の標準名。 標準アルゴリズ 名の詳細は、「Javaセキュリティ標準アルゴリズ 名仕様」のKeyAgreementの を参照してく さい。provider- プロバイダ名。- 戻り値:
- 新しい
KeyAgreementオブジェクト - スロー:
IllegalArgumentException-providerがnullまたは空の 合NoSuchAlgorithmException- 指定されたアルゴリズ のKeyAgreementSpi実装が、指定されたプロバイダから利用可能でない 合NoSuchProviderException- 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない 合NullPointerException-algorithmがnullである 合- 関連 目:
-
getInstance
public static final KeyAgreement getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException 指定したキー合意アルゴリズ を実装するKeyAgreementオブジェクトを返します。指定したプロバイダから
KeyAgreementSpi実装をカプセル化する新しいKeyAgreementオブジェクトが返されます。 指定されたプロバイダをプロバイダ・リストに登録する必要はありません。- パラメータ:
algorithm- 要求されたキー合意アルゴリズ の標準名。 標準アルゴリズ 名の詳細は、「Javaセキュリティ標準アルゴリズ 名仕様」のKeyAgreementの を参照してく さい。provider- プロバイダ- 戻り値:
- 新しい
KeyAgreementオブジェクト - スロー:
IllegalArgumentException-providerがnullの 合NoSuchAlgorithmException- 指定されたアルゴリズ のKeyAgreementSpi実装が、指定されたProviderオブジェクトから使用できない 合NullPointerException-algorithmが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メソッドのいずれかへの最新の呼出し後の状態にリセットします。generateSecretへの呼び出し後、新しいキーを提供するためにdoPhaseを呼び出し、generateSecretを呼び出して新しいシークレットを生成することによって、オブジェクトを今後のキー協定操作に再利用できます。 この 合、initに提供されているプライベート情 とアルゴリズ ・パラメータは、複数のキー協定操作に使用されます。initメソッドは、generateSecretより後に呼び出すことで、後続の操作で使用されるプライベート情 を変更できます。- 戻り値:
- 共有の秘密情 の入った新しいバッファ
- スロー:
IllegalStateException- このキー協定が初期化されていない 合、またはアグリーメントのすべてのパーティに対してキーを指定するためにdoPhaseがコールされていない 合
-
generateSecret
public final int generateSecret(byte[] sharedSecret, int offset) throws IllegalStateException, ShortBufferException 共有の秘密情 を生成して、offsetから始まるsharedSecretバッファ内に 納します。sharedSecretバッファが小さすぎて結果を保持できない 合は、ShortBufferExceptionがスローされます。 この 合、より大きな出力バッファを使用してこの呼出しを繰り返します。このメソッドは、
KeyAgreementオブジェクトを、initメソッドのいずれかへの最新の呼出し後の状態にリセットします。generateSecretへの呼び出し後、新しいキーを提供するためにdoPhaseを呼び出し、generateSecretを呼び出して新しいシークレットを生成することによって、オブジェクトを今後のキー協定操作に再利用できます。 この 合、initに提供されているプライベート情 とアルゴリズ ・パラメータは、複数のキー協定操作に使用されます。initメソッドは、generateSecretより後に呼び出すことで、後続の操作で使用されるプライベート情 を変更できます。- パラメータ:
sharedSecret- 共有の秘密情 を 納するバッファoffset- 共有の秘密情 が 納されるsharedSecret内のオフセット- 戻り値:
sharedSecretに 納されたバイト数- スロー:
IllegalStateException- このキー協定が初期化されていない 合、またはアグリーメントのすべてのパーティに対してキーを指定するためにdoPhaseがコールされていない 合ShortBufferException- 指定された出力バッファが小さすぎて秘密情 を保持できない 合
-
generateSecret
public final SecretKey generateSecret(String algorithm) throws IllegalStateException, NoSuchAlgorithmException, InvalidKeyException 共有の秘密情 を作成して、それを指定されたアルゴリズ のSecretKeyオブジェクトとして返します。このメソッドは、
KeyAgreementオブジェクトを、initメソッドのいずれかへの最新の呼出し後の状態にリセットします。generateSecretへの呼び出し後、新しいキーを提供するためにdoPhaseを呼び出し、generateSecretを呼び出して新しいシークレットを生成することによって、オブジェクトを今後のキー協定操作に再利用できます。 この 合、initに提供されているプライベート情 とアルゴリズ ・パラメータは、複数のキー協定操作に使用されます。initメソッドは、generateSecretより後に呼び出すことで、後続の操作で使用されるプライベート情 を変更できます。- パラメータ:
algorithm- 要求された秘密キーアルゴリズ- 戻り値:
- 共有の秘密キー
- スロー:
IllegalStateException- このキー協定が初期化されていない 合、またはアグリーメントのすべてのパーティに対してキーを指定するためにdoPhaseがコールされていない 合NoSuchAlgorithmException- 指定された秘密キーアルゴリズ がない 合InvalidKeyException- 共有の秘密キー・マテリアルが、指定されたアルゴリズ の秘密キーを生成に使用できない 合 (キー・データが短すぎるなど)
-