1 /**
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements. See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership. The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the
7  * "License"); you may not use this file except in compliance
8  * with the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing,
13  * software distributed under the License is distributed on an
14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15  * KIND, either express or implied. See the License for the
16  * specific language governing permissions and limitations
17  * under the License.
18  */
19 
20 /*
21  * XSEC
22  *
23  * XENCCipherDataImpl := Implementation of CipherData elements
24  *
25  * $Id: XENCCipherDataImpl.hpp 1817224 2017-12-05 19:27:33Z scantor $
26  *
27  */
28 
29 #ifndef XSECCIPHERDATAIMPL_INCLUDE
30 #define XSECCIPHERDATAIMPL_INCLUDE
31 
32 // XSEC Includes
33 
34 #include <xsec/framework/XSECDefs.hpp>
35 #include <xsec/xenc/XENCCipherData.hpp>
36 
37 #include "XENCCipherImpl.hpp"
38 
39 class XENCCipherValueImpl;
40 class XENCCipherReferenceImpl;
41 
42 XSEC_DECLARE_XERCES_CLASS(DOMNode);
43 
44 class XENCCipherDataImpl : public XENCCipherData {
45 
46 public:
47 
48 	XENCCipherDataImpl(const XSECEnv * env);
49 	XENCCipherDataImpl(
50 		const XSECEnv * env,
51 		XERCES_CPP_NAMESPACE_QUALIFIER DOMElement * node
52 	);
53 
54 	virtual ~XENCCipherDataImpl();
55 
56 	// Load elements
57 	void load();
58 	// Create
59 	XERCES_CPP_NAMESPACE_QUALIFIER DOMElement *
60 		createBlankCipherData(XENCCipherData::XENCCipherDataType type, const XMLCh * value);
61 
62 
63 	// Interface methods
64 	virtual XENCCipherDataType getCipherDataType(void) const;
65 	virtual XENCCipherValue * getCipherValue(void) const;
66 	virtual XENCCipherReference * getCipherReference(void) const;
getElement(void) const67 	virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMElement * getElement(void) const
68 		{return mp_cipherDataElement;}
69 
70 
71 private:
72 
73 	// Unimplemented constructor
74 	XENCCipherDataImpl();
75 
76 	const XSECEnv			* mp_env;
77 	XERCES_CPP_NAMESPACE_QUALIFIER DOMElement
78 							* mp_cipherDataElement;		// Node at head of structure
79 
80 	XENCCipherDataType		m_cipherDataType;			// Is this a value or a reference?
81 	XENCCipherValueImpl		* mp_cipherValue;			// Cipher value node
82 	XENCCipherReferenceImpl		* mp_cipherReference;			// Cipher Reference node
83 };
84 
85 #endif /* XENCCIPHERDATAIMPL_INCLUDE */
86 
87