name: libecc

# Run this workflow every time a new commit pushed to your repository
on: push

jobs:
  examples:
    runs-on: ubuntu-22.04
    strategy:
      #max-parallel: 10
      matrix:
        cc: [gcc, clang]
        blinding: [0, 1]
        cryptofuzz: [1]
    steps:
      # Checkout repository
      - name: checkout repository
        uses: actions/checkout@v2
      # Run actions
      # libecc examples tests
      - name: libecc examples tests
        env:
          CC: ${{ matrix.cc }}
          BLINDING: ${{ matrix.blinding }}
          CRYPTOFUZZ: ${{ matrix.cryptofuzz }}
          ASSERT_PRINT: 1
          # We want to parallelize self tests
          OPENMP_SELF_TESTS: 1
        shell: bash
        run: |
          # Install OpenMP
          sudo apt-get update;
          sudo apt-get -y install libomp-dev;
          # Compile and compile the tests
          #
          EXTRA_CFLAGS="-DUSER_NN_BIT_LEN=4096" make && cd src/examples/ && EXTRA_CFLAGS="-DUSER_NN_BIT_LEN=4096" make && ./sig/rsa/rsa && ./sig/dsa/dsa && ./sig/kcdsa/kcdsa && ./sig/sdsa/sdsa && ./sig/gostr34_10_94/gostr34_10_94 && ./sss/sss && ./basic/curve_basic_examples && ./basic/curve_ecdh && make clean && cd - && make clean;
          make 32 && cd src/examples/ && make 32 && ./sss/sss && ./basic/curve_basic_examples && ./basic/curve_ecdh && make clean && cd - && make clean;
          make 16 && cd src/examples/ && make 16 && ./sss/sss && ./basic/curve_basic_examples && ./basic/curve_ecdh && make clean && cd - && make clean;
        continue-on-error: false
