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