/* | |
* 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.camel.component.xmlsecurity.processor; | |
import java.util.Map; | |
import javax.xml.crypto.URIDereferencer; | |
import javax.xml.crypto.XMLCryptoContext; | |
import javax.xml.crypto.dsig.XMLSignContext; | |
import javax.xml.crypto.dsig.XMLValidateContext; | |
import org.apache.camel.CamelContext; | |
import org.apache.camel.CamelContextAware; | |
import org.apache.camel.component.xmlsecurity.api.XmlSignatureConstants; | |
import org.apache.camel.spi.UriParam; | |
import org.apache.camel.spi.UriParams; | |
@UriParams | |
public abstract class XmlSignatureConfiguration implements Cloneable, CamelContextAware { | |
private CamelContext context; | |
@UriParam(label = "common") | |
private String baseUri; | |
@UriParam(label = "common") | |
private Map<String, ?> cryptoContextProperties; | |
@UriParam(label = "common", defaultValue = "true") | |
private Boolean disallowDoctypeDecl = Boolean.TRUE; | |
@UriParam(label = "common", defaultValue = "false") | |
private Boolean omitXmlDeclaration = Boolean.FALSE; | |
@UriParam(label = "common", defaultValue = "true") | |
private Boolean clearHeaders = Boolean.TRUE; | |
@UriParam(label = "common") | |
private String schemaResourceUri; | |
@UriParam(label = "common") | |
private String outputXmlEncoding; | |
@UriParam(label = "advanced") | |
private URIDereferencer uriDereferencer; | |
public XmlSignatureConfiguration() { | |
} | |
@Override | |
public CamelContext getCamelContext() { | |
return context; | |
} | |
@Override | |
public void setCamelContext(CamelContext camelContext) { | |
this.context = camelContext; | |
} | |
public URIDereferencer getUriDereferencer() { | |
return uriDereferencer; | |
} | |
/** | |
* If you want to restrict the remote access via reference URIs, you can set | |
* an own dereferencer. Optional parameter. If not set the provider default | |
* dereferencer is used which can resolve URI fragments, HTTP, file and | |
* XPpointer URIs. | |
* <p> | |
* Attention: The implementation is provider dependent! | |
* | |
* @see XMLCryptoContext#setURIDereferencer(URIDereferencer) | |
*/ | |
public void setUriDereferencer(URIDereferencer uriDereferencer) { | |
this.uriDereferencer = uriDereferencer; | |
} | |
public String getBaseUri() { | |
return baseUri; | |
} | |
/** | |
* You can set a base URI which is used in the URI dereferencing. Relative | |
* URIs are then concatenated with the base URI. | |
* | |
* @see XMLCryptoContext#setBaseURI(String) | |
*/ | |
public void setBaseUri(String baseUri) { | |
this.baseUri = baseUri; | |
} | |
public Map<String, ? extends Object> getCryptoContextProperties() { | |
return cryptoContextProperties; | |
} | |
/** | |
* Sets the crypto context properties. See | |
* {@link XMLCryptoContext#setProperty(String, Object)}. Possible properties | |
* are defined in {@link XMLSignContext} an {@link XMLValidateContext} (see | |
* Supported Properties). | |
* <p> | |
* The following properties are set by default to the value | |
* {@link Boolean#TRUE} for the XML validation. If you want to switch these | |
* features off you must set the property value to {@link Boolean#FALSE}. | |
* <ul> | |
* <li><code>"org.jcp.xml.dsig.validateManifests"</code></li> | |
* <li><code>"javax.xml.crypto.dsig.cacheReference"</code></li> | |
* </ul> | |
*/ | |
public void setCryptoContextProperties(Map<String, ? extends Object> cryptoContextProperties) { | |
this.cryptoContextProperties = cryptoContextProperties; | |
} | |
public Boolean getDisallowDoctypeDecl() { | |
return disallowDoctypeDecl; | |
} | |
/** | |
* Disallows that the incoming XML document contains DTD DOCTYPE | |
* declaration. The default value is {@link Boolean#TRUE}. | |
* | |
* @param disallowDoctypeDecl if set to {@link Boolean#FALSE} then DOCTYPE declaration is allowed, otherwise not | |
*/ | |
public void setDisallowDoctypeDecl(Boolean disallowDoctypeDecl) { | |
this.disallowDoctypeDecl = disallowDoctypeDecl; | |
} | |
public Boolean getOmitXmlDeclaration() { | |
return omitXmlDeclaration; | |
} | |
/** | |
* Indicator whether the XML declaration in the outgoing message body should | |
* be omitted. Default value is <code>false</code>. Can be overwritten by | |
* the header {@link XmlSignatureConstants#HEADER_OMIT_XML_DECLARATION}. | |
*/ | |
public void setOmitXmlDeclaration(Boolean omitXmlDeclaration) { | |
this.omitXmlDeclaration = omitXmlDeclaration; | |
} | |
/** | |
* Determines if the XML signature specific headers be cleared after signing | |
* and verification. Defaults to true. | |
* | |
* @return true if the Signature headers should be unset, false otherwise | |
*/ | |
public Boolean getClearHeaders() { | |
return clearHeaders; | |
} | |
/** | |
* Determines if the XML signature specific headers be cleared after signing | |
* and verification. Defaults to true. | |
*/ | |
public void setClearHeaders(Boolean clearHeaders) { | |
this.clearHeaders = clearHeaders; | |
} | |
public String getSchemaResourceUri() { | |
return schemaResourceUri; | |
} | |
/** | |
* Classpath to the XML Schema. Must be specified in the detached XML | |
* Signature case for determining the ID attributes, might be set in the | |
* enveloped and enveloping case. If set, then the XML document is validated | |
* with the specified XML schema. The schema resource URI can be overwritten | |
* by the header {@link XmlSignatureConstants#HEADER_SCHEMA_RESOURCE_URI}. | |
*/ | |
public void setSchemaResourceUri(String schemaResourceUri) { | |
this.schemaResourceUri = schemaResourceUri; | |
} | |
public String getOutputXmlEncoding() { | |
return outputXmlEncoding; | |
} | |
/** | |
* The character encoding of the resulting signed XML document. If | |
* <code>null</code> then the encoding of the original XML document is used. | |
*/ | |
public void setOutputXmlEncoding(String outputXmlEncoding) { | |
this.outputXmlEncoding = outputXmlEncoding; | |
} | |
} |