📄 pubkey_8h-source.html
字号:
<a name="l00320"></a><a class="code" href="class_t_f___signature_scheme_base.html#db5ef45069481de1ceca75a847aa37f4">00320</a> <span class="keywordtype">bool</span> IsProbabilistic()<span class="keyword"> const </span><a name="l00321"></a>00321 <span class="keyword"> </span>{<span class="keywordflow">return</span> this->GetTrapdoorFunctionInterface().IsRandomized() || this->GetMessageEncodingInterface().IsProbabilistic();}<a name="l00322"></a><a class="code" href="class_t_f___signature_scheme_base.html#83670675d672a58290d7b5ca2e00b0d4">00322</a> <span class="keywordtype">bool</span> AllowNonrecoverablePart()<span class="keyword"> const </span><a name="l00323"></a>00323 <span class="keyword"> </span>{<span class="keywordflow">return</span> this->GetMessageEncodingInterface().AllowNonrecoverablePart();}<a name="l00324"></a><a class="code" href="class_t_f___signature_scheme_base.html#7c241a57d4fc44139867e3c7b576884e">00324</a> <span class="keywordtype">bool</span> RecoverablePartFirst()<span class="keyword"> const </span><a name="l00325"></a>00325 <span class="keyword"> </span>{<span class="keywordflow">return</span> this->GetMessageEncodingInterface().RecoverablePartFirst();}<a name="l00326"></a>00326 <a name="l00327"></a>00327 <span class="keyword">protected</span>:<a name="l00328"></a><a class="code" href="class_t_f___signature_scheme_base.html#2bf7feb3520b0cb95bc28173309d9d55">00328</a> <span class="keywordtype">size_t</span> MessageRepresentativeLength()<span class="keyword"> const </span>{<span class="keywordflow">return</span> BitsToBytes(MessageRepresentativeBitLength());}<a name="l00329"></a><a class="code" href="class_t_f___signature_scheme_base.html#acc39dfaa15c562803f9517d5326bd70">00329</a> <span class="keywordtype">size_t</span> MessageRepresentativeBitLength()<span class="keyword"> const </span>{<span class="keywordflow">return</span> this->GetTrapdoorFunctionBounds().ImageBound().BitCount()-1;}<a name="l00330"></a>00330 <span class="keyword">virtual</span> <a class="code" href="pubkey_8h.html#ef874ed3f2d212ac4629255c8ef86dd0">HashIdentifier</a> GetHashIdentifier() <span class="keyword">const</span> =0;<a name="l00331"></a>00331 <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> GetDigestSize() <span class="keyword">const</span> =0;<a name="l00332"></a>00332 };<a name="l00333"></a>00333 <span class="comment"></span><a name="l00334"></a>00334 <span class="comment">//! _</span><a name="l00335"></a><a class="code" href="class_t_f___signer_base.html">00335</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL CRYPTOPP_NO_VTABLE TF_SignerBase : <span class="keyword">public</span> TF_SignatureSchemeBase<PK_Signer, TF_Base<RandomizedTrapdoorFunctionInverse, PK_SignatureMessageEncodingMethod> ><a name="l00336"></a>00336 {<a name="l00337"></a>00337 <span class="keyword">public</span>:<a name="l00338"></a>00338 <span class="keywordtype">void</span> InputRecoverableMessage(<a class="code" href="class_p_k___message_accumulator.html" title="interface for accumulating messages to be signed or verified">PK_MessageAccumulator</a> &messageAccumulator, <span class="keyword">const</span> byte *recoverableMessage, <span class="keywordtype">size_t</span> recoverableMessageLength) <span class="keyword">const</span>;<a name="l00339"></a>00339 <span class="keywordtype">size_t</span> SignAndRestart(<a class="code" href="class_random_number_generator.html" title="interface for random number generators">RandomNumberGenerator</a> &rng, <a class="code" href="class_p_k___message_accumulator.html" title="interface for accumulating messages to be signed or verified">PK_MessageAccumulator</a> &messageAccumulator, byte *signature, <span class="keywordtype">bool</span> restart=<span class="keyword">true</span>) <span class="keyword">const</span>;<a name="l00340"></a>00340 };<a name="l00341"></a>00341 <span class="comment"></span><a name="l00342"></a>00342 <span class="comment">//! _</span><a name="l00343"></a><a class="code" href="class_t_f___verifier_base.html">00343</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL CRYPTOPP_NO_VTABLE TF_VerifierBase : <span class="keyword">public</span> TF_SignatureSchemeBase<PK_Verifier, TF_Base<TrapdoorFunction, PK_SignatureMessageEncodingMethod> ><a name="l00344"></a>00344 {<a name="l00345"></a>00345 <span class="keyword">public</span>:<a name="l00346"></a>00346 <span class="keywordtype">void</span> InputSignature(<a class="code" href="class_p_k___message_accumulator.html" title="interface for accumulating messages to be signed or verified">PK_MessageAccumulator</a> &messageAccumulator, <span class="keyword">const</span> byte *signature, <span class="keywordtype">size_t</span> signatureLength) <span class="keyword">const</span>;<a name="l00347"></a>00347 <span class="keywordtype">bool</span> VerifyAndRestart(<a class="code" href="class_p_k___message_accumulator.html" title="interface for accumulating messages to be signed or verified">PK_MessageAccumulator</a> &messageAccumulator) <span class="keyword">const</span>;<a name="l00348"></a>00348 <a class="code" href="struct_decoding_result.html" title="used to return decoding results">DecodingResult</a> RecoverAndRestart(byte *recoveredMessage, <a class="code" href="class_p_k___message_accumulator.html" title="interface for accumulating messages to be signed or verified">PK_MessageAccumulator</a> &recoveryAccumulator) <span class="keyword">const</span>;<a name="l00349"></a>00349 };<a name="l00350"></a>00350 <a name="l00351"></a>00351 <span class="comment">// ********************************************************</span><a name="l00352"></a>00352 <span class="comment"></span><a name="l00353"></a>00353 <span class="comment">//! _</span><a name="l00354"></a>00354 <span class="comment"></span><span class="keyword">template</span> <<span class="keyword">class</span> T1, <span class="keyword">class</span> T2, <span class="keyword">class</span> T3><a name="l00355"></a><a class="code" href="struct_t_f___crypto_scheme_options.html">00355</a> <span class="keyword">struct </span><a class="code" href="struct_t_f___crypto_scheme_options.html" title="_">TF_CryptoSchemeOptions</a><a name="l00356"></a>00356 {<a name="l00357"></a><a class="code" href="struct_t_f___crypto_scheme_options.html#45271ca0b9eb6eb74e575799c001120c">00357</a> <span class="keyword">typedef</span> T1 <a class="code" href="struct_t_f___crypto_scheme_options.html#45271ca0b9eb6eb74e575799c001120c">AlgorithmInfo</a>;<a name="l00358"></a><a class="code" href="struct_t_f___crypto_scheme_options.html#a8e23577d1b6915ce323c01e633ee085">00358</a> <span class="keyword">typedef</span> T2 <a class="code" href="struct_t_f___crypto_scheme_options.html#a8e23577d1b6915ce323c01e633ee085">Keys</a>;<a name="l00359"></a><a class="code" href="struct_t_f___crypto_scheme_options.html#6b22527dbbff834c230d3525621dd92b">00359</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> Keys::PrivateKey <a class="code" href="class_private_key.html" title="interface for private keys">PrivateKey</a>;<a name="l00360"></a><a class="code" href="struct_t_f___crypto_scheme_options.html#eaee2863edb847236270f02ac101bd8f">00360</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> Keys::PublicKey <a class="code" href="class_public_key.html" title="interface for public keys">PublicKey</a>;<a name="l00361"></a><a class="code" href="struct_t_f___crypto_scheme_options.html#22cd3ac40209580e2437a104cb4d948b">00361</a> <span class="keyword">typedef</span> T3 <a class="code" href="struct_t_f___crypto_scheme_options.html#22cd3ac40209580e2437a104cb4d948b">MessageEncodingMethod</a>;<a name="l00362"></a>00362 };<a name="l00363"></a>00363 <span class="comment"></span><a name="l00364"></a>00364 <span class="comment">//! _</span><a name="l00365"></a>00365 <span class="comment"></span><span class="keyword">template</span> <<span class="keyword">class</span> T1, <span class="keyword">class</span> T2, <span class="keyword">class</span> T3, <span class="keyword">class</span> T4><a name="l00366"></a><a class="code" href="struct_t_f___signature_scheme_options.html">00366</a> <span class="keyword">struct </span><a class="code" href="struct_t_f___signature_scheme_options.html" title="_">TF_SignatureSchemeOptions</a> : <span class="keyword">public</span> <a class="code" href="struct_t_f___crypto_scheme_options.html" title="_">TF_CryptoSchemeOptions</a><T1, T2, T3><a name="l00367"></a>00367 {<a name="l00368"></a><a class="code" href="struct_t_f___signature_scheme_options.html#40b683fbd46e943488506ce36ab46f5d">00368</a> <span class="keyword">typedef</span> T4 <a class="code" href="class_hash_transformation.html" title="interface for hash functions and data processing part of MACs">HashFunction</a>;<a name="l00369"></a>00369 };<a name="l00370"></a>00370 <span class="comment"></span><a name="l00371"></a>00371 <span class="comment">//! _</span><a name="l00372"></a>00372 <span class="comment"></span><span class="keyword">template</span> <<span class="keyword">class</span> BASE, <span class="keyword">class</span> SCHEME_OPTIONS, <span class="keyword">class</span> KEY_CLASS><a name="l00373"></a><a class="code" href="class_t_f___object_impl_base.html">00373</a> <span class="keyword">class </span>CRYPTOPP_NO_VTABLE TF_ObjectImplBase : <span class="keyword">public</span> <a class="code" href="class_algorithm_impl.html" title="_">AlgorithmImpl</a><BASE, typename SCHEME_OPTIONS::AlgorithmInfo><a name="l00374"></a>00374 {<a name="l00375"></a>00375 <span class="keyword">public</span>:<a name="l00376"></a><a class="code" href="class_t_f___object_impl_base.html#e64f334064fec62ccf88a3688333c21a">00376</a> <span class="keyword">typedef</span> SCHEME_OPTIONS SchemeOptions;<a name="l00377"></a><a class="code" href="class_t_f___object_impl_base.html#92a7cbe2cb6127a5312e874bddf12565">00377</a> <span class="keyword">typedef</span> KEY_CLASS KeyClass;<a name="l00378"></a>00378 <a name="l00379"></a><a class="code" href="class_t_f___object_impl_base.html#a07a0724bf36c08f3d1c1b0680a9b88f">00379</a> <a class="code" href="class_public_key.html" title="interface for public keys">PublicKey</a> & AccessPublicKey() {<span class="keywordflow">return</span> AccessKey();}<a name="l00380"></a><a class="code" href="class_t_f___object_impl_base.html#87222953f7ec3b30e9193c30ae82cf4b">00380</a> <span class="keyword">const</span> <a class="code" href="class_public_key.html" title="interface for public keys">PublicKey</a> & GetPublicKey()<span class="keyword"> const </span>{<span class="keywordflow">return</span> GetKey();}<a name="l00381"></a>00381 <a name="l00382"></a><a class="code" href="class_t_f___object_impl_base.html#a33ca21885a25e0caff6cbf6e723f6c7">00382</a> <a class="code" href="class_private_key.html" title="interface for private keys">PrivateKey</a> & AccessPrivateKey() {<span class="keywordflow">return</span> AccessKey();}<a name="l00383"></a><a class="code" href="class_t_f___object_impl_base.html#ffbf573151ed2a07a3cac04b134db5e0">00383</a> <span class="keyword">const</span> <a class="code" href="class_private_key.html" title="interface for private keys">PrivateKey</a> & GetPrivateKey()<span class="keyword"> const </span>{<span class="keywordflow">return</span> GetKey();}<a name="l00384"></a>00384 <a name="l00385"></a>00385 <span class="keyword">virtual</span> <span class="keyword">const</span> KeyClass & GetKey() <span class="keyword">const</span> =0;<a name="l00386"></a>00386 <span class="keyword">virtual</span> KeyClass & AccessKey() =0;<a name="l00387"></a>00387 <a name="l00388"></a><a class="code" href="class_t_f___object_impl_base.html#1b2171ddcdfbf0db3ef7e0e0d7c1d1f4">00388</a> <span class="keyword">const</span> KeyClass & GetTrapdoorFunction()<span class="keyword"> const </span>{<span class="keywordflow">return</span> GetKey();}<a name="l00389"></a>00389 <a name="l00390"></a><a class="code" href="class_t_f___object_impl_base.html#c4450ac1539e2fbcc1b25b19d2b82afd">00390</a> <a class="code" href="class_p_k___message_accumulator.html" title="interface for accumulating messages to be signed or verified">PK_MessageAccumulator</a> * NewSignatureAccumulator(<a class="code" href="class_random_number_generator.html" title="interface for random number generators">RandomNumberGenerator</a> &rng)<span class="keyword"> const</span><a name="l00391"></a>00391 <span class="keyword"> </span>{<a name="l00392"></a>00392 <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="class_p_k___message_accumulator_impl.html">PK_MessageAccumulatorImpl<CPP_TYPENAME SCHEME_OPTIONS::HashFunction></a>;<a name="l00393"></a>00393 }<a name="l00394"></a><a class="code" href="class_t_f___object_impl_base.html#d1d1e62dfe8aa6ef6d2ed5d9306b4aff">00394</a> <a class="code" href="class_p_k___message_accumulator.html" title="interface for accumulating messages to be signed or verified">PK_MessageAccumulator</a> * NewVerificationAccumulator()<span class="keyword"> const</span><a name="l00395"></a>00395 <span class="keyword"> </span>{<a name="l00396"></a>00396 <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="class_p_k___message_accumulator_impl.html">PK_MessageAccumulatorImpl<CPP_TYPENAME SCHEME_OPTIONS::HashFunction></a>;<a name="l00397"></a>00397 }<a name="l00398"></a>00398 <a name="l00399"></a>00399 <span class="keyword">protected</span>:<a name="l00400"></a><a class="code" href="class_t_f___object_impl_base.html#5b080803c6d7ac0b15a2a0681fe079f6">00400</a> <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="class_p_k___signature_message_encoding_method.html" title="interface for message encoding method for public key signature schemes">BASE::MessageEncodingInterface</a> & GetMessageEncodingInterface()<span class="keyword"> const </span><a name="l00401"></a>00401 <span class="keyword"> </span>{<span class="keywordflow">return</span> <a class="code" href="class_singleton.html">Singleton<CPP_TYPENAME SCHEME_OPTIONS::MessageEncodingMethod></a>().Ref();}<a name="l00402"></a><a class="code" href="class_t_f___object_impl_base.html#d002a63639d754a3c593a84313f9570c">00402</a> <span class="keyword">const</span> <a class="code" href="class_trapdoor_function_bounds.html" title="_">TrapdoorFunctionBoun
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -