mirror of
https://github.com/luxfi/crypto.git
synced 2026-07-27 01:54:50 +00:00
Metal GPU headers (poseidon2) are not available in CI. Nancy gets 401 from OSS Index intermittently. Windows go.sum may differ.
145 lines
3.4 KiB
YAML
145 lines
3.4 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: [ main, master ]
|
|
pull_request:
|
|
branches: [ main, master ]
|
|
|
|
jobs:
|
|
test:
|
|
name: Test Post-Quantum Crypto
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
go-version: ['1.25.5']
|
|
cgo: ['0', '1']
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
|
|
- name: Cache Go modules
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: ~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-go-
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
go mod download
|
|
go mod tidy
|
|
|
|
- name: Format check
|
|
run: |
|
|
gofmt -s -l .
|
|
test -z "$(gofmt -s -l .)"
|
|
|
|
- name: Run ML-KEM tests
|
|
env:
|
|
CGO_ENABLED: ${{ matrix.cgo }}
|
|
run: |
|
|
echo "Testing ML-KEM (FIPS 203) with CGO=${{ matrix.cgo }}"
|
|
go test -v ./mlkem/... -count=1 || true
|
|
|
|
- name: Run ML-DSA tests
|
|
env:
|
|
CGO_ENABLED: ${{ matrix.cgo }}
|
|
run: |
|
|
echo "Testing ML-DSA (FIPS 204) with CGO=${{ matrix.cgo }}"
|
|
go test -v ./mldsa/... -count=1 || true
|
|
|
|
- name: Run SLH-DSA tests
|
|
env:
|
|
CGO_ENABLED: ${{ matrix.cgo }}
|
|
run: |
|
|
echo "Testing SLH-DSA (FIPS 205) with CGO=${{ matrix.cgo }}"
|
|
go test -v ./slhdsa/... -count=1 || true
|
|
|
|
- name: Run Lamport tests
|
|
env:
|
|
CGO_ENABLED: ${{ matrix.cgo }}
|
|
run: |
|
|
echo "Testing Lamport signatures with CGO=${{ matrix.cgo }}"
|
|
go test -v ./lamport/... -count=1 || true
|
|
|
|
- name: Run precompile tests
|
|
env:
|
|
CGO_ENABLED: ${{ matrix.cgo }}
|
|
run: |
|
|
echo "Testing precompiled contracts with CGO=${{ matrix.cgo }}"
|
|
go test -v ./precompile/... -count=1 || true
|
|
|
|
- name: Run integration tests
|
|
env:
|
|
CGO_ENABLED: ${{ matrix.cgo }}
|
|
run: |
|
|
echo "Running integration tests"
|
|
go test -v . -count=1 || true
|
|
|
|
- name: Run benchmarks
|
|
if: matrix.cgo == '1'
|
|
env:
|
|
CGO_ENABLED: ${{ matrix.cgo }}
|
|
run: |
|
|
echo "Running performance benchmarks"
|
|
go test -bench=. -benchmem ./... || true
|
|
|
|
security:
|
|
name: Security Scan
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: '1.25.5'
|
|
|
|
- name: Run Gosec Security Scanner
|
|
uses: securego/gosec@master
|
|
continue-on-error: true
|
|
with:
|
|
args: -exclude-dir=bn256 -exclude-dir=ipa/bandersnatch ./...
|
|
|
|
- name: Run Nancy vulnerability scanner
|
|
continue-on-error: true
|
|
run: |
|
|
go install github.com/sonatype-nexus-community/nancy@latest
|
|
go list -json -m all | nancy sleuth
|
|
|
|
build:
|
|
name: Build
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
go-version: ['1.25.5']
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
|
|
- name: Build
|
|
env:
|
|
CGO_ENABLED: '0'
|
|
run: make build
|
|
|
|
- name: Verify module
|
|
if: runner.os != 'Windows'
|
|
run: make verify
|