if (keyStore == cachedKeyStore && cachedCrypto != null) {
return cachedCrypto;
}
Merlin crypto = null;
if (cryptoProperties != null) {
try {
Constructor<?> ctor =
cryptoClass.getConstructor(Properties.class, ClassLoader.class, PasswordEncryptor.class);
crypto = (Merlin)ctor.newInstance(cryptoProperties,
Loader.getClassLoader(CryptoFactory.class),
passwordEncryptor);
keyStore = crypto.getKeyStore();
} catch (Exception e) {
throw new WSSConfigurationException(WSSConfigurationException.ErrorCode.FAILURE, "signatureCryptoFailure", e);
}
} else {
try {
crypto = cryptoClass.newInstance();
crypto.setDefaultX509Identifier(ConfigurationProperties.getProperty("DefaultX509Alias"));
crypto.setCryptoProvider(ConfigurationProperties.getProperty("CertProvider"));
crypto.setKeyStore(this.getKeyStore());
crypto.setCRLCertStore(this.getCrlCertStore());
crypto.setPasswordEncryptor(passwordEncryptor);
} catch (Exception e) {
throw new WSSConfigurationException(WSSConfigurationException.ErrorCode.FAILURE, "signatureCryptoFailure", e);
}
}
cachedCrypto = crypto;
cachedKeyStore = crypto.getKeyStore();
return crypto;
}