<!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++: InvertibleRSAFunction 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>InvertibleRSAFunction Class Reference</h1><code>#include <<a class="el" href="rsa_8h-source.html">rsa.h</a>></code> <p> <p>Inheritance diagram for InvertibleRSAFunction: <p><center><img src="class_invertible_r_s_a_function.png" usemap="#InvertibleRSAFunction_map" border="0" alt=""></center> <map name="InvertibleRSAFunction_map"> <area href="class_r_s_a_function.html" alt="RSAFunction" shape="rect" coords="202,280,425,304"> <area href="class_trapdoor_function_inverse.html" alt="TrapdoorFunctionInverse" shape="rect" coords="640,280,863,304"> <area href="class_p_k_c_s8_private_key.html" alt="PKCS8PrivateKey" shape="rect" coords="1106,280,1329,304"> <area href="class_trapdoor_function.html" alt="TrapdoorFunction" shape="rect" coords="0,224,223,248"> <area href="class_x509_public_key.html" alt="X509PublicKey" shape="rect" coords="407,224,630,248"> <area href="class_randomized_trapdoor_function_inverse.html" alt="RandomizedTrapdoorFunctionInverse" shape="rect" coords="640,224,863,248"> <area href="class_a_s_n1_key.html" alt="ASN1Key" shape="rect" coords="932,224,1155,248"> <area href="class_private_key.html" alt="PrivateKey" shape="rect" coords="1281,224,1504,248"> <area href="class_randomized_trapdoor_function.html" alt="RandomizedTrapdoorFunction" shape="rect" coords="0,168,223,192"> <area href="class_a_s_n1_key.html" alt="ASN1Key" shape="rect" coords="233,168,456,192"> <area href="class_public_key.html" alt="PublicKey" shape="rect" coords="582,168,805,192"> <area href="class_a_s_n1_crypto_material.html" alt="ASN1CryptoMaterial" shape="rect" coords="932,168,1155,192"> <area href="class_generatable_crypto_material.html" alt="GeneratableCryptoMaterial" shape="rect" coords="1281,168,1504,192"> <area href="class_trapdoor_function_bounds.html" alt="TrapdoorFunctionBounds" shape="rect" coords="0,112,223,136"> <area href="class_a_s_n1_crypto_material.html" alt="ASN1CryptoMaterial" shape="rect" coords="233,112,456,136"> <area href="class_crypto_material.html" alt="CryptoMaterial" shape="rect" coords="582,112,805,136"> <area href="class_a_s_n1_object.html" alt="ASN1Object" shape="rect" coords="815,112,1038,136"> <area href="class_crypto_material.html" alt="CryptoMaterial" shape="rect" coords="1048,112,1271,136"> <area href="class_crypto_material.html" alt="CryptoMaterial" shape="rect" coords="1281,112,1504,136"> <area href="class_a_s_n1_object.html" alt="ASN1Object" shape="rect" coords="116,56,339,80"> <area href="class_crypto_material.html" alt="CryptoMaterial" shape="rect" coords="349,56,572,80"> <area href="class_name_value_pairs.html" alt="NameValuePairs" shape="rect" coords="582,56,805,80"> <area href="class_name_value_pairs.html" alt="NameValuePairs" shape="rect" coords="1048,56,1271,80"> <area href="class_name_value_pairs.html" alt="NameValuePairs" shape="rect" coords="1281,56,1504,80"> <area href="class_name_value_pairs.html" alt="NameValuePairs" shape="rect" coords="349,0,572,24"> </map> <a href="class_invertible_r_s_a_function-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2> _ <p> <p> Definition at line <a class="el" href="rsa_8h-source.html#l00052">52</a> of file <a class="el" href="rsa_8h-source.html">rsa.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="_invertible_r_s_a_functiona0" doxytag="InvertibleRSAFunction::Initialize" ></a> void </td><td class="memItemRight" valign=bottom><b>Initialize</b> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, unsigned int modulusBits, const <a class="el" href="class_integer.html">Integer</a> &e=17)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_invertible_r_s_a_functiona1" doxytag="InvertibleRSAFunction::Initialize" ></a> void </td><td class="memItemRight" valign=bottom><b>Initialize</b> (const <a class="el" href="class_integer.html">Integer</a> &n, const <a class="el" href="class_integer.html">Integer</a> &e, const <a class="el" href="class_integer.html">Integer</a> &d, const <a class="el" href="class_integer.html">Integer</a> &p, const <a class="el" href="class_integer.html">Integer</a> &q, const <a class="el" href="class_integer.html">Integer</a> &dp, const <a class="el" href="class_integer.html">Integer</a> &dq, const <a class="el" href="class_integer.html">Integer</a> &u)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_invertible_r_s_a_functiona2" doxytag="InvertibleRSAFunction::Initialize" ></a> void </td><td class="memItemRight" valign=bottom><a class="el" href="class_invertible_r_s_a_function.html#_invertible_r_s_a_functiona2">Initialize</a> (const <a class="el" href="class_integer.html">Integer</a> &n, const <a class="el" href="class_integer.html">Integer</a> &e, const <a class="el" href="class_integer.html">Integer</a> &d)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">factor n given private exponent <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_invertible_r_s_a_functiona3" doxytag="InvertibleRSAFunction::BERDecode" ></a> void </td><td class="memItemRight" valign=bottom><a class="el" href="class_invertible_r_s_a_function.html#_invertible_r_s_a_functiona3">BERDecode</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &bt)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">decode this object from a <a class="el" href="class_buffered_transformation.html">BufferedTransformation</a>, using BER (Basic Encoding Rules) <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_invertible_r_s_a_functiona4" doxytag="InvertibleRSAFunction::DEREncode" ></a> void </td><td class="memItemRight" valign=bottom><a class="el" href="class_invertible_r_s_a_function.html#_invertible_r_s_a_functiona4">DEREncode</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &bt) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">encode this object into a <a class="el" href="class_buffered_transformation.html">BufferedTransformation</a>, using DER (Distinguished Encoding Rules) <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_invertible_r_s_a_functiona5" doxytag="InvertibleRSAFunction::BERDecodeKey" ></a> void </td><td class="memItemRight" valign=bottom><a class="el" href="class_invertible_r_s_a_function.html#_invertible_r_s_a_functiona5">BERDecodeKey</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &bt)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">decode subjectPublicKey part of subjectPublicKeyInfo, or privateKey part of privateKeyInfo, without the BIT STRING or OCTET STRING header <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_invertible_r_s_a_functiona6" doxytag="InvertibleRSAFunction::DEREncodeKey" ></a> void </td><td class="memItemRight" valign=bottom><a class="el" href="class_invertible_r_s_a_function.html#_invertible_r_s_a_functiona6">DEREncodeKey</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &bt) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">encode subjectPublicKey part of subjectPublicKeyInfo, or privateKey part of privateKeyInfo, without the BIT STRING or OCTET STRING header <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_invertible_r_s_a_functiona7" doxytag="InvertibleRSAFunction::CalculateInverse" ></a> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign=bottom><b>CalculateInverse</b> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, const <a class="el" href="class_integer.html">Integer</a> &x) const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="class_invertible_r_s_a_function.html#_invertible_r_s_a_functiona8">Validate</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, unsigned int level) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">check this object for errors <a href="#_invertible_r_s_a_functiona8"></a><br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="class_invertible_r_s_a_function.html#_invertible_r_s_a_functiona9">GenerateRandom</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, const <a class="el" href="class_name_value_pairs.html">NameValuePairs</a> &alg)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_invertible_r_s_a_functiona10" doxytag="InvertibleRSAFunction::GetVoidValue" ></a> bool </td><td class="memItemRight" valign=bottom><a class="el" href="class_invertible_r_s_a_function.html#_invertible_r_s_a_functiona10">GetVoidValue</a> (const char *name, const std::type_info &valueType, void *pValue) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">to be implemented by derived classes, users should use one of the above functions instead <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="class_invertible_r_s_a_function.html#_invertible_r_s_a_functiona11">AssignFrom</a> (const <a class="el" href="class_name_value_pairs.html">NameValuePairs</a> &source)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">assign values from source to this object <a href="#_invertible_r_s_a_functiona11"></a><br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_invertible_r_s_a_functiona12" doxytag="InvertibleRSAFunction::GetPrime1" ></a> const <a class="el" href="class_integer.html">Integer</a> & </td><td class="memItemRight" valign=bottom><b>GetPrime1</b> () const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_invertible_r_s_a_functiona13" doxytag="InvertibleRSAFunction::GetPrime2" ></a> const <a class="el" href="class_integer.html">Integer</a> & </td><td class="memItemRight" valign=bottom><b>GetPrime2</b> () const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_invertible_r_s_a_functiona14" doxytag="InvertibleRSAFunction::GetPrivateExponent" ></a> const <a class="el" href="class_integer.html">Integer</a> & </td><td class="memItemRight" valign=bottom><b>GetPrivateExponent</b> () const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_invertible_r_s_a_functiona15" doxytag="InvertibleRSAFunction::GetModPrime1PrivateExponent" ></a> const <a class="el" href="class_integer.html">Integer</a> & </td><td class="memItemRight" valign=bottom><b>GetModPrime1PrivateExponent</b> () const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_invertible_r_s_a_functiona16" doxytag="InvertibleRSAFunction::GetModPrime2PrivateExponent" ></a> const <a class="el" href="class_integer.html">Integer</a> & </td><td class="memItemRight" valign=bottom><b>GetModPrime2PrivateExponent</b> () const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_invertible_r_s_a_functiona17" doxytag="InvertibleRSAFunction::GetMultiplicativeInverseOfPrime2ModPrime1" ></a> const <a class="el" href="class_integer.html">Integer</a> & </td><td class="memItemRight" valign=bottom><b>GetMultiplicativeInverseOfPrime2ModPrime1</b> () const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_invertible_r_s_a_functiona18" doxytag="InvertibleRSAFunction::SetPrime1" ></a> void </td><td class="memItemRight" valign=bottom><b>SetPrime1</b> (const <a class="el" href="class_integer.html">Integer</a> &p)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_invertible_r_s_a_functiona19" doxytag="InvertibleRSAFunction::SetPrime2" ></a> void </td><td class="memItemRight" valign=bottom><b>SetPrime2</b> (const <a class="el" href="class_integer.html">Integer</a> &q)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_invertible_r_s_a_functiona20" doxytag="InvertibleRSAFunction::SetPrivateExponent" ></a> void </td><td class="memItemRight" valign=bottom><b>SetPrivateExponent</b> (const <a class="el" href="class_integer.html">Integer</a> &d)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_invertible_r_s_a_functiona21" doxytag="InvertibleRSAFunction::SetModPrime1PrivateExponent" ></a> void </td><td class="memItemRight" valign=bottom><b>SetModPrime1PrivateExponent</b> (const <a class="el" href="class_integer.html">Integer</a> &dp)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_invertible_r_s_a_functiona22" doxytag="InvertibleRSAFunction::SetModPrime2PrivateExponent" ></a> void </td><td class="memItemRight" valign=bottom><b>SetModPrime2PrivateExponent</b> (const <a class="el" href="class_integer.html">Integer</a> &dq)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_invertible_r_s_a_functiona23" doxytag="InvertibleRSAFunction::SetMultiplicativeInverseOfPrime2ModPrime1" ></a> void </td><td class="memItemRight" valign=bottom><b>SetMultiplicativeInverseOfPrime2ModPrime1</b> (const <a class="el" href="class_integer.html">Integer</a> &u)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_r_s_a_functiona0" doxytag="InvertibleRSAFunction::Initialize" ></a> void </td><td class="memItemRight" valign=bottom><b>Initialize</b> (const <a class="el" href="class_integer.html">Integer</a> &n, const <a class="el" href="class_integer.html">Integer</a> &e)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_r_s_a_functiona1" doxytag="InvertibleRSAFunction::GetAlgorithmID" ></a> <a class="el" href="class_o_i_d.html">OID</a> </td><td class="memItemRight" valign=bottom><b>GetAlgorithmID</b> () const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_r_s_a_functiona7" doxytag="InvertibleRSAFunction::ApplyFunction" ></a> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign=bottom><b>ApplyFunction</b> (const <a class="el" href="class_integer.html">Integer</a> &x) const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_r_s_a_functiona8" doxytag="InvertibleRSAFunction::PreimageBound" ></a> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign=bottom><b>PreimageBound</b> () const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_r_s_a_functiona9" doxytag="InvertibleRSAFunction::ImageBound" ></a> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign=bottom><b>ImageBound</b> () const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_r_s_a_functiona10" doxytag="InvertibleRSAFunction::GetModulus" ></a> const <a class="el" href="class_integer.html">Integer</a> & </td><td class="memItemRight" valign=bottom><b>GetModulus</b> () const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_r_s_a_functiona11" doxytag="InvertibleRSAFunction::GetPublicExponent" ></a> const <a class="el" href="class_integer.html">Integer</a> & </td><td class="memItemRight" valign=bottom><b>GetPublicExponent</b> () const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_r_s_a_functiona12" doxytag="InvertibleRSAFunction::SetModulus" ></a> void </td><td class="memItemRight" valign=bottom><b>SetModulus</b> (const <a class="el" href="class_integer.html">Integer</a> &n)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_r_s_a_functiona13" doxytag="InvertibleRSAFunction::SetPublicExponent" ></a> void </td><td class="memItemRight" valign=bottom><b>SetPublicExponent</b> (const <a class="el" href="class_integer.html">Integer</a> &e)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_trapdoor_functiona0" doxytag="InvertibleRSAFunction::ApplyRandomizedFunction" ></a> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign=bottom><b>ApplyRandomizedFunction</b> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, const <a class="el" href="class_integer.html">Integer</a> &x) const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_trapdoor_functiona1" doxytag="InvertibleRSAFunction::IsRandomized" ></a> bool </td><td class="memItemRight" valign=bottom><b>IsRandomized</b> () const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_trapdoor_function_boundsa3" doxytag="InvertibleRSAFunction::MaxPreimage" ></a> virtual <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign=bottom><b>MaxPreimage</b> () const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_trapdoor_function_boundsa4" doxytag="InvertibleRSAFunction::MaxImage" ></a> virtual <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign=bottom><b>MaxImage</b> () const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x509_public_keya3" doxytag="InvertibleRSAFunction::BERDecodeAlgorithmParameters" ></a> virtual bool </td><td class="memItemRight" valign=bottom><b>BERDecodeAlgorithmParameters</b> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &bt)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x509_public_keya4" doxytag="InvertibleRSAFunction::DEREncodeAlgorithmParameters" ></a> virtual bool </td><td class="memItemRight" valign=bottom><b>DEREncodeAlgorithmParameters</b> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &bt) const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x509_public_keya6" doxytag="InvertibleRSAFunction::BERDecodeKey2" ></a> virtual void </td><td class="memItemRight" valign=bottom><b>BERDecodeKey2</b> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &bt, bool parametersPresent, unsigned int size)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x509_public_keya8" doxytag="InvertibleRSAFunction::Save" ></a> void </td><td class="memItemRight" valign=bottom><a class="el" href="class_a_s_n1_crypto_material.html#_x509_public_keya8">Save</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &bt) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">save key into a <a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="class_a_s_n1_crypto_material.html#_x509_public_keya9">Load</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &bt)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">load key from a <a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> <a href="#_x509_public_keya9"></a><br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="class_a_s_n1_object.html#_x509_public_keya10">BEREncode</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &bt) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">encode this object into a <a class="el" href="class_buffered_transformation.html">BufferedTransformation</a>, using BER <a href="#_x509_public_keya10"></a><br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_t_r___d_ha29" doxytag="InvertibleRSAFunction::ThrowIfInvalid" ></a> virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="class_crypto_material.html#_x_t_r___d_ha29">ThrowIfInvalid</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, unsigned int level) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">throws <a class="el" href="class_crypto_material_1_1_invalid_material.html">InvalidMaterial</a> if this object fails Validate() test <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_t_r___d_ha32" doxytag="InvertibleRSAFunction::SupportsPrecomputation" ></a> virtual bool </td><td class="memItemRight" valign=bottom><a class="el" href="class_crypto_material.html#_x_t_r___d_ha32">SupportsPrecomputation</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">whether this object supports precomputation <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="class_crypto_material.html#_x_t_r___d_ha33">Precompute</a> (unsigned int n)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">do precomputation <a href="#_x_t_r___d_ha33"></a><br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_t_r___d_ha34" doxytag="InvertibleRSAFunction::LoadPrecomputation" ></a> virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="class_crypto_material.html#_x_t_r___d_ha34">LoadPrecomputation</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &storedPrecomputation)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">retrieve previously saved precomputation <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_t_r___d_ha35" doxytag="InvertibleRSAFunction::SavePrecomputation" ></a> virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="class_crypto_material.html#_x_t_r___d_ha35">SavePrecomputation</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &storedPrecomputation) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">save precomputation for later use <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_t_r___d_ha36" doxytag="InvertibleRSAFunction::DoQuickSanityCheck" ></a> void </td><td class="memItemRight" valign=bottom><b>DoQuickSanityCheck</b> () const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_t_r___d_ha37" doxytag="InvertibleRSAFunction::GetThisObject" ></a> template<class T> bool </td><td class="memItemRight" valign=bottom><a class="el" href="class_name_value_pairs.html#_x_t_r___d_ha37">GetThisObject</a> (T &object) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">get a copy of this object or a subobject of it <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_t_r___d_ha38" doxytag="InvertibleRSAFunction::GetThisPointer" ></a> template<class T> bool </td><td class="memItemRight" valign=bottom><a class="el" href="class_name_value_pairs.html#_x_t_r___d_ha38">GetThisPointer</a> (T *&p) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">get a pointer to this object, as a pointer to T <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_t_r___d_ha39" doxytag="InvertibleRSAFunction::GetValue" ></a> template<class T> bool </td><td class="memItemRight" valign=bottom><a class="el" href="class_name_value_pairs.html#_x_t_r___d_ha39">GetValue</a> (const char *name, T &value) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">get a named value, returns true if the name exists <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_t_r___d_ha40" doxytag="InvertibleRSAFunction::GetValueWithDefault" ></a> template<class T> T </td><td class="memItemRight" valign=bottom><a class="el" href="class_name_value_pairs.html#_x_t_r___d_ha40">GetValueWithDefault</a> (const char *name, T defaultValue) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">get a named value, returns the default if the name doesn't exist <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_t_r___d_ha41" doxytag="InvertibleRSAFunction::GetValueNames" ></a> std::string </td><td class="memItemRight" valign=bottom><a class="el" href="class_name_value_pairs.html#_x_t_r___d_ha41">GetValueNames</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">get a list of value names that can be retrieved <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="class_name_value_pairs.html#_x_t_r___d_ha42">GetIntValue</a> (const char *name, int &value) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">get a named value with type int <a href="#_x_t_r___d_ha42"></a><br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_t_r___d_ha43" doxytag="InvertibleRSAFunction::GetIntValueWithDefault" ></a> int </td><td class="memItemRight" valign=bottom><a class="el" href="class_name_value_pairs.html#_x_t_r___d_ha43">GetIntValueWithDefault</a> (const char *name, int defaultValue) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">get a named value with type int, with default <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_t_r___d_ha44" doxytag="InvertibleRSAFunction::GetRequiredParameter" ></a> template<class T> void </td><td class="memItemRight" valign=bottom><b>GetRequiredParameter</b> (const char *className, const char *name, T &value) const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_t_r___d_ha45" doxytag="InvertibleRSAFunction::GetRequiredIntParameter" ></a> void </td><td class="memItemRight" valign=bottom><b>GetRequiredIntParameter</b> (const char *className, const char *name, int &value) const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_trapdoor_function_inversea1" doxytag="InvertibleRSAFunction::CalculateRandomizedInverse" ></a> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign=bottom><b>CalculateRandomizedInverse</b> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, const <a class="el" href="class_integer.html">Integer</a> &x) const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_trapdoor_function_inversea2" doxytag="InvertibleRSAFunction::IsRandomized" ></a> bool </td><td class="memItemRight" valign=bottom><b>IsRandomized</b> () const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="class_p_k_c_s8_private_key.html#_p_k_c_s8_private_keya2">BERDecodeOptionalAttributes</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &bt)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">decode optional attributes including context-specific tag <a href="#_p_k_c_s8_private_keya2"></a><br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_p_k_c_s8_private_keya3" doxytag="InvertibleRSAFunction::DEREncodeOptionalAttributes" ></a> virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="class_p_k_c_s8_private_key.html#_p_k_c_s8_private_keya3">DEREncodeOptionalAttributes</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &bt) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">encode optional attributes including context-specific tag <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_t_r___d_ha28" doxytag="InvertibleRSAFunction::GenerateRandomWithKeySize" ></a> void </td><td class="memItemRight" valign=bottom><a class="el" href="class_generatable_crypto_material.html#_x_t_r___d_ha28">GenerateRandomWithKeySize</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, unsigned int keySize)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">calls the above function with a <a class="el" href="class_name_value_pairs.html">NameValuePairs</a> object that just specifies "KeySize" <br><br></td></tr> <tr><td colspan=2><br><h2>Static Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_t_r___d_he0" doxytag="InvertibleRSAFunction::ThrowIfTypeMismatch" ></a> void </td><td class="memItemRight" valign=bottom><a class="el" href="class_name_value_pairs.html#_x_t_r___d_he0">ThrowIfTypeMismatch</a> (const char *name, const std::type_info &stored, const std::type_info &retrieving)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">used by derived classes to check for type mismatch <br><br></td></tr> <tr><td colspan=2><br><h2>Protected Attributes</h2></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_invertible_r_s_a_functionp0" doxytag="InvertibleRSAFunction::m_d" ></a> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign=bottom><b>m_d</b></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_invertible_r_s_a_functionp1" doxytag="InvertibleRSAFunction::m_p" ></a> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign=bottom><b>m_p</b></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_invertible_r_s_a_functionp2" doxytag="InvertibleRSAFunction::m_q" ></a> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign=bottom><b>m_q</b></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_invertible_r_s_a_functionp3" doxytag="InvertibleRSAFunction::m_dp" ></a> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign=bottom><b>m_dp</b></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_invertible_r_s_a_functionp4" doxytag="InvertibleRSAFunction::m_dq" ></a> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign=bottom><b>m_dq</b></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_invertible_r_s_a_functionp5" doxytag="InvertibleRSAFunction::m_u" ></a> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign=bottom><b>m_u</b></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_r_s_a_functionp0" doxytag="InvertibleRSAFunction::m_n" ></a> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign=bottom><b>m_n</b></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_r_s_a_functionp1" doxytag="InvertibleRSAFunction::m_e" ></a> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign=bottom><b>m_e</b></td></tr> </table> <hr><h2>Member Function Documentation</h2> <a class="anchor" name="_invertible_r_s_a_functiona8" doxytag="InvertibleRSAFunction::Validate" ></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"> bool InvertibleRSAFunction::Validate </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>unsigned int </td> <td class="mdname" nowrap> <em>level</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> check this object for errors <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td></td><td valign=top><em>level</em> </td><td>denotes the level of thoroughness: 0 - using this object won't cause a crash or exception (rng is ignored) 1 - this object will probably function (encrypt, sign, etc.) correctly (but may not check for weak keys and such) 2 - make sure this object will function correctly, and do reasonable security checks 3 - do checks that may take a long time </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>true if the tests pass </dd></dl> <p> Reimplemented from <a class="el" href="class_r_s_a_function.html#_r_s_a_functiona4">RSAFunction</a>. <p> Definition at line <a class="el" href="rsa_8cpp-source.html#l00243">243</a> of file <a class="el" href="rsa_8cpp-source.html">rsa.cpp</a>. <p> References <a class="el" href="integer_8h-source.html#l00257">Integer::IsOdd()</a>, <a class="el" href="integer_8h-source.html#l00251">Integer::IsPositive()</a>, <a class="el" href="integer_8cpp-source.html#l02846">Integer::One()</a>, and <a class="el" href="rsa_8cpp-source.html#l00243">Validate()</a>. <p> Referenced by <a class="el" href="rsa_8cpp-source.html#l00243">Validate()</a>. </td> </tr> </table> <a class="anchor" name="_invertible_r_s_a_functiona9" doxytag="InvertibleRSAFunction::GenerateRandom" ></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"> void InvertibleRSAFunction::GenerateRandom </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 <a class="el" href="class_name_value_pairs.html">NameValuePairs</a> & </td> <td class="mdname" nowrap> <em>alg</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"><code> [virtual]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> parameters: (ModulusSize, PublicExponent (default 17)) <p> Reimplemented from <a class="el" href="class_generatable_crypto_material.html#_x_t_r___d_ha27">GeneratableCryptoMaterial</a>. <p> Definition at line <a class="el" href="rsa_8cpp-source.html#l00104">104</a> of file <a class="el" href="rsa_8cpp-source.html">rsa.cpp</a>. <p> References <a class="el" href="integer_8h-source.html#l00294">Integer::GenerateRandom()</a>, <a class="el" href="rsa_8cpp-source.html#l00104">GenerateRandom()</a>, <a class="el" href="cryptlib_8h-source.html#l00278">NameValuePairs::GetIntValue()</a>, <a class="el" href="cryptlib_8h-source.html#l00265">NameValuePairs::GetValueWithDefault()</a>, <a class="el" href="integer_8cpp-source.html#l03935">Integer::InverseMod()</a>, <a class="el" href="integer_8h-source.html#l00255">Integer::IsEven()</a>, <a class="el" href="integer_8h-source.html#l00251">Integer::IsPositive()</a>, and <a class="el" href="argnames_8h-source.html#l00036">Name::PointerToPrimeSelector()</a>. <p> Referenced by <a class="el" href="rsa_8cpp-source.html#l00104">GenerateRandom()</a>. </td> </tr> </table> <a class="anchor" name="_invertible_r_s_a_functiona11" doxytag="InvertibleRSAFunction::AssignFrom" ></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"> void InvertibleRSAFunction::AssignFrom </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const <a class="el" href="class_name_value_pairs.html">NameValuePairs</a> & </td> <td class="mdname1" valign="top" nowrap> <em>source</em> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap><code> [virtual]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> assign values from source to this object <p> <dl compact><dt><b>Note:</b></dt><dd>This function can be used to create a public key from a private key. </dd></dl> <p> Reimplemented from <a class="el" href="class_r_s_a_function.html#_r_s_a_functiona6">RSAFunction</a>. <p> Definition at line <a class="el" href="rsa_8cpp-source.html#l00276">276</a> of file <a class="el" href="rsa_8cpp-source.html">rsa.cpp</a>. <p> References <a class="el" href="rsa_8cpp-source.html#l00276">AssignFrom()</a>. <p> Referenced by <a class="el" href="rsa_8cpp-source.html#l00276">AssignFrom()</a>. </td> </tr> </table> <a class="anchor" name="_x509_public_keya9" doxytag="InvertibleRSAFunction::Load" ></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"> void ASN1CryptoMaterial::Load </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> & </td> <td class="mdname1" valign="top" nowrap> <em>bt</em> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap><code> [inline, virtual, inherited]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> load key from a <a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> <p> <dl compact><dt><b>Exceptions:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td></td><td valign=top><em>KeyingErr</em> </td><td>if decode fails </td></tr> </table> </dl> <dl compact><dt><b>Note:</b></dt><dd>Generally does not check that the key is valid. Call ValidateKey() or ThrowIfInvalidKey() to check that. </dd></dl> <p> Reimplemented from <a class="el" href="class_crypto_material.html#_x_t_r___d_ha31">CryptoMaterial</a>. <p> Definition at line <a class="el" href="simple_8h-source.html#l00052">52</a> of file <a class="el" href="simple_8h-source.html">simple.h</a>. </td> </tr> </table> <a class="anchor" name="_x509_public_keya10" doxytag="InvertibleRSAFunction::BEREncode" ></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 void ASN1Object::BEREncode </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> & </td> <td class="mdname1" valign="top" nowrap> <em>bt</em> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap> const<code> [inline, virtual, inherited]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> encode this object into a <a class="el" href="class_buffered_transformation.html">BufferedTransformation</a>, using BER <p> this may be useful if DEREncode() would be too inefficient <p> Definition at line <a class="el" href="cryptlib_8h-source.html#l01561">1561</a> of file <a class="el" href="cryptlib_8h-source.html">cryptlib.h</a>. </td> </tr> </table> <a class="anchor" name="_x_t_r___d_ha33" doxytag="InvertibleRSAFunction::Precompute" ></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 void CryptoMaterial::Precompute </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">unsigned int </td> <td class="mdname1" valign="top" nowrap> <em>n</em> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap><code> [inline, virtual, inherited]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> do precomputation <p> The exact semantics of Precompute() is varies, but typically it means calculate a table of n objects that can be used later to speed up computation. <p> Reimplemented in <a class="el" href="class_d_l___group_parameters.html#_d_l___group_parametersa4">DL_GroupParameters< T ></a>, <a class="el" href="class_d_l___private_key_impl.html#_d_l___private_key_impla5">DL_PrivateKeyImpl< GP ></a>, <a class="el" href="class_d_l___public_key_impl.html#_d_l___public_key_impla4">DL_PublicKeyImpl< GP ></a>, <a class="el" href="class_d_l___group_parameters.html#_d_l___group_parametersa4">DL_GroupParameters< Integer ></a>, <a class="el" href="class_d_l___group_parameters.html#_d_l___group_parametersa4">DL_GroupParameters< typenameEcPrecomputation< EC >::Element ></a>, <a class="el" href="class_d_l___private_key_impl.html#_d_l___private_key_impla5">DL_PrivateKeyImpl< DL_GroupParameters_EC< EC > ></a>, and <a class="el" href="class_d_l___public_key_impl.html#_d_l___public_key_impla4">DL_PublicKeyImpl< DL_GroupParameters_EC< EC > ></a>. <p> Definition at line <a class="el" href="cryptlib_8h-source.html#l01003">1003</a> of file <a class="el" href="cryptlib_8h-source.html">cryptlib.h</a>. </td> </tr> </table> <a class="anchor" name="_x_t_r___d_ha42" doxytag="InvertibleRSAFunction::GetIntValue" ></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"> bool NameValuePairs::GetIntValue </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const char * </td> <td class="mdname" nowrap> <em>name</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>int & </td> <td class="mdname" nowrap> <em>value</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"> const<code> [inline, inherited]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> get a named value with type int <p> used to ensure we don't accidentally try to get an unsigned int or some other type when we mean int (which is the most common case) <p> Definition at line <a class="el" href="cryptlib_8h-source.html#l00278">278</a> of file <a class="el" href="cryptlib_8h-source.html">cryptlib.h</a>. <p> Referenced by <a class="el" href="rw_8cpp-source.html#l00111">InvertibleRWFunction::GenerateRandom()</a>, <a class="el" href="rsa_8cpp-source.html#l00104">GenerateRandom()</a>, <a class="el" href="rabin_8cpp-source.html#l00075">InvertibleRabinFunction::GenerateRandom()</a>, <a class="el" href="luc_8cpp-source.html#l00107">InvertibleLUCFunction::GenerateRandom()</a>, <a class="el" href="gfpcrypt_8cpp-source.html#l00160">DL_GroupParameters_IntegerBased::GenerateRandom()</a>, <a class="el" href="gfpcrypt_8cpp-source.html#l00026">DL_GroupParameters_DSA::GenerateRandom()</a>, and <a class="el" href="esign_8cpp-source.html#l00075">InvertibleESIGNFunction::GenerateRandom()</a>. </td> </tr> </table> <a class="anchor" name="_p_k_c_s8_private_keya2" doxytag="InvertibleRSAFunction::BERDecodeOptionalAttributes" ></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"> void PKCS8PrivateKey::BERDecodeOptionalAttributes </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> & </td> <td class="mdname1" valign="top" nowrap> <em>bt</em> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap><code> [virtual, inherited]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> decode optional attributes including context-specific tag <p> /note default implementation stores attributes to be output in DEREncodeOptionalAttributes <p> Definition at line <a class="el" href="asn_8cpp-source.html#l00578">578</a> of file <a class="el" href="asn_8cpp-source.html">asn.cpp</a>. <p> References <a class="el" href="asn_8cpp-source.html#l00578">PKCS8PrivateKey::BERDecodeOptionalAttributes()</a>. <p> Referenced by <a class="el" href="asn_8cpp-source.html#l00540">PKCS8PrivateKey::BERDecode()</a>, and <a class="el" href="asn_8cpp-source.html#l00578">PKCS8PrivateKey::BERDecodeOptionalAttributes()</a>. </td> </tr> </table> <hr>The documentation for this class was generated from the following files:<ul> <li><a class="el" href="rsa_8h-source.html">rsa.h</a><li><a class="el" href="rsa_8cpp-source.html">rsa.cpp</a></ul> <hr size="1"><address style="align: right;"><small>Generated on Sun Nov 7 08:24:05 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>