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.model.DataFormatDefinition; 025 import org.apache.camel.spi.DataFormat; 026 027 /** 028 * Represents as XML Security Encrypter/Decrypter {@link DataFormat} 029 */ 030 @XmlRootElement(name = "secureXML") 031 @XmlAccessorType(XmlAccessType.FIELD) 032 public class XMLSecurityDataFormat extends DataFormatDefinition { 033 034 private static final transient String TRIPLEDES = "http://www.w3.org/2001/04/xmlenc#tripledes-cbc"; 035 036 @XmlAttribute(required = false) 037 private String xmlCipherAlgorithm; 038 @XmlAttribute(required = false) 039 private String passPhrase; 040 @XmlAttribute(required = false) 041 private String secureTag; 042 @XmlAttribute(required = false) 043 private boolean secureTagContents; 044 045 public XMLSecurityDataFormat() { 046 super("org.apache.camel.dataformat.xmlsecurity.XMLSecurityDataFormat"); 047 } 048 049 public XMLSecurityDataFormat(String secureTag, boolean secureTagContents) { 050 this(); 051 this.setSecureTag(secureTag); 052 this.setSecureTagContents(secureTagContents); 053 } 054 055 public XMLSecurityDataFormat(String secureTag, boolean secureTagContents, String passPhrase) { 056 this(); 057 this.setSecureTag(secureTag); 058 this.setSecureTagContents(secureTagContents); 059 this.setPassPhrase(passPhrase); 060 } 061 062 public XMLSecurityDataFormat(String secureTag, boolean secureTagContents, String passPhrase, 063 String xmlCipherAlgorithm) { 064 this(); 065 this.setSecureTag(secureTag); 066 this.setSecureTagContents(secureTagContents); 067 this.setPassPhrase(passPhrase); 068 this.setXmlCipherAlgorithm(xmlCipherAlgorithm); 069 } 070 071 @Override 072 protected void configureDataFormat(DataFormat dataFormat) { 073 if (getSecureTag() != null) { 074 setProperty(dataFormat, "secureTag", getSecureTag()); 075 } else { 076 setProperty(dataFormat, "secureTag", ""); 077 } 078 079 setProperty(dataFormat, "secureTagContents", getSecureTagContents()); 080 081 if (passPhrase != null) { 082 setProperty(dataFormat, "passPhrase", getPassPhrase()); 083 } else { 084 setProperty(dataFormat, "passPhrase", "Just another 24 Byte key".getBytes()); 085 } 086 if (getXmlCipherAlgorithm() != null) { 087 setProperty(dataFormat, "xmlCipherAlgorithm", getXmlCipherAlgorithm()); 088 } else { 089 setProperty(dataFormat, "xmlCipherAlgorithm", TRIPLEDES); 090 } 091 } 092 093 094 public String getXmlCipherAlgorithm() { 095 return xmlCipherAlgorithm; 096 } 097 098 public void setXmlCipherAlgorithm(String xmlCipherAlgorithm) { 099 this.xmlCipherAlgorithm = xmlCipherAlgorithm; 100 } 101 102 public String getPassPhrase() { 103 return passPhrase; 104 } 105 106 public void setPassPhrase(String passPhrase) { 107 this.passPhrase = passPhrase; 108 } 109 110 public String getSecureTag() { 111 return secureTag; 112 } 113 114 public void setSecureTag(String secureTag) { 115 this.secureTag = secureTag; 116 } 117 118 public boolean isSecureTagContents() { 119 return secureTagContents; 120 } 121 122 public boolean getSecureTagContents() { 123 return secureTagContents; 124 } 125 126 public void setSecureTagContents(boolean secureTagContents) { 127 this.secureTagContents = secureTagContents; 128 } 129 }