Невозможно установить поставщик Crypto для Spring CryptoFactoryBean - PullRequest
0 голосов
/ 11 июля 2019

При попытке установить провайдера шифрования для экземпляра 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.

Есть ли фабрика, которую мне нужно создать, чтобы сделать это?

1 Ответ

0 голосов
/ 12 июля 2019

При настройке провайдера шифрования вам нужно фактически передать сам класс. Например, cryptoFactoryBean.setCryptoProvider(Merlin.class);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...