📄 test_8cpp-source.html
字号:
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 ----> Gzip ------> 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">// > 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-><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-><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 << <span class="stringliteral">"Listing on port "</span> << sourcePort << <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 << <span class="stringliteral">"Connection accepted on port "</span> << sourcePort << <span class="stringliteral">".\n"</span>;00651 sockListen.<a class="code" href="class_socket.html#_socket_sourcea30">CloseSocket</a>();00652 00653 cout << <span class="stringliteral">"Making connection to "</span> << destinationHost << <span class="stringliteral">", port "</span> << destinationPort << <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 << <span class="stringliteral">"Connection made to "</span> << destinationHost << <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>() && 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 << <span class="stringliteral">"o"</span> << 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 << <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 << <span class="stringliteral">"i"</span> << 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 << <span class="stringliteral">"EOF received on destination socket.\n"</span>;00687 }00688 }00689 <span class="preprocessor">#else</span>00690 <span class="preprocessor"></span> cout << <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 << <span class="stringliteral">"Using seed: "</span> << seed << endl << 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 + -