voprf 0.5.0

An implementation of a verifiable oblivious pseudorandom function (VOPRF)
Documentation
name: Rust CI
on:
  push:
    branches:
      - main
  pull_request:
    types: [opened, reopened, synchronize]

jobs:
  cargo-audit:
    name: Audit
    runs-on: ubuntu-latest
    steps:
      - name: Cache cargo-audit
        uses: actions/cache@v4
        with:
          path: |
            ~/.cargo/.crates.toml
            ~/.cargo/.crates2.json
            ~/.cargo/bin/cargo-audit
          key: cargo-audit

      - name: Install cargo-audit
        run: cargo install cargo-audit

      - name: Checkout sources
        uses: actions/checkout@v4

      - name: Run cargo audit
        run: cargo audit -D warnings

  test:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        backend_feature:
          - --features ristretto255-ciphersuite
          -
        frontend_feature:
          -
          - --features danger
          - --features serde
        toolchain:
          - stable
          - 1.65.0
    name: test
    steps:
      - name: Checkout sources
        uses: actions/checkout@v4

      - name: Install ${{ matrix.toolchain }} toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: ${{ matrix.toolchain }}
          override: true

      - name: Run cargo test
        uses: actions-rs/cargo@v1
        with:
          command: test
          args: --no-default-features ${{ matrix.backend_feature }}

      - name: Run cargo test with alloc
        uses: actions-rs/cargo@v1
        with:
          command: test
          args: --no-default-features ${{ matrix.frontend_feature }},alloc ${{ matrix.backend_feature }}

      - name: Run cargo test with std
        uses: actions-rs/cargo@v1
        with:
          command: test
          args: --no-default-features ${{ matrix.frontend_feature }},std ${{ matrix.backend_feature }}

      - name: Run cargo test with all features enabled
        uses: actions-rs/cargo@v1
        with:
          command: test
          args: --all-features

  build-no-std:
    name: Build with no-std on ${{ matrix.target }}
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        target:
          # for wasm
          - wasm32-unknown-unknown
          # for any no_std target
          - thumbv6m-none-eabi
        backend_feature:
          -
          - --features ristretto255-ciphersuite
        frontend_feature:
          -
          - --features danger
          - --features serde
    steps:
      - uses: actions/checkout@v4
      - uses: hecrj/setup-rust-action@v2
      - run: rustup target add ${{ matrix.target }}
      - run: cargo build --verbose --target=${{ matrix.target }} --no-default-features ${{ matrix.frontend_feature }} ${{ matrix.backend_feature }}


  clippy:
    name: cargo clippy
    runs-on: ubuntu-latest
    steps:
      - name: Checkout sources
        uses: actions/checkout@v4

      - name: Install stable toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
          components: clippy

      - name: Run cargo clippy
        uses: actions-rs/cargo@v1
        with:
          command: clippy
          args: --all-features --all-targets -- -D warnings

      - name: Run cargo doc
        uses: actions-rs/cargo@v1
        env:
          RUSTDOCFLAGS: -D warnings
        with:
          command: doc
          args: --no-deps --document-private-items --features danger,std


  rustfmt:
    name: cargo fmt
    runs-on: ubuntu-latest
    steps:
      - name: Checkout sources
        uses: actions/checkout@v4

      - name: Install nightly toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: nightly
          override: true
          components: rustfmt

      - name: Run cargo fmt
        uses: actions-rs/cargo@v1
        with:
          command: fmt
          args: --all -- --check

  taplo:
    name: Taplo
    runs-on: ubuntu-latest
    steps:
      - name: Cache
        uses: actions/cache@v4
        with:
          path: |
            ~/.cargo/.crates.toml
            ~/.cargo/.crates2.json
            ~/.cargo/bin/taplo
          key: taplo

      - name: Install Taplo
        run: cargo install taplo-cli --locked

      - name: Checkout sources
        uses: actions/checkout@v4

      - name: Run Taplo
        run: taplo fmt --check