001 /** 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 package org.apache.camel.model.dataformat; 018 019 import javax.xml.bind.annotation.XmlAccessType; 020 import javax.xml.bind.annotation.XmlAccessorType; 021 import javax.xml.bind.annotation.XmlAttribute; 022 import javax.xml.bind.annotation.XmlRootElement; 023 024 import org.apache.camel.spi.DataFormat; 025 026 /** 027 * Represents as XML Security Encrypter/Decrypter {@link DataFormat} 028 */ 029 @XmlRootElement(name = "secureXML") 030 @XmlAccessorType(XmlAccessType.FIELD) 031 public class XMLSecurityDataFormat extends DataFormatDefinition { 032 033 private static final transient String TRIPLEDES = "http://www.w3.org/2001/04/xmlenc#tripledes-cbc"; 034 035 @XmlAttribute(required = false) 036 private String xmlCipherAlgorithm; 037 @XmlAttribute(required = false) 038 private String passPhrase; 039 @XmlAttribute(required = false) 040 private String secureTag; 041 @XmlAttribute(required = false) 042 private boolean secureTagContents; 043 044 public XMLSecurityDataFormat() { 045 super("org.apache.camel.dataformat.xmlsecurity.XMLSecurityDataFormat"); 046 } 047 048 public XMLSecurityDataFormat(String secureTag, boolean secureTagContents) { 049 this(); 050 this.setSecureTag(secureTag); 051 this.setSecureTagContents(secureTagContents); 052 } 053 054 public XMLSecurityDataFormat(String secureTag, boolean secureTagContents, String passPhrase) { 055 this(); 056 this.setSecureTag(secureTag); 057 this.setSecureTagContents(secureTagContents); 058 this.setPassPhrase(passPhrase); 059 } 060 061 public XMLSecurityDataFormat(String secureTag, boolean secureTagContents, String passPhrase, 062 String xmlCipherAlgorithm) { 063 this(); 064 this.setSecureTag(secureTag); 065 this.setSecureTagContents(secureTagContents); 066 this.setPassPhrase(passPhrase); 067 this.setXmlCipherAlgorithm(xmlCipherAlgorithm); 068 } 069 070 @Override 071 protected void configureDataFormat(DataFormat dataFormat) { 072 if (getSecureTag() != null) { 073 setProperty(dataFormat, "secureTag", getSecureTag()); 074 } else { 075 setProperty(dataFormat, "secureTag", ""); 076 } 077 078 setProperty(dataFormat, "secureTagContents", getSecureTagContents()); 079 080 if (passPhrase != null) { 081 setProperty(dataFormat, "passPhrase", getPassPhrase()); 082 } else { 083 setProperty(dataFormat, "passPhrase", "Just another 24 Byte key".getBytes()); 084 } 085 if (getXmlCipherAlgorithm() != null) { 086 setProperty(dataFormat, "xmlCipherAlgorithm", getXmlCipherAlgorithm()); 087 } else { 088 setProperty(dataFormat, "xmlCipherAlgorithm", TRIPLEDES); 089 } 090 } 091 092 093 public String getXmlCipherAlgorithm() { 094 return xmlCipherAlgorithm; 095 } 096 097 public void setXmlCipherAlgorithm(String xmlCipherAlgorithm) { 098 this.xmlCipherAlgorithm = xmlCipherAlgorithm; 099 } 100 101 public String getPassPhrase() { 102 return passPhrase; 103 } 104 105 public void setPassPhrase(String passPhrase) { 106 this.passPhrase = passPhrase; 107 } 108 109 public String getSecureTag() { 110 return secureTag; 111 } 112 113 public void setSecureTag(String secureTag) { 114 this.secureTag = secureTag; 115 } 116 117 public boolean isSecureTagContents() { 118 return secureTagContents; 119 } 120 121 public boolean getSecureTagContents() { 122 return secureTagContents; 123 } 124 125 public void setSecureTagContents(boolean secureTagContents) { 126 this.secureTagContents = secureTagContents; 127 } 128 }