JavaTM 2 Platform
Standard Ed. 6

javax.crypto
類別 KeyAgreementSpi

java.lang.Object
  繼承者 javax.crypto.KeyAgreementSpi

public abstract class KeyAgreementSpi
extends Object

此類別為 KeyAgreement 類別定義了服務提供者介面 (SPI)。此類別中的所有抽象方法必須由希望提供特定密鑰一致演算法實作的每個加密服務提供者來實作。

建立共享秘密所涉及的密鑰由某個密鑰產生器(KeyPairGeneratorKeyGenerator,一個 KeyFactory)來創建,或從密鑰協定協議的中間階段來創建 (engineDoPhase)。

對於密鑰交換中的每個對應物,需要調用 engineDoPhase。例如,如果密鑰交換是與其他一個參與者進行的,則需要調用一次 engineDoPhase,將 lastPhase 標誌設置為 true。如果密鑰交換是與其他兩個參與者進行的,則需要調用兩次 engineDoPhase,第一次將 lastPhase 標誌設置為 false,第二次將它設置為 true。密鑰交換可能涉及任意數量的參與者。

從以下版本開始:
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 - 此階段的密鑰。例如,對於兩個參與者之間的 Diffie-Hellman,此密鑰應是其他參與者的 Diffie-Hellman 公鑰。
lastPhase - 指示這是否是此密鑰協定的最後階段的標誌。
返回:
從此階段得到的(中間)密鑰;如果此階段不產生密鑰,則返回 null
拋出:
InvalidKeyException - 如果給定密鑰不適合此階段。
IllegalStateException - 如果尚未初始化此密鑰協定。

engineGenerateSecret

protected abstract byte[] engineGenerateSecret()
                                        throws IllegalStateException
產生共享秘密密鑰並在新的緩衝區中返回它。

此方法重新設置此 KeyAgreementSpi 物件,以便能夠將它重新用於進一步的密鑰協定。如果沒有使用某個 engineInit 方法重新初始化此密鑰協定,則將相同的私有資訊和演算法參數用於後續密鑰協定。

返回:
帶有共享秘密密鑰的新緩衝區
拋出:
IllegalStateException - 如果尚未實作此密鑰協定

engineGenerateSecret

protected abstract int engineGenerateSecret(byte[] sharedSecret,
                                            int offset)
                                     throws IllegalStateException,
                                            ShortBufferException
產生共享秘密密鑰,並將從 offset 開始(包括)的部分放入緩衝區 sharedSecret

如果 sharedSecret 緩衝區太小而無法保存該結果,則拋出 ShortBufferException。在此情況下,應該用更大的輸出緩衝區重複進行此調用。

此方法重新設置此 KeyAgreementSpi 物件,以便能夠將它重新用於進一步的密鑰協定。如果沒有使用某個 engineInit 方法重新初始化此密鑰協定,則將相同的私有資訊和演算法參數用於後續密鑰協定。

參數:
sharedSecret - 共享秘密密鑰的緩衝區
offset - 將存儲共享秘密密鑰的 sharedSecret 中的偏移量
返回:
放入 sharedSecret 中的位元組數
拋出:
IllegalStateException - 如果尚未實作此密鑰協定
ShortBufferException - 如果給定輸出緩衝區太小而無法保存該秘密密鑰

engineGenerateSecret

protected abstract SecretKey engineGenerateSecret(String algorithm)
                                           throws IllegalStateException,
                                                  NoSuchAlgorithmException,
                                                  InvalidKeyException
創建共享秘密密鑰,並將它作為所請求演算法型別的秘密密鑰物件返回。

此方法重新設置此 KeyAgreementSpi 物件,以便能夠將它重新用於進一步的密鑰協定。如果沒有使用某個 engineInit 方法重新初始化此密鑰協定,則將相同的私有資訊和演算法參數用於後續密鑰協定。

參數:
algorithm - 所請求秘密密鑰的演算法
返回:
共享的秘密密鑰
拋出:
IllegalStateException - 如果此密鑰協定尚未實作
NoSuchAlgorithmException - 如果所請求的秘密密鑰演算法不可用
InvalidKeyException - 如果無法使用共享秘密密鑰材料產生所請求演算法型別的秘密密鑰(例如,密鑰材料太短缺)

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only