JavaTM Platform
Standard Ed. 6

javax.crypto
クラス KeyAgreementSpi

java.lang.Object
  上位を拡張 javax.crypto.KeyAgreementSpi

public abstract class KeyAgreementSpi
extends Object

このクラスは、KeyAgreement クラスの Service Provider Interface (SPI) を定義します。特定の鍵合意アルゴリズムの実装を提供する各暗号化サービスプロバイダは、このクラスのすべての抽象メソッドを実装する必要があります。  

共有の秘密情報の確立に関係する鍵は、鍵ジェネレータ (KeyPairGenerator または KeyGenerator) の 1 つ、または KeyFactory によって、あるいは鍵合意プロトコル (engineDoPhase) の中間段階の結果として作成されます。  

鍵交換の対応関係ごとに、engineDoPhase を呼び出す必要があります。たとえば、鍵交換の相手が 1 つの場合は、lastPhase フラグを true に設定して engineDoPhase を 1 回呼び出す必要があります。鍵交換の相手が 2 つの場合は、最初は lastPhase フラグを false に設定し、2 回目は true に設定して、engineDoPhase を 2 回呼び出す必要があります。鍵交換の相手の数は任意です。

導入されたバージョン:
1.4
関連項目:
KeyGenerator, SecretKey

コンストラクタの概要
KeyAgreementSpi()
           
 
メソッドの概要
protected abstract  Key engineDoPhase(Key key, boolean lastPhase)
          この鍵合意に関係する相手のだれかから受け取った、指定された鍵を使用してこの鍵合意の次の段階を実行します。
protected abstract  byte[] engineGenerateSecret()
          共有の秘密情報を生成して新しいバッファー内に返します。
protected abstract  int engineGenerateSecret(byte[] sharedSecret, int offset)
          共有の秘密情報を生成して、offset から始まる sharedSecret バッファー内に格納します。
protected abstract  SecretKey engineGenerateSecret(String algorithm)
          共有の秘密情報を作成して、それを要求されたアルゴリズム型の秘密鍵オブジェクトとして返します。
protected abstract  void engineInit(Key key, AlgorithmParameterSpec params, SecureRandom random)
          指定された鍵、アルゴリズムパラメータのセット、および乱数発生の元を使用してこの鍵合意を初期化します。
protected abstract  void engineInit(Key key, SecureRandom random)
          指定された鍵と乱数発生の元でこの鍵合意を初期化します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

KeyAgreementSpi

public KeyAgreementSpi()
メソッドの詳細

engineInit

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

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

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

engineInit

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

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

engineDoPhase

protected abstract Key engineDoPhase(Key key,
                                     boolean lastPhase)
                              throws InvalidKeyException,
                                     IllegalStateException
この鍵合意に関係する相手のだれかから受け取った、指定された鍵を使用してこの鍵合意の次の段階を実行します。

パラメータ:
key - この段階の鍵。たとえば、2 当事者間の Diffie-Hellman の場合は、相手の Diffie-Hellman 公開鍵
lastPhase - これがこの鍵合意の最後の段階かどうかを示すフラグ
戻り値:
この段階の結果の (中間) 鍵。この段階で鍵が生成されない場合は null
例外:
InvalidKeyException - 指定された鍵がこの段階に不適切な場合
IllegalStateException - この鍵合意が初期化されていない場合

engineGenerateSecret

protected abstract byte[] engineGenerateSecret()
                                        throws IllegalStateException
共有の秘密情報を生成して新しいバッファー内に返します。  

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

戻り値:
共有の秘密情報の入った新しいバッファー
例外:
IllegalStateException - この鍵合意がまだ完了していない場合

engineGenerateSecret

protected abstract int engineGenerateSecret(byte[] sharedSecret,
                                            int offset)
                                     throws IllegalStateException,
                                            ShortBufferException
共有の秘密情報を生成して、offset から始まる sharedSecret バッファー内に格納します。  

sharedSecret バッファーが小さすぎて結果を保持できない場合は、ShortBufferException がスローされます。この場合、より大きな出力バッファーを使用してこの呼び出しを繰り返します。  

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

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

engineGenerateSecret

protected abstract SecretKey engineGenerateSecret(String algorithm)
                                           throws IllegalStateException,
                                                  NoSuchAlgorithmException,
                                                  InvalidKeyException
共有の秘密情報を作成して、それを要求されたアルゴリズム型の秘密鍵オブジェクトとして返します。  

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

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

JavaTM Platform
Standard Ed. 6

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

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。