При попытке установить провайдера шифрования для экземпляра Spring Boot's CryptoFactoryBean
необходимо использовать класс, расширяющий класс Apache Crypto
. Однако ни один из существующих криптографических провайдеров Apache WSS4J фактически не расширяет класс Crypto
- он расширяет CryptoBase
, который реализует Crypto
. В Eclipse следующий код выдаст ошибку:
@Bean
public CryptoFactoryBean serverKeyStoreCryptoFactoryBean() throws IOException {
CryptoFactoryBean cryptoFactoryBean = new CryptoFactoryBean();
try {
cryptoFactoryBean.setKeyStoreLocation(new ClassPathResource("keystore.jks"));
cryptoFactoryBean.setKeyStorePassword(keyStorePassword);
cryptoFactoryBean.setCryptoProvider(new Merlin());
} catch (Exception e) {
LOGGER.error("Crypto Factory Bean: unable to set the keystore location or password", e);
}
return cryptoFactoryBean;
}
Ошибка говорит о том, что, поскольку класс Merlin
не расширяет класс Crypto
, его нельзя использовать в качестве поставщика шифрования, несмотря на то, что он создан и реализует класс Crypto
.
Есть ли фабрика, которую мне нужно создать, чтобы сделать это?