@@ -632,5 +632,59 @@ public void testKeyPairGeneratorRsassaPssKeyGeneration()
632632 }
633633 }
634634 }
635+
636+ @ Test
637+ public void testKeyPairGenerationInvalidExponent ()
638+ throws NoSuchProviderException , NoSuchAlgorithmException ,
639+ InvalidAlgorithmParameterException {
640+
641+ if (testedRSAKeySizes .size () > 0 ) {
642+
643+ KeyPairGenerator kpg =
644+ KeyPairGenerator .getInstance ("RSA" , "wolfJCE" );
645+
646+ /* Negative exponent */
647+ try {
648+ RSAKeyGenParameterSpec rsaSpec =
649+ new RSAKeyGenParameterSpec (testedRSAKeySizes .get (0 ),
650+ BigInteger .valueOf (-1 ));
651+ kpg .initialize (rsaSpec );
652+ fail ("KeyPairGenerator.initialize() should throw " +
653+ "InvalidAlgorithmParameterException when given " +
654+ "invalid negative RSA public exponent" );
655+
656+ } catch (InvalidAlgorithmParameterException e ) {
657+ /* expected */
658+ }
659+
660+ /* Zero exponent */
661+ try {
662+ RSAKeyGenParameterSpec rsaSpec =
663+ new RSAKeyGenParameterSpec (testedRSAKeySizes .get (0 ),
664+ BigInteger .valueOf (0 ));
665+ kpg .initialize (rsaSpec );
666+ fail ("KeyPairGenerator.initialize() should throw " +
667+ "InvalidAlgorithmParameterException when given " +
668+ "invalid RSA public exponent of zero" );
669+
670+ } catch (InvalidAlgorithmParameterException e ) {
671+ /* expected */
672+ }
673+
674+ /* Even exponent */
675+ try {
676+ RSAKeyGenParameterSpec rsaSpec =
677+ new RSAKeyGenParameterSpec (testedRSAKeySizes .get (0 ),
678+ BigInteger .valueOf (4 ));
679+ kpg .initialize (rsaSpec );
680+ fail ("KeyPairGenerator.initialize() should throw " +
681+ "InvalidAlgorithmParameterException when given " +
682+ "invalid even RSA public exponent" );
683+
684+ } catch (InvalidAlgorithmParameterException e ) {
685+ /* expected */
686+ }
687+ }
688+ }
635689}
636690
0 commit comments