1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>XML-Security-C: XSECDOMUtils.hpp Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.2 -->
<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a> | <a class="qindex" href="pages.html">Related Pages</a></div>
<div class="nav">
<a class="el" href="dir_000000.html">src</a> / <a class="el" href="dir_000010.html">utils</a></div>
<h1>XSECDOMUtils.hpp</h1><a href="XSECDOMUtils_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
00002 <span class="comment"> * Copyright 2002-2005 The Apache Software Foundation.</span>
00003 <span class="comment"> *</span>
00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span>
00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
00006 <span class="comment"> * You may obtain a copy of the License at</span>
00007 <span class="comment"> *</span>
00008 <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span>
00009 <span class="comment"> *</span>
00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
00011 <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span>
00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
00014 <span class="comment"> * limitations under the License.</span>
00015 <span class="comment"> */</span>
00016
00017 <span class="comment">/*</span>
00018 <span class="comment"> * XSEC</span>
00019 <span class="comment"> *</span>
00020 <span class="comment"> * XSECDOMUtils:= Utilities to manipulate DOM within XML-SECURITY</span>
00021 <span class="comment"> *</span>
00022 <span class="comment"> * Author(s): Berin Lautenbach</span>
00023 <span class="comment"> *</span>
00024 <span class="comment"> * $Id: XSECDOMUtils.hpp,v 1.20 2005/02/26 10:12:31 blautenb Exp $</span>
00025 <span class="comment"> *</span>
00026 <span class="comment"> */</span>
00027
00028 <span class="preprocessor">#ifndef XSECDOMUTILS_HEADER</span>
00029 <span class="preprocessor"></span><span class="preprocessor">#define XSECDOMUTILS_HEADER</span>
00030 <span class="preprocessor"></span>
00031 <span class="comment">// XSEC</span>
00032
00033 <span class="preprocessor">#include <xsec/utils/XSECPlatformUtils.hpp></span>
00034 <span class="preprocessor">#include <xsec/utils/XSECSafeBuffer.hpp></span>
00035 <span class="preprocessor">#include <xsec/dsig/DSIGConstants.hpp></span>
00036
00037 <span class="comment">// Xerces</span>
00038
00039 <span class="preprocessor">#include <xercesc/dom/DOM.hpp></span>
00040 <span class="preprocessor">#include <xercesc/util/XMLString.hpp></span>
00041
<a name="l00042"></a><a class="code" href="XSECDOMUtils_8hpp.html#a0">00042</a> <span class="preprocessor">#define COMPARE_STRING_LENGTH 256</span>
00043 <span class="preprocessor"></span>
00044 <span class="comment">// --------------------------------------------------------------------------------</span>
00045 <span class="comment">// "Quick" Transcode Class (low performance)</span>
00046 <span class="comment">// --------------------------------------------------------------------------------</span>
00047
00048
<a name="l00049"></a><a class="code" href="classXMLT.html">00049</a> <span class="keyword">class </span><a class="code" href="XSECDefs_8hpp.html#a9">DSIG_EXPORT</a> <a class="code" href="classXMLT.html">XMLT</a> {
00050
00051 <span class="keyword">public</span>:
00052
00053 <a class="code" href="classXMLT.html">XMLT</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> * str);
00054 ~<a class="code" href="classXMLT.html">XMLT</a>(<span class="keywordtype">void</span>);
00055
00056 XMLCh * getUnicodeStr(<span class="keywordtype">void</span>);
00057
00058 <span class="keyword">private</span>:
00059
00060 XMLCh * mp_unicodeStr;
00061 <a class="code" href="classXMLT.html">XMLT</a>();
00062
00063 };
00064
<a name="l00065"></a><a class="code" href="XSECDOMUtils_8hpp.html#a1">00065</a> <span class="preprocessor">#define MAKE_UNICODE_STRING(str) XMLT(str).getUnicodeStr()</span>
00066 <span class="preprocessor"></span>
00067 <span class="comment">// --------------------------------------------------------------------------------</span>
00068 <span class="comment">// Utilities to manipulate namespaces</span>
00069 <span class="comment">// --------------------------------------------------------------------------------</span>
00070
00071 <span class="keyword">const</span> XMLCh <a class="code" href="XSECDefs_8hpp.html#a9">DSIG_EXPORT</a> * <a class="code" href="XSECDOMUtils_8hpp.html#a2">getDSIGLocalName</a>(<span class="keyword">const</span> <a class="code" href="XSECDefs_8hpp.html#a0">XERCES_CPP_NAMESPACE_QUALIFIER</a> DOMNode *node);
00072 <span class="keyword">const</span> XMLCh <a class="code" href="XSECDefs_8hpp.html#a9">DSIG_EXPORT</a> * <a class="code" href="XSECDOMUtils_8hpp.html#a3">getECLocalName</a>(<span class="keyword">const</span> <a class="code" href="XSECDefs_8hpp.html#a0">XERCES_CPP_NAMESPACE_QUALIFIER</a> DOMNode *node);
00073 <span class="keyword">const</span> XMLCh <a class="code" href="XSECDefs_8hpp.html#a9">DSIG_EXPORT</a> * <a class="code" href="XSECDOMUtils_8hpp.html#a4">getXPFLocalName</a>(<span class="keyword">const</span> <a class="code" href="XSECDefs_8hpp.html#a0">XERCES_CPP_NAMESPACE_QUALIFIER</a> DOMNode *node);
00074 <span class="keyword">const</span> XMLCh <a class="code" href="XSECDefs_8hpp.html#a9">DSIG_EXPORT</a> * <a class="code" href="XSECDOMUtils_8hpp.html#a5">getXENCLocalName</a>(<span class="keyword">const</span> <a class="code" href="XSECDefs_8hpp.html#a0">XERCES_CPP_NAMESPACE_QUALIFIER</a> DOMNode *node);
00075 <span class="keyword">const</span> XMLCh <a class="code" href="XSECDefs_8hpp.html#a9">DSIG_EXPORT</a> * <a class="code" href="XSECDOMUtils_8hpp.html#a6">getXKMSLocalName</a>(<span class="keyword">const</span> <a class="code" href="XSECDefs_8hpp.html#a0">XERCES_CPP_NAMESPACE_QUALIFIER</a> DOMNode *node);
00076
00077 <span class="comment">// --------------------------------------------------------------------------------</span>
00078 <span class="comment">// Do UTF-8 <-> UTF-16 transcoding</span>
00079 <span class="comment">// --------------------------------------------------------------------------------</span>
00080
00081 XMLCh <a class="code" href="XSECDefs_8hpp.html#a9">DSIG_EXPORT</a> * <a class="code" href="XSECDOMUtils_8hpp.html#a7">transcodeFromUTF8</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> * src);
00082
00083 <span class="comment">// --------------------------------------------------------------------------------</span>
00084 <span class="comment">// Find a nominated DSIG/XENC node in a document</span>
00085 <span class="comment">// --------------------------------------------------------------------------------</span>
00086
00087 <a class="code" href="XSECDefs_8hpp.html#a0">XERCES_CPP_NAMESPACE_QUALIFIER</a> DOMNode <a class="code" href="XSECDefs_8hpp.html#a9">DSIG_EXPORT</a> * <a class="code" href="XSECDOMUtils_8hpp.html#a8">findDSIGNode</a>(<a class="code" href="XSECDefs_8hpp.html#a0">XERCES_CPP_NAMESPACE_QUALIFIER</a> DOMNode *n, <span class="keyword">const</span> <span class="keywordtype">char</span> * nodeName);
00088 <a class="code" href="XSECDefs_8hpp.html#a0">XERCES_CPP_NAMESPACE_QUALIFIER</a> DOMNode <a class="code" href="XSECDefs_8hpp.html#a9">DSIG_EXPORT</a> * <a class="code" href="XSECDOMUtils_8hpp.html#a9">findXENCNode</a>(<a class="code" href="XSECDefs_8hpp.html#a0">XERCES_CPP_NAMESPACE_QUALIFIER</a> DOMNode *n, <span class="keyword">const</span> <span class="keywordtype">char</span> * nodeName);
00089
00090 <span class="comment">// --------------------------------------------------------------------------------</span>
00091 <span class="comment">// Find particular type of node child</span>
00092 <span class="comment">// --------------------------------------------------------------------------------</span>
00093
00094 <a class="code" href="XSECDefs_8hpp.html#a0">XERCES_CPP_NAMESPACE_QUALIFIER</a> DOMNode <a class="code" href="XSECDefs_8hpp.html#a9">DSIG_EXPORT</a> * <a class="code" href="XSECDOMUtils_8hpp.html#a10">findFirstChildOfType</a>(<a class="code" href="XSECDefs_8hpp.html#a0">XERCES_CPP_NAMESPACE_QUALIFIER</a> DOMNode *n, <a class="code" href="XSECDefs_8hpp.html#a0">XERCES_CPP_NAMESPACE_QUALIFIER</a> DOMNode::NodeType t);
00095 <a class="code" href="XSECDefs_8hpp.html#a0">XERCES_CPP_NAMESPACE_QUALIFIER</a> DOMNode <a class="code" href="XSECDefs_8hpp.html#a9">DSIG_EXPORT</a> * <a class="code" href="XSECDOMUtils_8hpp.html#a11">findNextChildOfType</a>(<a class="code" href="XSECDefs_8hpp.html#a0">XERCES_CPP_NAMESPACE_QUALIFIER</a> DOMNode *n, <a class="code" href="XSECDefs_8hpp.html#a0">XERCES_CPP_NAMESPACE_QUALIFIER</a> DOMNode::NodeType t);
00096
00097 <a class="code" href="XSECDefs_8hpp.html#a0">XERCES_CPP_NAMESPACE_QUALIFIER</a> DOMElement <a class="code" href="XSECDefs_8hpp.html#a9">DSIG_EXPORT</a> * <a class="code" href="XSECDOMUtils_8hpp.html#a12">findFirstElementChild</a>(<a class="code" href="XSECDefs_8hpp.html#a0">XERCES_CPP_NAMESPACE_QUALIFIER</a> DOMNode *n);
00098 <a class="code" href="XSECDefs_8hpp.html#a0">XERCES_CPP_NAMESPACE_QUALIFIER</a> DOMElement <a class="code" href="XSECDefs_8hpp.html#a9">DSIG_EXPORT</a> * <a class="code" href="XSECDOMUtils_8hpp.html#a13">findNextElementChild</a>(<a class="code" href="XSECDefs_8hpp.html#a0">XERCES_CPP_NAMESPACE_QUALIFIER</a> DOMNode *n);
00099
00100 <span class="comment">// --------------------------------------------------------------------------------</span>
00101 <span class="comment">// Make a QName</span>
00102 <span class="comment">// --------------------------------------------------------------------------------</span>
00103
00104 <a class="code" href="classsafeBuffer.html">safeBuffer</a> <a class="code" href="XSECDefs_8hpp.html#a9">DSIG_EXPORT</a> &<a class="code" href="XSECDOMUtils_8hpp.html#a14">makeQName</a>(<a class="code" href="classsafeBuffer.html">safeBuffer</a> & qname, <a class="code" href="classsafeBuffer.html">safeBuffer</a> &prefix, <span class="keyword">const</span> <span class="keywordtype">char</span> * localName);
00105 <a class="code" href="classsafeBuffer.html">safeBuffer</a> <a class="code" href="XSECDefs_8hpp.html#a9">DSIG_EXPORT</a> &<a class="code" href="XSECDOMUtils_8hpp.html#a14">makeQName</a>(<a class="code" href="classsafeBuffer.html">safeBuffer</a> & qname, <span class="keyword">const</span> XMLCh *prefix, <span class="keyword">const</span> <span class="keywordtype">char</span> * localName);
00106 <a class="code" href="classsafeBuffer.html">safeBuffer</a> <a class="code" href="XSECDefs_8hpp.html#a9">DSIG_EXPORT</a> &<a class="code" href="XSECDOMUtils_8hpp.html#a14">makeQName</a>(<a class="code" href="classsafeBuffer.html">safeBuffer</a> & qname, <span class="keyword">const</span> XMLCh *prefix, <span class="keyword">const</span> XMLCh * localName);
00107
00108 <span class="comment">// --------------------------------------------------------------------------------</span>
00109 <span class="comment">// Gather text from children</span>
00110 <span class="comment">// --------------------------------------------------------------------------------</span>
00111
00112 <span class="keywordtype">void</span> <a class="code" href="XSECDefs_8hpp.html#a9">DSIG_EXPORT</a> <a class="code" href="XSECDOMUtils_8hpp.html#a17">gatherChildrenText</a>(<a class="code" href="XSECDefs_8hpp.html#a0">XERCES_CPP_NAMESPACE_QUALIFIER</a> DOMNode * parent, <a class="code" href="classsafeBuffer.html">safeBuffer</a> &output);
00113
00114 <span class="comment">// --------------------------------------------------------------------------------</span>
00115 <span class="comment">// String decode/encode</span>
00116 <span class="comment">// --------------------------------------------------------------------------------</span>
00117
00118 <span class="comment">/*</span>
00119 <span class="comment"> * Distinguished names have a particular encoding that needs to be performed prior</span>
00120 <span class="comment"> * to enclusion in the DOM</span>
00121 <span class="comment"> */</span>
00122
00123 XMLCh * <a class="code" href="XSECDOMUtils_8hpp.html#a18">encodeDName</a>(<span class="keyword">const</span> XMLCh * toEncode);
00124 XMLCh * <a class="code" href="XSECDOMUtils_8hpp.html#a19">decodeDName</a>(<span class="keyword">const</span> XMLCh * toDecode);
00125
00126 <span class="comment">// --------------------------------------------------------------------------------</span>
00127 <span class="comment">// Generate Ids</span>
00128 <span class="comment">// --------------------------------------------------------------------------------</span>
00129
00130 XMLCh <a class="code" href="XSECDefs_8hpp.html#a9">DSIG_EXPORT</a> * <a class="code" href="XSECDOMUtils_8hpp.html#a20">generateId</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bytes = 16);
00131
00132 <span class="comment">// --------------------------------------------------------------------------------</span>
00133 <span class="comment">// String Functions </span>
00134 <span class="comment">// --------------------------------------------------------------------------------</span>
00135
00136 <span class="comment">// Remove escape (%XX) characters from URIs and return a new buffer containing the</span>
00137 <span class="comment">// "cleaned" string</span>
00138
00139 XMLCh * <a class="code" href="XSECDOMUtils_8hpp.html#a21">cleanURIEscapes</a>(<span class="keyword">const</span> XMLCh * str);
00140
00141 <span class="keyword">inline</span>
<a name="l00142"></a><a class="code" href="XSECDOMUtils_8hpp.html#a22">00142</a> <span class="keywordtype">bool</span> <a class="code" href="XSECDOMUtils_8hpp.html#a22">strEquals</a> (<span class="keyword">const</span> XMLCh * str1, <span class="keyword">const</span> XMLCh *str2) {
00143
00144 <span class="keywordflow">return</span> (XMLString::compareString(str1, str2) == 0);
00145
00146 }
00147
00148 <span class="keyword">inline</span>
<a name="l00149"></a><a class="code" href="XSECDOMUtils_8hpp.html#a23">00149</a> <span class="keywordtype">bool</span> <a class="code" href="XSECDOMUtils_8hpp.html#a22">strEquals</a> (<span class="keyword">const</span> <span class="keywordtype">char</span> * str1, <span class="keyword">const</span> <span class="keywordtype">char</span> *str2) {
00150
00151 <span class="keywordflow">return</span> (XMLString::compareString(str1, str2) == 0);
00152
00153 }
00154
00155 <span class="keyword">inline</span>
<a name="l00156"></a><a class="code" href="XSECDOMUtils_8hpp.html#a24">00156</a> <span class="keywordtype">bool</span> <a class="code" href="XSECDOMUtils_8hpp.html#a22">strEquals</a> (<span class="keyword">const</span> <span class="keywordtype">char</span> * str1, <span class="keyword">const</span> XMLCh * str2) {
00157
00158 <span class="keywordtype">bool</span> ret;
00159 XMLCh * str1XMLCh = XMLString::transcode(str1);
00160
00161 <span class="keywordflow">if</span> (str1XMLCh != NULL) {
00162
00163 ret = (XMLString::compareString(str1XMLCh, str2) == 0);
00164 <a class="code" href="XSECDefs_8hpp.html#a7">XSEC_RELEASE_XMLCH</a>(str1XMLCh);
00165
00166 }
00167 <span class="keywordflow">else</span>
00168 ret = <span class="keyword">false</span>;
00169
00170 <span class="keywordflow">return</span> ret;
00171
00172 }
00173
00174 <span class="keyword">inline</span>
<a name="l00175"></a><a class="code" href="XSECDOMUtils_8hpp.html#a25">00175</a> <span class="keywordtype">bool</span> <a class="code" href="XSECDOMUtils_8hpp.html#a22">strEquals</a> (<span class="keyword">const</span> XMLCh * str1, <span class="keyword">const</span> <span class="keywordtype">char</span> * str2) {
00176
00177 <span class="keywordtype">bool</span> ret;
00178 XMLCh * str2XMLCh = XMLString::transcode(str2);
00179
00180 <span class="keywordflow">if</span> (str2XMLCh != NULL) {
00181
00182 ret = (XMLString::compareString(str1, str2XMLCh) == 0);
00183 <a class="code" href="XSECDefs_8hpp.html#a7">XSEC_RELEASE_XMLCH</a>(str2XMLCh);
00184
00185 }
00186 <span class="keywordflow">else</span>
00187 ret = <span class="keyword">false</span>;
00188
00189 <span class="keywordflow">return</span> ret;
00190
00191 }
00192
00193 <span class="preprocessor">#endif </span><span class="comment">/* XSECDOMUTILS_HEADER */</span>
00194
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Sun Jul 3 17:37:28 2005 for XML-Security-C by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.2 </small></address>
</body>
</html>
|