KEM
クラスのサービス・プロバイダ・インタフェース(SPI)を定義します。 セキュリティ・プロバイダは、このインタフェースを実装して、キー・カプセル化メカニズムの(KEM)アルゴリズムを実装します。
KEMアルゴリズムは、一連の構成をサポートする場合があります。 各構成では、異なるタイプのキー、暗号化プリミティブ、および共有シークレットとキー・カプセル化メッセージのサイズを受け入れることができます。 構成は、KEMアルゴリズム名、使用するキー、およびエンカプセレータまたはデカプセレータの作成時に指定されるオプションのAlgorithmParameterSpec
引数によって定義されます。 engineNewEncapsulator(java.security.PublicKey, java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom)
またはengineNewDecapsulator(java.security.PrivateKey, java.security.spec.AlgorithmParameterSpec)
をコールした結果は、単一の構成にマップするエンカプセレータまたはデカプセレータを返す必要があります。この場合、engineSecretSize()
およびengineEncapsulationSize()
メソッドは定数値を返します。
KEMSpi
実装は不変である必要があります。 複数のengineNewEncapsulator
メソッドとengineNewDecapsulator
メソッドを同時に呼び出すことは安全である必要があります。
EncapsulatorSpi
およびDecapsulatorSpi
実装も不変である必要があります。 複数のencapsulate
メソッドとdecapsulate
メソッドを同時に起動しても安全である必要があります。 encapsulate
を起動するたびに、新しい共有シークレットおよびキー・カプセル化メッセージが生成される必要があります。
たとえば、
public static class MyKEMImpl implements KEMSpi {
@Override
public KEMSpi.EncapsulatorSpi engineNewEncapsulator(PublicKey publicKey,
AlgorithmParameterSpec spec, SecureRandom secureRandom)
throws InvalidAlgorithmParameterException, InvalidKeyException {
if (!checkPublicKey(publicKey)) {
throw new InvalidKeyException("unsupported key");
}
if (!checkParameters(spec)) {
throw new InvalidAlgorithmParameterException("unsupported params");
}
return new MyEncapsulator(publicKey, spec, secureRandom);
}
class MyEncapsulator implements KEMSpi.EncapsulatorSpi {
MyEncapsulator(PublicKey publicKey, AlgorithmParameterSpec spec,
SecureRandom secureRandom){
this.spec = spec != null ? spec : getDefaultParameters();
this.secureRandom = secureRandom != null
? secureRandom
: getDefaultSecureRandom();
this.publicKey = publicKey;
}
@Override
public KEM.Encapsulated encapsulate(int from, int to, String algorithm) {
byte[] encapsulation;
byte[] secret;
// calculating...
return new KEM.Encapsulated(
new SecretKeySpec(secret, from, to - from, algorithm),
encapsulation, null);
}
// ...
}
// ...
}
- 導入されたバージョン:
- 21
- 関連項目:
-
ネストされたクラスのサマリー
ネストされたクラス修飾子と型インタフェース説明static interface
KEMレシーバ側でengineNewDecapsulator(java.security.PrivateKey, java.security.spec.AlgorithmParameterSpec)
によって生成されるKEMデカプセレータ実装。static interface
KEMセンダー側でengineNewEncapsulator(java.security.PublicKey, java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom)
によって生成されるKEMエンカプセレータ実装。 -
メソッドのサマリー
修飾子と型メソッド説明engineNewDecapsulator
(PrivateKey privateKey, AlgorithmParameterSpec spec) KEMレシーバ側にKEMデカプセレータを作成します。engineNewEncapsulator
(PublicKey publicKey, AlgorithmParameterSpec spec, SecureRandom secureRandom) KEMセンダー側にKEMエンカプセレータを作成します。
-
メソッドの詳細
-
engineNewEncapsulator
KEMSpi.EncapsulatorSpi engineNewEncapsulator(PublicKey publicKey, AlgorithmParameterSpec spec, SecureRandom secureRandom) throws InvalidAlgorithmParameterException, InvalidKeyException KEMセンダー側にKEMエンカプセレータを作成します。- パラメータ:
publicKey
- レシーバの公開キーは、null
にできませんspec
- オプションのパラメータは、null
ですsecureRandom
- カプセル化のランダム性のソース。null
の場合、実装ではデフォルトの実装を指定する必要があります。- 戻り値:
- このキーのエンカプセレータ
- 例外:
InvalidAlgorithmParameterException
-spec
が無効であるか、または1つが必要だがspec
がnull
の場合InvalidKeyException
-publicKey
がnull
または無効な場合- 関連項目:
-
engineNewDecapsulator
KEMSpi.DecapsulatorSpi engineNewDecapsulator(PrivateKey privateKey, AlgorithmParameterSpec spec) throws InvalidAlgorithmParameterException, InvalidKeyException KEMレシーバ側にKEMデカプセレータを作成します。- パラメータ:
privateKey
- レシーバの秘密キーは、null
にできませんspec
- オプションのパラメータは、null
です- 戻り値:
- このキーのデカプセレータ
- 例外:
InvalidAlgorithmParameterException
-spec
が無効であるか、または1つが必要だがspec
がnull
の場合InvalidKeyException
-privateKey
がnull
または無効な場合- 関連項目:
-