multi-key 1.0.8

Multikey self-describing cryptographic key data
name: Rust

on:
  workflow_dispatch:
  push:
    branches: ["main"]
  pull_request:
    branches: ["main"]

env:
  CARGO_TERM_COLOR: always

jobs:
  build:
    strategy:
      matrix:
        include:
          # Linux (32-bit)
          - target: i686-unknown-linux-gnu
            platform: ubuntu-latest
            rust: stable
            deps: sudo apt update && sudo apt install gcc-multilib

          # macOS (64-bit)
          - target: x86_64-apple-darwin
            platform: macos-latest
            rust: stable

          # Windows (64-bit)
          - target: x86_64-pc-windows-msvc
            platform: windows-latest
            rust: stable
    runs-on: ${{ matrix.platform }}
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
        with:
          toolchain: ${{ matrix.rust }}
          target: ${{ matrix.target }}
          components: rustfmt, clippy
      - run: ${{ matrix.deps }}
      - name: Check Code Format
        run: cargo fmt --all -- --check
      - name: Code Lint
        run: cargo clippy --all-targets --all-features -- -D warnings
      - name: Build
        run: cargo build --target ${{ matrix.target }} --release --all-features

  wasm_builds:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust:
          - 1.85.0 # MSRV
          - stable
        target:
          - wasm32-wasi
          - wasm32-unknown-unknown
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
        with:
          toolchain: ${{ matrix.rust }}
          target: ${{ matrix.target }}
      - run: cargo build --target ${{ matrix.target }} --features wasm

  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust:
          - 1.85.0 # MSRV
          - stable
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
        with:
          toolchain: ${{ matrix.rust }}
      - run: cargo test --verbose --release
      - run: cargo test --all-features # debug build
      - run: cargo test --release --all-features --all-targets

  msrv:
    name: Verify MSRV (1.85)
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: Install Rust Toolchain (1.85)
        uses: dtolnay/rust-toolchain@1.85.0

      - name: Check
        run: cargo check --all-features

  audit:
    name: Security Audit
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: Install Rust Toolchain
        uses: dtolnay/rust-toolchain@stable

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

      - name: Run cargo audit
        run: cargo audit