File: XSECSafeBuffer_8hpp-source.html

package info (click to toggle)
xml-security-c 1.2.1-3
  • links: PTS
  • area: main
  • in suites: etch-m68k
  • size: 24,464 kB
  • ctags: 6,673
  • sloc: cpp: 36,830; xml: 23,415; sh: 2,365; makefile: 340; perl: 221
file content (164 lines) | stat: -rw-r--r-- 15,184 bytes parent folder | download | duplicates (2)
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&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
<div class="nav">
<a class="el" href="dir_000000.html">src</a>&nbsp;/&nbsp;<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 &lt;xsec/framework/XSECDefs.hpp&gt;</span>
00033 <span class="preprocessor">#include &lt;xercesc/util/XMLString.hpp&gt;</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> &amp; 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> &amp; 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> &amp; 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> &amp; 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> &amp; 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> &amp; operator[](<span class="keywordtype">int</span> n);
00120     <a class="code" href="classsafeBuffer.html">safeBuffer</a> &amp; operator= (<span class="keyword">const</span> <a class="code" href="classsafeBuffer.html">safeBuffer</a> &amp; cpy);
00121     <a class="code" href="classsafeBuffer.html">safeBuffer</a> &amp; operator= (<span class="keyword">const</span> XMLCh * inStr);
00122     <a class="code" href="classsafeBuffer.html">safeBuffer</a> &amp; operator &lt;&lt; (<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&nbsp;
<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>