# This workflow will build a golang project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go

name: arm64-qemu

on:
  push:
    branches: [ "develop", "main" ]
  pull_request:
    branches: [ "develop", "main" ]

permissions:
  contents: read

jobs:

  test:
    strategy:
      matrix:
        go-version: [1.23.x]
        arch: [arm64]  
    runs-on: ubuntu-latest
    steps:
    - name: Harden the runner (Audit all outbound calls)
      uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
      with:
        egress-policy: audit

    - name: Set up Go
      uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
      with:
        go-version: ${{ matrix.go-version }}

    - name: Set up QEMU
      uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0

    - name: Check out code
      uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
      
    - name: Test
      run: go test -v -short ./...
      env:
        DISABLE_SM3NI: 1
        DISABLE_SM4NI: 1
        GODEBUG: x509sha1=1
        GOARCH: ${{ matrix.arch }}      

    - name: Test Force SM4 Single Block with AES-NI
      run: go test -v -short ./sm4/...      
      env:
        DISABLE_SM4NI: 1
        FORCE_SM4BLOCK_AESNI: 1
        GOARCH: ${{ matrix.arch }}      
