-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #11 from hacspec/archive-old-book
Archive old book, replace with draft one
- Loading branch information
Showing
45 changed files
with
127 additions
and
67 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
use flake .# |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
[book] | ||
authors = ["Franziskus Kiefer"] | ||
language = "en" | ||
multilingual = false | ||
src = "src" | ||
title = "hacspec" | ||
|
||
[output.html] | ||
mathjax-support = true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
# Summary | ||
|
||
- [Introduction](./readme.md) | ||
- [The hacspec language](./language/readme.md) | ||
- [Syntax](./language/syntax.md) | ||
- [Core](./language/core.md) | ||
- [Sequences and arrays](./language/seq.md) | ||
- [Structs and enums](./language/enums.md) | ||
- [Error handling](./language/errors.md) | ||
- [The hacspec std library](./std/readme.md) | ||
- [Arithmetic](./std/arithmetic.md) | ||
- [Sequence and array operations](./std/seq.md) | ||
- [Examples](./examples/readme.md) | ||
- [Usage](./usage/readme.md) | ||
- [Specifications](./usage/specifications.md) | ||
- [Verification](./usage/verification.md) | ||
- [Test Vectors](./usage/test_vectors.md) | ||
- [For Developers](./developers/readme.md) | ||
- [Working on the compiler](./developers/compiler.md) | ||
|
||
--- | ||
[Contributors](misc/contributors.md) |
File renamed without changes.
File renamed without changes
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
# Examples | ||
|
||
The main [hacspec repository] contains a set of [example specifications]. | ||
In this section we pull out some interesting bits to demonstrate the hacspec | ||
language. | ||
|
||
There's also a provider that bundles the different cryptographic primitives | ||
into a single library. | ||
The provider implements the [RustCrypto traits] in order to facilitate interoperability. | ||
|
||
[RustCrypto traits]: https://github.com/RustCrypto/traits | ||
[hacspec repository]: https://github.com/hacspec/hacspec/ | ||
[example specifications]: https://github.com/hacspec/hacspec/tree/master/examples |
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
# Contributors | ||
|
||
A list of contributors to the hacspec project. | ||
|
||
- Franziskus Kiefer ([franziskuskiefer](https://github.com/franziskuskiefer/)) | ||
- Denis Merigoux ([denismerigoux](https://github.com/denismerigoux)) | ||
- Karthik Bhargavan | ||
- Tomer Yavor ([TomerHawk](https://github.com/TomerHawk)) | ||
- Tanmay Garg ([tanmay2004](https://github.com/tanmay2004)) | ||
- Peter Schwabe ([cryptojedi](https://github.com/cryptojedi)) | ||
- Kaspar Schleiser ([kaspar030](https://github.com/kaspar030)) | ||
- [Kasserne](https://github.com/Kasserne) | ||
- Tony Arcieri ([tarcieri](https://github.com/tarcieri)) | ||
|
||
If you feel you're missing from this list, feel free to add yourself in a PR. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
# Introduction | ||
|
||
hacspec is a specification language for crypto primitives, protocols, and more. | ||
It is a subset of the [Rust] programming language, focused on functional | ||
programming and it avoids the use of mutable state as much as possible. | ||
|
||
This book gives an overview of: | ||
* [The hacspec language](./language); | ||
* The different parts of the project: | ||
* [the standard library](./std), | ||
* [examples of hacspec programs](./examples); | ||
* How to use hacspec to write [specifications] for standards and [verification]; | ||
* How to use hacspec to generate [test vectors]; | ||
* [Work on the hacspec compiler and tooling itself](./developers). | ||
|
||
For a quick introduction you can also check out these [slides] from April 2021. | ||
An in-depth [technical report] is also available, and serves as a reference | ||
for the language formalization. | ||
|
||
[slides]: https://raw.githubusercontent.com/hacspec/hacspec/master/presentation_slides.pdf | ||
[technical report]: https://hal.inria.fr/hal-03176482 | ||
[Rust]: https://www.rust-lang.org/ | ||
[specifications]: ./usage/specifications.md | ||
[verification]: ./usage/verification.md | ||
[test vectors]: ./usage/test_vectors.md |
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,22 +1,23 @@ | ||
# Summary | ||
|
||
- [Introduction](./readme.md) | ||
- [The hacspec language](./language/readme.md) | ||
- [Syntax](./language/syntax.md) | ||
- [Core](./language/core.md) | ||
- [Sequences and arrays](./language/seq.md) | ||
- [Structs and enums](./language/enums.md) | ||
- [Error handling](./language/errors.md) | ||
- [The hacspec std library](./std/readme.md) | ||
- [Arithmetic](./std/arithmetic.md) | ||
- [Sequence and array operations](./std/seq.md) | ||
- [Examples](./examples/readme.md) | ||
- [Usage](./usage/readme.md) | ||
- [Specifications](./usage/specifications.md) | ||
- [Verification](./usage/verification.md) | ||
- [Test Vectors](./usage/test_vectors.md) | ||
- [For Developers](./developers/readme.md) | ||
- [Working on the compiler](./developers/compiler.md) | ||
- [Examples]() | ||
- [Tutorial]() | ||
- [Proofs]() | ||
- [F*]() | ||
- [Coq]() | ||
- [`libcore`]() | ||
- [Contributing]() | ||
- [Structure]() | ||
- [Hax Cargo subcommand]() | ||
- [Frontend: the Rustc driver]() | ||
- [Frontend: the exporter]() | ||
- [Engine]() | ||
- [Backends]() | ||
- [Utilities]() | ||
- [Libraries & Macros]() | ||
- [`libcore`]() | ||
|
||
--- | ||
[Contributors](misc/contributors.md) | ||
[Contributors]() | ||
[Archive](misc/archive.md) |
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +0,0 @@ | ||
# Examples | ||
|
||
The main [hacspec repository] contains a set of [example specifications]. | ||
In this section we pull out some interesting bits to demonstrate the hacspec | ||
language. | ||
|
||
There's also a provider that bundles the different cryptographic primitives | ||
into a single library. | ||
The provider implements the [RustCrypto traits] in order to facilitate interoperability. | ||
|
||
[RustCrypto traits]: https://github.com/RustCrypto/traits | ||
[hacspec repository]: https://github.com/hacspec/hacspec/ | ||
[example specifications]: https://github.com/hacspec/hacspec/tree/master/examples | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
|
||
# Warning: this book is currently being rewritten! | ||
|
||
hax is the successor of hacspec. You can find the previous book | ||
describing hacspec [here](../archive/index.html), but keep in mind most of the information | ||
there is outdated. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +0,0 @@ | ||
# Contributors | ||
|
||
A list of contributors to the hacspec project. | ||
|
||
- Franziskus Kiefer ([franziskuskiefer](https://github.com/franziskuskiefer/)) | ||
- Denis Merigoux ([denismerigoux](https://github.com/denismerigoux)) | ||
- Karthik Bhargavan | ||
- Tomer Yavor ([TomerHawk](https://github.com/TomerHawk)) | ||
- Tanmay Garg ([tanmay2004](https://github.com/tanmay2004)) | ||
- Peter Schwabe ([cryptojedi](https://github.com/cryptojedi)) | ||
- Kaspar Schleiser ([kaspar030](https://github.com/kaspar030)) | ||
- [Kasserne](https://github.com/Kasserne) | ||
- Tony Arcieri ([tarcieri](https://github.com/tarcieri)) | ||
|
||
If you feel you're missing from this list, feel free to add yourself in a PR. | ||
Empty file.
Empty file.
Empty file.
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,25 +1,20 @@ | ||
# Introduction | ||
|
||
hacspec is a specification language for crypto primitives, protocols, and more. | ||
It is a subset of the [Rust] programming language, focused on functional | ||
programming and it avoids the use of mutable state as much as possible. | ||
hax is a tool for high assurance translations that translates a large subset of | ||
Rust into formal languages such as [F\*](https://www.fstar-lang.org/) or [Coq](https://coq.inria.fr/). | ||
This extends the scope of the hacspec project, which was previously a DSL embedded in Rust, | ||
to a usable tool for verifying Rust programs. | ||
|
||
This book gives an overview of: | ||
* [The hacspec language](./language); | ||
* The different parts of the project: | ||
* [the standard library](./std), | ||
* [examples of hacspec programs](./examples); | ||
* How to use hacspec to write [specifications] for standards and [verification]; | ||
* How to use hacspec to generate [test vectors]; | ||
* [Work on the hacspec compiler and tooling itself](./developers). | ||
> So what is **hacspec** now? | ||
For a quick introduction you can also check out these [slides] from April 2021. | ||
An in-depth [technical report] is also available, and serves as a reference | ||
for the language formalization. | ||
hacspec is the functional subset of Rust that can be used, together with a hacspec | ||
standard library, to write succinct, executable, and verifiable specifications in | ||
Rust. | ||
These specifications can be translated into formal languages with hax. | ||
|
||
# ⚠️ Warning: this book is currently being rewritten! ⚠️ | ||
|
||
hax is the successor of hacspec. You can find the previous book | ||
describing hacspec [here](/archive), but keep in mind most of the information | ||
there is outdated. | ||
|
||
[slides]: https://raw.githubusercontent.com/hacspec/hacspec/master/presentation_slides.pdf | ||
[technical report]: https://hal.inria.fr/hal-03176482 | ||
[Rust]: https://www.rust-lang.org/ | ||
[specifications]: ./usage/specifications.md | ||
[verification]: ./usage/verification.md | ||
[test vectors]: ./usage/test_vectors.md |
Empty file.