<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>Crypto++: PK_Signer class Reference</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.3.7 --> <div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div> <h1>PK_Signer Class Reference</h1><code>#include <<a class="el" href="cryptlib_8h-source.html">cryptlib.h</a>></code> <p> <p>Inheritance diagram for PK_Signer: <p><center><img src="class_p_k___signer.png" usemap="#PK_Signer_map" border="0" alt=""></center> <map name="PK_Signer_map"> <area href="class_p_k___signature_scheme.html" alt="PK_SignatureScheme" shape="rect" coords="535,168,1595,192"> <area href="class_private_key_algorithm.html" alt="PrivateKeyAlgorithm" shape="rect" coords="1605,168,2665,192"> <area href="class_asymmetric_algorithm.html" alt="AsymmetricAlgorithm" shape="rect" coords="1605,112,2665,136"> <area href="class_algorithm.html" alt="Algorithm" shape="rect" coords="1605,56,2665,80"> <area href="class_clonable.html" alt="Clonable" shape="rect" coords="1605,0,2665,24"> <area href="class_d_l___signature_scheme_base.html" alt="DL_SignatureSchemeBase< PK_Signer, DL_PrivateKey< SCHEME_OPTIONS::Element > >" shape="rect" coords="0,280,1060,304"> <area href="class_d_l___signature_scheme_base.html" alt="DL_SignatureSchemeBase< PK_Signer, DL_PrivateKey< T > >" shape="rect" coords="1070,280,2130,304"> <area href="class_t_f___signature_scheme_base.html" alt="TF_SignatureSchemeBase< PK_Signer, TF_Base< RandomizedTrapdoorFunctionInverse, PK_SignatureMessageEncodingMethod > >" shape="rect" coords="2140,280,3200,304"> <area href="class_d_l___signer_base.html" alt="DL_SignerBase< SCHEME_OPTIONS::Element >" shape="rect" coords="0,336,1060,360"> <area href="class_d_l___signer_base.html" alt="DL_SignerBase< T >" shape="rect" coords="1070,336,2130,360"> <area href="class_t_f___signer_base.html" alt="TF_SignerBase" shape="rect" coords="2140,336,3200,360"> <area href="class_algorithm_impl.html" alt="AlgorithmImpl< DL_SignerBase< SCHEME_OPTIONS::Element >, SCHEME_OPTIONS::AlgorithmInfo >" shape="rect" coords="0,392,1060,416"> <area href="class_two_bases.html" alt="TwoBases< TF_SignerBase, PrivateKeyCopier< SCHEME_OPTIONS::Keys > >" shape="rect" coords="2140,392,3200,416"> <area href="class_d_l___object_impl_base.html" alt="DL_ObjectImplBase< DL_SignerBase< SCHEME_OPTIONS::Element >, SCHEME_OPTIONS, SCHEME_OPTIONS::PrivateKey >" shape="rect" coords="0,448,1060,472"> <area href="class_algorithm_impl.html" alt="AlgorithmImpl< TwoBases< TF_SignerBase, PrivateKeyCopier< SCHEME_OPTIONS::Keys > >, SCHEME_OPTIONS::AlgorithmInfo >" shape="rect" coords="2140,448,3200,472"> <area href="class_d_l___object_impl.html" alt="DL_ObjectImpl< DL_SignerBase< SCHEME_OPTIONS::Element >, SCHEME_OPTIONS, SCHEME_OPTIONS::PrivateKey >" shape="rect" coords="0,504,1060,528"> <area href="class_t_f___object_impl_base.html" alt="TF_ObjectImplBase< TwoBases< TF_SignerBase, PrivateKeyCopier< SCHEME_OPTIONS::Keys > >, SCHEME_OPTIONS, PrivateKeyCopier< SCHEME_OPTIONS::Keys >::KeyClass >" shape="rect" coords="2140,504,3200,528"> <area href="class_d_l___private_object_impl.html" alt="DL_PrivateObjectImpl< DL_SignerBase< SCHEME_OPTIONS::Element >, SCHEME_OPTIONS >" shape="rect" coords="0,560,1060,584"> <area href="class_t_f___object_impl.html" alt="TF_ObjectImpl< TF_SignerBase, SCHEME_OPTIONS, PrivateKeyCopier< SCHEME_OPTIONS::Keys > >" shape="rect" coords="2140,560,3200,584"> <area href="class_d_l___signer_impl.html" alt="DL_SignerImpl< SCHEME_OPTIONS >" shape="rect" coords="0,616,1060,640"> <area href="class_t_f___signer_impl.html" alt="TF_SignerImpl< SCHEME_OPTIONS >" shape="rect" coords="2140,616,3200,640"> </map> <a href="class_p_k___signer-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2> interface for public-key signers <p> <p> Definition at line <a class="el" href="cryptlib_8h-source.html#l01264">1264</a> of file <a class="el" href="cryptlib_8h-source.html">cryptlib.h</a>.<table border=0 cellpadding=0 cellspacing=0> <tr><td></td></tr> <tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_two_bases_3_01_t_f___signer_base_00_01_private_key_copier_3_01_s_c_h_e_m_e___o_p_t_i_o_n_s_1_1_keys_01_4_01_4a8" doxytag="PK_Signer::NewSignatureAccumulator" ></a> virtual <a class="el" href="class_p_k___message_accumulator.html">PK_MessageAccumulator</a> * </td><td class="memItemRight" valign=bottom><a class="el" href="class_p_k___signer.html#_two_bases_3_01_t_f___signer_base_00_01_private_key_copier_3_01_s_c_h_e_m_e___o_p_t_i_o_n_s_1_1_keys_01_4_01_4a8">NewSignatureAccumulator</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng) const =0</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">create a new <a class="el" href="class_hash_transformation.html">HashTransformation</a> to accumulate the message to be signed <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_t_f___signature_scheme_base_3_01_p_k___signer_00_01_t_f___base_3_01_randomized_trapdoor_function_inverse_00_01_p_k___signature_message_encoding_method_01_4_01_4a7" doxytag="PK_Signer::InputRecoverableMessage" ></a> virtual void </td><td class="memItemRight" valign=bottom><b>InputRecoverableMessage</b> (<a class="el" href="class_p_k___message_accumulator.html">PK_MessageAccumulator</a> &messageAccumulator, const byte *recoverableMessage, unsigned int recoverableMessageLength) const =0</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>virtual unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="class_p_k___signer.html#_two_bases_3_01_t_f___signer_base_00_01_private_key_copier_3_01_s_c_h_e_m_e___o_p_t_i_o_n_s_1_1_keys_01_4_01_4a9">Sign</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, <a class="el" href="class_p_k___message_accumulator.html">PK_MessageAccumulator</a> *messageAccumulator, byte *signature) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">sign and delete messageAccumulator (even in case of exception thrown) <a href="#_two_bases_3_01_t_f___signer_base_00_01_private_key_copier_3_01_s_c_h_e_m_e___o_p_t_i_o_n_s_1_1_keys_01_4_01_4a9"></a><br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>virtual unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="class_p_k___signer.html#_t_f___signature_scheme_base_3_01_p_k___signer_00_01_t_f___base_3_01_randomized_trapdoor_function_inverse_00_01_p_k___signature_message_encoding_method_01_4_01_4a9">SignAndRestart</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, <a class="el" href="class_p_k___message_accumulator.html">PK_MessageAccumulator</a> &messageAccumulator, byte *signature, bool restart=true) const =0</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">sign and restart messageAccumulator <a href="#_t_f___signature_scheme_base_3_01_p_k___signer_00_01_t_f___base_3_01_randomized_trapdoor_function_inverse_00_01_p_k___signature_message_encoding_method_01_4_01_4a9"></a><br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>virtual unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="class_p_k___signer.html#_two_bases_3_01_t_f___signer_base_00_01_private_key_copier_3_01_s_c_h_e_m_e___o_p_t_i_o_n_s_1_1_keys_01_4_01_4a10">SignMessage</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, const byte *message, unsigned int messageLen, byte *signature) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">sign a message <a href="#_two_bases_3_01_t_f___signer_base_00_01_private_key_copier_3_01_s_c_h_e_m_e___o_p_t_i_o_n_s_1_1_keys_01_4_01_4a10"></a><br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>virtual unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="class_p_k___signer.html#_two_bases_3_01_t_f___signer_base_00_01_private_key_copier_3_01_s_c_h_e_m_e___o_p_t_i_o_n_s_1_1_keys_01_4_01_4a11">SignMessageWithRecovery</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, const byte *recoverableMessage, unsigned int recoverableMessageLength, const byte *nonrecoverableMessage, unsigned int nonrecoverableMessageLength, byte *signature) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">sign a recoverable message <a href="#_two_bases_3_01_t_f___signer_base_00_01_private_key_copier_3_01_s_c_h_e_m_e___o_p_t_i_o_n_s_1_1_keys_01_4_01_4a11"></a><br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_p_k___verifiera8" doxytag="PK_Signer::SignatureLength" ></a> virtual unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="class_p_k___signature_scheme.html#_p_k___verifiera8">SignatureLength</a> () const =0</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">signature length if it only depends on the key, otherwise 0 <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_two_bases_3_01_t_f___verifier_base_00_01_public_key_copier_3_01_s_c_h_e_m_e___o_p_t_i_o_n_s_1_1_keys_01_4_01_4a14" doxytag="PK_Signer::MaxSignatureLength" ></a> virtual unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="class_p_k___signature_scheme.html#_two_bases_3_01_t_f___verifier_base_00_01_public_key_copier_3_01_s_c_h_e_m_e___o_p_t_i_o_n_s_1_1_keys_01_4_01_4a14">MaxSignatureLength</a> (unsigned int recoverablePartLength=0) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">maximum signature length produced for a given length of recoverable message part <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_p_k___verifiera10" doxytag="PK_Signer::MaxRecoverableLength" ></a> virtual unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="class_p_k___signature_scheme.html#_p_k___verifiera10">MaxRecoverableLength</a> () const =0</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">length of longest message that can be recovered, or 0 if this signature scheme does not support message recovery <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_p_k___verifiera11" doxytag="PK_Signer::MaxRecoverableLengthFromSignatureLength" ></a> virtual unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="class_p_k___signature_scheme.html#_p_k___verifiera11">MaxRecoverableLengthFromSignatureLength</a> (unsigned int signatureLength) const =0</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">length of longest message that can be recovered from a signature of given length, or 0 if this signature scheme does not support message recovery <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>virtual bool </td><td class="memItemRight" valign=bottom><a class="el" href="class_p_k___signature_scheme.html#_p_k___verifiera12">IsProbabilistic</a> () const =0</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">requires a random number generator to sign <a href="#_p_k___verifiera12"></a><br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_p_k___verifiera13" doxytag="PK_Signer::AllowNonrecoverablePart" ></a> virtual bool </td><td class="memItemRight" valign=bottom><a class="el" href="class_p_k___signature_scheme.html#_p_k___verifiera13">AllowNonrecoverablePart</a> () const =0</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">whether or not a non-recoverable message part can be signed <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_two_bases_3_01_t_f___verifier_base_00_01_public_key_copier_3_01_s_c_h_e_m_e___o_p_t_i_o_n_s_1_1_keys_01_4_01_4a15" doxytag="PK_Signer::SignatureUpfront" ></a> virtual bool </td><td class="memItemRight" valign=bottom><a class="el" href="class_p_k___signature_scheme.html#_two_bases_3_01_t_f___verifier_base_00_01_public_key_copier_3_01_s_c_h_e_m_e___o_p_t_i_o_n_s_1_1_keys_01_4_01_4a15">SignatureUpfront</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">if this function returns true, during verification you must input the signature before the message, otherwise you can input it at anytime */ <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_p_k___verifiera15" doxytag="PK_Signer::RecoverablePartFirst" ></a> virtual bool </td><td class="memItemRight" valign=bottom><a class="el" href="class_p_k___signature_scheme.html#_p_k___verifiera15">RecoverablePartFirst</a> () const =0</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">whether you must input the recoverable part before the non-recoverable part during signing <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_two_bases_3_01_t_f___signer_base_00_01_private_key_copier_3_01_s_c_h_e_m_e___o_p_t_i_o_n_s_1_1_keys_01_4_01_4a14" doxytag="PK_Signer::AccessMaterial" ></a> <a class="el" href="class_crypto_material.html">CryptoMaterial</a> & </td><td class="memItemRight" valign=bottom><a class="el" href="class_private_key_algorithm.html#_two_bases_3_01_t_f___signer_base_00_01_private_key_copier_3_01_s_c_h_e_m_e___o_p_t_i_o_n_s_1_1_keys_01_4_01_4a14">AccessMaterial</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">returns a reference to the crypto material used by this object <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_two_bases_3_01_t_f___signer_base_00_01_private_key_copier_3_01_s_c_h_e_m_e___o_p_t_i_o_n_s_1_1_keys_01_4_01_4a15" doxytag="PK_Signer::GetMaterial" ></a> const <a class="el" href="class_crypto_material.html">CryptoMaterial</a> & </td><td class="memItemRight" valign=bottom><a class="el" href="class_private_key_algorithm.html#_two_bases_3_01_t_f___signer_base_00_01_private_key_copier_3_01_s_c_h_e_m_e___o_p_t_i_o_n_s_1_1_keys_01_4_01_4a15">GetMaterial</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">returns a const reference to the crypto material used by this object <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_two_bases_3_01_t_f___signer_base_00_01_private_key_copier_3_01_s_c_h_e_m_e___o_p_t_i_o_n_s_1_1_keys_01_4_01_4a16" doxytag="PK_Signer::AccessPrivateKey" ></a> virtual <a class="el" href="class_private_key.html">PrivateKey</a> & </td><td class="memItemRight" valign=bottom><b>AccessPrivateKey</b> ()=0</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_two_bases_3_01_t_f___signer_base_00_01_private_key_copier_3_01_s_c_h_e_m_e___o_p_t_i_o_n_s_1_1_keys_01_4_01_4a17" doxytag="PK_Signer::GetPrivateKey" ></a> virtual const <a class="el" href="class_private_key.html">PrivateKey</a> & </td><td class="memItemRight" valign=bottom><b>GetPrivateKey</b> () const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_t_r___d_ha24" doxytag="PK_Signer::BERDecode" ></a> void </td><td class="memItemRight" valign=bottom><a class="el" href="class_asymmetric_algorithm.html#_x_t_r___d_ha24">BERDecode</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &bt)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">for backwards compatibility, calls <a class="el" href="class_asymmetric_algorithm.html#_asymmetric_algorithma0">AccessMaterial()</a>.Load(bt) <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_two_bases_3_01_t_f___verifier_base_00_01_public_key_copier_3_01_s_c_h_e_m_e___o_p_t_i_o_n_s_1_1_keys_01_4_01_4a21" doxytag="PK_Signer::DEREncode" ></a> void </td><td class="memItemRight" valign=bottom><a class="el" href="class_asymmetric_algorithm.html#_two_bases_3_01_t_f___verifier_base_00_01_public_key_copier_3_01_s_c_h_e_m_e___o_p_t_i_o_n_s_1_1_keys_01_4_01_4a21">DEREncode</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &bt) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">for backwards compatibility, calls GetMaterial().Save(bt) <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_zlib_decompressora17" doxytag="PK_Signer::AlgorithmName" ></a> virtual std::string </td><td class="memItemRight" valign=bottom><a class="el" href="class_algorithm.html#_zlib_decompressora17">AlgorithmName</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">returns name of this algorithm, not universally implemented yet <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_zlib_decompressora18" doxytag="PK_Signer::Clone" ></a> virtual <a class="el" href="class_clonable.html">Clonable</a> * </td><td class="memItemRight" valign=bottom><a class="el" href="class_clonable.html#_zlib_decompressora18">Clone</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">this is not implemented by most classes yet <br><br></td></tr> </table> <hr><h2>Member Function Documentation</h2> <a class="anchor" name="_two_bases_3_01_t_f___signer_base_00_01_private_key_copier_3_01_s_c_h_e_m_e___o_p_t_i_o_n_s_1_1_keys_01_4_01_4a9" doxytag="PK_Signer::Sign" ></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> unsigned int PK_Signer::Sign </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> & </td> <td class="mdname" nowrap> <em>rng</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap><a class="el" href="class_p_k___message_accumulator.html">PK_MessageAccumulator</a> * </td> <td class="mdname" nowrap> <em>messageAccumulator</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>byte * </td> <td class="mdname" nowrap> <em>signature</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"> const<code> [virtual]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> sign and delete messageAccumulator (even in case of exception thrown) <p> <dl compact><dt><b>Precondition:</b></dt><dd>size of signature == MaxSignatureLength() </dd></dl> <dl compact><dt><b>Returns:</b></dt><dd>actual signature length</dd></dl> <p> Definition at line <a class="el" href="cryptlib_8cpp-source.html#l00615">615</a> of file <a class="el" href="cryptlib_8cpp-source.html">cryptlib.cpp</a>. <p> References <a class="el" href="cryptlib_8cpp-source.html#l00615">Sign()</a>, and <a class="el" href="class_p_k___signer.html#_t_f___signature_scheme_base_3_01_p_k___signer_00_01_t_f___base_3_01_randomized_trapdoor_function_inverse_00_01_p_k___signature_message_encoding_method_01_4_01_4a9">SignAndRestart()</a>. <p> Referenced by <a class="el" href="filters_8cpp-source.html#l00747">SignerFilter::Put2()</a>, and <a class="el" href="cryptlib_8cpp-source.html#l00615">Sign()</a>. </td> </tr> </table> <a class="anchor" name="_t_f___signature_scheme_base_3_01_p_k___signer_00_01_t_f___base_3_01_randomized_trapdoor_function_inverse_00_01_p_k___signature_message_encoding_method_01_4_01_4a9" doxytag="PK_Signer::SignAndRestart" ></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> virtual unsigned int PK_Signer::SignAndRestart </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> & </td> <td class="mdname" nowrap> <em>rng</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap><a class="el" href="class_p_k___message_accumulator.html">PK_MessageAccumulator</a> & </td> <td class="mdname" nowrap> <em>messageAccumulator</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>byte * </td> <td class="mdname" nowrap> <em>signature</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>bool </td> <td class="mdname" nowrap> <em>restart</em> = <code>true</code></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"> const<code> [pure virtual]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> sign and restart messageAccumulator <p> <dl compact><dt><b>Precondition:</b></dt><dd>size of signature == MaxSignatureLength() </dd></dl> <dl compact><dt><b>Returns:</b></dt><dd>actual signature length</dd></dl> <p> Implemented in <a class="el" href="class_t_f___signer_base.html#_two_bases_3_01_t_f___signer_base_00_01_private_key_copier_3_01_s_c_h_e_m_e___o_p_t_i_o_n_s_1_1_keys_01_4_01_4a1">TF_SignerBase</a>, <a class="el" href="class_d_l___signer_base.html#_d_l___signer_basea2">DL_SignerBase< T ></a>, and <a class="el" href="class_d_l___signer_base.html#_d_l___signer_basea2">DL_SignerBase< SCHEME_OPTIONS::Element ></a>. <p> Referenced by <a class="el" href="cryptlib_8cpp-source.html#l00615">Sign()</a>, <a class="el" href="cryptlib_8cpp-source.html#l00621">SignMessage()</a>, and <a class="el" href="cryptlib_8cpp-source.html#l00628">SignMessageWithRecovery()</a>. </td> </tr> </table> <a class="anchor" name="_two_bases_3_01_t_f___signer_base_00_01_private_key_copier_3_01_s_c_h_e_m_e___o_p_t_i_o_n_s_1_1_keys_01_4_01_4a10" doxytag="PK_Signer::SignMessage" ></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> unsigned int PK_Signer::SignMessage </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> & </td> <td class="mdname" nowrap> <em>rng</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>const byte * </td> <td class="mdname" nowrap> <em>message</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>unsigned int </td> <td class="mdname" nowrap> <em>messageLen</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>byte * </td> <td class="mdname" nowrap> <em>signature</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"> const<code> [virtual]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> sign a message <p> <dl compact><dt><b>Precondition:</b></dt><dd>size of signature == MaxSignatureLength() </dd></dl> <dl compact><dt><b>Returns:</b></dt><dd>actual signature length</dd></dl> <p> Definition at line <a class="el" href="cryptlib_8cpp-source.html#l00621">621</a> of file <a class="el" href="cryptlib_8cpp-source.html">cryptlib.cpp</a>. <p> References <a class="el" href="class_p_k___signer.html#_two_bases_3_01_t_f___signer_base_00_01_private_key_copier_3_01_s_c_h_e_m_e___o_p_t_i_o_n_s_1_1_keys_01_4_01_4a8">NewSignatureAccumulator()</a>, <a class="el" href="class_p_k___signer.html#_t_f___signature_scheme_base_3_01_p_k___signer_00_01_t_f___base_3_01_randomized_trapdoor_function_inverse_00_01_p_k___signature_message_encoding_method_01_4_01_4a9">SignAndRestart()</a>, and <a class="el" href="cryptlib_8cpp-source.html#l00621">SignMessage()</a>. <p> Referenced by <a class="el" href="cryptlib_8cpp-source.html#l00621">SignMessage()</a>. </td> </tr> </table> <a class="anchor" name="_two_bases_3_01_t_f___signer_base_00_01_private_key_copier_3_01_s_c_h_e_m_e___o_p_t_i_o_n_s_1_1_keys_01_4_01_4a11" doxytag="PK_Signer::SignMessageWithRecovery" ></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> unsigned int PK_Signer::SignMessageWithRecovery </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> & </td> <td class="mdname" nowrap> <em>rng</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>const byte * </td> <td class="mdname" nowrap> <em>recoverableMessage</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>unsigned int </td> <td class="mdname" nowrap> <em>recoverableMessageLength</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>const byte * </td> <td class="mdname" nowrap> <em>nonrecoverableMessage</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>unsigned int </td> <td class="mdname" nowrap> <em>nonrecoverableMessageLength</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>byte * </td> <td class="mdname" nowrap> <em>signature</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"> const<code> [virtual]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> sign a recoverable message <p> <dl compact><dt><b>Precondition:</b></dt><dd>size of signature == <a class="el" href="class_p_k___signature_scheme.html#_two_bases_3_01_t_f___verifier_base_00_01_public_key_copier_3_01_s_c_h_e_m_e___o_p_t_i_o_n_s_1_1_keys_01_4_01_4a14">MaxSignatureLength(recoverableMessageLength)</a> </dd></dl> <dl compact><dt><b>Returns:</b></dt><dd>actual signature length</dd></dl> <p> Definition at line <a class="el" href="cryptlib_8cpp-source.html#l00628">628</a> of file <a class="el" href="cryptlib_8cpp-source.html">cryptlib.cpp</a>. <p> References <a class="el" href="class_p_k___signer.html#_two_bases_3_01_t_f___signer_base_00_01_private_key_copier_3_01_s_c_h_e_m_e___o_p_t_i_o_n_s_1_1_keys_01_4_01_4a8">NewSignatureAccumulator()</a>, <a class="el" href="class_p_k___signer.html#_t_f___signature_scheme_base_3_01_p_k___signer_00_01_t_f___base_3_01_randomized_trapdoor_function_inverse_00_01_p_k___signature_message_encoding_method_01_4_01_4a9">SignAndRestart()</a>, and <a class="el" href="cryptlib_8cpp-source.html#l00628">SignMessageWithRecovery()</a>. <p> Referenced by <a class="el" href="cryptlib_8cpp-source.html#l00628">SignMessageWithRecovery()</a>. </td> </tr> </table> <a class="anchor" name="_p_k___verifiera12" doxytag="PK_Signer::IsProbabilistic" ></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> virtual bool PK_SignatureScheme::IsProbabilistic </td> <td class="md" valign="top">( </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap> const<code> [pure virtual, inherited]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> requires a random number generator to sign <p> if this returns false, <a class="el" href="cryptlib_8h.html#a9">NullRNG()</a> can be passed to functions that take <a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> & </td> </tr> </table> <hr>The documentation for this class was generated from the following files:<ul> <li><a class="el" href="cryptlib_8h-source.html">cryptlib.h</a><li><a class="el" href="cryptlib_8cpp-source.html">cryptlib.cpp</a></ul> <hr size="1"><address style="align: right;"><small>Generated on Sun Nov 7 08:24:07 2004 for Crypto++ by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border=0 ></a> 1.3.7 </small></address> </body> </html>