org.apache.wss4j.stax.ext.WSSCrypto Maven / Gradle / Ivy
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.wss4j.stax.ext;
import java.lang.reflect.Constructor;
import java.security.KeyStore;
import java.security.cert.CertStore;
import java.util.Properties;
import org.apache.wss4j.common.crypto.Crypto;
import org.apache.wss4j.common.crypto.CryptoFactory;
import org.apache.wss4j.common.crypto.Merlin;
import org.apache.wss4j.common.crypto.PasswordEncryptor;
import org.apache.wss4j.common.util.Loader;
import org.apache.xml.security.stax.config.ConfigurationProperties;
/**
*/
class WSSCrypto {
protected static final transient org.slf4j.Logger LOG =
org.slf4j.LoggerFactory.getLogger(WSSCrypto.class);
private Class extends Merlin> cryptoClass = Merlin.class;
private Properties cryptoProperties;
private Crypto cachedCrypto;
private KeyStore cachedKeyStore;
private KeyStore keyStore;
private CertStore crlCertStore;
private PasswordEncryptor passwordEncryptor;
public Crypto getCrypto() throws WSSConfigurationException {
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, e, "signatureCryptoFailure");
}
} 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, e, "signatureCryptoFailure");
}
}
cachedCrypto = crypto;
cachedKeyStore = crypto.getKeyStore();
return crypto;
}
public void setCrypto(Crypto crypto) {
cachedCrypto = crypto;
if (crypto instanceof Merlin) {
keyStore = ((Merlin)crypto).getKeyStore();
cachedKeyStore = keyStore;
}
}
public Class extends Merlin> getCryptoClass() {
return cryptoClass;
}
public void setCryptoClass(Class extends Merlin> cryptoClass) {
this.cryptoClass = cryptoClass;
}
public Properties getCryptoProperties() {
return cryptoProperties;
}
public void setCryptoProperties(Properties cryptoProperties) {
this.cryptoProperties = cryptoProperties;
}
public KeyStore getKeyStore() {
return keyStore;
}
public void setKeyStore(KeyStore keyStore) {
this.keyStore = keyStore;
}
public CertStore getCrlCertStore() {
return crlCertStore;
}
public void setCrlCertStore(CertStore crlCertStore) {
this.crlCertStore = crlCertStore;
}
public PasswordEncryptor getPasswordEncryptor() {
return passwordEncryptor;
}
public void setPasswordEncryptor(PasswordEncryptor passwordEncryptor) {
this.passwordEncryptor = passwordEncryptor;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy