クラスKEM
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を起動するたびに、新しい共有シークレットおよびキー・カプセル化メッセージが生成されます。
架空のKEMアルゴリズムABCを使用した操作の例:
// Receiver side
KeyPairGenerator g = KeyPairGenerator.getInstance("ABC");
KeyPair kp = g.generateKeyPair();
publishKey(kp.getPublic());
// Sender side
KEM senderKEM = KEM.getInstance("ABC");
PublicKey receiverPublicKey = retrieveKey();
ABCKEMParameterSpec senderSpec = new ABCKEMParameterSpec(args);
KEM.Encapsulator e = senderKEM.newEncapsulator(
receiverPublicKey, senderSpec, null);
KEM.Encapsulated enc = e.encapsulate();
SecretKey senderSecret = enc.key();
sendBytes(enc.encapsulation());
sendBytes(enc.params());
// Receiver side
byte[] ciphertext = receiveBytes();
byte[] params = receiveBytes();
KEM receiverKEM = KEM.getInstance("ABC");
AlgorithmParameters algParams =
AlgorithmParameters.getInstance("ABC");
algParams.init(params);
ABCKEMParameterSpec receiverSpec =
algParams.getParameterSpec(ABCKEMParameterSpec.class);
KEM.Decapsulator d =
receiverKEM.newDecapsulator(kp.getPrivate(), receiverSpec);
SecretKey receiverSecret = d.decapsulate(ciphertext);
// senderSecret and receiverSecret should now be equal.
- 導入されたバージョン:
- 21
-
ネストされたクラスのサマリー
ネストされたクラス修飾子と型クラス説明static final classKEMレシーバ側でnewDecapsulator(PrivateKey)によって生成されるデカプセル。static final classこのクラスは、共有シークレット(SecretKeyとして)、キー・カプセル化メッセージおよびオプション・パラメータを含む、キー・カプセル化メカニズム(KEM)のカプセル化メソッドの戻り値を指定します。static final classKEM送信側のnewEncapsulator(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
-