paserk 0.4.0

Platform-Agnostic Serialized Keys (PASERK) for PASETO
Documentation
name: Security

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]
  schedule:
    # Run weekly on Mondays at 00:00 UTC to catch new advisories
    - cron: '0 0 * * 1'

env:
  CARGO_TERM_COLOR: always

jobs:
  # Security audit using cargo-audit
  audit:
    name: Security Audit
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

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

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

      - name: Run security audit
        # Ignore RUSTSEC-2023-0071 (RSA Marvin Attack) - only used with k1-insecure feature
        run: cargo audit --ignore RUSTSEC-2023-0071

  # Dependency analysis using cargo-deny
  deny:
    name: Cargo Deny
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

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

      - name: Install cargo-deny
        run: cargo install cargo-deny

      - name: Check licenses
        run: cargo deny check licenses

      - name: Check bans
        run: cargo deny check bans

      - name: Check advisories
        run: cargo deny check advisories

      - name: Check sources
        run: cargo deny check sources

  # Supply chain security - verify dependencies
  supply-chain:
    name: Supply Chain
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

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

      - name: Generate Cargo.lock if missing
        run: cargo generate-lockfile

      - name: Verify Cargo.lock is up to date
        run: cargo update --locked