Skip to content

Add spec for PRFxN and SHAKE #498

Add spec for PRFxN and SHAKE

Add spec for PRFxN and SHAKE #498

Workflow file for this run

name: Build & Test C
on:
push:
branches: ["main", "dev"]
pull_request:
branches: ["main", "dev"]
workflow_dispatch:
merge_group:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
extract:
if: ${{ github.event_name != 'merge_group' }}
runs-on: ubuntu-latest
container: franziskus/libcrux-c:latest
defaults:
run:
working-directory: libcrux-ml-kem
shell: bash
steps:
- uses: actions/checkout@v4
- name: Extract C
run: |
./c.sh
- name: Upload C extraction
uses: actions/upload-artifact@v4
with:
name: c-extraction
path: libcrux-ml-kem/c
if-no-files-found: error
extract-header-only:
if: ${{ github.event_name != 'merge_group' }}
runs-on: ubuntu-latest
container: franziskus/libcrux-c:latest
defaults:
run:
working-directory: libcrux-ml-kem
shell: bash
steps:
- uses: actions/checkout@v4
- name: Extract C (header only)
run: |
./boring.sh --no-clean
- name: Upload header only C extraction
uses: actions/upload-artifact@v4
with:
name: header-only-c-extraction
path: libcrux-ml-kem/cg/
if-no-files-found: error
diff:
needs: [extract]
if: ${{ github.event_name != 'merge_group' }}
runs-on: ubuntu-latest
defaults:
run:
shell: bash
steps:
- uses: actions/download-artifact@v4
with:
name: c-extraction
path: ~/c-extraction
- uses: actions/checkout@v4
- name: Diff Extraction
run: |
libcrux-ml-kem/headers_kill_revs.sh libcrux-ml-kem/c
libcrux-ml-kem/headers_kill_revs.sh ~/c-extraction
diff -r libcrux-ml-kem/c ~/c-extraction
diff-header-only:
needs: [extract-header-only]
if: ${{ github.event_name != 'merge_group' }}
runs-on: ubuntu-latest
defaults:
run:
shell: bash
steps:
- uses: actions/download-artifact@v4
with:
name: header-only-c-extraction
path: ~/c-extraction
- uses: actions/checkout@v4
- name: Diff Extraction
run: |
libcrux-ml-kem/headers_kill_revs.sh libcrux-ml-kem/cg
libcrux-ml-kem/headers_kill_revs.sh ~/c-extraction
diff -r libcrux-ml-kem/cg ~/c-extraction
build:
needs: [extract]
if: ${{ github.event_name != 'merge_group' }}
strategy:
fail-fast: false
matrix:
os:
- macos-latest
- ubuntu-latest
- windows-latest
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash
steps:
- uses: actions/download-artifact@v4
with:
name: c-extraction
- name: πŸ”¨ Build
run: |
cmake -B build
cmake --build build
- name: πŸƒπŸ»β€β™€οΈ Test
run: ./build/Debug/ml_kem_test
if: ${{ matrix.os == 'windows-latest' }}
- name: πŸƒπŸ»β€β™€οΈ Test
run: ./build/ml_kem_test
if: ${{ matrix.os != 'windows-latest' }}
- name: πŸ”¨ Build Release
run: |
rm -rf build
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release
if: ${{ matrix.os != 'windows-latest' }}
build-header-only:
needs: [extract-header-only]
if: ${{ github.event_name != 'merge_group' }}
strategy:
fail-fast: false
matrix:
os:
- macos-latest
- ubuntu-latest
- windows-latest
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash
steps:
- uses: actions/download-artifact@v4
with:
name: header-only-c-extraction
- name: πŸ”¨ Build
run: |
cmake -B build
cmake --build build
# FIXME: Benchmark build for cg on Windows CI is not working right now.
if: ${{ matrix.os != 'windows-latest' }}
# FIXME: Benchmark build for cg on Windows CI are not working right now.
# - name: πŸƒπŸ»β€β™€οΈ Test (cg)
# working-directory: libcrux-ml-kem/cg
# run: ./build/Debug/ml_kem_test
# if: ${{ matrix.os == 'windows-latest' }}
- name: πŸƒπŸ»β€β™€οΈ Test
run: ./build/ml_kem_test
if: ${{ matrix.os != 'windows-latest' }}
benchmark:
if: ${{ github.event_name == 'merge_group' || github.event_name == 'workflow_dispatch' }}
strategy:
fail-fast: false
matrix:
os:
- macos-latest
- ubuntu-latest
- windows-latest
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash
working-directory: libcrux-ml-kem/c
steps:
- uses: actions/checkout@v4
- name: πŸ”¨ Build Release
run: |
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release
# FIXME: Benchmarks on Windows CI are not working right now.
# - name: πŸƒπŸ»β€β™€οΈ Benchmark
# run: ./build/Release/ml_kem_bench
# if: ${{ matrix.os == 'windows-latest' }}
- name: πŸƒπŸ»β€β™€οΈ Benchmark (c)
run: ./build/ml_kem_bench
if: ${{ matrix.os != 'windows-latest' && (github.event_name == 'merge_group' || github.event_name == 'workflow_dispatch') }}
- name: πŸƒπŸ»β€β™€οΈ Benchmark (cg)
working-directory: libcrux-ml-kem/cg
run: ./build/ml_kem_bench
if: ${{ matrix.os != 'windows-latest' && (github.event_name == 'merge_group' || github.event_name == 'workflow_dispatch') }}
mq_status:
if: |
always() &&
(github.event_name == 'workflow_dispatch' || github.event_name == 'merge_group')
needs: [benchmark]
uses: cryspen/actions/.github/workflows/merge-queue-status.yml@jonas/merge-queue-status
with:
needs_json: "${{toJSON(needs)}}"