diff --git a/.circleci/config.yml b/.circleci/config.yml index c7be4c01c..a789a7a41 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -17,6 +17,30 @@ version: 2 - store_test_results: # Note that this command will fail when running CircleCI locally, that is expected behaviour path: test-results +.emulatedjob: &emulatedjob + machine: + image: ubuntu-1604:201903-01 + steps: + - checkout + - run: + name: Install the emulation handlers + command: docker run --rm --privileged multiarch/qemu-user-static:register --reset + - run: # Skipping sig-sphincs because it exhausts memory on CircleCI + name: Run the tests in a container + command: | + docker run -e SKIP_TESTS=style --rm -v `pwd`:`pwd` -w `pwd` dstebila/liboqs:debian-buster-${ARCH}-0.1.0 /bin/bash -c " + uname -a && + file /bin/ls && + autoreconf -i && + ./configure --enable-silent-rules ${CONFIGURE_ARGS} && + make -j && + make check && + mkdir -p test-results/pytest && + python3 -m pytest --verbose --junitxml=test-results/pytest/results.xml --numprocesses=auto + " + - store_test_results: + path: test-results + jobs: debian-buster-amd64: <<: *oqsjob @@ -24,6 +48,21 @@ jobs: IMAGE: dstebila/liboqs:debian-buster-amd64-0.1.0 CONFIGURE_ARGS: --disable-kem-bike # FIXME: BIKE doesn't work on CircleCI due to symbol _CMP_LT_OS not being defined SKIP_TESTS: style + debian-buster-aarch64: + <<: *emulatedjob + environment: + ARCH: aarch64 + CONFIGURE_ARGS: --disable-sig-sphincs # sig-sphincs exhausts memory on CircleCI servers + debian-buster-armhf: + <<: *emulatedjob + environment: + ARCH: armhf + CONFIGURE_ARGS: --disable-sig-sphincs --disable-sig-qtesla # sig-sphincs exhausts memory on CircleCI servers; qTesla fails on armhf + debian-buster-armel: + <<: *emulatedjob + environment: + ARCH: armel + CONFIGURE_ARGS: --disable-sig-sphincs --disable-sig-qtesla # sig-sphincs exhausts memory on CircleCI servers; qTesla fails on armel ubuntu-xenial-x86_64-gcc49: <<: *oqsjob environment: @@ -93,6 +132,9 @@ workflows: - master jobs: - debian-buster-amd64 + - debian-buster-aarch64 + - debian-buster-armhf + - debian-buster-armel - ubuntu-xenial-x86_64-gcc49 - ubuntu-xenial-x86_64-gcc5 - ubuntu-xenial-x86_64-gcc6 diff --git a/scripts/arm-cross-compile.sh b/scripts/arm-cross-compile.sh index 1e3e7e8cb..d97428205 100755 --- a/scripts/arm-cross-compile.sh +++ b/scripts/arm-cross-compile.sh @@ -25,9 +25,9 @@ cd .. autoreconf -i hacks=( gcc_cv_compiler=true # Detecting at this phase isn't good for cross compilation - --disable-aes-ni # This should be conditionalized on x86 host - --disable-sig-picnic CFLAGS=-D_ARM_ # Several files aren't using the right define + --disable-sig-picnic # Problems building Picnic using cross compilation + --disable-sig-qtesla # qTesla fails on armhf and armel ) ./configure --disable-shared --enable-static --host="${CHOST}" --build="$CBUILD" CC="${CHOST}-gcc" --with-openssl="${PREFIX}" "${hacks[@]}" diff --git a/src/common/rand_nist.c b/src/common/rand_nist.c index 3a5d2de27..6d5a85bac 100644 --- a/src/common/rand_nist.c +++ b/src/common/rand_nist.c @@ -79,7 +79,7 @@ OQS_API void OQS_randombytes_nist_kat_init(unsigned char *entropy_input, unsigne DRBG_ctx.reseed_counter = 1; } -void OQS_randombytes_nist_kat(unsigned char *x, unsigned long long xlen) { +void OQS_randombytes_nist_kat(unsigned char *x, size_t xlen) { unsigned char block[16]; int i = 0;