<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <title>Crypto++: Integer Class Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body> <!-- Generated by Doxygen 1.6.1 --> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> </ul> </div> <div class="tabs"> <ul> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="classes.html"><span>Class Index</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> </div> <div class="contents"> <h1>Integer Class Reference</h1><!-- doxytag: class="Integer" --><!-- doxytag: inherits="InitializeInteger,ASN1Object" --> <p>multiple precision integer and basic arithmetics <a href="#_details">More...</a></p> <p><code>#include <<a class="el" href="integer_8h_source.html">integer.h</a>></code></p> <div class="dynheader"> Inheritance diagram for Integer:</div> <div class="dynsection"> <div class="center"> <img src="class_integer.gif" usemap="#Integer_map" alt=""/> <map id="Integer_map" name="Integer_map"> <area href="struct_initialize_integer.html" alt="InitializeInteger" shape="rect" coords="0,0,96,24"/> <area href="class_a_s_n1_object.html" alt="ASN1Object" shape="rect" coords="106,0,202,24"/> </map> </div> </div> <p><a href="class_integer-members.html">List of all members.</a></p> <table border="0" cellpadding="0" cellspacing="0"> <tr><td colspan="2"><h2>Classes</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer_1_1_divide_by_zero.html">DivideByZero</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">division by zero exception <a href="class_integer_1_1_divide_by_zero.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer_1_1_open_p_g_p_decode_err.html">OpenPGPDecodeErr</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer_1_1_random_number_not_found.html">RandomNumberNotFound</a></td></tr> <tr><td colspan="2"><h2>Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_s_n1_object.html#ab8446b61690a19015d3d565d86dd1d3d">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" title="interface for buffered transformations">BufferedTransformation</a>, using BER <a href="#ab8446b61690a19015d3d565d86dd1d3d"></a><br/></td></tr> <tr><td colspan="2"><h2>Friends</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0ef821fc78e4bfe3236b3a0157df189d"></a><!-- doxytag: member="Integer::ModularArithmetic" ref="a0ef821fc78e4bfe3236b3a0157df189d" args="" --> class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a0ef821fc78e4bfe3236b3a0157df189d">ModularArithmetic</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a14e60a19be28337cb24783301e091877"></a><!-- doxytag: member="Integer::MontgomeryRepresentation" ref="a14e60a19be28337cb24783301e091877" args="" --> class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a14e60a19be28337cb24783301e091877">MontgomeryRepresentation</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef0adde4261276d74ddf19366c427b62"></a><!-- doxytag: member="Integer::HalfMontgomeryRepresentation" ref="aef0adde4261276d74ddf19366c427b62" args="" --> class </td><td class="memItemRight" valign="bottom"><b>HalfMontgomeryRepresentation</b></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6295e7fe9ae3d0c22e38168e8fd7c0f1"></a><!-- doxytag: member="Integer::PositiveAdd" ref="a6295e7fe9ae3d0c22e38168e8fd7c0f1" args="(Integer &sum, const Integer &a, const Integer &b)" --> void </td><td class="memItemRight" valign="bottom"><b>PositiveAdd</b> (<a class="el" href="class_integer.html">Integer</a> &sum, const <a class="el" href="class_integer.html">Integer</a> &a, const <a class="el" href="class_integer.html">Integer</a> &b)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acc5b1ed43bfa0c217e2c64535515e7bb"></a><!-- doxytag: member="Integer::PositiveSubtract" ref="acc5b1ed43bfa0c217e2c64535515e7bb" args="(Integer &diff, const Integer &a, const Integer &b)" --> void </td><td class="memItemRight" valign="bottom"><b>PositiveSubtract</b> (<a class="el" href="class_integer.html">Integer</a> &diff, const <a class="el" href="class_integer.html">Integer</a> &a, const <a class="el" href="class_integer.html">Integer</a> &b)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a53b5444044b02d93e76fafac50c3bb29"></a><!-- doxytag: member="Integer::PositiveMultiply" ref="a53b5444044b02d93e76fafac50c3bb29" args="(Integer &product, const Integer &a, const Integer &b)" --> void </td><td class="memItemRight" valign="bottom"><b>PositiveMultiply</b> (<a class="el" href="class_integer.html">Integer</a> &product, const <a class="el" href="class_integer.html">Integer</a> &a, const <a class="el" href="class_integer.html">Integer</a> &b)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a30542b29292dbe332eb60b6aabfaf937"></a><!-- doxytag: member="Integer::PositiveDivide" ref="a30542b29292dbe332eb60b6aabfaf937" args="(Integer &remainder, Integer &quotient, const Integer &dividend, const Integer &divisor)" --> void </td><td class="memItemRight" valign="bottom"><b>PositiveDivide</b> (<a class="el" href="class_integer.html">Integer</a> &remainder, <a class="el" href="class_integer.html">Integer</a> &quotient, const <a class="el" href="class_integer.html">Integer</a> &dividend, const <a class="el" href="class_integer.html">Integer</a> &divisor)</td></tr> <tr><td colspan="2"><h2>ENUMS, EXCEPTIONS, and TYPEDEFS</h2></td></tr> <tr><td colspan="2"><p><a class="anchor" id="amgrpa03118083bc7586a83a4ee7290b05995"></a> </p> <br/><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><b>Sign</b> { <b>POSITIVE</b> = 0, <b>NEGATIVE</b> = 1 }</td></tr> <tr><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><b>Signedness</b> { <b>UNSIGNED</b>, <b>SIGNED</b> }</td></tr> <tr><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><b>RandomNumberType</b> { <b>ANY</b>, <b>PRIME</b> }</td></tr> <tr><td colspan="2"><h2>OTHER ARITHMETIC FUNCTIONS</h2></td></tr> <tr><td colspan="2"><p><a class="anchor" id="amgrp9b2e3a5f8113660d4333aeae3c0867b1"></a> </p> <br/><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac0c699fd5d44290c499eb51a4e75d062"></a><!-- doxytag: member="Integer::a_times_b_mod_c" ref="ac0c699fd5d44290c499eb51a4e75d062" args="(const Integer &x, const Integer &y, const Integer &m)" --> <a class="el" href="class_integer.html">Integer</a> __cdecl </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#ac0c699fd5d44290c499eb51a4e75d062">a_times_b_mod_c</a> (const <a class="el" href="class_integer.html">Integer</a> &x, const <a class="el" href="class_integer.html">Integer</a> &y, const <a class="el" href="class_integer.html">Integer</a> &m)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">modular multiplication <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa90e318d86745dd8cd92e2845708158b"></a><!-- doxytag: member="Integer::a_exp_b_mod_c" ref="aa90e318d86745dd8cd92e2845708158b" args="(const Integer &x, const Integer &e, const Integer &m)" --> <a class="el" href="class_integer.html">Integer</a> __cdecl </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#aa90e318d86745dd8cd92e2845708158b">a_exp_b_mod_c</a> (const <a class="el" href="class_integer.html">Integer</a> &x, const <a class="el" href="class_integer.html">Integer</a> &e, const <a class="el" href="class_integer.html">Integer</a> &m)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">modular exponentiation <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3561a8987c0150e20d2fe0f7ef44c70b"></a><!-- doxytag: member="Integer::AbsoluteValue" ref="a3561a8987c0150e20d2fe0f7ef44c70b" args="() const " --> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign="bottom"><b>AbsoluteValue</b> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e1a3170987a46b3682e217057687c2b"></a><!-- doxytag: member="Integer::Doubled" ref="a5e1a3170987a46b3682e217057687c2b" args="() const " --> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign="bottom"><b>Doubled</b> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae0b94a015187c923d4e36683c8cb0668"></a><!-- doxytag: member="Integer::Squared" ref="ae0b94a015187c923d4e36683c8cb0668" args="() const " --> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign="bottom"><b>Squared</b> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9cbc1009bb421942470163aed5e3fefb"></a><!-- doxytag: member="Integer::SquareRoot" ref="a9cbc1009bb421942470163aed5e3fefb" args="() const " --> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a9cbc1009bb421942470163aed5e3fefb">SquareRoot</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">extract square root, if negative return 0, else return floor of square root <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a49efda9b0c4767508a2b5541380132ed"></a><!-- doxytag: member="Integer::IsSquare" ref="a49efda9b0c4767508a2b5541380132ed" args="() const " --> bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a49efda9b0c4767508a2b5541380132ed">IsSquare</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">return whether this integer is a perfect square <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acbee0ebe94c7ef5b0da39beabe87c27b"></a><!-- doxytag: member="Integer::IsUnit" ref="acbee0ebe94c7ef5b0da39beabe87c27b" args="() const " --> bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#acbee0ebe94c7ef5b0da39beabe87c27b">IsUnit</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">is 1 or -1 <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a94954b3df8073387d225be1033b0fa5b"></a><!-- doxytag: member="Integer::MultiplicativeInverse" ref="a94954b3df8073387d225be1033b0fa5b" args="() const " --> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a94954b3df8073387d225be1033b0fa5b">MultiplicativeInverse</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">return inverse if 1 or -1, otherwise return 0 <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a881f9c714ee42f35718725a43d4d7db3"></a><!-- doxytag: member="Integer::InverseMod" ref="a881f9c714ee42f35718725a43d4d7db3" args="(const Integer &n) const " --> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a881f9c714ee42f35718725a43d4d7db3">InverseMod</a> (const <a class="el" href="class_integer.html">Integer</a> &n) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">calculate multiplicative inverse of *this mod n <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3f73939559a765be0b1c9a9681ad9e2c"></a><!-- doxytag: member="Integer::InverseMod" ref="a3f73939559a765be0b1c9a9681ad9e2c" args="(word n) const " --> word </td><td class="memItemRight" valign="bottom"><b>InverseMod</b> (word n) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a567c89aa176b354143c99d558d05a5fb"></a><!-- doxytag: member="Integer::Divide" ref="a567c89aa176b354143c99d558d05a5fb" args="(Integer &r, Integer &q, const Integer &a, const Integer &d)" --> static void __cdecl </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a567c89aa176b354143c99d558d05a5fb">Divide</a> (<a class="el" href="class_integer.html">Integer</a> &r, <a class="el" href="class_integer.html">Integer</a> &q, const <a class="el" href="class_integer.html">Integer</a> &a, const <a class="el" href="class_integer.html">Integer</a> &d)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">calculate r and q such that (a == d*q + r) && (0 <= r < abs(d)) <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1849c5a8af28ab4f3a70d9690924f249"></a><!-- doxytag: member="Integer::Divide" ref="a1849c5a8af28ab4f3a70d9690924f249" args="(word &r, Integer &q, const Integer &a, word d)" --> static void __cdecl </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a1849c5a8af28ab4f3a70d9690924f249">Divide</a> (word &r, <a class="el" href="class_integer.html">Integer</a> &q, const <a class="el" href="class_integer.html">Integer</a> &a, word d)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">use a faster division algorithm when divisor is short <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abf2934a6172b4cb5317874f0c993a420"></a><!-- doxytag: member="Integer::DivideByPowerOf2" ref="abf2934a6172b4cb5317874f0c993a420" args="(Integer &r, Integer &q, const Integer &a, unsigned int n)" --> static void __cdecl </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#abf2934a6172b4cb5317874f0c993a420">DivideByPowerOf2</a> (<a class="el" href="class_integer.html">Integer</a> &r, <a class="el" href="class_integer.html">Integer</a> &q, const <a class="el" href="class_integer.html">Integer</a> &a, unsigned int n)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">returns same result as Divide(r, q, a, Power2(n)), but faster <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2d4d29937f8ef666717530b30f137c37"></a><!-- doxytag: member="Integer::Gcd" ref="a2d4d29937f8ef666717530b30f137c37" args="(const Integer &a, const Integer &n)" --> static <a class="el" href="class_integer.html">Integer</a> __cdecl </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a2d4d29937f8ef666717530b30f137c37">Gcd</a> (const <a class="el" href="class_integer.html">Integer</a> &a, const <a class="el" href="class_integer.html">Integer</a> &n)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">greatest common divisor <br/></td></tr> <tr><td colspan="2"><h2>INPUT/OUTPUT</h2></td></tr> <tr><td colspan="2"><p><a class="anchor" id="amgrp1b1587792b52046d87b6d77541dd2b4c"></a> </p> <br/><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a98f06f69fc1e81254df74408c184eb7e"></a><!-- doxytag: member="Integer::operator>>" ref="a98f06f69fc1e81254df74408c184eb7e" args="(std::istream &in, Integer &a)" --> std::istream &__cdecl </td><td class="memItemRight" valign="bottom"><b>operator>></b> (std::istream &in, <a class="el" href="class_integer.html">Integer</a> &a)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a84ed49a91b4e00f5e3454de276e8452f"></a><!-- doxytag: member="Integer::operator<<" ref="a84ed49a91b4e00f5e3454de276e8452f" args="(std::ostream &out, const Integer &a)" --> std::ostream &__cdecl </td><td class="memItemRight" valign="bottom"><b>operator<<</b> (std::ostream &out, const <a class="el" href="class_integer.html">Integer</a> &a)</td></tr> <tr><td colspan="2"><h2>CREATORS</h2></td></tr> <tr><td colspan="2"><p><a class="anchor" id="amgrp19ed50dd7d15a96072c9b6a53e8d6a1d"></a> </p> <br/><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7fcab0564d7270017ebcca55bae1a17a"></a><!-- doxytag: member="Integer::Integer" ref="a7fcab0564d7270017ebcca55bae1a17a" args="()" --> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a7fcab0564d7270017ebcca55bae1a17a">Integer</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">creates the zero integer <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9e86175b4b1fb79321736974846fce70"></a><!-- doxytag: member="Integer::Integer" ref="a9e86175b4b1fb79321736974846fce70" args="(const Integer &t)" --> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a9e86175b4b1fb79321736974846fce70">Integer</a> (const <a class="el" href="class_integer.html">Integer</a> &t)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">copy constructor <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab0536c16f441f1b5abcb2019f7d52e17"></a><!-- doxytag: member="Integer::Integer" ref="ab0536c16f441f1b5abcb2019f7d52e17" args="(signed long value)" --> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#ab0536c16f441f1b5abcb2019f7d52e17">Integer</a> (signed long value)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">convert from signed long <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a15a70886677caedd35492b495c5290e6"></a><!-- doxytag: member="Integer::Integer" ref="a15a70886677caedd35492b495c5290e6" args="(Sign s, lword value)" --> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a15a70886677caedd35492b495c5290e6">Integer</a> (Sign s, lword value)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">convert from lword <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a834c31dcb78213e008b342c97764fd5d"></a><!-- doxytag: member="Integer::Integer" ref="a834c31dcb78213e008b342c97764fd5d" args="(Sign s, word highWord, word lowWord)" --> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a834c31dcb78213e008b342c97764fd5d">Integer</a> (Sign s, word highWord, word lowWord)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">convert from two words <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a9e8bf8c72458dff4ceb5d6cdf9e5c97a">Integer</a> (const char *str)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">convert from string <a href="#a9e8bf8c72458dff4ceb5d6cdf9e5c97a"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6931189bb0b2e68d04bef63bc6f172b3"></a><!-- doxytag: member="Integer::Integer" ref="a6931189bb0b2e68d04bef63bc6f172b3" args="(const wchar_t *str)" --> </td><td class="memItemRight" valign="bottom"><b>Integer</b> (const wchar_t *str)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a19c0d3273fcc216a5849527c7ba759d8"></a><!-- doxytag: member="Integer::Integer" ref="a19c0d3273fcc216a5849527c7ba759d8" args="(const byte *encodedInteger, size_t byteCount, Signedness s=UNSIGNED)" --> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a19c0d3273fcc216a5849527c7ba759d8">Integer</a> (const byte *encodedInteger, size_t byteCount, Signedness s=UNSIGNED)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">convert from big-endian byte array <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39fee8047d003a1d6044da4b5025f3ce"></a><!-- doxytag: member="Integer::Integer" ref="a39fee8047d003a1d6044da4b5025f3ce" args="(BufferedTransformation &bt, size_t byteCount, Signedness s=UNSIGNED)" --> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a39fee8047d003a1d6044da4b5025f3ce">Integer</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &bt, size_t byteCount, Signedness s=UNSIGNED)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">convert from big-endian form stored in a <a class="el" href="class_buffered_transformation.html" title="interface for buffered transformations">BufferedTransformation</a> <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a81d3973655b9f9d358de31ca4d0215c1"></a><!-- doxytag: member="Integer::Integer" ref="a81d3973655b9f9d358de31ca4d0215c1" args="(BufferedTransformation &bt)" --> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a81d3973655b9f9d358de31ca4d0215c1">Integer</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &bt)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">convert from BER encoded byte array stored in a <a class="el" href="class_buffered_transformation.html" title="interface for buffered transformations">BufferedTransformation</a> object <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#aeb4abb834e9e897a28850d2081f3fa63">Integer</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, size_t bitcount)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">create a random integer <a href="#aeb4abb834e9e897a28850d2081f3fa63"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a88a110cb9f89a8810c228ad00cea18c2">Integer</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, const <a class="el" href="class_integer.html">Integer</a> &min, const <a class="el" href="class_integer.html">Integer</a> &max, RandomNumberType rnType=ANY, const <a class="el" href="class_integer.html">Integer</a> &equiv=Zero(), const <a class="el" href="class_integer.html">Integer</a> &mod=One())</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">create a random integer of special type <a href="#a88a110cb9f89a8810c228ad00cea18c2"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a19b7e6d48b1b57bd4846160ea2928175"></a><!-- doxytag: member="Integer::Zero" ref="a19b7e6d48b1b57bd4846160ea2928175" args="()" --> static const <a class="el" href="class_integer.html">Integer</a> &__cdecl </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a19b7e6d48b1b57bd4846160ea2928175">Zero</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">avoid calling constructors for these frequently used integers <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8c070592581bf6c2f928c72bfa1c1638"></a><!-- doxytag: member="Integer::One" ref="a8c070592581bf6c2f928c72bfa1c1638" args="()" --> static const <a class="el" href="class_integer.html">Integer</a> &__cdecl </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a8c070592581bf6c2f928c72bfa1c1638">One</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">avoid calling constructors for these frequently used integers <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af0cb74a45a48e677952166bdac9d82d7"></a><!-- doxytag: member="Integer::Two" ref="af0cb74a45a48e677952166bdac9d82d7" args="()" --> static const <a class="el" href="class_integer.html">Integer</a> &__cdecl </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#af0cb74a45a48e677952166bdac9d82d7">Two</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">avoid calling constructors for these frequently used integers <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade53248f5dbb520273a70856b975417c"></a><!-- doxytag: member="Integer::Power2" ref="ade53248f5dbb520273a70856b975417c" args="(size_t e)" --> static <a class="el" href="class_integer.html">Integer</a> __cdecl </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#ade53248f5dbb520273a70856b975417c">Power2</a> (size_t e)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">return the integer 2**e <br/></td></tr> <tr><td colspan="2"><h2>ENCODE/DECODE</h2></td></tr> <tr><td colspan="2"><p><a class="anchor" id="amgrp504bf883702193e006878608276a59c5"></a> </p> <br/><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a3b269bbf8a91faf217c0dd76222182bb">MinEncodedSize</a> (Signedness=UNSIGNED) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">minimum number of bytes to encode this integer <a href="#a3b269bbf8a91faf217c0dd76222182bb"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#ac12ea467de9a609b86ec03d8cb8837e4">Encode</a> (byte *output, size_t outputLen, Signedness=UNSIGNED) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">encode in big-endian format <a href="#ac12ea467de9a609b86ec03d8cb8837e4"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a18a664f00df5dcfb979b2e804e7418ce"></a><!-- doxytag: member="Integer::Encode" ref="a18a664f00df5dcfb979b2e804e7418ce" args="(BufferedTransformation &bt, size_t outputLen, Signedness=UNSIGNED) const " --> void </td><td class="memItemRight" valign="bottom"><b>Encode</b> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &bt, size_t outputLen, Signedness=UNSIGNED) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6ab51a05bee88cfa690179611e8a084e"></a><!-- doxytag: member="Integer::DEREncode" ref="a6ab51a05bee88cfa690179611e8a084e" args="(BufferedTransformation &bt) const " --> void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a6ab51a05bee88cfa690179611e8a084e">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 using Distinguished Encoding Rules, put result into a <a class="el" href="class_buffered_transformation.html" title="interface for buffered transformations">BufferedTransformation</a> object <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1dc54b479df856d614cb23e362126110"></a><!-- doxytag: member="Integer::DEREncodeAsOctetString" ref="a1dc54b479df856d614cb23e362126110" args="(BufferedTransformation &bt, size_t length) const " --> void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a1dc54b479df856d614cb23e362126110">DEREncodeAsOctetString</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &bt, size_t length) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">encode absolute value as big-endian octet string <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9d6226e12e1ac0b957ad84ac54a15ce9"></a><!-- doxytag: member="Integer::OpenPGPEncode" ref="a9d6226e12e1ac0b957ad84ac54a15ce9" args="(byte *output, size_t bufferSize) const " --> size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a9d6226e12e1ac0b957ad84ac54a15ce9">OpenPGPEncode</a> (byte *output, size_t bufferSize) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">encode absolute value in OpenPGP format, return length of output <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2325e09a01b29c3a70f3c2bcfcea0a1d"></a><!-- doxytag: member="Integer::OpenPGPEncode" ref="a2325e09a01b29c3a70f3c2bcfcea0a1d" args="(BufferedTransformation &bt) const " --> size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a2325e09a01b29c3a70f3c2bcfcea0a1d">OpenPGPEncode</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &bt) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">encode absolute value in OpenPGP format, put result into a <a class="el" href="class_buffered_transformation.html" title="interface for buffered transformations">BufferedTransformation</a> object <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae91fee9e9873f3412f47e6d647545099"></a><!-- doxytag: member="Integer::Decode" ref="ae91fee9e9873f3412f47e6d647545099" args="(const byte *input, size_t inputLen, Signedness=UNSIGNED)" --> void </td><td class="memItemRight" valign="bottom"><b>Decode</b> (const byte *input, size_t inputLen, Signedness=UNSIGNED)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a92052699599bfd434418b782dbaf4f72"></a><!-- doxytag: member="Integer::Decode" ref="a92052699599bfd434418b782dbaf4f72" args="(BufferedTransformation &bt, size_t inputLen, Signedness=UNSIGNED)" --> void </td><td class="memItemRight" valign="bottom"><b>Decode</b> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &bt, size_t inputLen, Signedness=UNSIGNED)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a810fc0382f8928893fe192ab79b1972c"></a><!-- doxytag: member="Integer::BERDecode" ref="a810fc0382f8928893fe192ab79b1972c" args="(const byte *input, size_t inputLen)" --> void </td><td class="memItemRight" valign="bottom"><b>BERDecode</b> (const byte *input, size_t inputLen)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8736cc41b06596c9c04328d2f0238db7"></a><!-- doxytag: member="Integer::BERDecode" ref="a8736cc41b06596c9c04328d2f0238db7" args="(BufferedTransformation &bt)" --> void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a8736cc41b06596c9c04328d2f0238db7">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" title="interface for buffered transformations">BufferedTransformation</a>, using BER (Basic Encoding Rules) <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59f2e3f759fb252da8ce4bd718fb6487"></a><!-- doxytag: member="Integer::BERDecodeAsOctetString" ref="a59f2e3f759fb252da8ce4bd718fb6487" args="(BufferedTransformation &bt, size_t length)" --> void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a59f2e3f759fb252da8ce4bd718fb6487">BERDecodeAsOctetString</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &bt, size_t length)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">decode nonnegative value as big-endian octet string <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4b2415221b6eb9ffde8c9c495ae098f2"></a><!-- doxytag: member="Integer::OpenPGPDecode" ref="a4b2415221b6eb9ffde8c9c495ae098f2" args="(const byte *input, size_t inputLen)" --> void </td><td class="memItemRight" valign="bottom"><b>OpenPGPDecode</b> (const byte *input, size_t inputLen)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9ff99fc6723da5a45c98212de5cf4f3d"></a><!-- doxytag: member="Integer::OpenPGPDecode" ref="a9ff99fc6723da5a45c98212de5cf4f3d" args="(BufferedTransformation &bt)" --> void </td><td class="memItemRight" valign="bottom"><b>OpenPGPDecode</b> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &bt)</td></tr> <tr><td colspan="2"><h2>ACCESSORS</h2></td></tr> <tr><td colspan="2"><p><a class="anchor" id="amgrpc0453e8d6311263eccfc02576bf64333"></a> </p> <br/><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abc8abb12371da5c520d15efd64532697"></a><!-- doxytag: member="Integer::IsConvertableToLong" ref="abc8abb12371da5c520d15efd64532697" args="() const " --> bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#abc8abb12371da5c520d15efd64532697">IsConvertableToLong</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">return true if *this can be represented as a signed long <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9c689da5ded6e077a203b122deec519f"></a><!-- doxytag: member="Integer::ConvertToLong" ref="a9c689da5ded6e077a203b122deec519f" args="() const " --> signed long </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a9c689da5ded6e077a203b122deec519f">ConvertToLong</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">return equivalent signed long if possible, otherwise undefined <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a178398002ab175e788a3bc224e5e5a8d"></a><!-- doxytag: member="Integer::BitCount" ref="a178398002ab175e788a3bc224e5e5a8d" args="() const " --> unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a178398002ab175e788a3bc224e5e5a8d">BitCount</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">number of significant bits = floor(log2(abs(*this))) + 1 <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aea4f2d31725ab02c67d9ea0288767670"></a><!-- doxytag: member="Integer::ByteCount" ref="aea4f2d31725ab02c67d9ea0288767670" args="() const " --> unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#aea4f2d31725ab02c67d9ea0288767670">ByteCount</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">number of significant bytes = ceiling(<a class="el" href="class_integer.html#a178398002ab175e788a3bc224e5e5a8d" title="number of significant bits = floor(log2(abs(*this))) + 1">BitCount()</a>/8) <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa8ecc9cc334b338ee805f91e6b289396"></a><!-- doxytag: member="Integer::WordCount" ref="aa8ecc9cc334b338ee805f91e6b289396" args="() const " --> unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#aa8ecc9cc334b338ee805f91e6b289396">WordCount</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">number of significant words = ceiling(<a class="el" href="class_integer.html#aea4f2d31725ab02c67d9ea0288767670" title="number of significant bytes = ceiling(BitCount()/8)">ByteCount()</a>/sizeof(word)) <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2814c3b82849bd8f6f44cc36974f1717"></a><!-- doxytag: member="Integer::GetBit" ref="a2814c3b82849bd8f6f44cc36974f1717" args="(size_t i) const " --> bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a2814c3b82849bd8f6f44cc36974f1717">GetBit</a> (size_t i) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">return the i-th bit, i=0 being the least significant bit <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a95fad23b0d8a06325ca2893300c9b45e"></a><!-- doxytag: member="Integer::GetByte" ref="a95fad23b0d8a06325ca2893300c9b45e" args="(size_t i) const " --> byte </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a95fad23b0d8a06325ca2893300c9b45e">GetByte</a> (size_t i) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">return the i-th byte <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a66049970ba544ce8178f9c7d69776b23"></a><!-- doxytag: member="Integer::GetBits" ref="a66049970ba544ce8178f9c7d69776b23" args="(size_t i, size_t n) const " --> lword </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a66049970ba544ce8178f9c7d69776b23">GetBits</a> (size_t i, size_t n) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">return n lowest bits of *this >> i <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6d70dd43a65cfec05f5563daa43fd104"></a><!-- doxytag: member="Integer::IsZero" ref="a6d70dd43a65cfec05f5563daa43fd104" args="() const " --> bool </td><td class="memItemRight" valign="bottom"><b>IsZero</b> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a00b920fd1854a8a1a5be234edebfd8e2"></a><!-- doxytag: member="Integer::NotZero" ref="a00b920fd1854a8a1a5be234edebfd8e2" args="() const " --> bool </td><td class="memItemRight" valign="bottom"><b>NotZero</b> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7118a72cd6ac315a17ebe03316f25186"></a><!-- doxytag: member="Integer::IsNegative" ref="a7118a72cd6ac315a17ebe03316f25186" args="() const " --> bool </td><td class="memItemRight" valign="bottom"><b>IsNegative</b> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9c7691b0c0f9a26b7343c46be1665a35"></a><!-- doxytag: member="Integer::NotNegative" ref="a9c7691b0c0f9a26b7343c46be1665a35" args="() const " --> bool </td><td class="memItemRight" valign="bottom"><b>NotNegative</b> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a74fcb4d6ac90900a049937113036f527"></a><!-- doxytag: member="Integer::IsPositive" ref="a74fcb4d6ac90900a049937113036f527" args="() const " --> bool </td><td class="memItemRight" valign="bottom"><b>IsPositive</b> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af202b82ae0c4149ca05eccbe200d2e99"></a><!-- doxytag: member="Integer::NotPositive" ref="af202b82ae0c4149ca05eccbe200d2e99" args="() const " --> bool </td><td class="memItemRight" valign="bottom"><b>NotPositive</b> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a135da78466ea269cdc803fca1cc78129"></a><!-- doxytag: member="Integer::IsEven" ref="a135da78466ea269cdc803fca1cc78129" args="() const " --> bool </td><td class="memItemRight" valign="bottom"><b>IsEven</b> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee32e0b261b2558cf0fd5f3077e68a3b"></a><!-- doxytag: member="Integer::IsOdd" ref="aee32e0b261b2558cf0fd5f3077e68a3b" args="() const " --> bool </td><td class="memItemRight" valign="bottom"><b>IsOdd</b> () const </td></tr> <tr><td colspan="2"><h2>MANIPULATORS</h2></td></tr> <tr><td colspan="2"><p><a class="anchor" id="amgrp96fa225bbaf7975cba24829e8ce78daf"></a> </p> <br/><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a96a2740dadac69f6ff374feb071a94ec"></a><!-- doxytag: member="Integer::operator=" ref="a96a2740dadac69f6ff374feb071a94ec" args="(const Integer &t)" --> <a class="el" href="class_integer.html">Integer</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="class_integer.html">Integer</a> &t)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a37047060547d744b74f15649fbae6ea3"></a><!-- doxytag: member="Integer::operator+=" ref="a37047060547d744b74f15649fbae6ea3" args="(const Integer &t)" --> <a class="el" href="class_integer.html">Integer</a> & </td><td class="memItemRight" valign="bottom"><b>operator+=</b> (const <a class="el" href="class_integer.html">Integer</a> &t)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9951406a1fe063627d3293b27f8c1441"></a><!-- doxytag: member="Integer::operator-=" ref="a9951406a1fe063627d3293b27f8c1441" args="(const Integer &t)" --> <a class="el" href="class_integer.html">Integer</a> & </td><td class="memItemRight" valign="bottom"><b>operator-=</b> (const <a class="el" href="class_integer.html">Integer</a> &t)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adb1320901d7bbf1ee52bf27bacdfb9df"></a><!-- doxytag: member="Integer::operator*=" ref="adb1320901d7bbf1ee52bf27bacdfb9df" args="(const Integer &t)" --> <a class="el" href="class_integer.html">Integer</a> & </td><td class="memItemRight" valign="bottom"><b>operator*=</b> (const <a class="el" href="class_integer.html">Integer</a> &t)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a80e968a9c7afc4979fe2148170ec7458"></a><!-- doxytag: member="Integer::operator/=" ref="a80e968a9c7afc4979fe2148170ec7458" args="(const Integer &t)" --> <a class="el" href="class_integer.html">Integer</a> & </td><td class="memItemRight" valign="bottom"><b>operator/=</b> (const <a class="el" href="class_integer.html">Integer</a> &t)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a468142f7860854f6e97910af4eb2b220"></a><!-- doxytag: member="Integer::operator%=" ref="a468142f7860854f6e97910af4eb2b220" args="(const Integer &t)" --> <a class="el" href="class_integer.html">Integer</a> & </td><td class="memItemRight" valign="bottom"><b>operator%=</b> (const <a class="el" href="class_integer.html">Integer</a> &t)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6fcad58a76f3cedc4134a18d56ebb808"></a><!-- doxytag: member="Integer::operator/=" ref="a6fcad58a76f3cedc4134a18d56ebb808" args="(word t)" --> <a class="el" href="class_integer.html">Integer</a> & </td><td class="memItemRight" valign="bottom"><b>operator/=</b> (word t)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3874b6ac8979328ce532eebc8b275eab"></a><!-- doxytag: member="Integer::operator%=" ref="a3874b6ac8979328ce532eebc8b275eab" args="(word t)" --> <a class="el" href="class_integer.html">Integer</a> & </td><td class="memItemRight" valign="bottom"><b>operator%=</b> (word t)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad2d8542b96b5a40ea740ccf7f1bf4129"></a><!-- doxytag: member="Integer::operator<<=" ref="ad2d8542b96b5a40ea740ccf7f1bf4129" args="(size_t)" --> <a class="el" href="class_integer.html">Integer</a> & </td><td class="memItemRight" valign="bottom"><b>operator<<=</b> (size_t)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9dbbe7f79b702f8a9981a9297188875e"></a><!-- doxytag: member="Integer::operator>>=" ref="a9dbbe7f79b702f8a9981a9297188875e" args="(size_t)" --> <a class="el" href="class_integer.html">Integer</a> & </td><td class="memItemRight" valign="bottom"><b>operator>>=</b> (size_t)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0f0574b9cae3cddf62c155da93085f0d"></a><!-- doxytag: member="Integer::Randomize" ref="a0f0574b9cae3cddf62c155da93085f0d" args="(RandomNumberGenerator &rng, size_t bitcount)" --> void </td><td class="memItemRight" valign="bottom"><b>Randomize</b> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, size_t bitcount)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aae8e0904d1752629f59f0343507c7f8b"></a><!-- doxytag: member="Integer::Randomize" ref="aae8e0904d1752629f59f0343507c7f8b" args="(RandomNumberGenerator &rng, const Integer &min, const Integer &max)" --> void </td><td class="memItemRight" valign="bottom"><b>Randomize</b> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, const <a class="el" href="class_integer.html">Integer</a> &min, const <a class="el" href="class_integer.html">Integer</a> &max)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a83dd6a11aa51d545ce2735777787b622">Randomize</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, const <a class="el" href="class_integer.html">Integer</a> &min, const <a class="el" href="class_integer.html">Integer</a> &max, RandomNumberType rnType, const <a class="el" href="class_integer.html">Integer</a> &equiv=Zero(), const <a class="el" href="class_integer.html">Integer</a> &mod=One())</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">set this <a class="el" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> to a random element of {x | min <= x <= max and x is of rnType and x % mod == equiv} <a href="#a83dd6a11aa51d545ce2735777787b622"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad330521e84a900a80e8dd90e97796e17"></a><!-- doxytag: member="Integer::GenerateRandomNoThrow" ref="ad330521e84a900a80e8dd90e97796e17" args="(RandomNumberGenerator &rng, const NameValuePairs &params=g_nullNameValuePairs)" --> bool </td><td class="memItemRight" valign="bottom"><b>GenerateRandomNoThrow</b> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, const <a class="el" href="class_name_value_pairs.html">NameValuePairs</a> &params=<a class="el" href="cryptlib_8h.html#ad3205973dd1afa14090a683154c1109c">g_nullNameValuePairs</a>)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0d9a427fe64a454b11b24fe61c10dbeb"></a><!-- doxytag: member="Integer::GenerateRandom" ref="a0d9a427fe64a454b11b24fe61c10dbeb" args="(RandomNumberGenerator &rng, const NameValuePairs &params=g_nullNameValuePairs)" --> void </td><td class="memItemRight" valign="bottom"><b>GenerateRandom</b> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, const <a class="el" href="class_name_value_pairs.html">NameValuePairs</a> &params=<a class="el" href="cryptlib_8h.html#ad3205973dd1afa14090a683154c1109c">g_nullNameValuePairs</a>)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2f0d5fae94eba0c55da9bd1c5138d155"></a><!-- doxytag: member="Integer::SetBit" ref="a2f0d5fae94eba0c55da9bd1c5138d155" args="(size_t n, bool value=1)" --> void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a2f0d5fae94eba0c55da9bd1c5138d155">SetBit</a> (size_t n, bool value=1)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">set the n-th bit to value <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0ff987d783a61f52c8c5d57b324a8d45"></a><!-- doxytag: member="Integer::SetByte" ref="a0ff987d783a61f52c8c5d57b324a8d45" args="(size_t n, byte value)" --> void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a0ff987d783a61f52c8c5d57b324a8d45">SetByte</a> (size_t n, byte value)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">set the n-th byte to value <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a87410093addf9a2253fe07b39b918b02"></a><!-- doxytag: member="Integer::Negate" ref="a87410093addf9a2253fe07b39b918b02" args="()" --> void </td><td class="memItemRight" valign="bottom"><b>Negate</b> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ba4496f4ae1392c3860d3bcbba586c1"></a><!-- doxytag: member="Integer::SetPositive" ref="a8ba4496f4ae1392c3860d3bcbba586c1" args="()" --> void </td><td class="memItemRight" valign="bottom"><b>SetPositive</b> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a860dd1318ef7089d774674f2100c8fb8"></a><!-- doxytag: member="Integer::SetNegative" ref="a860dd1318ef7089d774674f2100c8fb8" args="()" --> void </td><td class="memItemRight" valign="bottom"><b>SetNegative</b> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abf1e9c170e56841ce73d137c12675f9b"></a><!-- doxytag: member="Integer::swap" ref="abf1e9c170e56841ce73d137c12675f9b" args="(Integer &a)" --> void </td><td class="memItemRight" valign="bottom"><b>swap</b> (<a class="el" href="class_integer.html">Integer</a> &a)</td></tr> <tr><td colspan="2"><h2>UNARY OPERATORS</h2></td></tr> <tr><td colspan="2"><p><a class="anchor" id="amgrpf2e24c7f281b06b6998903e7b5569b30"></a> </p> <br/><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af38f3bf1d96507458e5479b24174c08c"></a><!-- doxytag: member="Integer::operator!" ref="af38f3bf1d96507458e5479b24174c08c" args="() const " --> bool </td><td class="memItemRight" valign="bottom"><b>operator!</b> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0af6f7034ff425fd4e2e6863ab13f198"></a><!-- doxytag: member="Integer::operator+" ref="a0af6f7034ff425fd4e2e6863ab13f198" args="() const " --> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign="bottom"><b>operator+</b> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a56b6d34f3b1e76c59f1413d7d91465b1"></a><!-- doxytag: member="Integer::operator-" ref="a56b6d34f3b1e76c59f1413d7d91465b1" args="() const " --> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign="bottom"><b>operator-</b> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4290bf7f6763b27a51e216bdbfdea68f"></a><!-- doxytag: member="Integer::operator++" ref="a4290bf7f6763b27a51e216bdbfdea68f" args="()" --> <a class="el" href="class_integer.html">Integer</a> & </td><td class="memItemRight" valign="bottom"><b>operator++</b> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5b3dd03530b31f3839c75dcdc4322ee6"></a><!-- doxytag: member="Integer::operator--" ref="a5b3dd03530b31f3839c75dcdc4322ee6" args="()" --> <a class="el" href="class_integer.html">Integer</a> & </td><td class="memItemRight" valign="bottom"><b>operator--</b> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1666444f09484e482b2f94dd263c7dc9"></a><!-- doxytag: member="Integer::operator++" ref="a1666444f09484e482b2f94dd263c7dc9" args="(int)" --> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign="bottom"><b>operator++</b> (int)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a000120734ad8ba84af5c5ac7f5f84925"></a><!-- doxytag: member="Integer::operator--" ref="a000120734ad8ba84af5c5ac7f5f84925" args="(int)" --> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign="bottom"><b>operator--</b> (int)</td></tr> <tr><td colspan="2"><h2>BINARY OPERATORS</h2></td></tr> <tr><td colspan="2"><p><a class="anchor" id="amgrp9e1d9554636126ae321e225d1d24c447"></a> </p> <br/><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a550cf80410789dc459df82387792ed49">Compare</a> (const <a class="el" href="class_integer.html">Integer</a> &a) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">signed comparison <a href="#a550cf80410789dc459df82387792ed49"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9e294ba5adf2c733e4185fc9c497ff2a"></a><!-- doxytag: member="Integer::Plus" ref="a9e294ba5adf2c733e4185fc9c497ff2a" args="(const Integer &b) const " --> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign="bottom"><b>Plus</b> (const <a class="el" href="class_integer.html">Integer</a> &b) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf500b571832a4a29315837c94ccada3"></a><!-- doxytag: member="Integer::Minus" ref="aaf500b571832a4a29315837c94ccada3" args="(const Integer &b) const " --> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign="bottom"><b>Minus</b> (const <a class="el" href="class_integer.html">Integer</a> &b) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa7547efdb8c45c6b033bfb1a0d5141e6"></a><!-- doxytag: member="Integer::Times" ref="aa7547efdb8c45c6b033bfb1a0d5141e6" args="(const Integer &b) const " --> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign="bottom"><b>Times</b> (const <a class="el" href="class_integer.html">Integer</a> &b) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9a6d4284d05d6377cbf6a07611a57545"></a><!-- doxytag: member="Integer::DividedBy" ref="a9a6d4284d05d6377cbf6a07611a57545" args="(const Integer &b) const " --> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign="bottom"><b>DividedBy</b> (const <a class="el" href="class_integer.html">Integer</a> &b) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a850606c271d06678f98c98ecc0f0ac23"></a><!-- doxytag: member="Integer::Modulo" ref="a850606c271d06678f98c98ecc0f0ac23" args="(const Integer &b) const " --> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign="bottom"><b>Modulo</b> (const <a class="el" href="class_integer.html">Integer</a> &b) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16dab535de7a1ce00f2cb84da79d88db"></a><!-- doxytag: member="Integer::DividedBy" ref="a16dab535de7a1ce00f2cb84da79d88db" args="(word b) const " --> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign="bottom"><b>DividedBy</b> (word b) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a50e1b59012582912ff015cc083d50a50"></a><!-- doxytag: member="Integer::Modulo" ref="a50e1b59012582912ff015cc083d50a50" args="(word b) const " --> word </td><td class="memItemRight" valign="bottom"><b>Modulo</b> (word b) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5d73ebaa15061b4d251c8cdee218ea26"></a><!-- doxytag: member="Integer::operator>>" ref="a5d73ebaa15061b4d251c8cdee218ea26" args="(size_t n) const " --> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign="bottom"><b>operator>></b> (size_t n) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad3ad44e1538d8d1a0eb55a502588026f"></a><!-- doxytag: member="Integer::operator<<" ref="ad3ad44e1538d8d1a0eb55a502588026f" args="(size_t n) const " --> <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign="bottom"><b>operator<<</b> (size_t n) const </td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <p>multiple precision integer and basic arithmetics </p> <p>This class can represent positive and negative integers with absolute value less than (256**sizeof(word)) ** (256**sizeof(int)). </p> <p>Definition at line <a class="el" href="integer_8h_source.html#l00026">26</a> of file <a class="el" href="integer_8h_source.html">integer.h</a>.</p> <hr/><h2>Constructor & Destructor Documentation</h2> <a class="anchor" id="a9e8bf8c72458dff4ceb5d6cdf9e5c97a"></a><!-- doxytag: member="Integer::Integer" ref="a9e8bf8c72458dff4ceb5d6cdf9e5c97a" args="(const char *str)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">Integer::Integer </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>str</em></td> <td> ) </td> <td><code> [explicit]</code></td> </tr> </table> </div> <div class="memdoc"> <p>convert from string </p> <p>str can be in base 2, 8, 10, or 16. Base is determined by a case insensitive suffix of 'h', 'o', or 'b'. No suffix means base 10. </p> <p>Definition at line <a class="el" href="integer_8cpp_source.html#l03040">3040</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p> </div> </div> <a class="anchor" id="aeb4abb834e9e897a28850d2081f3fa63"></a><!-- doxytag: member="Integer::Integer" ref="aeb4abb834e9e897a28850d2081f3fa63" args="(RandomNumberGenerator &rng, size_t bitcount)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">Integer::Integer </td> <td>(</td> <td class="paramtype"><a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> & </td> <td class="paramname"> <em>rng</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>bitcount</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>create a random integer </p> <p>The random integer created is uniformly distributed over [0, 2**bitcount). </p> <p>Definition at line <a class="el" href="integer_8cpp_source.html#l02847">2847</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p> </div> </div> <a class="anchor" id="a88a110cb9f89a8810c228ad00cea18c2"></a><!-- doxytag: member="Integer::Integer" ref="a88a110cb9f89a8810c228ad00cea18c2" args="(RandomNumberGenerator &rng, const Integer &min, const Integer &max, RandomNumberType rnType=ANY, const Integer &equiv=Zero(), const Integer &mod=One())" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">Integer::Integer </td> <td>(</td> <td class="paramtype"><a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> & </td> <td class="paramname"> <em>rng</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="class_integer.html">Integer</a> & </td> <td class="paramname"> <em>min</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="class_integer.html">Integer</a> & </td> <td class="paramname"> <em>max</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">RandomNumberType </td> <td class="paramname"> <em>rnType</em> = <code>ANY</code>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="class_integer.html">Integer</a> & </td> <td class="paramname"> <em>equiv</em> = <code>Zero()</code>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="class_integer.html">Integer</a> & </td> <td class="paramname"> <em>mod</em> = <code>One()</code></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>create a random integer of special type </p> <p>Ideally, the random integer created should be uniformly distributed over {x | min <= x <= max and x is of rnType and x % mod == equiv}. However the actual distribution may not be uniform because sequential search is used to find an appropriate number from a random starting point. May return (with very small probability) a pseudoprime when a prime is requested and max > lastSmallPrime*lastSmallPrime (lastSmallPrime is declared in <a class="el" href="nbtheory_8h_source.html">nbtheory.h</a>). </p> <dl><dt><b>Exceptions:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em><a class="el" href="class_integer_1_1_random_number_not_found.html">RandomNumberNotFound</a></em> </td><td>if the set is empty. </td></tr> </table> </dd> </dl> <p>Definition at line <a class="el" href="integer_8cpp_source.html#l02852">2852</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p> </div> </div> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="a3b269bbf8a91faf217c0dd76222182bb"></a><!-- doxytag: member="Integer::MinEncodedSize" ref="a3b269bbf8a91faf217c0dd76222182bb" args="(Signedness=UNSIGNED) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">size_t Integer::MinEncodedSize </td> <td>(</td> <td class="paramtype">Signedness </td> <td class="paramname"> <em>signedness</em> = <code>UNSIGNED</code></td> <td> ) </td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p>minimum number of bytes to encode this integer </p> <p>MinEncodedSize of 0 is 1 </p> <p>Definition at line <a class="el" href="integer_8cpp_source.html#l03112">3112</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p> <p>References <a class="el" href="integer_8cpp_source.html#l03057">ByteCount()</a>, <a class="el" href="integer_8cpp_source.html#l02928">GetByte()</a>, and <a class="el" href="integer_8cpp_source.html#l02858">Power2()</a>.</p> <p>Referenced by <a class="el" href="integer_8cpp_source.html#l03145">DEREncode()</a>.</p> </div> </div> <a class="anchor" id="ac12ea467de9a609b86ec03d8cb8837e4"></a><!-- doxytag: member="Integer::Encode" ref="ac12ea467de9a609b86ec03d8cb8837e4" args="(byte *output, size_t outputLen, Signedness=UNSIGNED) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void Integer::Encode </td> <td>(</td> <td class="paramtype">byte * </td> <td class="paramname"> <em>output</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>outputLen</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">Signedness </td> <td class="paramname"> <em>signedness</em> = <code>UNSIGNED</code></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td> const</td> </tr> </table> </div> <div class="memdoc"> <p>encode in big-endian format </p> <p>unsigned means encode absolute value, signed means encode two's complement if negative. if outputLen < MinEncodedSize, the most significant bytes will be dropped if outputLen > MinEncodedSize, the most significant bytes will be padded </p> <p>Definition at line <a class="el" href="integer_8cpp_source.html#l03124">3124</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p> <p>Referenced by <a class="el" href="pubkey_8cpp_source.html#l00135">TF_DecryptorBase::Decrypt()</a>, <a class="el" href="integer_8cpp_source.html#l03145">DEREncode()</a>, <a class="el" href="integer_8cpp_source.html#l03167">DEREncodeAsOctetString()</a>, <a class="el" href="dsa_8cpp_source.html#l00012">DSAConvertSignatureFormat()</a>, <a class="el" href="pubkey_8cpp_source.html#l00145">TF_EncryptorBase::Encrypt()</a>, <a class="el" href="xtrcrypt_8cpp_source.html#l00077">XTR_DH::GeneratePrivateKey()</a>, <a class="el" href="pubkey_8h_source.html#l01386">DL_SimpleKeyAgreementDomainBase< GROUP_PARAMETERS::Element >::GeneratePrivateKey()</a>, <a class="el" href="mqv_8h_source.html#l00049">MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >::GenerateStaticPrivateKey()</a>, <a class="el" href="pubkey_8cpp_source.html#l00089">TF_VerifierBase::InputSignature()</a>, <a class="el" href="integer_8cpp_source.html#l03189">OpenPGPEncode()</a>, <a class="el" href="pubkey_8h_source.html#l01119">DL_VerifierBase< SCHEME_OPTIONS::Element >::RecoverAndRestart()</a>, and <a class="el" href="pubkey_8cpp_source.html#l00067">TF_SignerBase::SignAndRestart()</a>.</p> </div> </div> <a class="anchor" id="a83dd6a11aa51d545ce2735777787b622"></a><!-- doxytag: member="Integer::Randomize" ref="a83dd6a11aa51d545ce2735777787b622" args="(RandomNumberGenerator &rng, const Integer &min, const Integer &max, RandomNumberType rnType, const Integer &equiv=Zero(), const Integer &mod=One())" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool Integer::Randomize </td> <td>(</td> <td class="paramtype"><a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> & </td> <td class="paramname"> <em>rng</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="class_integer.html">Integer</a> & </td> <td class="paramname"> <em>min</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="class_integer.html">Integer</a> & </td> <td class="paramname"> <em>max</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">RandomNumberType </td> <td class="paramname"> <em>rnType</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="class_integer.html">Integer</a> & </td> <td class="paramname"> <em>equiv</em> = <code>Zero()</code>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="class_integer.html">Integer</a> & </td> <td class="paramname"> <em>mod</em> = <code>One()</code></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>set this <a class="el" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> to a random element of {x | min <= x <= max and x is of rnType and x % mod == equiv} </p> <p>returns false if the set is empty </p> <p>Definition at line <a class="el" href="integer_8cpp_source.html#l03239">3239</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p> </div> </div> <a class="anchor" id="a550cf80410789dc459df82387792ed49"></a><!-- doxytag: member="Integer::Compare" ref="a550cf80410789dc459df82387792ed49" args="(const Integer &a) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int Integer::Compare </td> <td>(</td> <td class="paramtype">const <a class="el" href="class_integer.html">Integer</a> & </td> <td class="paramname"> <em>a</em></td> <td> ) </td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p>signed comparison </p> <dl><dt><b>Return values:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>-1</em> </td><td>if *this < a </td></tr> <tr><td valign="top"></td><td valign="top"><em>0</em> </td><td>if *this = a </td></tr> <tr><td valign="top"></td><td valign="top"><em>1</em> </td><td>if *this > a </td></tr> </table> </dd> </dl> <p>Definition at line <a class="el" href="integer_8cpp_source.html#l03902">3902</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p> </div> </div> <a class="anchor" id="ab8446b61690a19015d3d565d86dd1d3d"></a><!-- doxytag: member="Integer::BEREncode" ref="ab8446b61690a19015d3d565d86dd1d3d" args="(BufferedTransformation &bt) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual void ASN1Object::BEREncode </td> <td>(</td> <td class="paramtype"><a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> & </td> <td class="paramname"> <em>bt</em></td> <td> ) </td> <td> const<code> [inline, virtual, inherited]</code></td> </tr> </table> </div> <div class="memdoc"> <p>encode this object into a <a class="el" href="class_buffered_transformation.html" title="interface for buffered transformations">BufferedTransformation</a>, using BER </p> <p>this may be useful if <a class="el" href="class_a_s_n1_object.html#a10e40187a6ba048dfc8a2c8ca5c6c2ec" title="encode this object into a BufferedTransformation, using DER (Distinguished Encoding...">DEREncode()</a> would be too inefficient </p> <p>Definition at line <a class="el" href="cryptlib_8h_source.html#l01657">1657</a> of file <a class="el" href="cryptlib_8h_source.html">cryptlib.h</a>.</p> </div> </div> <hr/>The documentation for this class was generated from the following files:<ul> <li><a class="el" href="integer_8h_source.html">integer.h</a></li> <li><a class="el" href="integer_8cpp_source.html">integer.cpp</a></li> </ul> </div> <hr size="1"/><address style="text-align: right;"><small>Generated on 9 Dec 2009 for Crypto++ by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address> </body> </html>