/** * 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.common; import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.List; import java.util.Properties; import org.apache.wss4j.common.crypto.Crypto; import org.apache.wss4j.common.crypto.CryptoFactory; import org.apache.wss4j.common.ext.WSSecurityException; import org.apache.wss4j.common.util.Loader; import org.w3c.dom.Element; /** * This abstract class encapsulates configuration for Signature + Encryption Actions. */ public abstract class SignatureEncryptionActionToken implements SecurityActionToken { private static final org.slf4j.Logger LOG = org.slf4j.LoggerFactory.getLogger(SignatureEncryptionActionToken.class); private X509Certificate certificate; private byte[] key; private String user; private Element keyInfoElement; private Crypto crypto; private String keyIdentifier; private int keyIdentifierId; private String digestAlgorithm; private List<WSEncryptionPart> parts = new ArrayList<>(); private String optionalParts; private String cryptoProperties; private String tokenType; private String tokenId; private String sha1Value; private String derivedKeyTokenReference; private int derivedKeyLength; private int derivedKeyIdentifier; private boolean includeToken; public X509Certificate getCertificate() { return certificate; } public void setCertificate(X509Certificate certificate) { this.certificate = certificate; } public byte[] getKey() { return key; } public void setKey(byte[] key) { this.key = key; } public Element getKeyInfoElement() { return keyInfoElement; } public void setKeyInfoElement(Element keyInfoElement) { this.keyInfoElement = keyInfoElement; } public String getUser() { return user; } public void setUser(String user) { this.user = user; } public synchronized Crypto getCrypto() throws WSSecurityException { if (crypto != null) { return crypto; } if (cryptoProperties != null) { ClassLoader classLoader = null; try { classLoader = Loader.getTCL(); } catch (Exception ex) { // Ignore LOG.debug(ex.getMessage(), ex); } Properties properties = CryptoFactory.getProperties(cryptoProperties, classLoader); crypto = CryptoFactory.getInstance(properties, classLoader, null); } return crypto; } public synchronized void setCrypto(Crypto crypto) { this.crypto = crypto; } public String getKeyIdentifier() { return keyIdentifier; } public void setKeyIdentifier(String keyIdentifier) { this.keyIdentifier = keyIdentifier; } public String getDigestAlgorithm() { return digestAlgorithm; } public void setDigestAlgorithm(String digestAlgorithm) { this.digestAlgorithm = digestAlgorithm; } public String getOptionalParts() { return optionalParts; } public void setOptionalParts(String optionalParts) { this.optionalParts = optionalParts; } public int getKeyIdentifierId() { return keyIdentifierId; } public void setKeyIdentifierId(int keyIdentifierId) { this.keyIdentifierId = keyIdentifierId; } public List<WSEncryptionPart> getParts() { return parts; } public void setParts(List<WSEncryptionPart> parts) { this.parts = parts; } public synchronized void setCryptoProperties(String cryptoProperties) { this.cryptoProperties = cryptoProperties; } public synchronized String getCryptoProperties() { return cryptoProperties; } public String getTokenType() { return tokenType; } public void setTokenType(String tokenType) { this.tokenType = tokenType; } public String getTokenId() { return tokenId; } public void setTokenId(String tokenId) { this.tokenId = tokenId; } public String getSha1Value() { return sha1Value; } public void setSha1Value(String sha1Value) { this.sha1Value = sha1Value; } public String getDerivedKeyTokenReference() { return derivedKeyTokenReference; } public void setDerivedKeyTokenReference(String derivedKeyTokenReference) { this.derivedKeyTokenReference = derivedKeyTokenReference; } public int getDerivedKeyLength() { return derivedKeyLength; } public void setDerivedKeyLength(int derivedKeyLength) { this.derivedKeyLength = derivedKeyLength; } public int getDerivedKeyIdentifier() { return derivedKeyIdentifier; } public void setDerivedKeyIdentifier(int derivedKeyIdentifier) { this.derivedKeyIdentifier = derivedKeyIdentifier; } public boolean isIncludeToken() { return includeToken; } public void setIncludeToken(boolean includeToken) { this.includeToken = includeToken; } }