-r--r--r-- 6390 libmceliece-20230612/doc/html/download.html raw
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type="text/css">
html{overflow-y:scroll}
body{font-family:sans-serif}
p,ul,ol,blockquote,pre{font-size:1.0em;line-height:1.6em}
li p{font-size:1.0em}
blockquote p{font-size:1.0em}
tt{font-size:1.3em}
code{font-size:1.3em}
h1{font-size:1.5em}
h2{font-size:1.3em}
h3{font-size:1.0em}
h1 a{text-decoration:none}
table{border-collapse:collapse}
th,td{border:1px solid black}
table a{text-decoration:none}
table tr{font-size:1.0em;line-height:1.6em}
.links a:hover{text-decoration:underline}
.links a:active{text-decoration:underline}
.links img{width:200px;padding-left:1em}
.links td{border:0px;padding-top:0.5em;padding-bottom:0.5em}
.headline{padding:0;font-weight:bold;font-size:1.5em;vertical-align:top;padding-bottom:0.5em;color:#196069}
.navt{display:inline-block;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;
min-width:14%;margin:0;padding:0;padding-left:0.5em;padding-right:0.5em;vertical-align:center;
font-weight:bold;font-size:1.1em;text-align:center;border:1px solid black}
.here{border-bottom:0px;background-color:#ffffff}
.away{background-color:#196069;}
.away a{text-decoration:none;display:block;color:#ffffff}
.away a:hover,.away a:active{text-decoration:underline}
.main{margin:0;padding-top:0em;padding-bottom:1%;clear:both}
</style>
<title>
libmceliece: Download</title>
</head>
<body>
<div class=headline>
libmceliece</div>
<div class=nav>
<div class="navt away"><a href=index.html>Intro</a>
</div><div class="navt here">Download
</div><div class="navt away"><a href=install.html>Install</a>
</div><div class="navt away"><a href=api.html>API</a>
</div><div class="navt away"><a href=cli.html>CLI</a>
</div><div class="navt away"><a href=security.html>Security</a>
</div><div class="navt away"><a href=verification.html>Verification</a>
</div><div class="navt away"><a href=internals.html>Internals</a>
</div><div class="navt away"><a href=people.html>People</a>
</div><div class="navt away"><a href=license.html>License</a>
</div></div>
<div class=main>
<p>To download and unpack the latest version of libmceliece:</p>
<pre><code> wget -m https://lib.mceliece.org/libmceliece-latest-version.txt
version=$(cat lib.mceliece.org/libmceliece-latest-version.txt)
wget -m https://lib.mceliece.org/libmceliece-$version.tar.gz
tar -xzf lib.mceliece.org/libmceliece-$version.tar.gz
cd libmceliece-$version
</code></pre>
<p>Then <a href="install.html">install</a>.</p>
<h3 id="changelog">Archives and changelog (reverse chronological)</h3>
<p><a href="libmceliece-20230612.tar.gz"><code>libmceliece-20230612.tar.gz</code></a> <a href="libmceliece-20230612.html">browse</a></p>
<p>In <code>*/avx/pk_gen.c</code>,
use merge exchange in <code>sort_rows()</code>
and slightly reduce the number of lines of <code>minmax_rows()</code>.</p>
<p>Rename <code>encrypt()</code> as <code>pke_encrypt()</code>,
to more portably avoid name collision with POSIX <code>encrypt()</code>.</p>
<p>Add more 0-initialization in the <code>to_bitslicing</code> functions.
This doesn't help a full correctness proof,
but it does make it easier to see that undefined data is not used.
Thanks to Thom Wiggers for the suggestion.</p>
<p>For MacOS portability,
move <code>#include "encrypt.h"</code> after other inclusions,
and change <code>.hidden</code> to <code>.private_extern</code> (via a new <code>ASM_HIDDEN</code>)
if <code>__APPLE__</code> is defined.
Thanks to Thom Wiggers for the suggestions.</p>
<p>Specify 32-byte alignment for some arrays passed to <code>.S</code> files
in the <code>avx</code> implementations.
The <code>.S</code> files use <code>movdqu</code> instead of <code>movdqa</code>,
so they don't need alignment,
but the alignment could avoid warnings
from a compiler that checks for potentially inadequate alignment.
Thanks to Thom Wiggers for the suggestion.</p>
<p>Remove an unused pointer increment at the end of <code>benes.c</code>.
Thanks to Thom Wiggers for the suggestion.</p>
<p>Add various <code>linker</code> lines in <code>.c</code> files and <code>.S</code> files;
split <code>operations.c</code> into <code>kem_{keypair,enc,dec}.c</code> and <code>wrap_{keypair,enc,dec}.c</code>;
and split big constant arrays from <code>fft.c</code>, <code>fft_tr.c</code>
into separate <code>shared-*.c</code> files.
The <code>linker</code> lines trigger an infrastructure mechanism
to unify compiled code across implementations,
reducing <code>.so</code> size;
the splits improve the effectiveness of this mechanism,
and reduce the amount of code linked
into programs that use only one or two of <code>{keypair,enc,dec}</code>.
Further changes to the infrastructure may remove the need for <code>wrap*.c</code>.</p>
<p>Add <code>const</code> to prototypes for input pointers for some functions.
More can be done here.</p>
<p>Change prototypes from <code>*</code> and <code>[]</code> to, e.g., <code>[GFBITS]</code>
when necessary to eliminate compiler warnings.</p>
<p>Move <code>gf_mul2</code> to <code>crypto_kem/6688128/avx/gf.h</code> from <code>gf.c</code>.</p>
<p>Consistently define <code>nBlocksI</code> as a macro rather than a const.
This is a step towards portability to compilers that fail to support C99.</p>
<p>Extend information in <code>architectures</code> files.
This supports libmceliece's run-time selection of implementations.</p>
<p>Switch from <code>CRYPTO_NAMESPACE</code> to <code>CRYPTO_SHARED_NAMESPACE</code>
for symbols defined in <code>.S</code> files.</p>
<p>Rename <code>crypto_hash.h</code> as <code>hash.h</code>,
and rewrite <code>hash.h</code> as a wrapper around <code>crypto_xof_shake256()</code>.</p>
<p>Switch <code>keypair</code> return value to <code>void</code>.</p>
<p>Remove <code>namespacing</code> files, <code>goal-*</code> files, and <code>api.h</code>.</p>
<p>Rename <code>kem/mceliece*</code> as <code>kem/*</code>.</p>
<p>Starting point:
<code>vec</code> and <code>avx</code> implementations
from official round-4 software release
(in <code>supercop-20221025</code>),
plus <code>crypto_sort/int32</code>
and <code>crypto_xof/shake256</code>,
plus infrastructure based on lib25519 infrastructure.</p><hr><font size=1><b>Version:</b>
This is version 2023.06.07 of the "Download" web page.
</font>
</div>
</body>
</html>