@@ -499,6 +499,51 @@ public void testMLDSA44andP256()
499499 CompositePublicKey puKey = (CompositePublicKey )keyConverter .getPublicKey ((SubjectPublicKeyInfo )pPrs .readObject ());
500500 }
501501
502+ public void testMLDSA44andEd25519 ()
503+ throws Exception
504+ {
505+ //
506+ // set up the keys
507+ //
508+ KeyPairGenerator ecKpg = KeyPairGenerator .getInstance ("ED25519" , "BC" );
509+
510+ KeyPair ecKp = ecKpg .generateKeyPair ();
511+
512+ PrivateKey ecPriv = ecKp .getPrivate ();
513+ PublicKey ecPub = ecKp .getPublic ();
514+
515+ KeyPairGenerator rmldsaKpg = KeyPairGenerator .getInstance ("ML-DSA-44" , "BC" );
516+
517+ KeyPair mldsaKp = rmldsaKpg .generateKeyPair ();
518+
519+ PrivateKey mldsaPriv = mldsaKp .getPrivate ();
520+ PublicKey mldsaPub = mldsaKp .getPublic ();
521+
522+ CompositePrivateKey mlecPriv = new CompositePrivateKey (MiscObjectIdentifiers .id_MLDSA44_Ed25519_SHA512 , mldsaPriv , ecPriv );
523+
524+ StringWriter sWrt = new StringWriter ();
525+ JcaPEMWriter pWrt = new JcaPEMWriter (sWrt );
526+
527+ pWrt .writeObject (mlecPriv );
528+
529+ pWrt .close ();
530+
531+ CompositePublicKey mlecPub = new CompositePublicKey (mldsaPub , ecPub );
532+
533+ pWrt = new JcaPEMWriter (sWrt );
534+
535+ pWrt .writeObject (mlecPub );
536+
537+ pWrt .close ();
538+
539+ PEMParser pPrs = new PEMParser (new StringReader (sWrt .toString ()));
540+
541+ JcaPEMKeyConverter keyConverter = new JcaPEMKeyConverter ().setProvider ("BC" );
542+ CompositePrivateKey prKey = (CompositePrivateKey )keyConverter .getPrivateKey ((PrivateKeyInfo )pPrs .readObject ());
543+
544+ CompositePublicKey puKey = (CompositePublicKey )keyConverter .getPublicKey ((SubjectPublicKeyInfo )pPrs .readObject ());
545+ }
546+
502547 public void testMLDSA87andEd448 ()
503548 throws Exception
504549 {
0 commit comments