-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
213 lines (197 loc) · 13.2 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
<!DOCTYPE html>
<html class="writer-html4" lang="en" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>A High Assurance Cryptographic Library — HACL* and EverCrypt Manual documentation</title><link rel="stylesheet" href="static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="static/pygments.css" type="text/css" />
<!--[if lt IE 9]>
<script src="static/js/html5shiv.min.js"></script>
<![endif]-->
<script>
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'./',
VERSION:'',
LANGUAGE:'None',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt'
};
</script>
<script src="static/jquery.js"></script>
<script src="static/underscore.js"></script>
<script src="static/doctools.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script src="static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="HACL*, Vale, and EverCrypt" href="HaclValeEverCrypt.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="#" class="icon icon-home"> HACL* and EverCrypt Manual
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="HaclValeEverCrypt.html">HACL*, Vale, and EverCrypt</a></li>
<li class="toctree-l1"><a class="reference internal" href="Supported.html">List of supported algorithms</a></li>
<li class="toctree-l1"><a class="reference internal" href="Overview.html">Underlying research</a></li>
<li class="toctree-l1"><a class="reference internal" href="Obtaining.html">Using the crypto library</a></li>
<li class="toctree-l1"><a class="reference internal" href="General.html">Digging into the F* source code</a></li>
<li class="toctree-l1"><a class="reference internal" href="HaclDoc.html">HACL APIs</a></li>
<li class="toctree-l1"><a class="reference internal" href="EverCryptDoc.html">EverCrypt APIs</a></li>
<li class="toctree-l1"><a class="reference internal" href="API.html">Which API to use</a></li>
<li class="toctree-l1"><a class="reference internal" href="Applications.html">Verified Applications</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="#">HACL* and EverCrypt Manual</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="#" class="icon icon-home"></a> »</li>
<li>A High Assurance Cryptographic Library</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="a-high-assurance-cryptographic-library">
<h1>A High Assurance Cryptographic Library<a class="headerlink" href="#a-high-assurance-cryptographic-library" title="Permalink to this headline">¶</a></h1>
<p>HACL* is a formally verified cryptographic library written in <a class="reference external" href="https://github.com/FStarLang/FStar">F*</a> and compiled to C, developed as a collaboration
between the <a class="reference external" href="http://prosecco.inria.fr">Prosecco</a> team at INRIA
Paris, <a class="reference external" href="http://research.microsoft.com">Microsoft Research</a>, and
<a class="reference external" href="https://www.csd.cs.cmu.edu/">Carnegie Mellon University</a>. The
library, its applications, and the verification tools it relies on are
being actively developed and maintained as part of <a class="reference external" href="https://github.com/project-everest">Project Everest</a>.</p>
<p>EverCrypt is a cryptographic <em>provider</em> that into a single library combines
HACL*, described above, and ValeCrypt, a collection of verified assembly
code for cryptographic primitives. This manual describes the HACL* and EverCrypt APIs. Read
<a class="reference internal" href="HaclValeEverCrypt.html#hacl-vale-evercrypt"><span class="std std-ref">HACL*, Vale, and EverCrypt</span></a> for a detailed description of how they relate to each
other.</p>
<p>HACL* is an open source project hosted at <a class="reference external" href="https://github.com/project-everest/hacl-star/">hacl-star</a>, along with <a class="reference external" href="https://github.com/project-everest/hacl-star/tree/master/vale">ValeCrypt</a>
and <a class="reference external" href="https://github.com/project-everest/hacl-star/tree/master/evercrypt">EverCrypt</a>.
HACL*, Vale and EverCrypt are distributed together as a collection of C and
assembly files. These can be used either as individual components, or as a
full-fledged library through the EverCrypt provider.</p>
<p>Code from HACL*, ValeCrypt and EverCrypt is deployed in several production
systems, including Mozilla Firefox's <a class="reference external"
href="https://bugzilla.mozilla.org/show_bug.cgi?id=1387183">NSS</a>, the Linux
kernel, mbedTLS, the <a class="reference external"
href="https://www.reddit.com/r/tezos/comments/8hrsz2/tezos_switches_cryptographic_libraries_from/">Tezos
blockchain</a>,
the ElectionGuard Electronic Voting SDK, and the
<a class="reference external" href="https://lwn.net/Articles/770750/">Wireguard VPN</a>. Still,
HACL*, Vale, and EverCrypt remain ongoing research projects and should
be treated as such. If you want to integrate this code into a production environment,
or if you have any questions, comments, or feature requests for HACL*, Vale,
or EverCrypt, initiate a conversation with the <a class="reference external" href="mailto:hacl-star-maintainers%40lists.gforge.inria.fr">HACL* maintainers</a></p>
<div class="toctree-wrapper compound">
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="HaclValeEverCrypt.html">HACL*, Vale, and EverCrypt</a></li>
<li class="toctree-l1"><a class="reference internal" href="Supported.html">List of supported algorithms</a></li>
<li class="toctree-l1"><a class="reference internal" href="Overview.html">Underlying research</a><ul>
<li class="toctree-l2"><a class="reference internal" href="Overview.html#what-is-verified-software">What is verified software?</a></li>
<li class="toctree-l2"><a class="reference internal" href="Overview.html#history-and-publications">History and publications</a></li>
<li class="toctree-l2"><a class="reference internal" href="Overview.html#our-verification-tools">Our Verification Tools</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="Obtaining.html">Using the crypto library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="Obtaining.html#picking-a-distribution">Picking a distribution</a></li>
<li class="toctree-l2"><a class="reference internal" href="Obtaining.html#compiling-a-full-distribution">Compiling a full distribution</a></li>
<li class="toctree-l2"><a class="reference internal" href="Obtaining.html#integrating-the-code">Integrating the code</a></li>
<li class="toctree-l2"><a class="reference internal" href="Obtaining.html#bindings-for-other-languages">Bindings for Other Languages</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="General.html">Digging into the F* source code</a><ul>
<li class="toctree-l2"><a class="reference internal" href="General.html#finding-the-f-source">Finding the F* source</a></li>
<li class="toctree-l2"><a class="reference internal" href="General.html#reading-f-preconditions">Reading F* preconditions</a></li>
<li class="toctree-l2"><a class="reference internal" href="General.html#static-vs-run-time-checks">Static vs. run-time checks</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="HaclDoc.html">HACL APIs</a><ul>
<li class="toctree-l2"><a class="reference internal" href="HaclAEAD.html">AEAD: Chacha20-Poly1305</a></li>
<li class="toctree-l2"><a class="reference internal" href="HaclHash.html">Hashing: SHA-2, SHA-3</a></li>
<li class="toctree-l2"><a class="reference internal" href="HaclECDH.html">ECDH: X25519</a></li>
<li class="toctree-l2"><a class="reference internal" href="HaclSig.html">Signatures: Ed25519</a></li>
<li class="toctree-l2"><a class="reference internal" href="HaclNaCl.html">NaCl API: Box and SecretBox</a></li>
<li class="toctree-l2"><a class="reference internal" href="Randomness.html">Randomness</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="EverCryptDoc.html">EverCrypt APIs</a><ul>
<li class="toctree-l2"><a class="reference internal" href="EverCryptAutoConfig.html">CPU autodetection (<code class="docutils literal notranslate"><span class="pre">EverCrypt_AutoConfig2.h</span></code>)</a></li>
<li class="toctree-l2"><a class="reference internal" href="EverCryptAEAD.html">AEAD (<code class="docutils literal notranslate"><span class="pre">EverCrypt_AEAD.h</span></code>)</a></li>
<li class="toctree-l2"><a class="reference internal" href="EverCryptCTR.html">CTR-mode encryption (<code class="docutils literal notranslate"><span class="pre">EverCrypt_CTR.h</span></code>)</a></li>
<li class="toctree-l2"><a class="reference internal" href="EverCryptHash.html">Hashing (<code class="docutils literal notranslate"><span class="pre">EverCrypt_Hash.h</span></code>)</a></li>
<li class="toctree-l2"><a class="reference internal" href="EverCryptHMAC.html">HMAC (<code class="docutils literal notranslate"><span class="pre">EverCrypt_HMAC.h</span></code>)</a></li>
<li class="toctree-l2"><a class="reference internal" href="EverCryptHKDF.html">HKDF (<code class="docutils literal notranslate"><span class="pre">EverCrypt_HKDF.h</span></code>)</a></li>
<li class="toctree-l2"><a class="reference internal" href="EverCryptDRBG.html">HMAC-DRBG (<code class="docutils literal notranslate"><span class="pre">EverCrypt_DRBG.h</span></code>)</a></li>
<li class="toctree-l2"><a class="reference internal" href="EverCryptNonAgile.html">Non-agile APIs</a></li>
<li class="toctree-l2"><a class="reference internal" href="EverCryptDeprecated.html">Deprecated APIs</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="API.html">Which API to use</a></li>
<li class="toctree-l1"><a class="reference internal" href="Applications.html">Verified Applications</a><ul>
<li class="toctree-l2"><a class="reference internal" href="Applications.html#everest-mitls">Everest/miTLS</a></li>
<li class="toctree-l2"><a class="reference internal" href="Applications.html#libsignal">LibSignal*</a></li>
<li class="toctree-l2"><a class="reference internal" href="Applications.html#merkletree">MerkleTree</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div class="section" id="indices-and-tables">
<h1>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h1>
<ul class="simple">
<li><a class="reference internal" href="genindex.html"><span class="std std-ref">Index</span></a></li>
<li><a class="reference internal" href="py-modindex.html"><span class="std std-ref">Module Index</span></a></li>
<li><a class="reference internal" href="search.html"><span class="std std-ref">Search Page</span></a></li>
</ul>
</div>
</div>
</div>
<a href="https://github.com/project-everest/hacl-star/">
<img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub">
</a>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="HaclValeEverCrypt.html" class="btn btn-neutral float-right" title="HACL*, Vale, and EverCrypt" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>© Copyright 2019, INRIA, Microsoft Research, CMU.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>