cryptlib_8cpp-source.html
来自「Crypto++是一个非常强大的密码学库,主要是功能全」· HTML 代码 · 共 649 行 · 第 1/5 页
HTML
649 行
00124 {00125 <span class="keyword">class </span>NullRNG : <span class="keyword">public</span> <a class="code" href="class_random_number_generator.html">RandomNumberGenerator</a>00126 {00127 <span class="keyword">public</span>:00128 std::string <a class="code" href="class_algorithm.html#_zlib_decompressora17">AlgorithmName</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="stringliteral">"NullRNG"</span>;}00129 byte <a class="code" href="class_random_number_generator.html#_sapphire_r_n_ga2">GenerateByte</a>() {<span class="keywordflow">throw</span> <a class="code" href="class_not_implemented.html">NotImplemented</a>(<span class="stringliteral">"NullRNG: NullRNG should only be passed to functions that don't need to generate random bytes"</span>);}00130 };00131 00132 <span class="keyword">static</span> NullRNG s_nullRNG;00133 <span class="keywordflow">return</span> s_nullRNG;00134 }00135 <a name="l00136"></a><a class="code" href="class_hash_transformation.html#_x_m_a_c_ca17">00136</a> <span class="keywordtype">bool</span> <a class="code" href="class_hash_transformation.html#_x_m_a_c_ca17">HashTransformation::TruncatedVerify</a>(<span class="keyword">const</span> byte *digestIn, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> digestLength)00137 {00138 ThrowIfInvalidTruncatedSize(digestLength);00139 <a class="code" href="class_sec_block.html">SecByteBlock</a> digest(digestLength);00140 <a class="code" href="class_hash_transformation.html#_x_m_a_c_ca15">TruncatedFinal</a>(digest, digestLength);00141 <span class="keywordflow">return</span> memcmp(digest, digestIn, digestLength) == 0;00142 }00143 00144 <span class="keywordtype">void</span> HashTransformation::ThrowIfInvalidTruncatedSize(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size)<span class="keyword"> const</span>00145 <span class="keyword"></span>{00146 <span class="keywordflow">if</span> (size > <a class="code" href="class_hash_transformation.html#_x_m_a_c_ca9">DigestSize</a>())00147 <span class="keywordflow">throw</span> <a class="code" href="class_invalid_argument.html">InvalidArgument</a>(<span class="stringliteral">"HashTransformation: can't truncate a "</span> + IntToString(<a class="code" href="class_hash_transformation.html#_x_m_a_c_ca9">DigestSize</a>()) + <span class="stringliteral">" byte digest to "</span> + IntToString(size) + <span class="stringliteral">" bytes"</span>);00148 }00149 <a name="l00150"></a><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz3_0">00150</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz3_0">BufferedTransformation::GetMaxWaitObjectCount</a>()<span class="keyword"> const</span>00151 <span class="keyword"></span>{00152 <span class="keyword">const</span> <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *t = <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>();00153 <span class="keywordflow">return</span> t ? t->GetMaxWaitObjectCount() : 0;00154 }00155 <a name="l00156"></a><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz3_1">00156</a> <span class="keywordtype">void</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz3_1">BufferedTransformation::GetWaitObjects</a>(<a class="code" href="class_wait_object_container.html">WaitObjectContainer</a> &container)00157 {00158 <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *t = <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>();00159 <span class="keywordflow">if</span> (t)00160 t->GetWaitObjects(container);00161 }00162 <a name="l00163"></a><a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz5_2">00163</a> <span class="keywordtype">void</span> <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz5_2">BufferedTransformation::Initialize</a>(<span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html">NameValuePairs</a> &parameters, <span class="keywordtype">int</span> propagation)00164 {00165 assert(!<a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>());00166 IsolatedInitialize(parameters);00167 }00168 <a name="l00169"></a><a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz5_3">00169</a> <span class="keywordtype">bool</span> <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz5_3">BufferedTransformation::Flush</a>(<span class="keywordtype">bool</span> hardFlush, <span class="keywordtype">int</span> propagation, <span class="keywordtype">bool</span> blocking)00170 {00171 assert(!<a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>());00172 <span class="keywordflow">return</span> IsolatedFlush(hardFlush, blocking);00173 }00174 <a name="l00175"></a><a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz5_4">00175</a> <span class="keywordtype">bool</span> <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz5_4">BufferedTransformation::MessageSeriesEnd</a>(<span class="keywordtype">int</span> propagation, <span class="keywordtype">bool</span> blocking)00176 {00177 assert(!<a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>());00178 <span class="keywordflow">return</span> IsolatedMessageSeriesEnd(blocking);00179 }00180 00181 byte * BufferedTransformation::ChannelCreatePutSpace(<span class="keyword">const</span> std::string &channel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &size)00182 {00183 <span class="keywordflow">if</span> (channel.empty())00184 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_4">CreatePutSpace</a>(size);00185 <span class="keywordflow">else</span>00186 <span class="keywordflow">throw</span> NoChannelSupport();00187 }00188 00189 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> BufferedTransformation::ChannelPut2(<span class="keyword">const</span> std::string &channel, <span class="keyword">const</span> byte *begin, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length, <span class="keywordtype">int</span> messageEnd, <span class="keywordtype">bool</span> blocking)00190 {00191 <span class="keywordflow">if</span> (channel.empty())00192 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_unflushable_3_01_sink_01_4z1_9">Put2</a>(begin, length, messageEnd, blocking);00193 <span class="keywordflow">else</span>00194 <span class="keywordflow">throw</span> NoChannelSupport();00195 }00196 00197 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> BufferedTransformation::ChannelPutModifiable2(<span class="keyword">const</span> std::string &channel, byte *begin, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length, <span class="keywordtype">int</span> messageEnd, <span class="keywordtype">bool</span> blocking)00198 {00199 <span class="keywordflow">if</span> (channel.empty())00200 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_9">PutModifiable2</a>(begin, length, messageEnd, blocking);00201 <span class="keywordflow">else</span>00202 <span class="keywordflow">return</span> ChannelPut2(channel, begin, length, messageEnd, blocking);00203 }00204 00205 <span class="keywordtype">void</span> BufferedTransformation::ChannelInitialize(<span class="keyword">const</span> std::string &channel, <span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html">NameValuePairs</a> &parameters, <span class="keywordtype">int</span> propagation)00206 {00207 <span class="keywordflow">if</span> (channel.empty())00208 <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz5_2">Initialize</a>(parameters, propagation);00209 <span class="keywordflow">else</span>00210 <span class="keywordflow">throw</span> NoChannelSupport();00211 }00212 00213 <span class="keywordtype">bool</span> BufferedTransformation::ChannelFlush(<span class="keyword">const</span> std::string &channel, <span class="keywordtype">bool</span> completeFlush, <span class="keywordtype">int</span> propagation, <span class="keywordtype">bool</span> blocking)00214 {00215 <span class="keywordflow">if</span> (channel.empty())00216 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz5_3">Flush</a>(completeFlush, propagation, blocking);00217 <span class="keywordflow">else</span>00218 <span class="keywordflow">throw</span> NoChannelSupport();00219 }00220 00221 <span class="keywordtype">bool</span> BufferedTransformation::ChannelMessageSeriesEnd(<span class="keyword">const</span> std::string &channel, <span class="keywordtype">int</span> propagation, <span class="keywordtype">bool</span> blocking)00222 {00223 <span class="keywordflow">if</span> (channel.empty())00224 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz5_4">MessageSeriesEnd</a>(propagation, blocking);00225 <span class="keywordflow">else</span>00226 <span class="keywordflow">throw</span> NoChannelSupport();00227 }00228 <a name="l00229"></a><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_0">00229</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_0">BufferedTransformation::MaxRetrievable</a>()<span class="keyword"> const</span>00230 <span class="keyword"></span>{00231 <span class="keywordflow">if</span> (<a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>())00232 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>()-><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_0">MaxRetrievable</a>();00233 <span class="keywordflow">else</span>00234 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_12">CopyTo</a>(TheBitBucket());00235 }00236 <a name="l00237"></a><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_1">00237</a> <span class="keywordtype">bool</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_1">BufferedTransformation::AnyRetrievable</a>()<span class="keyword"> const</span>00238 <span class="keyword"></span>{00239 <span class="keywordflow">if</span> (<a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>())00240 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>()-><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_1">AnyRetrievable</a>();00241 <span class="keywordflow">else</span>00242 {00243 byte b;00244 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_4">Peek</a>(b) != 0;00245 }00246 }00247 <a name="l00248"></a><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_2">00248</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_2">BufferedTransformation::Get</a>(byte &outByte)00249 {00250 <span class="keywordflow">if</span> (<a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>())00251 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>()-><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_2">Get</a>(outByte);00252 <span class="keywordflow">else</span>00253 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_2">Get</a>(&outByte, 1);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?