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
|
<!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: XSECSafeBuffer.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>XSECSafeBuffer.hpp</h1><a href="XSECSafeBuffer_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"> * XSECSafeBuffer := a class for storing expanding amounts of information.</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: XSECSafeBuffer.hpp,v 1.15 2005/02/03 13:53:54 milan Exp $</span>
00025 <span class="comment"> * </span>
00026 <span class="comment"> */</span>
00027
00028
00029 <span class="preprocessor">#ifndef XSECSAFEBUFFER_INCLUDE</span>
00030 <span class="preprocessor"></span><span class="preprocessor">#define XSECSAFEBUFFER_INCLUDE</span>
00031 <span class="preprocessor"></span>
00032 <span class="preprocessor">#include <xsec/framework/XSECDefs.hpp></span>
00033 <span class="preprocessor">#include <xercesc/util/XMLString.hpp></span>
00034
00035 <span class="keyword">class </span><a class="code" href="classTXFMBase.html">TXFMBase</a>;
00036
<a name="l00043"></a><a class="code" href="group__internal.html#ga0">00043</a> <span class="preprocessor">#define DEFAULT_SAFE_BUFFER_SIZE 1024 // Default size for a safe Buffer</span>
00044 <span class="preprocessor"></span>
<a name="l00061"></a><a class="code" href="classsafeBuffer.html">00061</a> <span class="keyword">class </span><a class="code" href="XSECDefs_8hpp.html#a8">CANON_EXPORT</a> <a class="code" href="classsafeBuffer.html">safeBuffer</a> {
00062
00063 <span class="keyword">public</span>:
00064
00065 <span class="comment">// For checking we are operating on the buffer correctly</span>
<a name="l00066"></a><a class="code" href="classsafeBuffer.html#w3">00066</a> <span class="keyword">enum</span> bufferType {
00067
00068 BUFFER_UNKNOWN = 0,
00069 BUFFER_CHAR = 1,
00070 BUFFER_UNICODE = 2
00071 };
00072
00073
00074 <a class="code" href="classsafeBuffer.html">safeBuffer</a>();
00075 <a class="code" href="classsafeBuffer.html">safeBuffer</a>(<span class="keywordtype">int</span> initialSize);
00076 <a class="code" href="classsafeBuffer.html">safeBuffer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> * inStr, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> initialSize = <a class="code" href="group__internal.html#ga0">DEFAULT_SAFE_BUFFER_SIZE</a>);
00077 <a class="code" href="classsafeBuffer.html">safeBuffer</a>(<span class="keyword">const</span> <a class="code" href="classsafeBuffer.html">safeBuffer</a> & other);
00078
00079 ~<a class="code" href="classsafeBuffer.html">safeBuffer</a>();
00080
00081 <span class="keyword">static</span> <span class="keywordtype">void</span> init(<span class="keywordtype">void</span>);
00082
00083 <span class="comment">// "IN" functions - these read in information to the buffer</span>
00084
00085 <span class="keywordtype">void</span> sbStrcpyIn(<span class="keyword">const</span> <span class="keywordtype">char</span> * inStr);
00086 <span class="keywordtype">void</span> sbStrcpyIn(<span class="keyword">const</span> <a class="code" href="classsafeBuffer.html">safeBuffer</a> & inStr);
00087 <span class="keywordtype">void</span> sbStrncpyIn(<span class="keyword">const</span> <span class="keywordtype">char</span> * inStr, <span class="keywordtype">int</span> n);
00088 <span class="keywordtype">void</span> sbStrncpyIn(<span class="keyword">const</span> <a class="code" href="classsafeBuffer.html">safeBuffer</a> & inStr, <span class="keywordtype">int</span> n);
00089 <span class="keywordtype">void</span> sbStrcatIn(<span class="keyword">const</span> <span class="keywordtype">char</span> * inStr);
00090 <span class="keywordtype">void</span> sbStrcatIn(<span class="keyword">const</span> <a class="code" href="classsafeBuffer.html">safeBuffer</a> & inStr);
00091 <span class="keywordtype">void</span> sbStrncatIn(<span class="keyword">const</span> <span class="keywordtype">char</span> * inStr, <span class="keywordtype">int</span> n);
00092 <span class="keywordtype">void</span> sbStrinsIn(<span class="keyword">const</span> <span class="keywordtype">char</span> * inStr, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset);
00093
00094 <span class="keywordtype">void</span> sbMemcpyIn(<span class="keyword">const</span> <span class="keywordtype">void</span> * inBuf, <span class="keywordtype">int</span> n);
00095 <span class="keywordtype">void</span> sbMemcpyIn(<span class="keywordtype">int</span> offset, <span class="keyword">const</span> <span class="keywordtype">void</span> * inBuf, <span class="keywordtype">int</span> n);
00096
00097 <span class="keywordtype">void</span> sbMemcpyOut(<span class="keywordtype">void</span> * outBuf, <span class="keywordtype">int</span> n) <span class="keyword">const</span>;
00098 <span class="keywordtype">void</span> sbMemshift(<span class="keywordtype">int</span> toOffset, <span class="keywordtype">int</span> fromOffset, <span class="keywordtype">int</span> len);
00099
00100 <span class="comment">// Comparison functions</span>
00101
00102 <span class="keywordtype">int</span> sbStrncmp(<span class="keyword">const</span> <span class="keywordtype">char</span> * inStr, <span class="keywordtype">int</span> n) <span class="keyword">const</span>;
00103 <span class="keywordtype">int</span> sbOffsetStrcmp(<span class="keyword">const</span> <span class="keywordtype">char</span> * inStr, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset) <span class="keyword">const</span>;
00104 <span class="keywordtype">int</span> sbOffsetStrncmp(<span class="keyword">const</span> <span class="keywordtype">char</span> * inStr, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset, <span class="keywordtype">int</span> n) <span class="keyword">const</span>;
00105 <span class="keywordtype">int</span> sbStrcmp(<span class="keyword">const</span> <span class="keywordtype">char</span> * inStr) <span class="keyword">const</span>;
00106 <span class="keywordtype">int</span> sbStrcmp(<span class="keyword">const</span> <a class="code" href="classsafeBuffer.html">safeBuffer</a> & inStr) <span class="keyword">const</span>;
00107 <span class="keywordtype">int</span> sbStrstr(<span class="keyword">const</span> <span class="keywordtype">char</span> * inStr) <span class="keyword">const</span>;
00108 <span class="keywordtype">int</span> sbOffsetStrstr(<span class="keyword">const</span> <span class="keywordtype">char</span> * inStr, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset) <span class="keyword">const</span>;
00109
00110 <span class="comment">// XMLCh versions</span>
00111 <span class="keywordtype">int</span> sbStrstr(<span class="keyword">const</span> XMLCh * inStr) <span class="keyword">const</span>;
00112 <span class="keywordtype">void</span> sbStrinsIn(<span class="keyword">const</span> XMLCh * inStr, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset);
00113
00114 <span class="comment">// XMLCh and char common functions</span>
00115 <span class="keywordtype">void</span> sbStrlwr(<span class="keywordtype">void</span>); <span class="comment">// Lowercase the string</span>
00116
00117 <span class="comment">// Operators</span>
00118
00119 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> & operator[](<span class="keywordtype">int</span> n);
00120 <a class="code" href="classsafeBuffer.html">safeBuffer</a> & operator= (<span class="keyword">const</span> <a class="code" href="classsafeBuffer.html">safeBuffer</a> & cpy);
00121 <a class="code" href="classsafeBuffer.html">safeBuffer</a> & operator= (<span class="keyword">const</span> XMLCh * inStr);
00122 <a class="code" href="classsafeBuffer.html">safeBuffer</a> & operator << (<a class="code" href="classTXFMBase.html">TXFMBase</a> * t);
00123
00124 <span class="comment">// Get functions</span>
00125
00126 <span class="keywordtype">int</span> sbStrlen(<span class="keywordtype">void</span>) <span class="keyword">const</span>;
00127 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sbRawBufferSize(<span class="keywordtype">void</span>) <span class="keyword">const</span>;
00128
00129 <span class="comment">// raw buffer manipulation</span>
00130
00131 <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> * rawBuffer() <span class="keyword">const</span>;
00132 <span class="keyword">const</span> <span class="keywordtype">char</span> * rawCharBuffer() <span class="keyword">const</span>;
00133 <span class="keyword">const</span> XMLCh * rawXMLChBuffer() <span class="keyword">const</span>;
00134 <span class="keywordtype">void</span> resize(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sz); <span class="comment">// NOTE : Only grows</span>
00135 <span class="keywordtype">void</span> setBufferType(bufferType bt); <span class="comment">// Use with care</span>
00136
00137 <span class="comment">// Unicode (UTF-16 manipulation)</span>
00138 <span class="keyword">const</span> XMLCh * sbStrToXMLCh(<span class="keywordtype">void</span>); <span class="comment">// Note does not affect internal buffer</span>
00139 <span class="keywordtype">void</span> sbTranscodeIn(<span class="keyword">const</span> XMLCh * inStr); <span class="comment">// Create a local string from UTF-16</span>
00140 <span class="keywordtype">void</span> sbTranscodeIn(<span class="keyword">const</span> <span class="keywordtype">char</span> * inStr); <span class="comment">// Create a UTF-16 string from local</span>
00141 <span class="keywordtype">void</span> sbXMLChIn(<span class="keyword">const</span> XMLCh * in); <span class="comment">// Buffer holds XMLCh *</span>
00142 <span class="keywordtype">void</span> sbXMLChAppendCh(<span class="keyword">const</span> XMLCh c); <span class="comment">// Append a Unicode character to the buffer</span>
00143 <span class="keywordtype">void</span> sbXMLChCat(<span class="keyword">const</span> XMLCh *str); <span class="comment">// Append a UTF-16 string to the buffer</span>
00144 <span class="keywordtype">void</span> sbXMLChCat(<span class="keyword">const</span> <span class="keywordtype">char</span> * str); <span class="comment">// Append a (transcoded) local string to the buffer</span>
00145 <span class="keywordtype">void</span> sbXMLChCat8(<span class="keyword">const</span> <span class="keywordtype">char</span> * str); <span class="comment">// Append a (transcoded) UTF-8 string to the buffer</span>
00146
00147 <span class="comment">// Sensitive data functions</span>
00148 <span class="keywordtype">void</span> isSensitive(<span class="keywordtype">void</span>);
00149 <span class="keywordtype">void</span> cleanseBuffer(<span class="keywordtype">void</span>);
00150
00151 <span class="keyword">private</span>:
00152
00153 <span class="comment">// Internal function that is used to get a string size and </span>
00154 <span class="comment">// then re-allocate if necessary</span>
00155
00156 <span class="keywordtype">void</span> checkAndExpand(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size);
00157 <span class="keywordtype">void</span> checkBufferType(bufferType bt) <span class="keyword">const</span>;
00158
00159 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> * buffer;
00160 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bufferSize;
00161 XMLCh * mp_XMLCh;
00162 bufferType m_bufferType;
00163
00164 <span class="comment">// For XMLCh manipulation</span>
00165 <span class="keyword">static</span> size_t size_XMLCh;
00166
00167 <span class="comment">// For sensitive data</span>
00168 <span class="keywordtype">bool</span> m_isSensitive;
00169 };
00170
00173 <span class="preprocessor">#endif </span><span class="comment">/* XSECSAFEBUFFER_INCLUDE */</span>
00174
</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>
|