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

📄 fipstest_8cpp-source.html

📁 Crypto++是一个非常强大的密码学库,主要是功能全
💻 HTML
📖 第 1 页 / 共 4 页
字号:
00107 00108 <span class="keyword">template</span> &lt;<span class="keyword">class</span> HASH&gt;00109 <span class="keywordtype">void</span> SecureHashKnownAnswerTest(<span class="keyword">const</span> <span class="keywordtype">char</span> *message, <span class="keyword">const</span> <span class="keywordtype">char</span> *digest, HASH *dummy = NULL)00110 {00111         HASH hash;00112         KnownAnswerTest(hash, message, digest);00113 }00114 00115 <span class="keyword">template</span> &lt;<span class="keyword">class</span> MAC&gt;00116 <span class="keywordtype">void</span> MAC_KnownAnswerTest(<span class="keyword">const</span> <span class="keywordtype">char</span> *key, <span class="keyword">const</span> <span class="keywordtype">char</span> *message, <span class="keyword">const</span> <span class="keywordtype">char</span> *digest, MAC *dummy = NULL)00117 {00118         std::string decodedKey;00119         <a class="code" href="class_string_source.html">StringSource</a>(key, <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_string_sink_template.html">StringSink</a>(decodedKey)));00120 00121         MAC mac((<span class="keyword">const</span> byte *)decodedKey.data(), decodedKey.size());00122         KnownAnswerTest(mac, message, digest);00123 }00124 00125 <span class="keyword">template</span> &lt;<span class="keyword">class</span> SCHEME&gt;00126 <span class="keywordtype">void</span> SignatureKnownAnswerTest(<span class="keyword">const</span> <span class="keywordtype">char</span> *key, <span class="keyword">const</span> <span class="keywordtype">char</span> *message, <span class="keyword">const</span> <span class="keywordtype">char</span> *signature, SCHEME *dummy = NULL)00127 {00128         <span class="keyword">typename</span> SCHEME::Signer signer(<a class="code" href="class_string_source.html">StringSource</a>(key, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_hex_decoder.html">HexDecoder</a>).Ref());00129         <span class="keyword">typename</span> SCHEME::Verifier verifier(signer);00130 00131         <a class="code" href="class_equality_comparison_filter.html">EqualityComparisonFilter</a> comparison;00132 00133         <a class="code" href="class_string_source.html">StringSource</a>(message, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_signer_filter.html">SignerFilter</a>(NullRNG(), signer, <span class="keyword">new</span> <a class="code" href="class_channel_switch.html">ChannelSwitch</a>(comparison, <span class="stringliteral">"0"</span>)));00134         <a class="code" href="class_string_source.html">StringSource</a>(signature, <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_channel_switch.html">ChannelSwitch</a>(comparison, <span class="stringliteral">"1"</span>)));00135 00136         comparison.<a class="code" href="class_equality_comparison_filter.html#_equality_comparison_filtera3">ChannelMessageSeriesEnd</a>(<span class="stringliteral">"0"</span>);00137         comparison.<a class="code" href="class_equality_comparison_filter.html#_equality_comparison_filtera3">ChannelMessageSeriesEnd</a>(<span class="stringliteral">"1"</span>);00138 00139         <a class="code" href="class_signature_verification_filter.html">VerifierFilter</a> verifierFilter(verifier, NULL, VerifierFilter::SIGNATURE_AT_BEGIN | VerifierFilter::THROW_EXCEPTION);00140         <a class="code" href="class_string_source.html">StringSource</a>(signature, <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_redirector.html">Redirector</a>(verifierFilter, <span class="keyword">false</span>)));00141         <a class="code" href="class_string_source.html">StringSource</a>(message, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_redirector.html">Redirector</a>(verifierFilter));00142 }00143 00144 <span class="keywordtype">void</span> EncryptionPairwiseConsistencyTest(<span class="keyword">const</span> <a class="code" href="class_p_k___encryptor.html">PK_Encryptor</a> &amp;encryptor, <span class="keyword">const</span> <a class="code" href="class_p_k___decryptor.html">PK_Decryptor</a> &amp;decryptor)00145 {00146         <span class="keywordflow">try</span>00147         {00148 <span class="preprocessor">#ifdef OS_RNG_AVAILABLE</span>00149 <span class="preprocessor"></span>                <a class="code" href="class_auto_seeded_x917_r_n_g.html">AutoSeededX917RNG&lt;DES_EDE3&gt;</a> rng;00150 <span class="preprocessor">#else</span>00151 <span class="preprocessor"></span>                <a class="code" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng = NullRNG();00152 <span class="preprocessor">#endif</span>00153 <span class="preprocessor"></span>                <span class="keyword">const</span> <span class="keywordtype">char</span> *testMessage =<span class="stringliteral">"test message"</span>;00154 00155                 <a class="code" href="class_equality_comparison_filter.html">EqualityComparisonFilter</a> comparison;00156                 comparison.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz13_6">ChannelPutMessageEnd</a>(<span class="stringliteral">"0"</span>, (<span class="keyword">const</span> byte *)testMessage, strlen(testMessage));00157 00158                 <a class="code" href="class_string_source.html">StringSource</a>(00159                         testMessage, 00160                         <span class="keyword">true</span>, 00161                         <span class="keyword">new</span> <a class="code" href="class_p_k___encryptor_filter.html">PK_EncryptorFilter</a>(00162                                 rng, 00163                                 encryptor, 00164                                 <span class="keyword">new</span> <a class="code" href="class_p_k___decryptor_filter.html">PK_DecryptorFilter</a>(decryptor, <span class="keyword">new</span> <a class="code" href="class_channel_switch.html">ChannelSwitch</a>(comparison, <span class="stringliteral">"1"</span>))));00165 00166                 comparison.<a class="code" href="class_equality_comparison_filter.html#_equality_comparison_filtera3">ChannelMessageSeriesEnd</a>(<span class="stringliteral">"0"</span>);00167                 comparison.<a class="code" href="class_equality_comparison_filter.html#_equality_comparison_filtera3">ChannelMessageSeriesEnd</a>(<span class="stringliteral">"1"</span>);00168         }00169         <span class="keywordflow">catch</span> (...)00170         {00171                 <span class="keywordflow">throw</span> <a class="code" href="class_self_test_failure.html">SelfTestFailure</a>(encryptor.<a class="code" href="class_algorithm.html#_zlib_decompressora17">AlgorithmName</a>() + <span class="stringliteral">": pairwise consistency test failed"</span>);00172         }00173 }00174 00175 <span class="keywordtype">void</span> SignaturePairwiseConsistencyTest(<span class="keyword">const</span> <a class="code" href="class_p_k___signer.html">PK_Signer</a> &amp;signer, <span class="keyword">const</span> <a class="code" href="class_p_k___verifier.html">PK_Verifier</a> &amp;verifier)00176 {00177         <span class="keywordflow">try</span>00178         {00179 <span class="preprocessor">#ifdef OS_RNG_AVAILABLE</span>00180 <span class="preprocessor"></span>                <a class="code" href="class_auto_seeded_x917_r_n_g.html">AutoSeededX917RNG&lt;DES_EDE3&gt;</a> rng;00181 <span class="preprocessor">#else</span>00182 <span class="preprocessor"></span>                <a class="code" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng = NullRNG();00183 <span class="preprocessor">#endif</span>00184 <span class="preprocessor"></span>00185                 <a class="code" href="class_string_source.html">StringSource</a>(00186                         <span class="stringliteral">"test message"</span>, 00187                         <span class="keyword">true</span>, 00188                         <span class="keyword">new</span> <a class="code" href="class_signer_filter.html">SignerFilter</a>(00189                                 rng, 00190                                 signer, 00191                                 <span class="keyword">new</span> <a class="code" href="class_signature_verification_filter.html">VerifierFilter</a>(verifier, NULL, VerifierFilter::THROW_EXCEPTION),00192                                 <span class="keyword">true</span>));00193         }00194         <span class="keywordflow">catch</span> (...)00195         {00196                 <span class="keywordflow">throw</span> <a class="code" href="class_self_test_failure.html">SelfTestFailure</a>(signer.<a class="code" href="class_algorithm.html#_zlib_decompressora17">AlgorithmName</a>() + <span class="stringliteral">": pairwise consistency test failed"</span>);00197         }00198 }00199 00200 <span class="keyword">template</span> &lt;<span class="keyword">class</span> SCHEME&gt;00201 <span class="keywordtype">void</span> SignaturePairwiseConsistencyTest(<span class="keyword">const</span> <span class="keywordtype">char</span> *key, SCHEME *dummy = NULL)00202 {00203         <span class="keyword">typename</span> SCHEME::Signer signer(<a class="code" href="class_string_source.html">StringSource</a>(key, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_hex_decoder.html">HexDecoder</a>).Ref());00204         <span class="keyword">typename</span> SCHEME::Verifier verifier(signer);00205 00206         SignaturePairwiseConsistencyTest(signer, verifier);00207 }00208 00209 <span class="keyword">static</span> <a class="code" href="class_message_authentication_code.html">MessageAuthenticationCode</a> * NewIntegrityCheckingMAC()00210 {00211         byte key[] = {0x47, 0x1E, 0x33, 0x96, 0x65, 0xB1, 0x6A, 0xED, 0x0B, 0xF8, 0x6B, 0xFD, 0x01, 0x65, 0x05, 0xCC};00212         <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="class_h_m_a_c.html">HMAC&lt;SHA1&gt;</a>(key, <span class="keyword">sizeof</span>(key));00213 }00214 00215 <span class="keywordtype">void</span> DoPowerUpSelfTest(<span class="keyword">const</span> <span class="keywordtype">char</span> *moduleFilename, <span class="keyword">const</span> byte *expectedModuleMac)00216 {00217         g_powerUpSelfTestStatus = POWER_UP_SELF_TEST_NOT_DONE;00218         SetPowerUpSelfTestInProgressOnThisThread(<span class="keyword">true</span>);00219 

⌨️ 快捷键说明

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