📄 validat1_8cpp-source.html
字号:
00634 00635 fail = !TestModeIV(modeE, modeD);00636 pass = pass && !fail;00637 cout << (fail ? <span class="stringliteral">"FAILED "</span> : <span class="stringliteral">"passed "</span>) << <span class="stringliteral">"CBC CTS IV generation"</span> << endl;00638 }00639 {00640 <span class="comment">// generated with Crypto++</span>00641 <span class="keyword">const</span> byte decryptionIV[] = {0x4D, 0xD0, 0xAC, 0x8F, 0x47, 0xCF, 0x79, 0xCE};00642 <span class="keyword">const</span> byte encrypted[] = {0x12, 0x34, 0x56};00643 00644 byte stolenIV[8];00645 00646 <a class="code" href="class_cipher_mode_final_template___external_cipher.html">CBC_CTS_Mode_ExternalCipher::Encryption</a> modeE(desE, iv);00647 modeE.SetStolenIV(stolenIV);00648 fail = !TestFilter(<a class="code" href="class_stream_transformation_filter.html">StreamTransformationFilter</a>(modeE).Ref(),00649 plain, 3, encrypted, <span class="keyword">sizeof</span>(encrypted));00650 fail = memcmp(stolenIV, decryptionIV, 8) != 0 || fail;00651 pass = pass && !fail;00652 cout << (fail ? <span class="stringliteral">"FAILED "</span> : <span class="stringliteral">"passed "</span>) << <span class="stringliteral">"CBC encryption with ciphertext and IV stealing"</span> << endl;00653 00654 <a class="code" href="class_cipher_mode_final_template___external_cipher.html">CBC_CTS_Mode_ExternalCipher::Decryption</a> modeD(desD, stolenIV);00655 fail = !TestFilter(<a class="code" href="class_stream_transformation_filter.html">StreamTransformationFilter</a>(modeD).Ref(),00656 encrypted, <span class="keyword">sizeof</span>(encrypted), plain, 3);00657 pass = pass && !fail;00658 cout << (fail ? <span class="stringliteral">"FAILED "</span> : <span class="stringliteral">"passed "</span>) << <span class="stringliteral">"CBC decryption with ciphertext and IV stealing"</span> << endl;00659 }00660 {00661 <span class="keyword">const</span> byte encrypted[] = { <span class="comment">// from FIPS 81</span>00662 0xF3,0x09,0x62,0x49,0xC7,0xF4,0x6E,0x51,00663 0xA6,0x9E,0x83,0x9B,0x1A,0x92,0xF7,0x84,00664 0x03,0x46,0x71,0x33,0x89,0x8E,0xA6,0x22};00665 00666 <a class="code" href="class_cipher_mode_final_template___external_cipher.html">CFB_Mode_ExternalCipher::Encryption</a> modeE(desE, iv);00667 fail = !TestFilter(<a class="code" href="class_stream_transformation_filter.html">StreamTransformationFilter</a>(modeE).Ref(),00668 plain, <span class="keyword">sizeof</span>(plain), encrypted, <span class="keyword">sizeof</span>(encrypted));00669 pass = pass && !fail;00670 cout << (fail ? <span class="stringliteral">"FAILED "</span> : <span class="stringliteral">"passed "</span>) << <span class="stringliteral">"CFB encryption"</span> << endl;00671 00672 <a class="code" href="class_cipher_mode_final_template___external_cipher.html">CFB_Mode_ExternalCipher::Decryption</a> modeD(desE, iv);00673 fail = !TestFilter(<a class="code" href="class_stream_transformation_filter.html">StreamTransformationFilter</a>(modeD).Ref(),00674 encrypted, <span class="keyword">sizeof</span>(encrypted), plain, <span class="keyword">sizeof</span>(plain));00675 pass = pass && !fail;00676 cout << (fail ? <span class="stringliteral">"FAILED "</span> : <span class="stringliteral">"passed "</span>) << <span class="stringliteral">"CFB decryption"</span> << endl;00677 00678 fail = !TestModeIV(modeE, modeD);00679 pass = pass && !fail;00680 cout << (fail ? <span class="stringliteral">"FAILED "</span> : <span class="stringliteral">"passed "</span>) << <span class="stringliteral">"CFB mode IV generation"</span> << endl;00681 }00682 {00683 <span class="keyword">const</span> byte plain[] = { <span class="comment">// "Now is the." without tailing 0</span>00684 0x4e,0x6f,0x77,0x20,0x69,0x73,0x20,0x74,0x68,0x65};00685 <span class="keyword">const</span> byte encrypted[] = { <span class="comment">// from FIPS 81</span>00686 0xf3,0x1f,0xda,0x07,0x01,0x14,0x62,0xee,0x18,0x7f};00687 00688 <a class="code" href="class_cipher_mode_final_template___external_cipher.html">CFB_Mode_ExternalCipher::Encryption</a> modeE(desE, iv, 1);00689 fail = !TestFilter(<a class="code" href="class_stream_transformation_filter.html">StreamTransformationFilter</a>(modeE).Ref(),00690 plain, <span class="keyword">sizeof</span>(plain), encrypted, <span class="keyword">sizeof</span>(encrypted));00691 pass = pass && !fail;00692 cout << (fail ? <span class="stringliteral">"FAILED "</span> : <span class="stringliteral">"passed "</span>) << <span class="stringliteral">"CFB (8-bit feedback) encryption"</span> << endl;00693 00694 <a class="code" href="class_cipher_mode_final_template___external_cipher.html">CFB_Mode_ExternalCipher::Decryption</a> modeD(desE, iv, 1);00695 fail = !TestFilter(<a class="code" href="class_stream_transformation_filter.html">StreamTransformationFilter</a>(modeD).Ref(),00696 encrypted, <span class="keyword">sizeof</span>(encrypted), plain, <span class="keyword">sizeof</span>(plain));00697 pass = pass && !fail;00698 cout << (fail ? <span class="stringliteral">"FAILED "</span> : <span class="stringliteral">"passed "</span>) << <span class="stringliteral">"CFB (8-bit feedback) decryption"</span> << endl;00699 00700 fail = !TestModeIV(modeE, modeD);00701 pass = pass && !fail;00702 cout << (fail ? <span class="stringliteral">"FAILED "</span> : <span class="stringliteral">"passed "</span>) << <span class="stringliteral">"CFB (8-bit feedback) IV generation"</span> << endl;00703 }00704 {00705 <span class="keyword">const</span> byte encrypted[] = { <span class="comment">// from Eric Young's libdes</span>00706 0xf3,0x09,0x62,0x49,0xc7,0xf4,0x6e,0x51,00707 0x35,0xf2,0x4a,0x24,0x2e,0xeb,0x3d,0x3f,00708 0x3d,0x6d,0x5b,0xe3,0x25,0x5a,0xf8,0xc3};00709 00710 <a class="code" href="class_cipher_mode_final_template___external_cipher.html">OFB_Mode_ExternalCipher::Encryption</a> modeE(desE, iv);00711 fail = !TestFilter(<a class="code" href="class_stream_transformation_filter.html">StreamTransformationFilter</a>(modeE).Ref(),00712 plain, <span class="keyword">sizeof</span>(plain), encrypted, <span class="keyword">sizeof</span>(encrypted));00713 pass = pass && !fail;00714 cout << (fail ? <span class="stringliteral">"FAILED "</span> : <span class="stringliteral">"passed "</span>) << <span class="stringliteral">"OFB encryption"</span> << endl;00715 00716 <a class="code" href="class_cipher_mode_final_template___external_cipher.html">OFB_Mode_ExternalCipher::Decryption</a> modeD(desE, iv);00717 fail = !TestFilter(<a class="code" href="class_stream_transformation_filter.html">StreamTransformationFilter</a>(modeD).Ref(),00718 encrypted, <span class="keyword">sizeof</span>(encrypted), plain, <span class="keyword">sizeof</span>(plain));00719 pass = pass && !fail;00720 cout << (fail ? <span class="stringliteral">"FAILED "</span> : <span class="stringliteral">"passed "</span>) << <span class="stringliteral">"OFB decryption"</span> << endl;00721 00722 fail = !TestModeIV(modeE, modeD);00723 pass = pass && !fail;00724 cout << (fail ? <span class="stringliteral">"FAILED "</span> : <span class="stringliteral">"passed "</span>) << <span class="stringliteral">"OFB IV generation"</span> << endl;00725 }00726 {00727 <span class="keyword">const</span> byte encrypted[] = { <span class="comment">// generated with Crypto++</span>00728 0xF3, 0x09, 0x62, 0x49, 0xC7, 0xF4, 0x6E, 0x51, 00729 0x16, 0x3A, 0x8C, 0xA0, 0xFF, 0xC9, 0x4C, 0x27, 00730 0xFA, 0x2F, 0x80, 0xF4, 0x80, 0xB8, 0x6F, 0x75};00731 00732 <a class="code" href="class_cipher_mode_final_template___external_cipher.html">CTR_Mode_ExternalCipher::Encryption</a> modeE(desE, iv);00733 fail = !TestFilter(<a class="code" href="class_stream_transformation_filter.html">StreamTransformationFilter</a>(modeE).Ref(),00734 plain, <span class="keyword">sizeof</span>(plain), encrypted, <span class="keyword">sizeof</span>(encrypted));00735 pass = pass && !fail;00736 cout << (fail ? <span class="stringliteral">"FAILED "</span> : <span class="stringliteral">"passed "</span>) << <span class="stringliteral">"Counter Mode encryption"</span> << endl;00737 00738 <a class="code" href="class_cipher_mode_final_template___external_cipher.html">CTR_Mode_ExternalCipher::Decryption</a> modeD(desE, iv);00739 fail = !TestFilter(<a class="code" href="class_stream_transformation_filter.html">StreamTransformationFilter</a>(modeD).Ref(),00740 encrypted, <span class="keyword">sizeof</span>(encrypted), plain, <span class="keyword">sizeof</span>(plain));00741 pass = pass && !fail;00742 cout << (fail ? <span class="stringliteral">"FAILED "</span> : <span class="stringliteral">"passed "</span>) << <span class="stringliteral">"Counter Mode decryption"</span> << endl;00743 00744 fail = !TestModeIV(modeE, modeD);00745 pass = pass && !fail;00746 cout << (fail ? <span class="stringliteral">"FAILED "</span> : <span class="stringliteral">"passed "</span>) << <span class="stringliteral">"Counter Mode IV generation"</span> << endl;00747 }00748 {00749 <span class="keyword">const</span> byte plain[] = { <span class="comment">// "7654321 Now is the time for "</span>00750 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x20, 00751 0x4e, 0x6f, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74, 00752 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, 00753 0x66, 0x6f, 0x72, 0x20};00754 <span class="keyword">const</span> byte mac1[] = { <span class="comment">// from FIPS 113</span>00755 0xf1, 0xd3, 0x0f, 0x68, 0x49, 0x31, 0x2c, 0xa4};00756 <span class="keyword">const</span> byte mac2[] = { <span class="comment">// generated with Crypto++</span>00757 0x35, 0x80, 0xC5, 0xC4, 0x6B, 0x81, 0x24, 0xE2};00758 00759 <a class="code" href="class_c_b_c___m_a_c.html">CBC_MAC<DES></a> cbcmac(key);00760 <a class="code" href="class_hash_filter.html">HashFilter</a> cbcmacFilter(cbcmac);00761 fail = !TestFilter(cbcmacFilter, plain, <span class="keyword">sizeof</span>(plain), mac1, <span class="keyword">sizeof</span>(mac1));00762 pass = pass && !fail;00763 cout << (fail ? <span class="stringliteral">"FAILED "</span> : <span class="stringliteral">"passed "</span>) << <span class="stringliteral">"CBC MAC"</span> << endl;00764 00765 <a class="code" href="class_d_m_a_c.html">DMAC<DES></a> dmac(key);00766 <a class="code" href="class_hash_filter.html">HashFilter</a> dmacFilter(dmac);00767 fail = !TestFilter(dmacFilter, plain, <span class="keyword">sizeof</span>(plain), mac2, <span class="keyword">sizeof</span>(mac2));00768 pass = pass && !fail;00769 cout << (fail ? <span class="stringliteral">"FAILED "</span> : <span class="stringliteral">"passed "</span>) << <span class="stringliteral">"DMAC"</span> << endl;00770 }00771 00772 <span class="keywordflow">return</span> pass;00773 }00774 00775 <span class="keywordtype">bool</span> ValidateIDEA()00776 {00777 cout << <span class="stringliteral">"\nIDEA validation suite running...\n\n"</span>;00778 00779 <a class="code" href="class_file_source.html">FileSource</a> valdata(<span class="stringliteral">"ideaval.dat"</span>, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_hex_decoder.html">HexDecoder</a>);00780 <span class="keywordflow">return</span> BlockTransformationTest(FixedRoundsCipherFactory<IDEAEncryption, IDEADecryption>(), valdata);00781 }00782 00783 <span class="keywordtype">bool</span> ValidateSAFER()00784 {00785 cout << <span class="stringliteral">"\nSAFER validation suite running...\n\n"</span>;00786 00787 <a class="code" href="class_file_source.html">FileSource</a> valdata(<span class="stringliteral">"saferval.dat"</span>, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_hex_decoder.html">HexDecoder</a>);00788 <span class="keywordtype">bool</span> pass = <span class="keyword">true</span>;00789 pass = BlockTransformationTest(VariableRoundsCipherFactory<SAFER_K_Encryption, SAFER_K_Decryption>(8,6), valdata, 4) && pass;00790 pass = BlockTransformationTest(VariableRoundsCipherFactory<SAFER_K_Encryption, SAFER_K_Decryption>(16,12), valdata, 4) && pass;00791 pass = BlockTransformationTest(VariableRoundsCipherFactory<SAFER_SK_Encryption, SAFER_SK_Decryption>(8,6), valdata, 4) && pass;00792 pass = BlockTransformationTest(VariableRoundsCipherFactor
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -