2121import org .bouncycastle .asn1 .x509 .GeneralName ;
2222import org .bouncycastle .asn1 .x509 .GeneralNames ;
2323import org .bouncycastle .cert .X509CertificateHolder ;
24+ import org .bouncycastle .openssl .PEMDecryptorProvider ;
2425import org .bouncycastle .openssl .PEMEncryptedKeyPair ;
2526import org .bouncycastle .openssl .PEMParser ;
2627import org .bouncycastle .pkcs .PKCS10CertificationRequest ;
5051import org .hamcrest .Matchers ;
5152import org .junit .After ;
5253import org .junit .BeforeClass ;
54+ import org .mockito .Mockito ;
5355
5456import javax .net .ssl .KeyManagerFactory ;
5557import javax .net .ssl .TrustManagerFactory ;
@@ -349,6 +351,16 @@ public void testGeneratingSignedPemCertificates() throws Exception {
349351 PEMParser pemParser = new PEMParser (reader );
350352 Object parsed = pemParser .readObject ();
351353 assertThat (parsed , instanceOf (PEMEncryptedKeyPair .class ));
354+ // Verify we are using AES encryption
355+ final PEMDecryptorProvider pemDecryptorProvider = Mockito .mock (PEMDecryptorProvider .class );
356+ try {
357+ ((PEMEncryptedKeyPair ) parsed ).decryptKeyPair (pemDecryptorProvider );
358+ } catch (Exception e ) {
359+ // Catch error thrown by the empty mock, we are only interested in the argument passed in
360+ }
361+ finally {
362+ Mockito .verify (pemDecryptorProvider ).get ("AES-128-CBC" );
363+ }
352364 char [] zeroChars = new char [caInfo .password .length ];
353365 Arrays .fill (zeroChars , (char ) 0 );
354366 assertArrayEquals (zeroChars , caInfo .password );
@@ -368,7 +380,13 @@ public void testGeneratingSignedPemCertificates() throws Exception {
368380 assertTrue (Files .exists (zipRoot .resolve (filename )));
369381 final Path cert = zipRoot .resolve (filename + "/" + filename + ".crt" );
370382 assertTrue (Files .exists (cert ));
371- assertTrue (Files .exists (zipRoot .resolve (filename + "/" + filename + ".key" )));
383+ Path keyFile = zipRoot .resolve (filename + "/" + filename + ".key" );
384+ assertTrue (Files .exists (keyFile ));
385+ if (keyPassword != null ) {
386+ assertTrue (new String (Files .readAllBytes (keyFile ), StandardCharsets .US_ASCII ).contains ("DEK-Info: AES-128-CBC" ));
387+ } else {
388+ assertFalse (new String (Files .readAllBytes (keyFile ), StandardCharsets .US_ASCII ).contains ("DEK-Info:" ));
389+ }
372390 final Path p12 = zipRoot .resolve (filename + "/" + filename + ".p12" );
373391 try (InputStream input = Files .newInputStream (cert )) {
374392 X509Certificate certificate = readX509Certificate (input );
0 commit comments