11package org .bouncycastle .tls .crypto .impl .jcajce ;
22
33import java .io .IOException ;
4+ import java .security .GeneralSecurityException ;
45import java .security .KeyPair ;
56import java .security .KeyPairGenerator ;
67import java .security .PrivateKey ;
1112import org .bouncycastle .jcajce .SecretKeyWithEncapsulation ;
1213import org .bouncycastle .jcajce .spec .KEMExtractSpec ;
1314import org .bouncycastle .jcajce .spec .KEMGenerateSpec ;
15+ import org .bouncycastle .jcajce .spec .MLKEMParameterSpec ;
1416import org .bouncycastle .tls .NamedGroup ;
1517import org .bouncycastle .tls .crypto .TlsAgreement ;
1618import org .bouncycastle .tls .crypto .TlsKemConfig ;
@@ -43,7 +45,7 @@ public JceTlsSecret decapsulate(PrivateKey privateKey, byte[] ciphertext)
4345 {
4446 try
4547 {
46- KeyGenerator keyGenerator = KemUtil . getKeyGenerator ( crypto , kemName );
48+ KeyGenerator keyGenerator = crypto . getHelper (). createKeyGenerator ( kemName );
4749 keyGenerator .init (new KEMExtractSpec .Builder (privateKey , ciphertext , "DEF" , 256 ).withNoKdf ().build ());
4850 SecretKeyWithEncapsulation secEnc = (SecretKeyWithEncapsulation )keyGenerator .generateKey ();
4951 return adoptLocalSecret (secEnc .getEncoded ());
@@ -64,7 +66,7 @@ public SecretKeyWithEncapsulation encapsulate(PublicKey publicKey)
6466 {
6567 try
6668 {
67- KeyGenerator keyGenerator = KemUtil . getKeyGenerator ( crypto , kemName );
69+ KeyGenerator keyGenerator = crypto . getHelper (). createKeyGenerator ( kemName );
6870 keyGenerator .init (new KEMGenerateSpec .Builder (publicKey , "DEF" , 256 ).withNoKdf ().build ());
6971 return (SecretKeyWithEncapsulation )keyGenerator .generateKey ();
7072 }
@@ -82,20 +84,21 @@ public byte[] encodePublicKey(PublicKey publicKey)
8284
8385 public KeyPair generateKeyPair ()
8486 {
85- // TODO How to pass only the SecureRandom?
86- // try
87- // {
87+ try
88+ {
89+ // TODO How to pass only the SecureRandom to initialize if we use the full name in the getInstance?
8890// KeyPairGenerator keyPairGenerator = KemUtil.getKeyPairGenerator(crypto, kemName);
8991// keyPairGenerator.initialize((AlgorithmParameterSpec)null, crypto.getSecureRandom());
9092// return keyPairGenerator.generateKeyPair();
91- // }
92- // catch (GeneralSecurityException e)
93- // {
94- // throw Exceptions.illegalStateException("unable to create key pair: " + e.getMessage(), e);
95- // }
9693
97- KeyPairGenerator keyPairGenerator = KemUtil .getKeyPairGenerator (crypto , kemName );
98- return keyPairGenerator .generateKeyPair ();
94+ KeyPairGenerator keyPairGenerator = crypto .getHelper ().createKeyPairGenerator ("ML-KEM" );
95+ keyPairGenerator .initialize (MLKEMParameterSpec .fromName (kemName ), crypto .getSecureRandom ());
96+ return keyPairGenerator .generateKeyPair ();
97+ }
98+ catch (GeneralSecurityException e )
99+ {
100+ throw Exceptions .illegalStateException ("unable to create key pair: " + e .getMessage (), e );
101+ }
99102 }
100103
101104 public boolean isServer ()
0 commit comments