diff --git a/spring-cloud-context/src/main/java/org/springframework/cloud/bootstrap/encrypt/TextEncryptorUtils.java b/spring-cloud-context/src/main/java/org/springframework/cloud/bootstrap/encrypt/TextEncryptorUtils.java index e59068af..5571e46d 100644 --- a/spring-cloud-context/src/main/java/org/springframework/cloud/bootstrap/encrypt/TextEncryptorUtils.java +++ b/spring-cloud-context/src/main/java/org/springframework/cloud/bootstrap/encrypt/TextEncryptorUtils.java @@ -120,8 +120,8 @@ public abstract class TextEncryptorUtils { if (keyStore.getLocation() != null) { if (keyStore.getLocation().exists()) { return new RsaSecretEncryptor( - new KeyStoreKeyFactory(keyStore.getLocation(), keyStore.getPassword().toCharArray()) - .getKeyPair(keyStore.getAlias(), keyStore.getSecret().toCharArray()), + new KeyStoreKeyFactory(keyStore.getLocation(), keyStore.getPassword().toCharArray(), + keyStore.getType()).getKeyPair(keyStore.getAlias(), keyStore.getSecret().toCharArray()), rsaProperties.getAlgorithm(), rsaProperties.getSalt(), rsaProperties.isStrong()); } diff --git a/spring-cloud-context/src/test/java/org/springframework/cloud/bootstrap/encrypt/EncryptionBootstrapConfigurationTests.java b/spring-cloud-context/src/test/java/org/springframework/cloud/bootstrap/encrypt/EncryptionBootstrapConfigurationTests.java index 024fad3f..a9d7b71b 100644 --- a/spring-cloud-context/src/test/java/org/springframework/cloud/bootstrap/encrypt/EncryptionBootstrapConfigurationTests.java +++ b/spring-cloud-context/src/test/java/org/springframework/cloud/bootstrap/encrypt/EncryptionBootstrapConfigurationTests.java @@ -49,6 +49,18 @@ public class EncryptionBootstrapConfigurationTests { context.close(); } + @Test + public void rsaPkcs12KeyStore() { + ConfigurableApplicationContext context = new SpringApplicationBuilder(EncryptionBootstrapConfiguration.class) + .web(WebApplicationType.NONE) + .properties("encrypt.keyStore.location:classpath:/server.p12", "encrypt.keyStore.password:letmein", + "encrypt.keyStore.alias:mytestkey", "encrypt.keyStore.type:PKCS12") + .run(); + TextEncryptor encryptor = context.getBean(TextEncryptor.class); + then(encryptor.decrypt(encryptor.encrypt("foo"))).isEqualTo("foo"); + context.close(); + } + @Test public void rsaKeyStoreWithRelaxedProperties() { ConfigurableApplicationContext context = new SpringApplicationBuilder(EncryptionBootstrapConfiguration.class) diff --git a/spring-cloud-context/src/test/resources/server.p12 b/spring-cloud-context/src/test/resources/server.p12 new file mode 100644 index 00000000..9f3153ac Binary files /dev/null and b/spring-cloud-context/src/test/resources/server.p12 differ