Skip to content

Implement Constant-time bitsliced AES opt-in #41

Implement Constant-time bitsliced AES opt-in

Implement Constant-time bitsliced AES opt-in #41

Workflow file for this run

name: Check
on:
pull_request:
push:
branches:
- master
jobs:
style:
name: Check Style
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Rustfmt Check
run: cargo fmt --all --check
clippy:
name: Clippy Check of ${{ matrix.impl.name }}
runs-on: ubuntu-latest
strategy:
matrix:
impl:
- name: AES-NI
target: x86_64-unknown-linux-gnu
caps: X86_64_UNKNOWN_LINUX_GNU
target-features: +sse4.1,+aes
- name: AES-NI with VAES
target: x86_64-unknown-linux-gnu
caps: X86_64_UNKNOWN_LINUX_GNU
target-features: +vaes
- name: AES-NI with VAES and AVX-512
target: x86_64-unknown-linux-gnu
caps: X86_64_UNKNOWN_LINUX_GNU
target-features: +vaes,+avx512f
- name: Neon
target: aarch64-unknown-linux-gnu
caps: AARCH64_UNKNOWN_LINUX_GNU
target-features: +aes
- name: RV64
target: riscv64gc-unknown-linux-gnu
caps: RISCV64GC_UNKNOWN_LINUX_GNU
target-features: +zkne,+zknd
- name: RV32
target: riscv32i-unknown-none-elf
caps: RISCV32I_UNKNOWN_NONE_ELF
target-features: +zkne,+zknd
- name: Software
target: x86_64-unknown-linux-gnu
caps: X86_64_UNKNOWN_LINUX_GNU
target-features: ''
steps:
- uses: actions/checkout@v3
- run: ${{ format('echo "CARGO_TARGET_{0}_RUSTFLAGS=-C target-feature={1}" >> $GITHUB_ENV', matrix.impl.caps, matrix.impl.target-features) }}
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
target: ${{ matrix.impl.target }}
components: clippy
profile: minimal
override: true
- name: Clippy Check
run: cargo clippy --target ${{ matrix.impl.target }} --features=nightly --no-deps -- -D clippy::pedantic
test-aesni:
strategy:
matrix:
channel: [ stable, beta, nightly ]
name: Test of AESNI with ${{ matrix.channel }}
uses: ./.github/workflows/runtest.yml
with:
arch: x86_64
target: x86_64-unknown-linux-gnu
channel: ${{ matrix.channel }}
target-features: +sse4.1,+aes
test-aesni-vaes:
name: Test of AESNI with VAES
uses: ./.github/workflows/runtest.yml
with:
arch: x86_64
target: x86_64-unknown-linux-gnu
channel: nightly
target-features: +vaes
extra-features: --features=nightly
test-aesni-vaes-avx512:
name: Test of AESNI with VAES and AVX512F
uses: ./.github/workflows/runtest.yml
with:
arch: x86_64
target: x86_64-unknown-linux-gnu
channel: nightly
target-features: +vaes,+avx512f
extra-features: --features=nightly
test-neon:
strategy:
matrix:
channel: [ stable, beta, nightly ]
name: Test of Neon on AArch64 with ${{ matrix.channel }}
uses: ./.github/workflows/runtest.yml
with:
arch: aarch64
target: aarch64-unknown-linux-gnu
channel: ${{ matrix.channel }}
target-features: +aes
test-armv8:
name: Test of Neon on ARMv8
uses: ./.github/workflows/runtest.yml
with:
arch: arm
target: armv7-unknown-linux-gnueabihf
channel: nightly
target-features: +aes
extra-features: --features=nightly
test-riscv64:
name: Test of RiscV-64
uses: ./.github/workflows/runtest.yml
with:
arch: riscv64
target: riscv64gc-unknown-linux-gnu
channel: nightly
target-features: +zkne,+zknd
extra-features: --features=nightly
test-software:
strategy:
matrix:
channel: [ stable, beta, nightly ]
name: Test of Software Implementation with ${{ matrix.channel }}
uses: ./.github/workflows/runtest.yml
with:
arch: x86_64
target: x86_64-unknown-linux-gnu
channel: ${{ matrix.channel }}
test-constant-time:
strategy:
matrix:
channel: [ stable, beta, nightly ]
name: Test of Software Implementation with ${{ matrix.channel }}
uses: ./.github/workflows/runtest.yml
with:
arch: x86_64
target: x86_64-unknown-linux-gnu
channel: ${{ matrix.channel }}
extra-features: --features=constant-time