fips205 0.4.1

FIPS 205: Stateless Hash-Based Digital Signature Standard
Documentation
name: test


on: [ push, pull_request ]


env:
  CARGO_INCREMENTAL: 0
  RUSTFLAGS: "-Dwarnings"
  RUSTDOCFLAGS: "-Dwarnings"


jobs:

  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust:
          - 1.72  # MSRV 1.70 GA flaky
          - stable
        target:
          - thumbv7em-none-eabi
          - wasm32-unknown-unknown
          - s390x-unknown-linux-gnu
          - powerpc64-unknown-linux-gnu
          - riscv64gc-unknown-none-elf
          - x86_64-pc-windows-gnu
          - x86_64-apple-darwin
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ matrix.rust }}
          targets: ${{ matrix.target }}
      - run: cargo build --target ${{ matrix.target }} --release --no-default-features --features "slh_dsa_sha2_128s slh_dsa_shake_128s slh_dsa_sha2_128f slh_dsa_shake_128f slh_dsa_sha2_192s slh_dsa_shake_192s slh_dsa_sha2_192f slh_dsa_shake_192f slh_dsa_sha2_256s slh_dsa_shake_256s slh_dsa_sha2_256f slh_dsa_shake_256f"


  cargo_audit:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: rustsec/audit-check@v1.4.1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}


  cargo-deny:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: EmbarkStudios/cargo-deny-action@v1


  cargo_outdated:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - name: Install cargo outdated
        run: cargo install --locked cargo-outdated
      - name: Run cargo outdated
        run: cargo outdated -R


  clippy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Run Clippy
        run: cargo clippy --all-targets --all-features


  coverage:
    runs-on: ubuntu-latest
    env:
      CARGO_TERM_COLOR: always
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - name: Install cargo-llvm-cov
        uses: taiki-e/install-action@cargo-llvm-cov
      - name: Generate code coverage
        run: cargo llvm-cov --all-features --workspace
    # No codecov account, so stop here for now
    #  - name: Upload coverage to Codecov
    #    uses: codecov/codecov-action@v3
    #      with:
    #        files: lcov.info
    #        fail_ci_if_error: true


  cross:
    strategy:
      matrix:
        include:
          # ARM32
          - target: armv7-unknown-linux-gnueabihf
            rust: 1.72  # MSRV 1.70 GA flaky
          - target: armv7-unknown-linux-gnueabihf
            rust: stable
          # ARM64
          - target: aarch64-unknown-linux-gnu
            rust: 1.72  # MSRV 1.70 GA flaky
          - target: aarch64-unknown-linux-gnu
            rust: stable
          # PPC32
          - target: powerpc-unknown-linux-gnu
            rust: 1.72  # MSRV 1.70 GA flaky
          - target: powerpc-unknown-linux-gnu
            rust: stable
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: ${{ matrix.deps }}
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ matrix.rust }}
          targets: ${{ matrix.target }}
      - uses: RustCrypto/actions/cross-install@master
      - run: cross test --target ${{ matrix.target }} --all-features


  doc:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: RustCrypto/actions/cargo-cache@master
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: stable
      - run: cargo doc --all-features


  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        include:
          # 32-bit Linux
          - target: i686-unknown-linux-gnu
            rust: 1.72.0  # MSRV 1.70 GA flaky
            deps: sudo apt update && sudo apt install gcc-multilib
          - target: i686-unknown-linux-gnu
            rust: stable
            deps: sudo apt update && sudo apt install gcc-multilib

          # 64-bit Linux
          - target: x86_64-unknown-linux-gnu
            rust: 1.72.0  # MSRV 1.70 GA flaky
          - target: x86_64-unknown-linux-gnu
            rust: stable
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ matrix.rust }}
          targets: ${{ matrix.target }}
      - run: ${{ matrix.deps }}
      - run: cargo check --target ${{ matrix.target }} --all-features
      - run: cargo test --target ${{ matrix.target }}