Sophie

Sophie

distrib > Mageia > 4 > x86_64 > by-pkgid > 9e72f3e7ecf68cce016a7c5c59e863d3 > files > 135

lib64polarssl-devel-1.3.8-1.mga4.x86_64.rpm

<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>PolarSSL v1.3.8: bignum.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">PolarSSL v1.3.8
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_6a9bbd12bf4e19a18c45e270f8fae3fd.html">include</a></li><li class="navelem"><a class="el" href="dir_04272d44da4745cf8b8bfc767d6c6523.html">polarssl</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">bignum.h</div>  </div>
</div><!--header-->
<div class="contents">
<a href="bignum_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div>
<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#ifndef POLARSSL_BIGNUM_H</span></div>
<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define POLARSSL_BIGNUM_H</span></div>
<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;stdio.h&gt;</span></div>
<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;string.h&gt;</span></div>
<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div>
<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#if !defined(POLARSSL_CONFIG_FILE)</span></div>
<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &quot;<a class="code" href="config_8h.html">config.h</a>&quot;</span></div>
<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include POLARSSL_CONFIG_FILE</span></div>
<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#if defined(_MSC_VER) &amp;&amp; !defined(EFIX64) &amp;&amp; !defined(EFI32)</span></div>
<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;basetsd.h&gt;</span></div>
<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#if (_MSC_VER &lt;= 1200)</span></div>
<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor"></span><span class="keyword">typedef</span>   <span class="keywordtype">signed</span> <span class="keywordtype">short</span>  int16_t;</div>
<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> uint16_t;</div>
<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor"></span><span class="keyword">typedef</span>  INT16  int16_t;</div>
<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="keyword">typedef</span> UINT16 uint16_t;</div>
<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="preprocessor"></span><span class="keyword">typedef</span>  INT32  int32_t;</div>
<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="keyword">typedef</span>  INT64  int64_t;</div>
<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="keyword">typedef</span> UINT32 uint32_t;</div>
<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="keyword">typedef</span> UINT64 uint64_t;</div>
<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;inttypes.h&gt;</span></div>
<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* _MSC_VER &amp;&amp; !EFIX64 &amp;&amp; !EFI32 */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="bignum_8h.html#a4f10c6e250b7a06f2fc01ce48a823fc8">   56</a></span>&#160;<span class="preprocessor">#define POLARSSL_ERR_MPI_FILE_IO_ERROR                     -0x0002  </span></div>
<div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="bignum_8h.html#aad5959617396031440786cd8ff24712a">   57</a></span>&#160;<span class="preprocessor">#define POLARSSL_ERR_MPI_BAD_INPUT_DATA                    -0x0004  </span></div>
<div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="bignum_8h.html#af2d758961ae9e4085d2a43588ecb782a">   58</a></span>&#160;<span class="preprocessor">#define POLARSSL_ERR_MPI_INVALID_CHARACTER                 -0x0006  </span></div>
<div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="bignum_8h.html#ab0139fd8e0536a4bd1da18c9ea5bcb84">   59</a></span>&#160;<span class="preprocessor">#define POLARSSL_ERR_MPI_BUFFER_TOO_SMALL                  -0x0008  </span></div>
<div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="bignum_8h.html#afbbffbd20b56d2b8f3db8edf76cdbdb4">   60</a></span>&#160;<span class="preprocessor">#define POLARSSL_ERR_MPI_NEGATIVE_VALUE                    -0x000A  </span></div>
<div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="bignum_8h.html#a96380f09df1ad46baba97af000b05466">   61</a></span>&#160;<span class="preprocessor">#define POLARSSL_ERR_MPI_DIVISION_BY_ZERO                  -0x000C  </span></div>
<div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="bignum_8h.html#ac42cb2c2b13df48182ee833de2e4adbf">   62</a></span>&#160;<span class="preprocessor">#define POLARSSL_ERR_MPI_NOT_ACCEPTABLE                    -0x000E  </span></div>
<div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="bignum_8h.html#ad288a13737d14f102748c3184ed5a494">   63</a></span>&#160;<span class="preprocessor">#define POLARSSL_ERR_MPI_MALLOC_FAILED                     -0x0010  </span></div>
<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="bignum_8h.html#a024b186dd3608bcbcfc9dd36212a18ec">   65</a></span>&#160;<span class="preprocessor">#define MPI_CHK(f) do { if( ( ret = f ) != 0 ) goto cleanup; } while( 0 )</span></div>
<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="comment"> * Maximum size MPIs are allowed to grow to in number of limbs.</span></div>
<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="bignum_8h.html#a8ee0afd7c8a22f13aaa70d3c812e81f7">   70</a></span>&#160;<span class="preprocessor">#define POLARSSL_MPI_MAX_LIMBS                             10000</span></div>
<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="preprocessor">#if !defined(POLARSSL_MPI_WINDOW_SIZE)</span></div>
<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="preprocessor"></span><span class="comment">/*</span></div>
<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="comment"> * Maximum window size used for modular exponentiation. Default: 6</span></div>
<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;<span class="comment"> * Minimum value: 1. Maximum value: 6.</span></div>
<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;<span class="comment"> * Result is an array of ( 2 &lt;&lt; POLARSSL_MPI_WINDOW_SIZE ) MPIs used</span></div>
<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;<span class="comment"> * for the sliding window calculation. (So 64 by default)</span></div>
<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;<span class="comment"> * Reduction in size, reduces speed.</span></div>
<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="bignum_8h.html#a5eb26ce753f5110fd69713ea976fd63e">   82</a></span>&#160;<span class="preprocessor">#define POLARSSL_MPI_WINDOW_SIZE                           6        </span></div>
<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* !POLARSSL_MPI_WINDOW_SIZE */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;<span class="preprocessor">#if !defined(POLARSSL_MPI_MAX_SIZE)</span></div>
<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span class="preprocessor"></span><span class="comment">/*</span></div>
<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;<span class="comment"> * Maximum size of MPIs allowed in bits and bytes for user-MPIs.</span></div>
<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;<span class="comment"> * ( Default: 512 bytes =&gt; 4096 bits, Maximum tested: 2048 bytes =&gt; 16384 bits )</span></div>
<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;<span class="comment"> * Note: Calculations can results temporarily in larger MPIs. So the number</span></div>
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;<span class="comment"> * of limbs required (POLARSSL_MPI_MAX_LIMBS) is higher.</span></div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="bignum_8h.html#aae43600df723c0b882201f556c028b1f">   93</a></span>&#160;<span class="preprocessor">#define POLARSSL_MPI_MAX_SIZE                              512      </span></div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* !POLARSSL_MPI_MAX_SIZE */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="bignum_8h.html#aca6ca30059eab25954ebb962a8b69c52">   96</a></span>&#160;<span class="preprocessor">#define POLARSSL_MPI_MAX_BITS                              ( 8 * POLARSSL_MPI_MAX_SIZE )    </span></div>
<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;<span class="preprocessor"></span><span class="comment">/*</span></div>
<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;<span class="comment"> * When reading from files with mpi_read_file() and writing to files with</span></div>
<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;<span class="comment"> * mpi_write_file() the buffer should have space</span></div>
<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;<span class="comment"> * for a (short) label, the MPI (in the provided radix), the newline</span></div>
<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;<span class="comment"> * characters and the &#39;\0&#39;.</span></div>
<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;<span class="comment"> * By default we assume at least a 10 char label, a minimum radix of 10</span></div>
<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;<span class="comment"> * (decimal) and a maximum of 4096 bit numbers (1234 decimal chars).</span></div>
<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;<span class="comment"> * Autosized at compile time for at least a 10 char label, a minimum radix</span></div>
<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;<span class="comment"> * of 10 (decimal) for a number of POLARSSL_MPI_MAX_BITS size.</span></div>
<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;<span class="comment"> * This used to be statically sized to 1250 for a maximum of 4096 bit</span></div>
<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;<span class="comment"> * numbers (1234 decimal chars).</span></div>
<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;<span class="comment"> * Calculate using the formula:</span></div>
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;<span class="comment"> *  POLARSSL_MPI_RW_BUFFER_SIZE = ceil(POLARSSL_MPI_MAX_BITS / ln(10) * ln(2)) +</span></div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;<span class="comment"> *                                LabelSize + 6</span></div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;<span class="comment"> */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="bignum_8h.html#ac2146744fdaa3abf5ee13918c2d5268b">  116</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define POLARSSL_MPI_MAX_BITS_SCALE100          ( 100 * POLARSSL_MPI_MAX_BITS )</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="bignum_8h.html#a97c90562c6192dfc2b8cf38152e1fa4b">  117</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define LN_2_DIV_LN_10_SCALE100                 332</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="bignum_8h.html#a728c03b4fdb0f4e9e84a5488adf1c5d0">  118</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define POLARSSL_MPI_RW_BUFFER_SIZE             ( ((POLARSSL_MPI_MAX_BITS_SCALE100 + LN_2_DIV_LN_10_SCALE100 - 1) / LN_2_DIV_LN_10_SCALE100) + 10 + 6 )</span></div>
<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;<span class="comment"> * Define the base integer type, architecture-wise</span></div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;<span class="preprocessor">#if defined(POLARSSL_HAVE_INT8)</span></div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;<span class="preprocessor"></span><span class="keyword">typedef</span>   <span class="keywordtype">signed</span> <span class="keywordtype">char</span>  <a class="code" href="bignum_8h.html#abbc933ccc2d1d02925e6886d9b4f5873">t_sint</a>;</div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;<span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>  <a class="code" href="bignum_8h.html#ad5d1464f801a0e7d2ed32a8f8dc2ccc9">t_uint</a>;</div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;<span class="keyword">typedef</span> uint16_t       <a class="code" href="bignum_8h.html#a15c9839c39da2a8dc13255a226d05d87">t_udbl</a>;</div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;<span class="preprocessor">#define POLARSSL_HAVE_UDBL</span></div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#else</span></div>
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#if defined(POLARSSL_HAVE_INT16)</span></div>
<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;<span class="preprocessor"></span><span class="keyword">typedef</span>  int16_t <a class="code" href="bignum_8h.html#abbc933ccc2d1d02925e6886d9b4f5873">t_sint</a>;</div>
<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;<span class="keyword">typedef</span> uint16_t <a class="code" href="bignum_8h.html#ad5d1464f801a0e7d2ed32a8f8dc2ccc9">t_uint</a>;</div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;<span class="keyword">typedef</span> uint32_t <a class="code" href="bignum_8h.html#a15c9839c39da2a8dc13255a226d05d87">t_udbl</a>;</div>
<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;<span class="preprocessor">#define POLARSSL_HAVE_UDBL</span></div>
<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#else</span></div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;<span class="preprocessor"></span>  <span class="comment">/*</span></div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;<span class="comment">   * 32-bit integers can be forced on 64-bit arches (eg. for testing purposes)</span></div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;<span class="comment">   * by defining POLARSSL_HAVE_INT32 and undefining POLARSSL_HAVE_ASM</span></div>
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;<span class="comment">   */</span></div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;<span class="preprocessor">  #if ( ! defined(POLARSSL_HAVE_INT32) &amp;&amp; \</span></div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;<span class="preprocessor">          defined(_MSC_VER) &amp;&amp; defined(_M_AMD64) )</span></div>
<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;<span class="preprocessor"></span><span class="preprocessor">    #define POLARSSL_HAVE_INT64</span></div>
<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;<span class="preprocessor"></span>    <span class="keyword">typedef</span>  int64_t <a class="code" href="bignum_8h.html#abbc933ccc2d1d02925e6886d9b4f5873">t_sint</a>;</div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;    <span class="keyword">typedef</span> uint64_t <a class="code" href="bignum_8h.html#ad5d1464f801a0e7d2ed32a8f8dc2ccc9">t_uint</a>;</div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;<span class="preprocessor">  #else</span></div>
<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;<span class="preprocessor"></span><span class="preprocessor">    #if ( ! defined(POLARSSL_HAVE_INT32) &amp;&amp;               \</span></div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;<span class="preprocessor">          defined(__GNUC__) &amp;&amp; (                          \</span></div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;<span class="preprocessor">          defined(__amd64__) || defined(__x86_64__)    || \</span></div>
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;<span class="preprocessor">          defined(__ppc64__) || defined(__powerpc64__) || \</span></div>
<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;<span class="preprocessor">          defined(__ia64__)  || defined(__alpha__)     || \</span></div>
<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;<span class="preprocessor">          (defined(__sparc__) &amp;&amp; defined(__arch64__))  || \</span></div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;<span class="preprocessor">          defined(__s390x__) ) )</span></div>
<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;<span class="preprocessor"></span><span class="preprocessor">       #define POLARSSL_HAVE_INT64</span></div>
<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;<span class="preprocessor"></span>       <span class="keyword">typedef</span>  int64_t <a class="code" href="bignum_8h.html#abbc933ccc2d1d02925e6886d9b4f5873">t_sint</a>;</div>
<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;       <span class="keyword">typedef</span> uint64_t <a class="code" href="bignum_8h.html#ad5d1464f801a0e7d2ed32a8f8dc2ccc9">t_uint</a>;</div>
<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;       <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#a15c9839c39da2a8dc13255a226d05d87">t_udbl</a> __attribute__((mode(TI)));</div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;<span class="preprocessor">       #define POLARSSL_HAVE_UDBL</span></div>
<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;<span class="preprocessor"></span><span class="preprocessor">    #else</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="bignum_8h.html#aaa32170d1fc407e0be9ddbce62871c74">  158</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">       #define POLARSSL_HAVE_INT32</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="bignum_8h.html#abbc933ccc2d1d02925e6886d9b4f5873">  159</a></span>&#160;<span class="preprocessor"></span>       <span class="keyword">typedef</span>  int32_t <a class="code" href="bignum_8h.html#abbc933ccc2d1d02925e6886d9b4f5873">t_sint</a>;</div>
<div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="bignum_8h.html#ad5d1464f801a0e7d2ed32a8f8dc2ccc9">  160</a></span>&#160;       <span class="keyword">typedef</span> uint32_t <a class="code" href="bignum_8h.html#ad5d1464f801a0e7d2ed32a8f8dc2ccc9">t_uint</a>;</div>
<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;<span class="preprocessor">       #if ( defined(_MSC_VER) &amp;&amp; defined(_M_IX86) )</span></div>
<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;<span class="preprocessor"></span>         <span class="keyword">typedef</span> uint64_t <a class="code" href="bignum_8h.html#a15c9839c39da2a8dc13255a226d05d87">t_udbl</a>;</div>
<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;<span class="preprocessor">         #define POLARSSL_HAVE_UDBL</span></div>
<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;<span class="preprocessor"></span><span class="preprocessor">       #else</span></div>
<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;<span class="preprocessor"></span><span class="preprocessor">         #if defined( POLARSSL_HAVE_LONGLONG )</span></div>
<div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="bignum_8h.html#a15c9839c39da2a8dc13255a226d05d87">  166</a></span>&#160;<span class="preprocessor"></span>           <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span> <a class="code" href="bignum_8h.html#a15c9839c39da2a8dc13255a226d05d87">t_udbl</a>;</div>
<div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="bignum_8h.html#a4f497e14fe66e1d321e4edb73126908b">  167</a></span>&#160;<span class="preprocessor">           #define POLARSSL_HAVE_UDBL</span></div>
<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;<span class="preprocessor"></span><span class="preprocessor">         #endif</span></div>
<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;<span class="preprocessor"></span><span class="preprocessor">       #endif</span></div>
<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;<span class="preprocessor"></span><span class="preprocessor">    #endif </span><span class="comment">/* !POLARSSL_HAVE_INT32 &amp;&amp; __GNUC__ &amp;&amp; 64-bit platform */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;<span class="preprocessor"></span><span class="preprocessor">  #endif </span><span class="comment">/* !POLARSSL_HAVE_INT32 &amp;&amp; _MSC_VER &amp;&amp; _M_AMD64 */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* POLARSSL_HAVE_INT16 */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* POLARSSL_HAVE_INT8  */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;<span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="structmpi.html">  182</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;{</div>
<div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="structmpi.html#ad44e921903bdc7fcc1cadad14784a59a">  184</a></span>&#160;    <span class="keywordtype">int</span> <a class="code" href="structmpi.html#ad44e921903bdc7fcc1cadad14784a59a">s</a>;              </div>
<div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="structmpi.html#acc8d6d92112b326fcac7c6eff002feb1">  185</a></span>&#160;    <span class="keywordtype">size_t</span> <a class="code" href="structmpi.html#acc8d6d92112b326fcac7c6eff002feb1">n</a>;           </div>
<div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="structmpi.html#aaeeabe339c1cc40d05bdb026666404f8">  186</a></span>&#160;    t_uint *<a class="code" href="structmpi.html#aaeeabe339c1cc40d05bdb026666404f8">p</a>;          </div>
<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;}</div>
<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;<a class="code" href="structmpi.html">mpi</a>;</div>
<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;</div>
<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;<span class="keywordtype">void</span> <a class="code" href="bignum_8h.html#a201666869f65225d6535bcc697f95c9b">mpi_init</a>( <a class="code" href="structmpi.html">mpi</a> *X );</div>
<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;</div>
<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;<span class="keywordtype">void</span> <a class="code" href="bignum_8h.html#ae1f6507671587755e46bbf0afcae6a8c">mpi_free</a>( <a class="code" href="structmpi.html">mpi</a> *X );</div>
<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;</div>
<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#ac585f00fc9be270de074e8fbfb508d6a">mpi_grow</a>( <a class="code" href="structmpi.html">mpi</a> *X, <span class="keywordtype">size_t</span> nblimbs );</div>
<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;</div>
<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#adaa24d645b3940d17fb6ac1d6fd17408">mpi_shrink</a>( <a class="code" href="structmpi.html">mpi</a> *X, <span class="keywordtype">size_t</span> nblimbs );</div>
<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;</div>
<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#a6fbcce39a9d92d9e2a560f8aa6a810f4">mpi_copy</a>( <a class="code" href="structmpi.html">mpi</a> *X, <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *Y );</div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;</div>
<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;<span class="keywordtype">void</span> <a class="code" href="bignum_8h.html#a5456193a9ebcfe612b93cfb509995a75">mpi_swap</a>( <a class="code" href="structmpi.html">mpi</a> *X, <a class="code" href="structmpi.html">mpi</a> *Y );</div>
<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;</div>
<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#a4022aef0c79b5a7121ee294cc139ae12">mpi_safe_cond_assign</a>( <a class="code" href="structmpi.html">mpi</a> *X, <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *Y, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> assign );</div>
<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;</div>
<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#a9128b59005aad61e8d07bedd0c2973b7">mpi_safe_cond_swap</a>( <a class="code" href="structmpi.html">mpi</a> *X, <a class="code" href="structmpi.html">mpi</a> *Y, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> assign );</div>
<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;</div>
<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#a007d6236aebb0ff4a3d92ce8f525a3ae">mpi_lset</a>( <a class="code" href="structmpi.html">mpi</a> *X, t_sint z );</div>
<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;</div>
<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#a920345ada5c75a913b32a00fed3bd36c">mpi_get_bit</a>( <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *X, <span class="keywordtype">size_t</span> pos );</div>
<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;</div>
<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#ac70dd057e989b021c4a535470d6afec9">mpi_set_bit</a>( <a class="code" href="structmpi.html">mpi</a> *X, <span class="keywordtype">size_t</span> pos, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="struct__asn1__named__data.html#af1175e54f92e9aaa85fb7a6a27a5511e">val</a> );</div>
<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;</div>
<div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="bignum_8h.html#a6d6079272ffa625501f58127172a4f53">mpi_lsb</a>( <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *X );</div>
<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;</div>
<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="bignum_8h.html#a4d461a7bff5a31df34bbf93ec00ab886">mpi_msb</a>( <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *X );</div>
<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;</div>
<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="bignum_8h.html#a8aa3a3d3aac9e49879ea8cd308859d23">mpi_size</a>( <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *X );</div>
<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;</div>
<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#a752d12c301f4e5df56f17e9bc8d78d74">mpi_read_string</a>( <a class="code" href="structmpi.html">mpi</a> *X, <span class="keywordtype">int</span> radix, <span class="keyword">const</span> <span class="keywordtype">char</span> *s );</div>
<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;</div>
<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#aac4c8bb7bf5d700277d27b03aed0df7a">mpi_write_string</a>( <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *X, <span class="keywordtype">int</span> radix, <span class="keywordtype">char</span> *s, <span class="keywordtype">size_t</span> *slen );</div>
<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;</div>
<div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;<span class="preprocessor">#if defined(POLARSSL_FS_IO)</span></div>
<div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#aa3305289daa8dcc9e70fade0eaa1dc99">mpi_read_file</a>( <a class="code" href="structmpi.html">mpi</a> *X, <span class="keywordtype">int</span> radix, FILE *fin );</div>
<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;</div>
<div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#a6388b8b831a59ae43668857f43e1a907">mpi_write_file</a>( <span class="keyword">const</span> <span class="keywordtype">char</span> *p, <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *X, <span class="keywordtype">int</span> radix, FILE *fout );</div>
<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* POLARSSL_FS_IO */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#a0235008cccbf00b8bc03699de8094819">mpi_read_binary</a>( <a class="code" href="structmpi.html">mpi</a> *X, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *buf, <span class="keywordtype">size_t</span> buflen );</div>
<div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;</div>
<div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#a5d464b4312859ce4969d114eb5e02741">mpi_write_binary</a>( <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *X, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *buf, <span class="keywordtype">size_t</span> buflen );</div>
<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;</div>
<div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#a17537330dbe685ca867e52479a8ef7c3">mpi_shift_l</a>( <a class="code" href="structmpi.html">mpi</a> *X, <span class="keywordtype">size_t</span> count );</div>
<div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;</div>
<div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#a01de1543da79d0ad0f58916d608f6ff8">mpi_shift_r</a>( <a class="code" href="structmpi.html">mpi</a> *X, <span class="keywordtype">size_t</span> count );</div>
<div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;</div>
<div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#a6a692b3d8cd05ae753ab5a39b5634c0a">mpi_cmp_abs</a>( <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *X, <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *Y );</div>
<div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;</div>
<div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#aec20dff9d78738e3c80b212df9875b83">mpi_cmp_mpi</a>( <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *X, <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *Y );</div>
<div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;</div>
<div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#aee6dc030f0fa278c1576c457088b4910">mpi_cmp_int</a>( <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *X, t_sint z );</div>
<div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;</div>
<div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#a5d1cf13ed3c825b61e0b04085ec30f40">mpi_add_abs</a>( <a class="code" href="structmpi.html">mpi</a> *X, <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *A, <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *B );</div>
<div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;</div>
<div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#a19d09ef62c09539feb7f9b3045cfb1fe">mpi_sub_abs</a>( <a class="code" href="structmpi.html">mpi</a> *X, <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *A, <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *B );</div>
<div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;</div>
<div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#adf5b20e8d8c0a660e4f59f859a0bee18">mpi_add_mpi</a>( <a class="code" href="structmpi.html">mpi</a> *X, <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *A, <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *B );</div>
<div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;</div>
<div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#a149a13ed93fddb432fb5edd3126b1186">mpi_sub_mpi</a>( <a class="code" href="structmpi.html">mpi</a> *X, <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *A, <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *B );</div>
<div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;</div>
<div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#a3b88dbe31d038dfae7f27144984f9ae0">mpi_add_int</a>( <a class="code" href="structmpi.html">mpi</a> *X, <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *A, t_sint b );</div>
<div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;</div>
<div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#acfdf0f6effb7f976a2f90844c492e160">mpi_sub_int</a>( <a class="code" href="structmpi.html">mpi</a> *X, <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *A, t_sint b );</div>
<div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;</div>
<div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#ab63bfb07b27db84268491cd7d68bddc0">mpi_mul_mpi</a>( <a class="code" href="structmpi.html">mpi</a> *X, <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *A, <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *B );</div>
<div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;</div>
<div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#a79ee36f6e38e4de6d24047bd685747b4">mpi_mul_int</a>( <a class="code" href="structmpi.html">mpi</a> *X, <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *A, t_sint b );</div>
<div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;</div>
<div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#a0804ce20a4a1cba3e3dcd3ac520b1ffb">mpi_div_mpi</a>( <a class="code" href="structmpi.html">mpi</a> *Q, <a class="code" href="structmpi.html">mpi</a> *R, <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *A, <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *B );</div>
<div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;</div>
<div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#a5a81c7b8a4c2a6f6268ac0596a9e7f31">mpi_div_int</a>( <a class="code" href="structmpi.html">mpi</a> *Q, <a class="code" href="structmpi.html">mpi</a> *R, <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *A, t_sint b );</div>
<div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;</div>
<div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#a075d3cf21cb3733e5f0a872e72b0cd15">mpi_mod_mpi</a>( <a class="code" href="structmpi.html">mpi</a> *R, <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *A, <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *B );</div>
<div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;</div>
<div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#a8cf9128e5d55fd1e95696fe8cb405b92">mpi_mod_int</a>( t_uint *r, <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *A, t_sint b );</div>
<div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;</div>
<div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#a84befed1943a584332e0599605b0d3fe">mpi_exp_mod</a>( <a class="code" href="structmpi.html">mpi</a> *X, <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *A, <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *E, <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *N, <a class="code" href="structmpi.html">mpi</a> *_RR );</div>
<div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;</div>
<div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#a5ac8858041a8d5b49c11d38fd4069975">mpi_fill_random</a>( <a class="code" href="structmpi.html">mpi</a> *X, <span class="keywordtype">size_t</span> size,</div>
<div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;                     <span class="keywordtype">int</span> (*f_rng)(<span class="keywordtype">void</span> *, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *, <span class="keywordtype">size_t</span>),</div>
<div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;                     <span class="keywordtype">void</span> *p_rng );</div>
<div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;</div>
<div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#ab1448e8d36dbf542b2230131da8298aa">mpi_gcd</a>( <a class="code" href="structmpi.html">mpi</a> *G, <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *A, <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *B );</div>
<div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;</div>
<div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#a090616da16b87653c025874e1675da79">mpi_inv_mod</a>( <a class="code" href="structmpi.html">mpi</a> *X, <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *A, <span class="keyword">const</span> <a class="code" href="structmpi.html">mpi</a> *N );</div>
<div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160;</div>
<div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#adf23b7959312c2fcf222d7ce6ac32320">mpi_is_prime</a>( <a class="code" href="structmpi.html">mpi</a> *X,</div>
<div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160;                  <span class="keywordtype">int</span> (*f_rng)(<span class="keywordtype">void</span> *, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *, <span class="keywordtype">size_t</span>),</div>
<div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160;                  <span class="keywordtype">void</span> *p_rng );</div>
<div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;</div>
<div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#a39480daedc47c4eae7574a6d028f352c">mpi_gen_prime</a>( <a class="code" href="structmpi.html">mpi</a> *X, <span class="keywordtype">size_t</span> nbits, <span class="keywordtype">int</span> dh_flag,</div>
<div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160;                   <span class="keywordtype">int</span> (*f_rng)(<span class="keywordtype">void</span> *, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *, <span class="keywordtype">size_t</span>),</div>
<div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;                   <span class="keywordtype">void</span> *p_rng );</div>
<div class="line"><a name="l00740"></a><span class="lineno">  740</span>&#160;</div>
<div class="line"><a name="l00746"></a><span class="lineno">  746</span>&#160;<span class="keywordtype">int</span> <a class="code" href="bignum_8h.html#ab21c92239348bc2c84513968a3e391b2">mpi_self_test</a>( <span class="keywordtype">int</span> verbose );</div>
<div class="line"><a name="l00747"></a><span class="lineno">  747</span>&#160;</div>
<div class="line"><a name="l00748"></a><span class="lineno">  748</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
<div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;<span class="preprocessor"></span>}</div>
<div class="line"><a name="l00750"></a><span class="lineno">  750</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* bignum.h */</span><span class="preprocessor"></span></div>
<div class="ttc" id="bignum_8h_html_aee6dc030f0fa278c1576c457088b4910"><div class="ttname"><a href="bignum_8h.html#aee6dc030f0fa278c1576c457088b4910">mpi_cmp_int</a></div><div class="ttdeci">int mpi_cmp_int(const mpi *X, t_sint z)</div><div class="ttdoc">Compare signed values. </div></div>
<div class="ttc" id="bignum_8h_html_a5456193a9ebcfe612b93cfb509995a75"><div class="ttname"><a href="bignum_8h.html#a5456193a9ebcfe612b93cfb509995a75">mpi_swap</a></div><div class="ttdeci">void mpi_swap(mpi *X, mpi *Y)</div><div class="ttdoc">Swap the contents of X and Y. </div></div>
<div class="ttc" id="bignum_8h_html_adaa24d645b3940d17fb6ac1d6fd17408"><div class="ttname"><a href="bignum_8h.html#adaa24d645b3940d17fb6ac1d6fd17408">mpi_shrink</a></div><div class="ttdeci">int mpi_shrink(mpi *X, size_t nblimbs)</div><div class="ttdoc">Resize down, keeping at least the specified number of limbs. </div></div>
<div class="ttc" id="bignum_8h_html_a4022aef0c79b5a7121ee294cc139ae12"><div class="ttname"><a href="bignum_8h.html#a4022aef0c79b5a7121ee294cc139ae12">mpi_safe_cond_assign</a></div><div class="ttdeci">int mpi_safe_cond_assign(mpi *X, const mpi *Y, unsigned char assign)</div><div class="ttdoc">Safe conditional assignement X = Y if assign is 1. </div></div>
<div class="ttc" id="bignum_8h_html_ad5d1464f801a0e7d2ed32a8f8dc2ccc9"><div class="ttname"><a href="bignum_8h.html#ad5d1464f801a0e7d2ed32a8f8dc2ccc9">t_uint</a></div><div class="ttdeci">uint32_t t_uint</div><div class="ttdef"><b>Definition:</b> <a href="bignum_8h_source.html#l00160">bignum.h:160</a></div></div>
<div class="ttc" id="bignum_8h_html_a5a81c7b8a4c2a6f6268ac0596a9e7f31"><div class="ttname"><a href="bignum_8h.html#a5a81c7b8a4c2a6f6268ac0596a9e7f31">mpi_div_int</a></div><div class="ttdeci">int mpi_div_int(mpi *Q, mpi *R, const mpi *A, t_sint b)</div><div class="ttdoc">Division by int: A = Q * b + R. </div></div>
<div class="ttc" id="bignum_8h_html_ab1448e8d36dbf542b2230131da8298aa"><div class="ttname"><a href="bignum_8h.html#ab1448e8d36dbf542b2230131da8298aa">mpi_gcd</a></div><div class="ttdeci">int mpi_gcd(mpi *G, const mpi *A, const mpi *B)</div><div class="ttdoc">Greatest common divisor: G = gcd(A, B) </div></div>
<div class="ttc" id="structmpi_html_ad44e921903bdc7fcc1cadad14784a59a"><div class="ttname"><a href="structmpi.html#ad44e921903bdc7fcc1cadad14784a59a">mpi::s</a></div><div class="ttdeci">int s</div><div class="ttdef"><b>Definition:</b> <a href="bignum_8h_source.html#l00184">bignum.h:184</a></div></div>
<div class="ttc" id="bignum_8h_html_a5ac8858041a8d5b49c11d38fd4069975"><div class="ttname"><a href="bignum_8h.html#a5ac8858041a8d5b49c11d38fd4069975">mpi_fill_random</a></div><div class="ttdeci">int mpi_fill_random(mpi *X, size_t size, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)</div><div class="ttdoc">Fill an MPI X with size bytes of random. </div></div>
<div class="ttc" id="bignum_8h_html_a19d09ef62c09539feb7f9b3045cfb1fe"><div class="ttname"><a href="bignum_8h.html#a19d09ef62c09539feb7f9b3045cfb1fe">mpi_sub_abs</a></div><div class="ttdeci">int mpi_sub_abs(mpi *X, const mpi *A, const mpi *B)</div><div class="ttdoc">Unsigned subtraction: X = |A| - |B|. </div></div>
<div class="ttc" id="bignum_8h_html_a6a692b3d8cd05ae753ab5a39b5634c0a"><div class="ttname"><a href="bignum_8h.html#a6a692b3d8cd05ae753ab5a39b5634c0a">mpi_cmp_abs</a></div><div class="ttdeci">int mpi_cmp_abs(const mpi *X, const mpi *Y)</div><div class="ttdoc">Compare unsigned values. </div></div>
<div class="ttc" id="config_8h_html"><div class="ttname"><a href="config_8h.html">config.h</a></div><div class="ttdoc">Configuration options (set of defines) </div></div>
<div class="ttc" id="bignum_8h_html_a3b88dbe31d038dfae7f27144984f9ae0"><div class="ttname"><a href="bignum_8h.html#a3b88dbe31d038dfae7f27144984f9ae0">mpi_add_int</a></div><div class="ttdeci">int mpi_add_int(mpi *X, const mpi *A, t_sint b)</div><div class="ttdoc">Signed addition: X = A + b. </div></div>
<div class="ttc" id="bignum_8h_html_aa3305289daa8dcc9e70fade0eaa1dc99"><div class="ttname"><a href="bignum_8h.html#aa3305289daa8dcc9e70fade0eaa1dc99">mpi_read_file</a></div><div class="ttdeci">int mpi_read_file(mpi *X, int radix, FILE *fin)</div><div class="ttdoc">Read X from an opened file. </div></div>
<div class="ttc" id="bignum_8h_html_a0804ce20a4a1cba3e3dcd3ac520b1ffb"><div class="ttname"><a href="bignum_8h.html#a0804ce20a4a1cba3e3dcd3ac520b1ffb">mpi_div_mpi</a></div><div class="ttdeci">int mpi_div_mpi(mpi *Q, mpi *R, const mpi *A, const mpi *B)</div><div class="ttdoc">Division by mpi: A = Q * B + R. </div></div>
<div class="ttc" id="bignum_8h_html_a007d6236aebb0ff4a3d92ce8f525a3ae"><div class="ttname"><a href="bignum_8h.html#a007d6236aebb0ff4a3d92ce8f525a3ae">mpi_lset</a></div><div class="ttdeci">int mpi_lset(mpi *X, t_sint z)</div><div class="ttdoc">Set value from integer. </div></div>
<div class="ttc" id="bignum_8h_html_adf23b7959312c2fcf222d7ce6ac32320"><div class="ttname"><a href="bignum_8h.html#adf23b7959312c2fcf222d7ce6ac32320">mpi_is_prime</a></div><div class="ttdeci">int mpi_is_prime(mpi *X, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)</div><div class="ttdoc">Miller-Rabin primality test. </div></div>
<div class="ttc" id="structmpi_html"><div class="ttname"><a href="structmpi.html">mpi</a></div><div class="ttdoc">MPI structure. </div><div class="ttdef"><b>Definition:</b> <a href="bignum_8h_source.html#l00182">bignum.h:182</a></div></div>
<div class="ttc" id="bignum_8h_html_a6388b8b831a59ae43668857f43e1a907"><div class="ttname"><a href="bignum_8h.html#a6388b8b831a59ae43668857f43e1a907">mpi_write_file</a></div><div class="ttdeci">int mpi_write_file(const char *p, const mpi *X, int radix, FILE *fout)</div><div class="ttdoc">Write X into an opened file, or stdout if fout is NULL. </div></div>
<div class="ttc" id="bignum_8h_html_a201666869f65225d6535bcc697f95c9b"><div class="ttname"><a href="bignum_8h.html#a201666869f65225d6535bcc697f95c9b">mpi_init</a></div><div class="ttdeci">void mpi_init(mpi *X)</div><div class="ttdoc">Initialize one MPI. </div></div>
<div class="ttc" id="bignum_8h_html_aec20dff9d78738e3c80b212df9875b83"><div class="ttname"><a href="bignum_8h.html#aec20dff9d78738e3c80b212df9875b83">mpi_cmp_mpi</a></div><div class="ttdeci">int mpi_cmp_mpi(const mpi *X, const mpi *Y)</div><div class="ttdoc">Compare signed values. </div></div>
<div class="ttc" id="bignum_8h_html_a15c9839c39da2a8dc13255a226d05d87"><div class="ttname"><a href="bignum_8h.html#a15c9839c39da2a8dc13255a226d05d87">t_udbl</a></div><div class="ttdeci">unsigned long long t_udbl</div><div class="ttdef"><b>Definition:</b> <a href="bignum_8h_source.html#l00166">bignum.h:166</a></div></div>
<div class="ttc" id="bignum_8h_html_a01de1543da79d0ad0f58916d608f6ff8"><div class="ttname"><a href="bignum_8h.html#a01de1543da79d0ad0f58916d608f6ff8">mpi_shift_r</a></div><div class="ttdeci">int mpi_shift_r(mpi *X, size_t count)</div><div class="ttdoc">Right-shift: X &amp;gt;&amp;gt;= count. </div></div>
<div class="ttc" id="bignum_8h_html_adf5b20e8d8c0a660e4f59f859a0bee18"><div class="ttname"><a href="bignum_8h.html#adf5b20e8d8c0a660e4f59f859a0bee18">mpi_add_mpi</a></div><div class="ttdeci">int mpi_add_mpi(mpi *X, const mpi *A, const mpi *B)</div><div class="ttdoc">Signed addition: X = A + B. </div></div>
<div class="ttc" id="struct__asn1__named__data_html_af1175e54f92e9aaa85fb7a6a27a5511e"><div class="ttname"><a href="struct__asn1__named__data.html#af1175e54f92e9aaa85fb7a6a27a5511e">_asn1_named_data::val</a></div><div class="ttdeci">asn1_buf val</div><div class="ttdoc">The named value. </div><div class="ttdef"><b>Definition:</b> <a href="asn1_8h_source.html#l00159">asn1.h:159</a></div></div>
<div class="ttc" id="bignum_8h_html_aac4c8bb7bf5d700277d27b03aed0df7a"><div class="ttname"><a href="bignum_8h.html#aac4c8bb7bf5d700277d27b03aed0df7a">mpi_write_string</a></div><div class="ttdeci">int mpi_write_string(const mpi *X, int radix, char *s, size_t *slen)</div><div class="ttdoc">Export into an ASCII string. </div></div>
<div class="ttc" id="bignum_8h_html_abbc933ccc2d1d02925e6886d9b4f5873"><div class="ttname"><a href="bignum_8h.html#abbc933ccc2d1d02925e6886d9b4f5873">t_sint</a></div><div class="ttdeci">int32_t t_sint</div><div class="ttdef"><b>Definition:</b> <a href="bignum_8h_source.html#l00159">bignum.h:159</a></div></div>
<div class="ttc" id="bignum_8h_html_a6d6079272ffa625501f58127172a4f53"><div class="ttname"><a href="bignum_8h.html#a6d6079272ffa625501f58127172a4f53">mpi_lsb</a></div><div class="ttdeci">size_t mpi_lsb(const mpi *X)</div><div class="ttdoc">Return the number of zero-bits before the least significant &amp;#39;1&amp;#39; bit. </div></div>
<div class="ttc" id="bignum_8h_html_a090616da16b87653c025874e1675da79"><div class="ttname"><a href="bignum_8h.html#a090616da16b87653c025874e1675da79">mpi_inv_mod</a></div><div class="ttdeci">int mpi_inv_mod(mpi *X, const mpi *A, const mpi *N)</div><div class="ttdoc">Modular inverse: X = A^-1 mod N. </div></div>
<div class="ttc" id="bignum_8h_html_ae1f6507671587755e46bbf0afcae6a8c"><div class="ttname"><a href="bignum_8h.html#ae1f6507671587755e46bbf0afcae6a8c">mpi_free</a></div><div class="ttdeci">void mpi_free(mpi *X)</div><div class="ttdoc">Unallocate one MPI. </div></div>
<div class="ttc" id="bignum_8h_html_a79ee36f6e38e4de6d24047bd685747b4"><div class="ttname"><a href="bignum_8h.html#a79ee36f6e38e4de6d24047bd685747b4">mpi_mul_int</a></div><div class="ttdeci">int mpi_mul_int(mpi *X, const mpi *A, t_sint b)</div><div class="ttdoc">Baseline multiplication: X = A * b Note: despite the functon signature, b is treated as a t_uint...</div></div>
<div class="ttc" id="bignum_8h_html_ac585f00fc9be270de074e8fbfb508d6a"><div class="ttname"><a href="bignum_8h.html#ac585f00fc9be270de074e8fbfb508d6a">mpi_grow</a></div><div class="ttdeci">int mpi_grow(mpi *X, size_t nblimbs)</div><div class="ttdoc">Enlarge to the specified number of limbs. </div></div>
<div class="ttc" id="bignum_8h_html_a8cf9128e5d55fd1e95696fe8cb405b92"><div class="ttname"><a href="bignum_8h.html#a8cf9128e5d55fd1e95696fe8cb405b92">mpi_mod_int</a></div><div class="ttdeci">int mpi_mod_int(t_uint *r, const mpi *A, t_sint b)</div><div class="ttdoc">Modulo: r = A mod b. </div></div>
<div class="ttc" id="bignum_8h_html_a84befed1943a584332e0599605b0d3fe"><div class="ttname"><a href="bignum_8h.html#a84befed1943a584332e0599605b0d3fe">mpi_exp_mod</a></div><div class="ttdeci">int mpi_exp_mod(mpi *X, const mpi *A, const mpi *E, const mpi *N, mpi *_RR)</div><div class="ttdoc">Sliding-window exponentiation: X = A^E mod N. </div></div>
<div class="ttc" id="bignum_8h_html_a39480daedc47c4eae7574a6d028f352c"><div class="ttname"><a href="bignum_8h.html#a39480daedc47c4eae7574a6d028f352c">mpi_gen_prime</a></div><div class="ttdeci">int mpi_gen_prime(mpi *X, size_t nbits, int dh_flag, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)</div><div class="ttdoc">Prime number generation. </div></div>
<div class="ttc" id="bignum_8h_html_a4d461a7bff5a31df34bbf93ec00ab886"><div class="ttname"><a href="bignum_8h.html#a4d461a7bff5a31df34bbf93ec00ab886">mpi_msb</a></div><div class="ttdeci">size_t mpi_msb(const mpi *X)</div><div class="ttdoc">Return the number of bits up to and including the most significant &amp;#39;1&amp;#39; bit&amp;#39;. </div></div>
<div class="ttc" id="bignum_8h_html_a5d1cf13ed3c825b61e0b04085ec30f40"><div class="ttname"><a href="bignum_8h.html#a5d1cf13ed3c825b61e0b04085ec30f40">mpi_add_abs</a></div><div class="ttdeci">int mpi_add_abs(mpi *X, const mpi *A, const mpi *B)</div><div class="ttdoc">Unsigned addition: X = |A| + |B|. </div></div>
<div class="ttc" id="bignum_8h_html_a752d12c301f4e5df56f17e9bc8d78d74"><div class="ttname"><a href="bignum_8h.html#a752d12c301f4e5df56f17e9bc8d78d74">mpi_read_string</a></div><div class="ttdeci">int mpi_read_string(mpi *X, int radix, const char *s)</div><div class="ttdoc">Import from an ASCII string. </div></div>
<div class="ttc" id="structmpi_html_aaeeabe339c1cc40d05bdb026666404f8"><div class="ttname"><a href="structmpi.html#aaeeabe339c1cc40d05bdb026666404f8">mpi::p</a></div><div class="ttdeci">t_uint * p</div><div class="ttdef"><b>Definition:</b> <a href="bignum_8h_source.html#l00186">bignum.h:186</a></div></div>
<div class="ttc" id="bignum_8h_html_a0235008cccbf00b8bc03699de8094819"><div class="ttname"><a href="bignum_8h.html#a0235008cccbf00b8bc03699de8094819">mpi_read_binary</a></div><div class="ttdeci">int mpi_read_binary(mpi *X, const unsigned char *buf, size_t buflen)</div><div class="ttdoc">Import X from unsigned binary data, big endian. </div></div>
<div class="ttc" id="bignum_8h_html_ab21c92239348bc2c84513968a3e391b2"><div class="ttname"><a href="bignum_8h.html#ab21c92239348bc2c84513968a3e391b2">mpi_self_test</a></div><div class="ttdeci">int mpi_self_test(int verbose)</div><div class="ttdoc">Checkup routine. </div></div>
<div class="ttc" id="bignum_8h_html_a8aa3a3d3aac9e49879ea8cd308859d23"><div class="ttname"><a href="bignum_8h.html#a8aa3a3d3aac9e49879ea8cd308859d23">mpi_size</a></div><div class="ttdeci">size_t mpi_size(const mpi *X)</div><div class="ttdoc">Return the total size in bytes. </div></div>
<div class="ttc" id="bignum_8h_html_a6fbcce39a9d92d9e2a560f8aa6a810f4"><div class="ttname"><a href="bignum_8h.html#a6fbcce39a9d92d9e2a560f8aa6a810f4">mpi_copy</a></div><div class="ttdeci">int mpi_copy(mpi *X, const mpi *Y)</div><div class="ttdoc">Copy the contents of Y into X. </div></div>
<div class="ttc" id="structmpi_html_acc8d6d92112b326fcac7c6eff002feb1"><div class="ttname"><a href="structmpi.html#acc8d6d92112b326fcac7c6eff002feb1">mpi::n</a></div><div class="ttdeci">size_t n</div><div class="ttdef"><b>Definition:</b> <a href="bignum_8h_source.html#l00185">bignum.h:185</a></div></div>
<div class="ttc" id="bignum_8h_html_a075d3cf21cb3733e5f0a872e72b0cd15"><div class="ttname"><a href="bignum_8h.html#a075d3cf21cb3733e5f0a872e72b0cd15">mpi_mod_mpi</a></div><div class="ttdeci">int mpi_mod_mpi(mpi *R, const mpi *A, const mpi *B)</div><div class="ttdoc">Modulo: R = A mod B. </div></div>
<div class="ttc" id="bignum_8h_html_a920345ada5c75a913b32a00fed3bd36c"><div class="ttname"><a href="bignum_8h.html#a920345ada5c75a913b32a00fed3bd36c">mpi_get_bit</a></div><div class="ttdeci">int mpi_get_bit(const mpi *X, size_t pos)</div><div class="ttdoc">Get a specific bit from X. </div></div>
<div class="ttc" id="bignum_8h_html_a5d464b4312859ce4969d114eb5e02741"><div class="ttname"><a href="bignum_8h.html#a5d464b4312859ce4969d114eb5e02741">mpi_write_binary</a></div><div class="ttdeci">int mpi_write_binary(const mpi *X, unsigned char *buf, size_t buflen)</div><div class="ttdoc">Export X into unsigned binary data, big endian. </div></div>
<div class="ttc" id="bignum_8h_html_a17537330dbe685ca867e52479a8ef7c3"><div class="ttname"><a href="bignum_8h.html#a17537330dbe685ca867e52479a8ef7c3">mpi_shift_l</a></div><div class="ttdeci">int mpi_shift_l(mpi *X, size_t count)</div><div class="ttdoc">Left-shift: X &amp;lt;&amp;lt;= count. </div></div>
<div class="ttc" id="bignum_8h_html_a9128b59005aad61e8d07bedd0c2973b7"><div class="ttname"><a href="bignum_8h.html#a9128b59005aad61e8d07bedd0c2973b7">mpi_safe_cond_swap</a></div><div class="ttdeci">int mpi_safe_cond_swap(mpi *X, mpi *Y, unsigned char assign)</div><div class="ttdoc">Safe conditional swap X &amp;lt;-&amp;gt; Y if swap is 1. </div></div>
<div class="ttc" id="bignum_8h_html_ab63bfb07b27db84268491cd7d68bddc0"><div class="ttname"><a href="bignum_8h.html#ab63bfb07b27db84268491cd7d68bddc0">mpi_mul_mpi</a></div><div class="ttdeci">int mpi_mul_mpi(mpi *X, const mpi *A, const mpi *B)</div><div class="ttdoc">Baseline multiplication: X = A * B. </div></div>
<div class="ttc" id="bignum_8h_html_a149a13ed93fddb432fb5edd3126b1186"><div class="ttname"><a href="bignum_8h.html#a149a13ed93fddb432fb5edd3126b1186">mpi_sub_mpi</a></div><div class="ttdeci">int mpi_sub_mpi(mpi *X, const mpi *A, const mpi *B)</div><div class="ttdoc">Signed subtraction: X = A - B. </div></div>
<div class="ttc" id="bignum_8h_html_ac70dd057e989b021c4a535470d6afec9"><div class="ttname"><a href="bignum_8h.html#ac70dd057e989b021c4a535470d6afec9">mpi_set_bit</a></div><div class="ttdeci">int mpi_set_bit(mpi *X, size_t pos, unsigned char val)</div><div class="ttdoc">Set a bit of X to a specific value of 0 or 1. </div></div>
<div class="ttc" id="bignum_8h_html_acfdf0f6effb7f976a2f90844c492e160"><div class="ttname"><a href="bignum_8h.html#acfdf0f6effb7f976a2f90844c492e160">mpi_sub_int</a></div><div class="ttdeci">int mpi_sub_int(mpi *X, const mpi *A, t_sint b)</div><div class="ttdoc">Signed subtraction: X = A - b. </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Jul 31 2014 11:35:51 for PolarSSL v1.3.8 by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.5
</small></address>
</body>
</html>