⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_8cpp-source.html

📁 Crypto++是一个非常强大的密码学库,主要是功能全
💻 HTML
📖 第 1 页 / 共 5 页
字号:
00578 <span class="comment">//      FileSource(in, true, new Gzip(new FileSink(out), deflate_level));</span>00579 00580         <span class="comment">// use a filter graph to compare decompressed data with original</span>00581         <span class="comment">//</span>00582         <span class="comment">// Source ----&gt; Gzip ------&gt; Sink</span>00583         <span class="comment">//    \           |</span>00584         <span class="comment">//          \       Gunzip</span>00585         <span class="comment">//                \       |</span>00586         <span class="comment">//                  \     v</span>00587         <span class="comment">//                    &gt; ComparisonFilter </span>00588                            00589         <a class="code" href="class_equality_comparison_filter.html">EqualityComparisonFilter</a> comparison;00590 00591         <a class="code" href="class_gunzip.html">Gunzip</a> gunzip(<span class="keyword">new</span> <a class="code" href="class_channel_switch.html">ChannelSwitch</a>(comparison, <span class="stringliteral">"0"</span>));00592         gunzip.SetAutoSignalPropagation(0);00593 00594         <a class="code" href="class_file_sink.html">FileSink</a> sink(out);00595 00596         <a class="code" href="class_channel_switch.html">ChannelSwitch</a> *cs;00597         <a class="code" href="class_gzip.html">Gzip</a> gzip(cs = <span class="keyword">new</span> <a class="code" href="class_channel_switch.html">ChannelSwitch</a>(sink), deflate_level);00598         cs-&gt;<a class="code" href="class_channel_switch.html#_channel_switcha9">AddDefaultRoute</a>(gunzip);00599 00600         cs = <span class="keyword">new</span> <a class="code" href="class_channel_switch.html">ChannelSwitch</a>(gzip);00601         cs-&gt;<a class="code" href="class_channel_switch.html#_channel_switcha9">AddDefaultRoute</a>(comparison, <span class="stringliteral">"1"</span>);00602         <a class="code" href="class_file_source.html">FileSource</a> source(in, <span class="keyword">true</span>, cs);00603 00604         comparison.<a class="code" href="class_equality_comparison_filter.html#_equality_comparison_filtera3">ChannelMessageSeriesEnd</a>(<span class="stringliteral">"0"</span>);00605         comparison.<a class="code" href="class_equality_comparison_filter.html#_equality_comparison_filtera3">ChannelMessageSeriesEnd</a>(<span class="stringliteral">"1"</span>);00606 }00607 00608 <span class="keywordtype">void</span> GunzipFile(<span class="keyword">const</span> <span class="keywordtype">char</span> *in, <span class="keyword">const</span> <span class="keywordtype">char</span> *out)00609 {00610         <a class="code" href="class_file_source.html">FileSource</a>(in, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_gunzip.html">Gunzip</a>(<span class="keyword">new</span> <a class="code" href="class_file_sink.html">FileSink</a>(out)));00611 }00612 00613 <span class="keywordtype">void</span> Base64Encode(<span class="keyword">const</span> <span class="keywordtype">char</span> *in, <span class="keyword">const</span> <span class="keywordtype">char</span> *out)00614 {00615         <a class="code" href="class_file_source.html">FileSource</a>(in, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_base64_encoder.html">Base64Encoder</a>(<span class="keyword">new</span> <a class="code" href="class_file_sink.html">FileSink</a>(out)));00616 }00617 00618 <span class="keywordtype">void</span> Base64Decode(<span class="keyword">const</span> <span class="keywordtype">char</span> *in, <span class="keyword">const</span> <span class="keywordtype">char</span> *out)00619 {00620         <a class="code" href="class_file_source.html">FileSource</a>(in, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_base64_decoder.html">Base64Decoder</a>(<span class="keyword">new</span> <a class="code" href="class_file_sink.html">FileSink</a>(out)));00621 }00622 00623 <span class="keywordtype">void</span> HexEncode(<span class="keyword">const</span> <span class="keywordtype">char</span> *in, <span class="keyword">const</span> <span class="keywordtype">char</span> *out)00624 {00625         <a class="code" href="class_file_source.html">FileSource</a>(in, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_hex_encoder.html">HexEncoder</a>(<span class="keyword">new</span> <a class="code" href="class_file_sink.html">FileSink</a>(out)));00626 }00627 00628 <span class="keywordtype">void</span> HexDecode(<span class="keyword">const</span> <span class="keywordtype">char</span> *in, <span class="keyword">const</span> <span class="keywordtype">char</span> *out)00629 {00630         <a class="code" href="class_file_source.html">FileSource</a>(in, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_hex_decoder.html">HexDecoder</a>(<span class="keyword">new</span> <a class="code" href="class_file_sink.html">FileSink</a>(out)));00631 }00632 00633 <span class="keywordtype">void</span> ForwardTcpPort(<span class="keyword">const</span> <span class="keywordtype">char</span> *sourcePortName, <span class="keyword">const</span> <span class="keywordtype">char</span> *destinationHost, <span class="keyword">const</span> <span class="keywordtype">char</span> *destinationPortName)00634 {00635 <span class="preprocessor">#ifdef SOCKETS_AVAILABLE</span>00636 <span class="preprocessor"></span>        <a class="code" href="class_sockets_initializer.html">SocketsInitializer</a> sockInit;00637 00638         <a class="code" href="class_socket.html">Socket</a> sockListen, sockSource, sockDestination;00639 00640         <span class="keywordtype">int</span> sourcePort = <a class="code" href="class_socket.html#_socket_sourcee0">Socket::PortNameToNumber</a>(sourcePortName);00641         <span class="keywordtype">int</span> destinationPort = <a class="code" href="class_socket.html#_socket_sourcee0">Socket::PortNameToNumber</a>(destinationPortName);00642 00643         sockListen.<a class="code" href="class_socket.html#_socket_sourcea31">Create</a>();00644         sockListen.<a class="code" href="class_socket.html#_socket_sourcea32">Bind</a>(sourcePort);00645 00646         cout &lt;&lt; <span class="stringliteral">"Listing on port "</span> &lt;&lt; sourcePort &lt;&lt; <span class="stringliteral">".\n"</span>;00647         sockListen.<a class="code" href="class_socket.html#_socket_sourcea34">Listen</a>();00648 00649         sockListen.<a class="code" href="class_socket.html#_socket_sourcea37">Accept</a>(sockSource);00650         cout &lt;&lt; <span class="stringliteral">"Connection accepted on port "</span> &lt;&lt; sourcePort &lt;&lt; <span class="stringliteral">".\n"</span>;00651         sockListen.<a class="code" href="class_socket.html#_socket_sourcea30">CloseSocket</a>();00652 00653         cout &lt;&lt; <span class="stringliteral">"Making connection to "</span> &lt;&lt; destinationHost &lt;&lt; <span class="stringliteral">", port "</span> &lt;&lt; destinationPort &lt;&lt; <span class="stringliteral">".\n"</span>;00654         sockDestination.<a class="code" href="class_socket.html#_socket_sourcea31">Create</a>();00655         sockDestination.<a class="code" href="class_socket.html#_socket_sourcea35">Connect</a>(destinationHost, destinationPort);00656 00657         cout &lt;&lt; <span class="stringliteral">"Connection made to "</span> &lt;&lt; destinationHost &lt;&lt; <span class="stringliteral">", starting to forward.\n"</span>;00658 00659         <a class="code" href="class_socket_source.html">SocketSource</a> out(sockSource, <span class="keyword">false</span>, <span class="keyword">new</span> <a class="code" href="class_socket_sink.html">SocketSink</a>(sockDestination));00660         <a class="code" href="class_socket_source.html">SocketSource</a> in(sockDestination, <span class="keyword">false</span>, <span class="keyword">new</span> <a class="code" href="class_socket_sink.html">SocketSink</a>(sockSource));00661 00662         <a class="code" href="class_wait_object_container.html">WaitObjectContainer</a> waitObjects;00663 00664         <span class="keywordflow">while</span> (!(in.<a class="code" href="class_network_source.html#_windows_pipe_sourcea11">SourceExhausted</a>() &amp;&amp; out.<a class="code" href="class_network_source.html#_windows_pipe_sourcea11">SourceExhausted</a>()))00665         {00666                 waitObjects.<a class="code" href="class_wait_object_container.html#_wait_object_containera1">Clear</a>();00667 00668                 out.<a class="code" href="class_network_source.html#_windows_pipe_sourcea9">GetWaitObjects</a>(waitObjects);00669                 in.<a class="code" href="class_network_source.html#_windows_pipe_sourcea9">GetWaitObjects</a>(waitObjects);00670 00671                 waitObjects.<a class="code" href="class_wait_object_container.html#_wait_object_containera3">Wait</a>(INFINITE_TIME);00672 00673                 <span class="keywordflow">if</span> (!out.<a class="code" href="class_network_source.html#_windows_pipe_sourcea11">SourceExhausted</a>())00674                 {00675                         cout &lt;&lt; <span class="stringliteral">"o"</span> &lt;&lt; flush;00676                         out.<a class="code" href="class_source.html#_windows_pipe_sourcea17">PumpAll2</a>(<span class="keyword">false</span>);00677                         <span class="keywordflow">if</span> (out.<a class="code" href="class_network_source.html#_windows_pipe_sourcea11">SourceExhausted</a>())00678                                 cout &lt;&lt; <span class="stringliteral">"EOF received on source socket.\n"</span>;00679                 }00680 00681                 <span class="keywordflow">if</span> (!in.<a class="code" href="class_network_source.html#_windows_pipe_sourcea11">SourceExhausted</a>())00682                 {00683                         cout &lt;&lt; <span class="stringliteral">"i"</span> &lt;&lt; flush;00684                         in.<a class="code" href="class_source.html#_windows_pipe_sourcea17">PumpAll2</a>(<span class="keyword">false</span>);00685                         <span class="keywordflow">if</span> (in.<a class="code" href="class_network_source.html#_windows_pipe_sourcea11">SourceExhausted</a>())00686                                 cout &lt;&lt; <span class="stringliteral">"EOF received on destination socket.\n"</span>;00687                 }00688         }00689 <span class="preprocessor">#else</span>00690 <span class="preprocessor"></span>        cout &lt;&lt; <span class="stringliteral">"Socket support was not enabled at compile time.\n"</span>;00691         exit(-1);00692 <span class="preprocessor">#endif</span>00693 <span class="preprocessor"></span>}00694 00695 <span class="keywordtype">bool</span> Validate(<span class="keywordtype">int</span> alg, <span class="keywordtype">bool</span> thorough, <span class="keyword">const</span> <span class="keywordtype">char</span> *seed)00696 {00697         <span class="keywordtype">bool</span> result;00698 00699         std::string timeSeed;00700         <span class="keywordflow">if</span> (!seed)00701         {00702                 timeSeed = IntToString(time(NULL));00703                 seed = timeSeed.c_str();00704         }00705 00706         cout &lt;&lt; <span class="stringliteral">"Using seed: "</span> &lt;&lt; seed &lt;&lt; endl &lt;&lt; endl;00707         GlobalRNG().<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_0">Put</a>((<span class="keyword">const</span> byte *)seed, strlen(seed));00708 00709         <span class="keywordflow">switch</span> (alg)00710         {00711         <span class="keywordflow">case</span> 1: result = TestSettings(); <span class="keywordflow">break</span>;00712         <span class="keywordflow">case</span> 2: result = TestOS_RNG(); <span class="keywordflow">break</span>;00713         <span class="keywordflow">case</span> 3: result = ValidateMD5(); <span class="keywordflow">break</span>;00714         <span class="keywordflow">case</span> 4: result = ValidateSHA(); <span class="keywordflow">break</span>;00715         <span class="keywordflow">case</span> 5: result = ValidateDES(); <span class="keywordflow">break</span>;00716         <span class="keywordflow">case</span> 6: result = ValidateIDEA(); <span class="keywordflow">break</span>;00717         <span class="keywordflow">case</span> 7: result = ValidateARC4(); <span class="keywordflow">break</span>;00718         <span class="keywordflow">case</span> 8: result = ValidateRC5(); <span class="keywordflow">break</span>;00719         <span class="keywordflow">case</span> 9: result = ValidateBlowfish(); <span class="keywordflow">break</span>;00720         <span c

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -