-r--r--r-- 6093 lib25519-20260614/doc/html/index.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;background-color:#091552}
body{font-family:"Noto Sans","Droid Sans","DejaVu Sans","Arial",sans-serif;line-height:1.5}
tt,code{background-color:#f0f0f0;font-family:Consolas,Monaco,"Noto Sans Mono","DejaVu Sans Mono",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(12n+1){background-color:#f0ffff}
tbody tr:nth-child(12n+2){background-color:#f0ffff}
tbody tr:nth-child(12n+3){background-color:#f0ffff}
tbody tr:nth-child(12n+4){background-color:#f0ffff}
tbody tr:nth-child(12n+5){background-color:#f0ffff}
tbody tr:nth-child(12n+6){background-color:#f0ffff}
tbody tr:nth-child(12n+7){background-color:#fffff0}
tbody tr:nth-child(12n+8){background-color:#fffff0}
tbody tr:nth-child(12n+9){background-color:#fffff0}
tbody tr:nth-child(12n+10){background-color:#fffff0}
tbody tr:nth-child(12n+11){background-color:#fffff0}
tbody tr:nth-child(12n+12){background-color:#fffff0}
#headline{display:block;margin:0;padding:0;color:#ffffff;background-color:#091552}
#headline .text{font-weight:bold;font-size:1.0em}
#headline input{display:none}
#nav ul{margin:0;padding:0}
#nav li{list-style-type:none;margin:0;padding:0}
.navtop{padding-bottom:0.5em;font-weight:bold;font-size:1.0em}
.navtop{background-color:#091552;color:#ffffff}
#nav .here{background-color:#091552;color:#ffffff}
#nav .away{background-color:#091552;color:#ffffff}
#nav .away a{text-decoration:none;display:block;color:#ffffff}
#nav .away a:hover,.away a:active{text-decoration:underline}
#hidemenu{visibility:hidden;display:none;overflow:hidden;position:fixed;top:0;left:0;height:100%;width:100%}
.main{padding:5px}
.main{background-color:#ffffff}
.pagetitle{font-size:1.4em;font-weight:bold}
@media only screen and (min-width:512px) {
.navtop{padding-top:5px}
#headline{top:0;margin:0;width:110px;height:100%;position:fixed;overflow:auto}
#headline .noselect{display:none}
#headline #nav{visibility:visible;display:block;width:auto;height:auto}
.main{margin-left:120px}
#headline #hidemenu{visibility:hidden}
}
@media not screen and (min-width:512px) {
#headline .noselect{-webkit-user-select:none;-ms-user-select:none;user-select:none;}
#headline #nav #navbot{visibility:hidden;position:fixed;top:0;left:-70%;z-index:2;transition:0.2s;margin:0;padding:0}
#headline input:checked ~ #nav #navbot{height:100%;position:fixed;top:0;left:0;visibility:visible;display:block;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;vertical-align:center;font-size:1.0em;width:70%;overflow:auto}
#headline input:checked ~ #hidemenu{visibility:visible;display:block;background:black;opacity:0.3;z-index:1}
}
.openssl{color:#900009}
.s2n{color:#004040}
.lib25519{color:#091552}
</style>
<title>
lib25519: Intro</title>
</head>
<body>
<label id=headline>
<input type=checkbox />
<nav id=nav>
<div class=navtop>
<span class=noselect>≡</span>
lib25519</div>
<ul id=navbot>
<li class=here>Intro
</li><li class=away><a href=download.html>Download</a>
</li><li class=away><a href=install.html>Install</a>
</li><li class=away><a href=test.html>Test</a>
</li><li class=away><a href=x25519-cli.html>X CLI</a>
</li><li class=away><a href=ed25519-cli.html>Ed CLI</a>
</li><li class=away><a href=api.html>API</a>
</li><li class=away><a href=security.html>Security</a>
</li><li class=away><a href=speed.html>Speed</a>
</li><li class=away><a href=internals.html>Internals</a>
</li><li class=away><a href=people.html>People</a>
</li><li class=away><a href=license.html>License</a>
</li></ul></nav>
<div id=hidemenu></div>
</label>
<div class=main>
<div class=pagetitle>lib25519: Intro</div>
<p>lib25519 is a microlibrary for the X25519 encryption system and the
Ed25519 signature system, both of which use the Curve25519 elliptic
curve. Curve25519 is the fastest curve in TLS 1.3, and the only curve in
Wireguard, Signal, and many other applications (see Nicolai Brown's page
<a href="https://ianix.com/pub/curve25519-deployment.html"><span class="url">https://ianix.com/pub/curve25519-deployment.html</span></a>).</p>
<p>lib25519 has a very simple stateless <a href="api.html">API</a> based on the SUPERCOP API, with
wire-format inputs and outputs, providing functions that directly match
the central cryptographic operations in X25519 and Ed25519:</p>
<ul>
<li><code>lib25519_dh_keypair(pk,sk)</code>: X25519 key generation</li>
<li><code>lib25519_dh(k,pk,sk)</code>: shared-secret generation</li>
<li><code>lib25519_sign_keypair(pk,sk)</code>: Ed25519 key generation</li>
<li><code>lib25519_sign(sm,&smlen,m,mlen,sk)</code>: signing</li>
<li><code>lib25519_sign_open(m,&mlen,sm,smlen,pk)</code>: verification + message recovery</li>
</ul>
<p>Internally, lib25519 includes implementations designed for <a href="speed.html">performance</a>
on various CPUs, implementations designed to work portably across CPUs,
and automatic run-time selection of implementations.</p>
<p>lib25519 is intended to be called by larger multi-function libraries,
including libraries in other languages via FFI. The idea is that
lib25519 will take responsibility for the details of X25519/Ed25519
computation, including optimization, timing-attack protection, and
eventually verification, freeing up the calling libraries to concentrate
on application-specific needs such as protocol integration. Applications
can also call lib25519 directly.</p>
<p>Latest release: <a href="download.html">20260614</a>.</p><hr><font size=1><b>Version:</b>
This is version 2026.06.14 of the "Intro" web page.
</font>
</div>
</body>
</html>