getInstance
メソッドは、指定されたアルゴリズムを実装する新しいKEM
オブジェクトを作成します。
KEM
オブジェクトは不変です。 同じKEM
オブジェクトで複数のnewEncapsulator
メソッドとnewDecapsulator
メソッドを同時に呼び出すことは安全です。
KEM
オブジェクトのインスタンス化時にgetInstance
メソッドでプロバイダが指定されていない場合、newEncapsulator
およびnewDecapsulator
メソッドは、異なるプロバイダからエンカプセレータまたはデカプセレータを戻すことができます。 選択したプロバイダは、newEncapsulator
またはnewDecapsulator
メソッドに渡されるパラメータに基づきます: 秘密キーまたは公開キーおよびオプションのAlgorithmParameterSpec
。 KEM.Encapsulator.providerName()
およびKEM.Decapsulator.providerName()
メソッドは、選択したプロバイダの名前を返します。
Encapsulator
およびDecapsulator
オブジェクトも不変です。 同じEncapsulator
またはDecapsulator
オブジェクトに対して複数のencapsulate
メソッドとdecapsulate
メソッドを同時に起動することは安全です。 encapsulate
を起動するたびに、新しい共有シークレットおよびキー・カプセル化メッセージが生成されます。
例:
// Receiver side
var kpg = KeyPairGenerator.getInstance("X25519");
var kp = kpg.generateKeyPair();
// Sender side
var kem1 = KEM.getInstance("DHKEM");
var sender = kem1.newEncapsulator(kp.getPublic());
var encapsulated = sender.encapsulate();
var k1 = encapsulated.key();
// Receiver side
var kem2 = KEM.getInstance("DHKEM");
var receiver = kem2.newDecapsulator(kp.getPrivate());
var k2 = receiver.decapsulate(encapsulated.encapsulation());
assert Arrays.equals(k1.getEncoded(), k2.getEncoded());
- 導入されたバージョン:
- 21
-
ネストされたクラスのサマリー
ネストされたクラス修飾子と型クラス説明static final class
KEMレシーバ側のnewDecapsulator(java.security.PrivateKey)
によって生成されるデカプセレータ。static final class
このクラスは、共有シークレット(SecretKey
として)、キー・カプセル化メッセージおよびオプション・パラメータを含む、キー・カプセル化メカニズム(KEM)のカプセル化メソッドの戻り値を指定します。static final class
エンカプセレータ。KEM送信側のnewEncapsulator(java.security.PublicKey)
によって生成されます。 -
メソッドのサマリー
修飾子と型メソッド説明このKEM
オブジェクトのアルゴリズムの名前を返します。static KEM
getInstance
(String algorithm) 指定されたアルゴリズムを実装するKEM
オブジェクトを返します。static KEM
getInstance
(String algorithm, String provider) 指定されたセキュリティ・プロバイダから指定されたアルゴリズムを実装するKEM
オブジェクトを返します。static KEM
getInstance
(String algorithm, Provider provider) 指定されたセキュリティ・プロバイダから指定されたアルゴリズムを実装するKEM
オブジェクトを返します。newDecapsulator
(PrivateKey privateKey) KEMレシーバ側にKEMデカプセレータを作成します。newDecapsulator
(PrivateKey privateKey, AlgorithmParameterSpec spec) KEMレシーバ側にKEMデカプセレータを作成します。newEncapsulator
(PublicKey publicKey) KEMセンダー側にKEMエンカプセレータを作成します。newEncapsulator
(PublicKey publicKey, SecureRandom secureRandom) KEMセンダー側にKEMエンカプセレータを作成します。newEncapsulator
(PublicKey publicKey, AlgorithmParameterSpec spec, SecureRandom secureRandom) KEMセンダー側にKEMエンカプセレータを作成します。
-
メソッドの詳細
-
getInstance
public static KEM getInstance(String algorithm) throws NoSuchAlgorithmException 指定されたアルゴリズムを実装するKEM
オブジェクトを返します。- パラメータ:
algorithm
- KEMアルゴリズムの名前。 標準のKEMアルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」のKEM
の項を参照してください。- 戻り値:
- 新しい
KEM
オブジェクト - 例外:
NoSuchAlgorithmException
-Provider
が、指定されたアルゴリズムのKEM
実装をサポートしていない場合NullPointerException
-algorithm
がnull
である場合
-
getInstance
public static KEM getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException 指定されたセキュリティ・プロバイダから指定されたアルゴリズムを実装するKEM
オブジェクトを返します。- パラメータ:
algorithm
- KEMアルゴリズムの名前。 標準のKEMアルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」のKEM
の項を参照してください。provider
- プロバイダnull
の場合、このメソッドはgetInstance(String)
と同等です。- 戻り値:
- 新しい
KEM
オブジェクト - 例外:
NoSuchAlgorithmException
-provider
が指定され、指定されたKEMアルゴリズムをサポートしない場合、またはprovider
がnull
であり、指定されたアルゴリズムのKEM実装をサポートするプロバイダが存在しない場合NullPointerException
-algorithm
がnull
である場合
-
getInstance
public static KEM getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException 指定されたセキュリティ・プロバイダから指定されたアルゴリズムを実装するKEM
オブジェクトを返します。- パラメータ:
algorithm
- KEMアルゴリズムの名前。 標準のKEMアルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」のKEM
の項を参照してください。provider
- プロバイダnull
の場合、このメソッドはgetInstance(String)
と同等です。- 戻り値:
- 新しい
KEM
オブジェクト - 例外:
NoSuchAlgorithmException
-provider
が指定され、指定されたKEMアルゴリズムをサポートしない場合、またはprovider
がnull
であり、指定されたアルゴリズムのKEM実装をサポートするプロバイダが存在しない場合NoSuchProviderException
- 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない場合NullPointerException
-algorithm
がnull
である場合
-
newEncapsulator
public KEM.Encapsulator newEncapsulator(PublicKey publicKey) throws InvalidKeyException KEMセンダー側にKEMエンカプセレータを作成します。このメソッドは
newEncapsulator(publicKey, null, null)
と同等です。- パラメータ:
publicKey
- レシーバの公開キーは、null
にできません- 戻り値:
- このキーのエンカプセレータ
- 例外:
InvalidKeyException
-publicKey
がnull
または無効な場合UnsupportedOperationException
-AlgorithmParameterSpec
を指定する必要があるため、このメソッドがサポートされていない場合
-
newEncapsulator
public KEM.Encapsulator newEncapsulator(PublicKey publicKey, SecureRandom secureRandom) throws InvalidKeyException KEMセンダー側にKEMエンカプセレータを作成します。このメソッドは
newEncapsulator(publicKey, null, secureRandom)
と同等です。- パラメータ:
publicKey
- レシーバの公開キーは、null
にできませんsecureRandom
- カプセル化のランダム性のソース。 nullの場合、実装のデフォルトが使用されます。- 戻り値:
- このキーのエンカプセレータ
- 例外:
InvalidKeyException
-publicKey
がnull
または無効な場合UnsupportedOperationException
-AlgorithmParameterSpec
を指定する必要があるため、このメソッドがサポートされていない場合
-
newEncapsulator
public KEM.Encapsulator newEncapsulator(PublicKey publicKey, AlgorithmParameterSpec spec, SecureRandom secureRandom) throws InvalidAlgorithmParameterException, InvalidKeyException KEMセンダー側にKEMエンカプセレータを作成します。アルゴリズムでは、
AlgorithmParameterSpec
子クラスを定義して、このメソッドに追加情報を提供できます。 これは、同じキーを使用して様々な方法で共有シークレットを導出できる場合に特に役立ちます。 このオブジェクト内の追加情報をキー・カプセル化メッセージとともに送信して、レシーバが一致するデカプセレータを作成できるようにする必要がある場合は、カプセル化出力内のKEM.Encapsulated.params
フィールドにバイト配列として含められます。 この場合、セキュリティ・プロバイダは、KEMと同じアルゴリズム名を使用してAlgorithmParameters
実装を提供する必要があります。 受信側は、受信したparams
バイト配列でこのようなAlgorithmParameters
インスタンスを開始し、newDecapsulator(PrivateKey, AlgorithmParameterSpec)
コールで使用されるAlgorithmParameterSpec
オブジェクトをリカバリできます。- パラメータ:
publicKey
- レシーバの公開キーは、null
にできませんspec
- オプションのパラメータは、null
ですsecureRandom
- カプセル化のランダム性のソース。 nullの場合、実装のデフォルトが使用されます。- 戻り値:
- このキーのエンカプセレータ
- 例外:
InvalidAlgorithmParameterException
-spec
が無効であるか、または1つが必要だがspec
がnull
の場合InvalidKeyException
-publicKey
がnull
または無効な場合
-
newDecapsulator
public KEM.Decapsulator newDecapsulator(PrivateKey privateKey) throws InvalidKeyException KEMレシーバ側にKEMデカプセレータを作成します。このメソッドは
newDecapsulator(privateKey, null)
と同等です。- パラメータ:
privateKey
- レシーバの秘密キーは、null
にできません- 戻り値:
- このキーのデカプセレータ
- 例外:
InvalidKeyException
-privateKey
がnull
または無効な場合UnsupportedOperationException
-AlgorithmParameterSpec
を指定する必要があるため、このメソッドがサポートされていない場合
-
newDecapsulator
public KEM.Decapsulator newDecapsulator(PrivateKey privateKey, AlgorithmParameterSpec spec) throws InvalidAlgorithmParameterException, InvalidKeyException KEMレシーバ側にKEMデカプセレータを作成します。- パラメータ:
privateKey
- レシーバの秘密キーは、null
にできませんspec
- パラメータはnull
です- 戻り値:
- このキーのデカプセレータ
- 例外:
InvalidAlgorithmParameterException
-spec
が無効であるか、または1つが必要だがspec
がnull
の場合InvalidKeyException
-privateKey
がnull
または無効な場合
-
getAlgorithm
public String getAlgorithm()このKEM
オブジェクトのアルゴリズムの名前を返します。- 戻り値:
- この
KEM
オブジェクトのアルゴリズムの名前。
-