An open API service indexing awesome lists of open source software.

https://github.com/raaz-crypto/verse-coq

VERified asSembler for cryptographic primitives
https://github.com/raaz-crypto/verse-coq

coq cryptography edsl

Last synced: 12 months ago
JSON representation

VERified asSembler for cryptographic primitives

Awesome Lists containing this project

README

          

Verse
=====

[![License: Apache-2.0][shields-license]][apache-2]
[![][ci-badge]][ci]
[![][checks-badge]][checks]

A domain specific language in coq used to write low-level
cryptographic primitives.

Configuring and installing
--------------------------

We recommend the use of opam2 for working with coq. To know which
versions are supported refer to the [CI status page][github-actions].

## Setting up the coq environment.

We assume that you are using opam-2 in which case you need to
initialise it with the `--disable-sandboxing` option. Otherwise the
package coq-color used by verse will not compile.

```bash
opam init --disable-sandboxing --compiler "$OCAML_VER"
opam repo add coq-released https://coq.inria.fr/opam/released
opam update
```

You will now need to get a version of coq. Select one of the coq
versions using which verse [is tested on our CI
system][github-actions].

```
opam install coq."$COQ_VER"
opam pin add coq "$COQ_VER"
opam install coq-color
```

Finally prepare the opam environment, configure, and then make.

```
eval $(opam config env) # set up opam environment if needed.
./configure.sh
make

```

Programming in Verse
--------------------

Verse is an _Embedded Domain Specific Language_ (EDSL) where the
target code is represented as an inductive type in Coq. This EDSL is
use to implement actual primitives, the source of which are available
in the directory `src/Verse/CryptoLib`. The extracted low level code
is distributed as a separate library called [libverse], a library that
can be embedded in other high level libraries. A snapshot of
[libverse] is built from the coq source using the helper scripts
present in the directory `crypto-lib`.

# Legal

Copyright 2018, Piyush P Kurur

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

SPDX-License-Identifier: Apache-2.0

[wiki]: "Verse coq repo"
[repo]: "Verse on github"

[emailgroups]: "Raaz on Google groups"

[libverse]:
[shields-license]:
[apache-2]: "Apache-2.0 license"

[ci-badge]:
"Building Checks"
[ci]:
"Build Checks"
[checks-badge]:
"Source Checks"
[checks]:
"Source Checks"