GithubHelp home page GithubHelp logo

cryspen / libcrux Goto Github PK

View Code? Open in Web Editor NEW
68.0 10.0 11.0 25.13 MB

The formally verified crypto library for Rust

Home Page: https://cryspen.com/libcrux

License: Apache License 2.0

Rust 13.75% C 56.34% Assembly 16.70% F* 11.48% Makefile 0.15% HTML 0.04% Shell 0.09% Python 0.84% CMake 0.06% C++ 0.50% Go 0.01% Dockerfile 0.01% Nix 0.02% sed 0.01%
cryptography encryption formal-verification signatures

libcrux's People

Contributors

dependabot[bot] avatar franziskuskiefer avatar jschneider-bensch avatar karthikbhargavan avatar keks avatar mamonet avatar msprotz avatar nadimkobeissi avatar pnmadelaine avatar protz avatar raphaelrobert avatar w95psp avatar xvzcf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

libcrux's Issues

Update HKDF API

          The top level should probably expose something like this.

With all the warnings in here. We should make sure the top level APIs are done well and offer these different options, and then drop the functions here that are not necessary.
You can do that here, or file a follow-up.

Originally posted by @franziskuskiefer in #63 (comment)

Document the verification state for code

Not all the code we have in libcrux is verified (e.g. SHA-2 and x25519 from libjade) and we may want to add other partially-verified code in the future. Our policy is that unverified code will never be exposed in the libcrux API. We may want to better document the status of various implementations in a STATUS.md file or something.

Update CI

Update the CI

  • add merge queues
  • add rust fmt checks
  • add individual jobs for the sys libraries.

Platform support

  • macOS x64
  • macOS aarch64 (builds only)
  • iOS aarch64 (builds only)
  • Windows x86
  • Windows x64
  • Linux x64
  • Linux x86
  • Linux aarch64
  • Android aarch64
  • wasm-32

Ergonomics & Maintainability

  • Pull out common things like setup into reusable workflows

There are some CI improvements esp. for 32-bit in #21.

Update build system

Update the build to

  • #46
  • #47
  • #48
  • add basic CI support to ensure all of this is working

Some open ToDos on branch franziskus/hacl-sys

  • consistent naming of sys crates (libjade-sys, libcrux-hacl-sys, libcrux-platform, ... ?)
  • consistent version numbers across crates
  • fix all crates to the right version ("=0.0.1")
  • use new libcrux-hacl-sys functions in hacl module with hardware detection from libcrux-platform
  • use functions from hacl module in libcrux
  • #93

Platform support

  • macOS (arm64, x64)
  • Windows (x64, x86)
  • Linux (x64, x86)

Platform support for follow ups

Enforce `kem` API constraints at the type level

The kem APIs currently use Vec<u8>s for inputs and outputs. This, along with the fact that they allow for different algorithms to be selected, necessitates the use of unwrap()s since the different algorithms have different length requirements that aren't being enforced at compile time.

Kyber spec

  • Property based testing
  • Testing against TVs
  • Testing against ref/jasmin moved to #31

Add high-level HPKE API

The HPKE API is the (hac)spec API right now, which isn't great to use.
Add a high-level, usable API on top.

Decouple `kem` module from elliptic curves.

The crate::kem module is currently written with only elliptic curves in mind (see for example impl From<Algorithm> for ecdh::Algorithm here).

When Kyber is added, the From implementation above will have to be changed to a TryFrom, and so on.

Improve signature API

The signature API isn't great right now. It should be updated to be easier to use and cover all signature algorithms.

Add Kyber fuzzing to CI

We should clean up the fuzzing code and make it more comprehensive. We could fuzz the Kyber code for a couple of minutes on each PR, and run a longer job where we fuzz the code for an hour or so every night.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.