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 classKEMレシーバ側のnewDecapsulator(java.security.PrivateKey)によって生成されるデカプセレータ。static final classこのクラスは、共有シークレット(SecretKeyとして)、キー・カプセル化メッセージおよびオプション・パラメータを含む、キー・カプセル化メカニズム(KEM)のカプセル化メソッドの戻り値を指定します。static final classエンカプセレータ。KEM送信側のnewEncapsulator(java.security.PublicKey)によって生成されます。 -
メソッドのサマリー
修飾子と型メソッド説明このKEMオブジェクトのアルゴリズムの名前を返します。static KEMgetInstance(String algorithm) 指定されたアルゴリズムを実装するKEMオブジェクトを返します。static KEMgetInstance(String algorithm, String provider) 指定されたセキュリティ・プロバイダから指定されたアルゴリズムを実装するKEMオブジェクトを返します。static KEMgetInstance(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
-