-r--r--r-- 13278 libmceliece-20241009/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:"Noto Sans","Droid Sans","DejaVu Sans","Arial",sans-serif;line-height:1.5} tt,code{background-color:#f0f0f0;font-family:"Noto Sans Mono","Droid Sans Mono","DejaVu Sans Mono","Courier New",monospace,sans-serif;font-size:1em;} pre{margin-left:3em} p,ul,ol,blockquote,pre{font-size:1.0em;line-height:1.6} li p{font-size:1.0em} blockquote p{font-size:1.0em} 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} table tr{font-size:1.0em;line-height:1.5} tbody tr:nth-child(20n+1){background-color:#f0ffff} tbody tr:nth-child(20n+2){background-color:#f0ffff} tbody tr:nth-child(20n+3){background-color:#f0ffff} tbody tr:nth-child(20n+4){background-color:#f0ffff} tbody tr:nth-child(20n+5){background-color:#f0ffff} tbody tr:nth-child(20n+6){background-color:#f0ffff} tbody tr:nth-child(20n+7){background-color:#f0ffff} tbody tr:nth-child(20n+8){background-color:#f0ffff} tbody tr:nth-child(20n+9){background-color:#f0ffff} tbody tr:nth-child(20n+10){background-color:#f0ffff} tbody tr:nth-child(20n+11){background-color:#fffff0} tbody tr:nth-child(20n+12){background-color:#fffff0} tbody tr:nth-child(20n+13){background-color:#fffff0} tbody tr:nth-child(20n+14){background-color:#fffff0} tbody tr:nth-child(20n+15){background-color:#fffff0} tbody tr:nth-child(20n+16){background-color:#fffff0} tbody tr:nth-child(20n+17){background-color:#fffff0} tbody tr:nth-child(20n+18){background-color:#fffff0} tbody tr:nth-child(20n+19){background-color:#fffff0} tbody tr:nth-child(20n+20){background-color:#fffff0} .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:16%;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=test.html>Test</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=speed.html>Speed</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> and <a href="test.html">test</a>.</p> <h3 id="changelog">Archives and changelog (reverse chronological)</h3> <p><a href="libmceliece-20241009.tar.gz"><code>libmceliece-20241009.tar.gz</code></a> <a href="libmceliece-20241009.html">browse</a></p> <p>Upgrade to <code>cryptoint 20241003</code>.</p> <p>Use <code>cryptoint</code> for variable shifts in the <code>f</code> variants.</p> <p>Say <code>full tests succeeded</code> in <code>mceliece-fulltest</code> documentation.</p> <p><a href="libmceliece-20240812.tar.gz"><code>libmceliece-20240812.tar.gz</code></a> <a href="libmceliece-20240812.html">browse</a></p> <p>Restructure <code>gf</code> for simpler code: <code>gf.h</code> is now shared across all parameter sets; each of the two field sizes has one <code>gf_params.h</code>, one <code>gf.c</code>, one <code>gf_2m_mul.c</code>, and one <code>gf_2m_mul2.c</code>; each of the four extension-field sizes has one <code>gf_2mt_mul.c</code>.</p> <p>Support finer-grained command-line splits in <code>mceliece-test</code>, and use those for more parallelization inside <code>mceliece-fulltest</code>.</p> <p>Proactively rewrite many 1-bit data paths via <code>cryptoint</code>.</p> <p>Update to latest <code>cryptoint</code> from SUPERCOP (renamed from <code>inttypes</code>).</p> <p>Fix comment on <code>minmax_rows</code>.</p> <p>Remove some unused <code>#include</code> lines.</p> <p><a href="libmceliece-20240726.tar.gz"><code>libmceliece-20240726.tar.gz</code></a> <a href="libmceliece-20240726.html">browse</a></p> <p>Add <code>mceliece-fulltest</code> script, and designate passing <code>mceliece-fulltest</code> as required for support.</p> <p>Make <code>--valgrind</code> default, and designate disabling it as unsupported.</p> <p>Split off <code>doc/test.md</code>.</p> <p>Update to latest <code>inttypes</code> from SUPERCOP.</p> <p>Use <code>inttypes</code> more in <code>pk_gen.c</code>.</p> <p>Move comments to the top in <code>encrypt.c</code>.</p> <p>Rename <code>--no</code> as <code>--no-</code>.</p> <p>Rename <code>ALIGN</code> as <code>CRYPTO_ALIGN</code>.</p> <p>Document more subroutines in <code>doc/internals.md</code>.</p> <p><a href="libmceliece-20240513.tar.gz"><code>libmceliece-20240513.tar.gz</code></a> <a href="libmceliece-20240513.html">browse</a></p> <p>Support <code>valgrind</code> in <code>mceliece-test</code>, with help from <code>configure</code>. (Subsequent plans: use variable-length <code>malloc</code> for variable-length functions.)</p> <p>Cover <code>shared</code> directories for <code>checkinsns</code> and <code>checknamespace</code>.</p> <p>Sort <code>ofiles</code> for reproducibility. Thanks to Jan Mojzis for the suggestion.</p> <p>Hide more symbols in <code>.so</code>.</p> <p>MacOS X port: <code>dylib</code>; deal with <code>s</code> and <code>S</code> in <code>checknamespace</code>; use <code>-flat_namespace</code> so <code>mceliece-test</code> can substitute <code>randombytes</code>. (Infrastructure copied from lib25519.)</p> <p>Support empty compiler lists. (Infrastructure copied from lib25519.)</p> <p>For compatibility with musl etc., support <code>constructor</code> as an alternative to <code>ifunc</code> for dispatch. Select <code>constructor</code> automatically if an <code>ifunc</code> compile-time test fails, or if <code>--notryifunc</code> is passed to <code>./configure</code>. (Infrastructure copied from lib25519.)</p> <p>Add <code>note.GNU-stack</code> to assembly.</p> <p>Recognize <code>sun4v</code> as <code>sparc64</code>.</p> <p>Port to CPUs that do not allow unaligned access.</p> <p>Revamp <code>inttypes</code> support. Make more use of the <code>inttypes</code> functions.</p> <p>Factor <code>crypto_xof/bitwrite16</code> out of <code>*/encrypt.c</code>, and add new <code>bitwrite16</code> implementations. Also support <code>nooverlap</code> option in <code>mceliece-test</code>, and increase <code>maxtest</code> for <code>xof</code> to 16384.</p> <p>Switch <code>avx/encrypt.c</code> from <code>syndrome_asm</code> to new <code>xor_mat_vec256</code>. Add support functions such as <code>vec256_8x_shr</code>.</p> <p>Factor <code>crypto_sort_int16</code> out of <code>vec/encrypt.c</code>. (Subsequent plans: add faster <code>crypto_sort/int16</code> implementations, and switch <code>avx/encrypt.c</code> from <code>int32</code> to <code>int16</code>.)</p> <p>Factor <code>crypto_sort_int64</code> out of <code>pk_gen.c</code>.</p> <p>Use <code>crypto_sort_int32</code> directly without the <code>int32_sort</code> renaming.</p> <p>Split <code>vec128_gf.h</code> and <code>vec256_gf.h</code> out of <code>vec128.h</code> and <code>vec256.h</code>. Distinguish <code>vec_mul_gf</code> from <code>vec_mul_gf_using_64</code> to allow more <code>.h</code> merging across sizes.</p> <p>In <code>autogen/speed</code>, allocate only <code>mceliece_kem_BYTES</code> for <code>T</code> rather than <code>mceliece_kem_CIPHERTEXTBYTES</code>.</p> <p>Switch speed measurements from medians to interquartile means.</p> <p>Add page with examples of current speeds.</p> <p>Add auto-generation warnings for <code>mceliece*.c</code>.</p> <p>Add manual pages for <code>mceliece-test</code> and <code>mceliece-speed</code>.</p> <p>Improve readability of code blocks in HTML.</p> <p>Remove unused <code>KAT</code> code segments.</p> <p>Remove unused <code>bitrev</code>.</p> <p>Remove unused <code>perm_check</code>. Thanks to Simon Josefsson for the suggestion.</p> <p>More explicitly initialize <code>pivots</code> to silence an incorrect compiler warning. Thanks to Simon Josefsson for the suggestion.</p> <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 2024.10.09 of the "Download" web page. </font> </div> </body> </html>