📄 fipstest_8cpp-source.html
字号:
00107 00108 <span class="keyword">template</span> <<span class="keyword">class</span> HASH>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> <<span class="keyword">class</span> MAC>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> <<span class="keyword">class</span> SCHEME>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> &encryptor, <span class="keyword">const</span> <a class="code" href="class_p_k___decryptor.html">PK_Decryptor</a> &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<DES_EDE3></a> rng;00150 <span class="preprocessor">#else</span>00151 <span class="preprocessor"></span> <a class="code" href="class_random_number_generator.html">RandomNumberGenerator</a> &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> &signer, <span class="keyword">const</span> <a class="code" href="class_p_k___verifier.html">PK_Verifier</a> &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<DES_EDE3></a> rng;00181 <span class="preprocessor">#else</span>00182 <span class="preprocessor"></span> <a class="code" href="class_random_number_generator.html">RandomNumberGenerator</a> &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> <<span class="keyword">class</span> SCHEME>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<SHA1></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 + -