pqc/ntru__encrypt_8c.html

251 lines
14 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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.7"/>
<title>post quantum cryptography: /home/travis/build/hasufell/pqc/src/ntru_encrypt.c File Reference</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="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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">post quantum cryptography
</div>
<div id="projectbrief">Highly optimized implementation of the NTRUEncrypt algorithm</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</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>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</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>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">ntru_encrypt.c File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>NTRU encryption.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="ntru__ascii__poly_8h_source.html">ntru_ascii_poly.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="ntru__encrypt_8h_source.html">ntru_encrypt.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="ntru__mem_8h_source.html">ntru_mem.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="ntru__params_8h_source.html">ntru_params.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="ntru__poly_8h_source.html">ntru_poly.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="ntru__poly__ascii_8h_source.html">ntru_poly_ascii.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="ntru__string_8h_source.html">ntru_string.h</a>&quot;</code><br />
<code>#include &lt;string.h&gt;</code><br />
<code>#include &lt;fmpz_poly.h&gt;</code><br />
<code>#include &lt;fmpz.h&gt;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for ntru_encrypt.c:</div>
<div class="dyncontent">
<div class="center"><img src="ntru__encrypt_8c__incl.png" border="0" usemap="#_2home_2travis_2build_2hasufell_2pqc_2src_2ntru__encrypt_8c" alt=""/></div>
<map name="_2home_2travis_2build_2hasufell_2pqc_2src_2ntru__encrypt_8c" id="_2home_2travis_2build_2hasufell_2pqc_2src_2ntru__encrypt_8c">
<area shape="rect" id="node3" href="ntru__ascii__poly_8h.html" title="header for ntru_ascii_poly.c " alt="" coords="286,117,406,147"/><area shape="rect" id="node9" href="ntru__string_8h.html" title="header for ntru_string.c " alt="" coords="401,195,494,224"/><area shape="rect" id="node12" href="ntru__params_8h.html" title="NTRU parameters. " alt="" coords="497,272,601,301"/><area shape="rect" id="node20" href="ntru__encrypt_8h.html" title="header for encrypt.c " alt="" coords="482,117,586,147"/><area shape="rect" id="node23" href="ntru__poly_8h.html" title="header for ntru_poly.c " alt="" coords="785,195,870,224"/><area shape="rect" id="node38" href="ntru__mem_8h.html" title="header for ntru_mem.c " alt="" coords="620,195,710,224"/><area shape="rect" id="node43" href="ntru__poly__ascii_8h.html" title="header for ntru_poly_ascii.c " alt="" coords="81,117,201,147"/><area shape="rect" id="node5" href="ntru__common_8h.html" title="common macros/functions " alt="" coords="78,195,190,224"/><area shape="rect" id="node25" href="ntru__err_8h.html" title="error handling " alt="" coords="713,272,790,301"/></map>
</div>
</div>
<p><a href="ntru__encrypt_8c_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a0156453c7cab7cf3da259beb1daf914b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ntru__encrypt_8c.html#a0156453c7cab7cf3da259beb1daf914b">ntru_encrypt_poly</a> (const fmpz_poly_t msg_bin, const fmpz_poly_t pub_key, const fmpz_poly_t rnd, fmpz_poly_t out, const <a class="el" href="structntru__params.html">ntru_params</a> *params)</td></tr>
<tr class="separator:a0156453c7cab7cf3da259beb1daf914b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0bb47c0fa0dd4a4cfa0c0f7a722fd554"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structstring.html">string</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ntru__encrypt_8c.html#a0bb47c0fa0dd4a4cfa0c0f7a722fd554">ntru_encrypt_string</a> (const <a class="el" href="structstring.html">string</a> *msg, const fmpz_poly_t pub_key, const fmpz_poly_t rnd, const <a class="el" href="structntru__params.html">ntru_params</a> *params)</td></tr>
<tr class="separator:a0bb47c0fa0dd4a4cfa0c0f7a722fd554"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>NTRU encryption. </p>
<p>This file handles the NTRU encryption algorithm. </p>
<p>Definition in file <a class="el" href="ntru__encrypt_8c_source.html">ntru_encrypt.c</a>.</p>
</div><h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a0156453c7cab7cf3da259beb1daf914b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ntru_encrypt_poly </td>
<td>(</td>
<td class="paramtype">const fmpz_poly_t&#160;</td>
<td class="paramname"><em>msg_tern</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const fmpz_poly_t&#160;</td>
<td class="paramname"><em>pub_key</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const fmpz_poly_t&#160;</td>
<td class="paramname"><em>rnd</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">fmpz_poly_t&#160;</td>
<td class="paramname"><em>out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structntru__params.html">ntru_params</a> *&#160;</td>
<td class="paramname"><em>params</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>encrypt the msg, using the math: e = (h r) + m (mod q)</p>
<p>e = the encrypted poly</p>
<p>h = the public key</p>
<p>r = the random poly</p>
<p>m = the message poly</p>
<p>q = large mod</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msg_tern</td><td>the message to encrypt, in ternary format </td></tr>
<tr><td class="paramname">pub_key</td><td>the public key </td></tr>
<tr><td class="paramname">rnd</td><td>the random poly (should have relatively small coefficients, but not restricted to {-1, 0, 1}) </td></tr>
<tr><td class="paramname">out</td><td>the output poly which is in the range {0, q-1} (not ternary!) [out] </td></tr>
<tr><td class="paramname">params</td><td><a class="el" href="structntru__params.html">ntru_params</a> the ntru context </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="ntru__encrypt_8c_source.html#l00046">46</a> of file <a class="el" href="ntru__encrypt_8c_source.html">ntru_encrypt.c</a>.</p>
</div>
</div>
<a class="anchor" id="a0bb47c0fa0dd4a4cfa0c0f7a722fd554"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structstring.html">string</a>* ntru_encrypt_string </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structstring.html">string</a> *&#160;</td>
<td class="paramname"><em>msg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const fmpz_poly_t&#160;</td>
<td class="paramname"><em>pub_key</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const fmpz_poly_t&#160;</td>
<td class="paramname"><em>rnd</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structntru__params.html">ntru_params</a> *&#160;</td>
<td class="paramname"><em>params</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Encrypt a message in the form of a null-terminated char array and return a string.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msg</td><td>the message </td></tr>
<tr><td class="paramname">pub_key</td><td>the public key </td></tr>
<tr><td class="paramname">rnd</td><td>the random poly (should have relatively small coefficients, but not restricted to {-1, 0, 1}) </td></tr>
<tr><td class="paramname">params</td><td><a class="el" href="structntru__params.html">ntru_params</a> the ntru context </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the newly allocated encrypted string </dd></dl>
<p>Definition at line <a class="el" href="ntru__encrypt_8c_source.html#l00074">74</a> of file <a class="el" href="ntru__encrypt_8c_source.html">ntru_encrypt.c</a>.</p>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Jun 8 2014 23:33:23 for post quantum cryptography by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>