Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pull out libcrux::kem into a standalone crate #304

Merged
merged 31 commits into from
Jun 13, 2024
Merged
Show file tree
Hide file tree
Changes from 27 commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
d6f3448
Make ML-KEM-768 constants public
jschneider-bensch Jun 10, 2024
b4d9e76
Change `libcrux::ecdh` submodule and item visibility to public
jschneider-bensch Jun 10, 2024
7d3fe6b
Change visibility of `libcrux-ml-kem::MlKemKeyPair` fields to `pub`
jschneider-bensch Jun 10, 2024
d8d8e17
Extract `libcrux::kem` module to its own crate
jschneider-bensch Jun 10, 2024
7040c64
Update KEM crate documentation
jschneider-bensch Jun 10, 2024
550d6f6
Format
jschneider-bensch Jun 10, 2024
c639f7b
Provide `.len()` on ML-KEM structs and use that instead of constants
jschneider-bensch Jun 11, 2024
a82fc0e
Use `.into_parts()` on `MlKemKeyPair` instead of direct access
jschneider-bensch Jun 11, 2024
cb2ac3a
Add CI run for `libcrux-kem`
jschneider-bensch Jun 11, 2024
90dc277
Merge branch 'dev' into jonas/kem-crate
jschneider-bensch Jun 11, 2024
8fdf171
Fix ML-KEM tests
jschneider-bensch Jun 11, 2024
8000575
CI: Use Rust stable and exclude Win32 (linker issue)
jschneider-bensch Jun 11, 2024
35c5f6d
Revert CI change to now install Rust nightly again
jschneider-bensch Jun 11, 2024
2bc3b92
Pull out `ecdh` module into its own crate
jschneider-bensch Jun 11, 2024
7f68d12
Make `libcrux-kem` use `libcrux-ecdh` instead of `libcrux`
jschneider-bensch Jun 11, 2024
85ef2ad
Make `libcrux` use standalone `libcrux-ecdh` crate
jschneider-bensch Jun 11, 2024
319593f
Copied CI workflow for ECDH crate
jschneider-bensch Jun 12, 2024
20cb5b8
Merge imports
jschneider-bensch Jun 12, 2024
d0ad351
Move P256 ECDSA signature API back to libcrux
jschneider-bensch Jun 12, 2024
b119396
Move ECDH tests to the `libcrux-ecdh` crate
jschneider-bensch Jun 12, 2024
f86a100
Merge branch 'dev' into jonas/kem-crate
jschneider-bensch Jun 12, 2024
debd4e7
Update Cargo.lock
jschneider-bensch Jun 13, 2024
3044792
Make `libcrux` depend on `libcrux-kem`
jschneider-bensch Jun 13, 2024
4e49371
Make spec libcrux interop tests use standalone crate
jschneider-bensch Jun 13, 2024
b47fd6e
Update benchmarks to use `libcrux-ml-kem` (resp. `libcrux-kem`)
jschneider-bensch Jun 13, 2024
8cde88c
Remove dead code
jschneider-bensch Jun 13, 2024
0fec1b1
Merge branch 'dev' into jonas/kem-crate
jschneider-bensch Jun 13, 2024
7bd4a99
Remove Signing Errors from `libcrux-ecdh`
jschneider-bensch Jun 13, 2024
f4f8e55
Better name for `libcrux` wrapper around `libcrux-ecdh` Error
jschneider-bensch Jun 13, 2024
19979dc
Reduce doc comment for `libcrux::kem` module
jschneider-bensch Jun 13, 2024
d061b32
Preserve Kyber implementation notes
jschneider-bensch Jun 13, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
120 changes: 120 additions & 0 deletions .github/workflows/ecdh.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
name: KEM

on:
push:
branches: ["main", "dev"]
pull_request:
branches: ["main", "dev", "*"]
workflow_dispatch:
merge_group:

env:
CARGO_TERM_COLOR: always

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build:
strategy:
fail-fast: false
matrix:
bits: [32, 64]
os:
- macos-13 # Intel mac
- macos-latest # macos-14 m1
- ubuntu-latest
- windows-latest
exclude:
- bits: 32
os: "macos-latest"
- bits: 32
os: "macos-13"
- bits: 32 # FIXME: Linking isn't working here yet for hacl #42
os: "windows-latest"

runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash
working-directory: libcrux-ecdh

steps:
- uses: actions/checkout@v4

- run: echo "RUST_TARGET_FLAG=" > $GITHUB_ENV
if: ${{ matrix.bits == 64 }}

- name: 🛠️ Setup Rust Nightly
run: rustup toolchain install nightly

- name: 🛠️ Setup Ubuntu x86
if: ${{ matrix.bits == 32 && matrix.os == 'ubuntu-latest' }}
run: |
rustup target add i686-unknown-linux-gnu
sudo apt-get update
sudo apt-get install -y gcc-multilib g++-multilib

- name: 🛠️ Setup Ubuntu x64
if: ${{ matrix.bits == 64 && matrix.os == 'ubuntu-latest' }}
run: |
rustup target add aarch64-unknown-linux-gnu

# Set up 32 bit systems

- name: 🛠️ Config Windows x86
run: echo "RUST_TARGET_FLAG=--target=i686-pc-windows-msvc" > $GITHUB_ENV
if: ${{ matrix.bits == 32 && matrix.os == 'windows-latest' }}

- name: 🛠️ Config Linux x86
run: |
echo "RUST_TARGET_FLAG=--target=i686-unknown-linux-gnu" > $GITHUB_ENV
if: ${{ matrix.bits == 32 && matrix.os == 'ubuntu-latest' }}

# Build ...

- name: 🔨 Build
run: |
rustc --print=cfg
cargo build --verbose $RUST_TARGET_FLAG

- name: 🔨 Build Release
run: cargo build --verbose --release $RUST_TARGET_FLAG

- name: 🏃🏻 Asan MacOS
if: ${{ matrix.os == 'macos-latest' }}
run: RUSTDOCFLAGS=-Zsanitizer=address RUSTFLAGS=-Zsanitizer=address cargo +nightly test --release --target aarch64-apple-darwin

# - name: ⬆ Upload build
# uses: ./.github/actions/upload_artifacts
# with:
# name: build_${{ matrix.os }}_${{ matrix.bits }}

# We get false positives here.
# TODO: Figure out what is going on here
# - name: 🏃🏻 Asan Linux
# if: ${{ matrix.bits == 64 && matrix.os == 'ubuntu-latest' }}
# run: RUSTDOCFLAGS=-Zsanitizer=address RUSTFLAGS=-Zsanitizer=address cargo +nightly test --release --target x86_64-unknown-linux-gnu

# Test ...

- name: 🏃🏻‍♀️ Test
run: |
cargo clean
cargo test --verbose $RUST_TARGET_FLAG

- name: 🏃🏻‍♀️ Test Release
run: |
cargo clean
cargo test --verbose --release $RUST_TARGET_FLAG

- name: 🏃🏻‍♀️ Test Portable
run: |
cargo clean
LIBCRUX_DISABLE_SIMD128=1 LIBCRUX_DISABLE_SIMD256=1 cargo test --verbose $RUST_TARGET_FLAG

- name: 🏃🏻‍♀️ Test Portable Release
run: |
cargo clean
LIBCRUX_DISABLE_SIMD128=1 LIBCRUX_DISABLE_SIMD256=1 cargo test --verbose --release $RUST_TARGET_FLAG
120 changes: 120 additions & 0 deletions .github/workflows/kem.yml
jschneider-bensch marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
name: KEM

on:
push:
branches: ["main", "dev"]
pull_request:
branches: ["main", "dev", "*"]
workflow_dispatch:
merge_group:

env:
CARGO_TERM_COLOR: always

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build:
strategy:
fail-fast: false
matrix:
bits: [32, 64]
os:
- macos-13 # Intel mac
- macos-latest # macos-14 m1
- ubuntu-latest
- windows-latest
exclude:
- bits: 32
os: "macos-latest"
- bits: 32
os: "macos-13"
- bits: 32 # FIXME: Linking isn't working here yet for hacl #42
os: "windows-latest"

runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash
working-directory: libcrux-kem

steps:
- uses: actions/checkout@v4

- run: echo "RUST_TARGET_FLAG=" > $GITHUB_ENV
if: ${{ matrix.bits == 64 }}

- name: 🛠️ Setup Rust Nightly
run: rustup toolchain install nightly

- name: 🛠️ Setup Ubuntu x86
if: ${{ matrix.bits == 32 && matrix.os == 'ubuntu-latest' }}
run: |
rustup target add i686-unknown-linux-gnu
sudo apt-get update
sudo apt-get install -y gcc-multilib g++-multilib

- name: 🛠️ Setup Ubuntu x64
if: ${{ matrix.bits == 64 && matrix.os == 'ubuntu-latest' }}
run: |
rustup target add aarch64-unknown-linux-gnu

# Set up 32 bit systems

- name: 🛠️ Config Windows x86
run: echo "RUST_TARGET_FLAG=--target=i686-pc-windows-msvc" > $GITHUB_ENV
if: ${{ matrix.bits == 32 && matrix.os == 'windows-latest' }}

- name: 🛠️ Config Linux x86
run: |
echo "RUST_TARGET_FLAG=--target=i686-unknown-linux-gnu" > $GITHUB_ENV
if: ${{ matrix.bits == 32 && matrix.os == 'ubuntu-latest' }}

# Build ...

- name: 🔨 Build
run: |
rustc --print=cfg
cargo build --verbose $RUST_TARGET_FLAG

- name: 🔨 Build Release
run: cargo build --verbose --release $RUST_TARGET_FLAG

- name: 🏃🏻 Asan MacOS
if: ${{ matrix.os == 'macos-latest' }}
run: RUSTDOCFLAGS=-Zsanitizer=address RUSTFLAGS=-Zsanitizer=address cargo +nightly test --release --target aarch64-apple-darwin

# - name: ⬆ Upload build
# uses: ./.github/actions/upload_artifacts
# with:
# name: build_${{ matrix.os }}_${{ matrix.bits }}

# We get false positives here.
# TODO: Figure out what is going on here
# - name: 🏃🏻 Asan Linux
# if: ${{ matrix.bits == 64 && matrix.os == 'ubuntu-latest' }}
# run: RUSTDOCFLAGS=-Zsanitizer=address RUSTFLAGS=-Zsanitizer=address cargo +nightly test --release --target x86_64-unknown-linux-gnu

# Test ...

- name: 🏃🏻‍♀️ Test
run: |
cargo clean
cargo test --verbose $RUST_TARGET_FLAG

- name: 🏃🏻‍♀️ Test Release
run: |
cargo clean
cargo test --verbose --release $RUST_TARGET_FLAG

- name: 🏃🏻‍♀️ Test Portable
run: |
cargo clean
LIBCRUX_DISABLE_SIMD128=1 LIBCRUX_DISABLE_SIMD256=1 cargo test --verbose $RUST_TARGET_FLAG

- name: 🏃🏻‍♀️ Test Portable Release
run: |
cargo clean
LIBCRUX_DISABLE_SIMD128=1 LIBCRUX_DISABLE_SIMD256=1 cargo test --verbose --release $RUST_TARGET_FLAG
31 changes: 31 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,10 @@ members = [
"libcrux-sha3",
"libcrux-ml-dsa",
"libcrux-intrinsics",
"libcrux-kem",
"libcrux-hmac",
"libcrux-hkdf",
"libcrux-ecdh",
]

[workspace.package]
Expand Down Expand Up @@ -48,6 +50,9 @@ libcrux-hacl = { version = "=0.0.2-pre.2", path = "sys/hacl" }
libcrux-platform = { version = "=0.0.2-pre.2", path = "sys/platform" }
libcrux-hkdf = { version = "=0.0.2-pre.2", path = "libcrux-hkdf" }
libcrux-hmac = { version = "=0.0.2-pre.2", path = "libcrux-hmac" }
libcrux-ecdh = { version = "=0.0.2-pre.2", path = "libcrux-ecdh" }
libcrux-ml-kem = { version = "=0.0.2-pre.2", path = "libcrux-ml-kem" }
libcrux-kem = { version = "=0.0.2-pre.2", path = "libcrux-kem" }
rand = { version = "0.8" }
log = { version = "0.4", optional = true }
# WASM API
Expand Down
2 changes: 2 additions & 0 deletions benchmarks/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ publish = false

[dev-dependencies]
libcrux = { path = "../", features = ["rand", "tests"] }
libcrux-kem = { path = "../libcrux-kem", features = ["tests"] }
libcrux-ml-kem = { path = "../libcrux-ml-kem", features = ["tests"] }
rand = { version = "0.8" }
rand_core = { version = "0.6" }
# Benchmarking "RustCrypto"
Expand Down
Loading
Loading