📄 filters_8h-source.html
字号:
00324 00325 <span class="keyword">private</span>:00326 <a class="code" href="class_random_number_generator.html">RandomNumberGenerator</a> &m_rng;00327 <span class="keyword">const</span> <a class="code" href="class_p_k___signer.html">PK_Signer</a> &m_signer;00328 member_ptr<HashTransformation> m_messageAccumulator;00329 <span class="keywordtype">bool</span> m_putMessage;00330 <a class="code" href="class_sec_block.html">SecByteBlock</a> m_buf;00331 };00332 <span class="comment"></span>00333 <span class="comment">//! Filter Wrapper for PK_Verifier</span><a name="l00334"></a><a class="code" href="class_signature_verification_filter.html">00334</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL SignatureVerificationFilter : <span class="keyword">public</span> FilterWithBufferedInput00335 {00336 <span class="keyword">public</span>:00337 <span class="keyword">class </span>SignatureVerificationFailed : <span class="keyword">public</span> <a class="code" href="class_exception.html">Exception</a>00338 {00339 <span class="keyword">public</span>:00340 SignatureVerificationFailed()00341 : <a class="code" href="class_exception.html">Exception</a>(DATA_INTEGRITY_CHECK_FAILED, <span class="stringliteral">"VerifierFilter: digital signature not valid"</span>) {}00342 };00343 00344 <span class="keyword">enum</span> Flags {SIGNATURE_AT_BEGIN=1, PUT_MESSAGE=2, PUT_SIGNATURE=4, PUT_RESULT=8, THROW_EXCEPTION=16, DEFAULT_FLAGS = SIGNATURE_AT_BEGIN | PUT_RESULT};00345 SignatureVerificationFilter(<span class="keyword">const</span> <a class="code" href="class_p_k___verifier.html">PK_Verifier</a> &verifier, <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attachment = NULL, word32 flags = DEFAULT_FLAGS);00346 00347 <span class="keywordtype">bool</span> GetLastResult()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_verified;}00348 00349 <span class="keyword">protected</span>:00350 <span class="keywordtype">void</span> InitializeDerivedAndReturnNewSizes(<span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html">NameValuePairs</a> &parameters, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &firstSize, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &blockSize, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &lastSize);00351 <span class="keywordtype">void</span> FirstPut(<span class="keyword">const</span> byte *inString);00352 <span class="keywordtype">void</span> NextPutMultiple(<span class="keyword">const</span> byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length);00353 <span class="keywordtype">void</span> LastPut(<span class="keyword">const</span> byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length);00354 00355 <span class="keyword">private</span>:00356 <span class="keyword">const</span> <a class="code" href="class_p_k___verifier.html">PK_Verifier</a> &m_verifier;00357 member_ptr<HashTransformation> m_messageAccumulator;00358 word32 m_flags;00359 <a class="code" href="class_sec_block.html">SecByteBlock</a> m_signature;00360 <span class="keywordtype">bool</span> m_verified;00361 };00362 00363 <span class="keyword">typedef</span> SignatureVerificationFilter <a class="code" href="class_signature_verification_filter.html">VerifierFilter</a>; <span class="comment">// for backwards compatibility</span>00364 <span class="comment"></span>00365 <span class="comment">//! Redirect input to another BufferedTransformation without owning it</span><a name="l00366"></a><a class="code" href="class_redirector.html">00366</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL Redirector : <span class="keyword">public</span> CustomSignalPropagation<Sink>00367 {00368 <span class="keyword">public</span>:00369 Redirector() : m_target(NULL), m_passSignal(<span class="keyword">true</span>) {}00370 Redirector(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &target, <span class="keywordtype">bool</span> passSignal=<span class="keyword">true</span>) : m_target(&target), m_passSignal(passSignal) {}00371 00372 <span class="keywordtype">void</span> Redirect(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &target) {m_target = &target;}00373 <span class="keywordtype">void</span> StopRedirection() {m_target = NULL;}00374 <span class="keywordtype">bool</span> GetPassSignal()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_passSignal;}00375 <span class="keywordtype">void</span> SetPassSignal(<span class="keywordtype">bool</span> passSignal) {m_passSignal = passSignal;}00376 <a name="l00377"></a><a class="code" href="class_redirector.html#_redirectora6">00377</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Put2(<span class="keyword">const</span> byte *begin, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length, <span class="keywordtype">int</span> messageEnd, <span class="keywordtype">bool</span> blocking)00378 {<span class="keywordflow">return</span> m_target ? m_target-><a class="code" href="class_buffered_transformation.html#_unflushable_3_01_sink_01_4z1_9">Put2</a>(begin, length, m_passSignal ? messageEnd : 0, blocking) : 0;}<a name="l00379"></a><a class="code" href="class_redirector.html#_redirectora7">00379</a> <span class="keywordtype">void</span> Initialize(<span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html">NameValuePairs</a> &parameters, <span class="keywordtype">int</span> propagation)00380 {ChannelInitialize(NULL_CHANNEL, parameters, propagation);}<a name="l00381"></a><a class="code" href="class_redirector.html#_redirectora8">00381</a> <span class="keywordtype">bool</span> Flush(<span class="keywordtype">bool</span> hardFlush, <span class="keywordtype">int</span> propagation=-1, <span class="keywordtype">bool</span> blocking=<span class="keyword">true</span>)00382 {<span class="keywordflow">return</span> m_target && m_passSignal ? m_target->Flush(hardFlush, propagation, blocking) : <span class="keyword">false</span>;}<a name="l00383"></a><a class="code" href="class_redirector.html#_redirectora9">00383</a> <span class="keywordtype">bool</span> MessageSeriesEnd(<span class="keywordtype">int</span> propagation=-1, <span class="keywordtype">bool</span> blocking=<span class="keyword">true</span>)00384 {<span class="keywordflow">return</span> m_target && m_passSignal ? m_target->MessageSeriesEnd(propagation, blocking) : <span class="keyword">false</span>;}00385 00386 <span class="keywordtype">void</span> ChannelInitialize(<span class="keyword">const</span> std::string &channel, <span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html">NameValuePairs</a> &parameters=g_nullNameValuePairs, <span class="keywordtype">int</span> propagation=-1);00387 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ChannelPut2(<span class="keyword">const</span> std::string &channel, <span class="keyword">const</span> byte *begin, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length, <span class="keywordtype">int</span> messageEnd, <span class="keywordtype">bool</span> blocking)00388 {<span class="keywordflow">return</span> m_target ? m_target->ChannelPut2(channel, begin, length, m_passSignal ? messageEnd : 0, blocking) : 0;}00389 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ChannelPutModifiable2(<span class="keyword">const</span> std::string &channel, byte *begin, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length, <span class="keywordtype">int</span> messageEnd, <span class="keywordtype">bool</span> blocking)00390 {<span class="keywordflow">return</span> m_target ? m_target->ChannelPutModifiable2(channel, begin, length, m_passSignal ? messageEnd : 0, blocking) : 0;}00391 <span class="keywordtype">bool</span> ChannelFlush(<span class="keyword">const</span> std::string &channel, <span class="keywordtype">bool</span> completeFlush, <span class="keywordtype">int</span> propagation=-1, <span class="keywordtype">bool</span> blocking=<span class="keyword">true</span>)00392 {<span class="keywordflow">return</span> m_target && m_passSignal ? m_target->ChannelFlush(channel, completeFlush, propagation, blocking) : false;}00393 <span class="keywordtype">bool</span> ChannelMessageSeriesEnd(<span class="keyword">const</span> std::string &channel, <span class="keywordtype">int</span> propagation=-1, <span class="keywordtype">bool</span> blocking=<span class="keyword">true</span>)00394 {<span class="keywordflow">return</span> m_target && m_passSignal ? m_target->ChannelMessageSeriesEnd(channel, propagation, blocking) : false;}00395 00396 <span class="keyword">private</span>:00397 <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *m_target;00398 <span class="keywordtype">bool</span> m_passSignal;00399 };00400 00401 <span class="comment">// Used By ProxyFilter</span>00402 <span class="keyword">class </span>CRYPTOPP_DLL OutputProxy : <span class="keyword">public</span> CustomSignalPropagation<Sink>00403 {00404 <span class="keyword">public</span>:00405 OutputProxy(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &owner, <span class="keywordtype">bool</span> passSignal) : m_owner(owner), m_passSignal(passSignal) {}00406 00407 <span class="keywordtype">bool</span> GetPassSignal()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_passSignal;}00408 <span class="keywordtype">void</span> SetPassSignal(<span class="keywordtype">bool</span> passSignal) {m_passSignal = passSignal;}00409 00410 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Put2(<span class="keyword">const</span> byte *begin, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length, <span class="keywordtype">int</span> messageEnd, <span class="keywordtype">bool</span> blocking)00411 {<span class="keywordflow">return</span> m_owner.AttachedTransformation()->Put2(begin, length, m_passSignal ? messageEnd : 0, blocking);}00412 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> PutModifiable2(byte *begin, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length, <span class="keywordtype">int</span> messageEnd, <span class="keywordtype">bool</span> blocking)00413 {<span class="keywordflow">return</span> m_owner.AttachedTransformation()->PutModifiable2(begin, length, m_passSignal ? messageEnd : 0, blocking);}00414 <span class="keywordtype">void</span> Initialize(<span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html">NameValuePairs</a> &parameters=g_nullNameValuePairs, <span class="keywordtype">int</span> propagation=-1)00415 {<span class="keywordflow">if</span> (m_passSignal) m_owner.AttachedTransformation()->Initialize(parameters, propagation);}00416 <span class="keywordtype">bool</span> Flush(<span class="keywordtype">bool</span> hardFlush, <span class="keywordtype">int</span> propagation=-1, <span class="keywordtype">bool</span> blocking=<span class="keyword">true</span>)00417 {<span class="keywordflow">return</span> m_passSignal ? m_owner.AttachedTransformation()->Flush(hardFlush, propagation, blocking) : false;}00418 <span class="keywordtype">bool</span> MessageSeriesEnd(<span class="keywordtype">int</span> propagation=-1, <span class="keywordtype">bool</span> blocking=<span class="keyword">true</span>)00419 {<span class="keywordflow">return</span> m_passSignal ? m_owner.AttachedTransformation()->MessageSeriesEnd(propagation, blocking) : false;}00420 00421 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ChannelPut2(<span class="keyword">const</span> std::string &channel, <span class="keyword">const</span> byte *begin, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length, <span class="keywordtype">int</span> messageEnd, <span class="keywordtype">bool</span> blocking)00422 {<span class="keywordflow">return</span> m_owner.AttachedTransformation()->ChannelPut2(channel, begin, length, m_passSignal ? messageEnd : 0, blocking);}00423 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ChannelPutModifiable2(<span class="keyword">const</span> std::string &channel, byte *begin, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length, <span class="keywordtype">int</span> messageEnd, <span class="keywordtype">bool</span> blocking)00424 {<span class="keywordflow">return</span> m_owner.AttachedTransformation()->ChannelPutModifiable2(channel, begin, length, m_passSignal ? messageEnd : 0, blocking);}00425 <span class="keywordtype">void</span> ChannelInitialize(<span class="keyword">const</span> std::string &channel, <span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html">NameValuePairs</a> &parameters, <span class="keywordtype">int</span> propagation=-1)00426 {<span class="keywordflow">if</span> (m_passSignal) m_owner.AttachedTransformation()->ChannelInitialize(channel, parameters, propagation);}00427 <span class="keywordtype">bool</span> ChannelFlush(<span class="keyword">const</span> std::string &channel, <span class="keywordtype">bool</span> completeFlush, <span class="keywordtype">int</span> propagation=-1, <span class="keywordtype">bool</span> blocking=<span class="keyword">true</span>)00428 {<span class="keywordflow">return</span> m_passSignal ? m_owner.AttachedTransformation()->ChannelFlush(channel, completeFlush, propagation, blocking) : false;}00429 <span class="keywordtype">bool</span> ChannelMessageSeriesEnd(<span class="keyword">const</span> std::string &channel, <span class="keywordtype">int</span> propagation=-1, <span class="keywordtype">bool</span> blocking=<span class="keyword">true</span>)00430 {<span class="keywordflow">return</span> m_passSignal ? m_owner.AttachedTransformation()->ChannelMessageSeriesEnd(channel, propagation, blocking) : false;}00431 00432 <span class="keyword">private</span>:00433 <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &m_owner;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -