From 58f9d0a5137c0f3023dcbf78cbecdd39642f25fa Mon Sep 17 00:00:00 2001 From: Thom Wiggers Date: Tue, 19 Jul 2022 13:51:00 +0200 Subject: [PATCH 1/5] Move to github actions --- .github/workflows/test.yml | 21 ++++++++++++ .travis.yml | 65 -------------------------------------- appveyor.yml | 3 -- 3 files changed, 21 insertions(+), 68 deletions(-) create mode 100644 .github/workflows/test.yml delete mode 100644 .travis.yml delete mode 100644 appveyor.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..8b40265 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,21 @@ +--- +name: Tests +on: [push, pull_request] + +jobs: + Test-Randombytes: + runs-on: "${{ matrix.os }}" + strategy: + matrix: + cc: + - gcc + - clang + os: + - ubuntu-latest + - macos-latest + env: + CC: "${{ matrix.cc }}" + steps: + - uses: actions/checkout@v3 + - run: | + make check diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 74280d8..0000000 --- a/.travis.yml +++ /dev/null @@ -1,65 +0,0 @@ -language: c -os: - - linux -compiler: - - clang - - gcc -arch: - - amd64 - - arm64 -matrix: - include: - - os: linux - compiler: musl-gcc - arch: amd64 - addons: - apt: - packages: - - musl - - musl-dev - - musl-tools - - os: linux - compiler: musl-gcc - arch: arm64 - addons: - apt: - packages: - - musl - - musl-dev - - musl-tools - - language: node_js - node_js: "node" - sudo: required - services: ["docker"] - before_install: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - - docker run -dit --name emscripten -v $(pwd):/src trzeci/emscripten:sdk-incoming-64bit bash - script: - - docker exec -it emscripten make randombytes_test.js - - make check-js - - language: node_js - node_js: "lts/*" - sudo: required - services: ["docker"] - before_install: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - - docker run -dit --name emscripten -v $(pwd):/src trzeci/emscripten:sdk-incoming-64bit bash - script: - - docker exec -it emscripten make randombytes_test.js - - make check-js - - os: osx - language: c - osx_image: xcode10.1 - compiler: gcc - addons: - homebrew: - packages: - - gcc@8 - - os: osx - language: c - osx_image: xcode10.1 - compiler: clang - -script: - - make - - make check diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index b4abaa9..0000000 --- a/appveyor.yml +++ /dev/null @@ -1,3 +0,0 @@ -image: Visual Studio 2015 -build_script: -- cmd: clang -c randombytes.c From e6f4bd648b63b917f45a1d2458c7bfecad1444be Mon Sep 17 00:00:00 2001 From: Thom Wiggers Date: Tue, 19 Jul 2022 14:00:09 +0200 Subject: [PATCH 2/5] Use Musl --- .github/workflows/test.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8b40265..03980af 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -19,3 +19,13 @@ jobs: - uses: actions/checkout@v3 - run: | make check + + Test-Randombytes-Musl: + runs-on: ubuntu-latest + env: + CC: musl-gcc + steps: + - uses: actions/checkout@v3 + - name: Install musl-tools + run: sudo apt-get install -y musl-tools + - run: make check From d810c7a59d51abf6bb961702904b2508faf1ed13 Mon Sep 17 00:00:00 2001 From: Thom Wiggers Date: Tue, 19 Jul 2022 14:05:01 +0200 Subject: [PATCH 3/5] use windows --- .github/workflows/test.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 03980af..7d0c826 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -29,3 +29,17 @@ jobs: - name: Install musl-tools run: sudo apt-get install -y musl-tools - run: make check + + Test-Randombytes-Windows: + runs-on: windows-latest + strategy: + matrix: + arch: + - x64 + - x86 + steps: + - uses: actions/checkout@v3 + - uses: ilammy/msvc-dev-cmd@v1 + with: + arch: ${{ matrix.arch }} + - run: cl /nologo /W3 /WX randombytes.c From 17fdca1c9055fbec4826f9e5de2a07ecf1c674dd Mon Sep 17 00:00:00 2001 From: Thom Wiggers Date: Tue, 19 Jul 2022 14:06:49 +0200 Subject: [PATCH 4/5] fixup! use windows --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7d0c826..20591aa 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -42,4 +42,4 @@ jobs: - uses: ilammy/msvc-dev-cmd@v1 with: arch: ${{ matrix.arch }} - - run: cl /nologo /W3 /WX randombytes.c + - run: cl /c /nologo /W3 /WX randombytes.c From 4ca4200730d3d5e8f18a1728663287792ad5e227 Mon Sep 17 00:00:00 2001 From: Thom Wiggers Date: Tue, 19 Jul 2022 14:18:55 +0200 Subject: [PATCH 5/5] Loop fetching randomness on Windows --- randombytes.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/randombytes.c b/randombytes.c index ff26b9a..aa771b1 100644 --- a/randombytes.c +++ b/randombytes.c @@ -76,17 +76,24 @@ #if defined(_WIN32) -static int randombytes_win32_randombytes(void* buf, const size_t n) +static int randombytes_win32_randombytes(void* buf, size_t n) { HCRYPTPROV ctx; BOOL tmp; + DWORD to_read = 0; + const size_t MAX_DWORD = 0xFFFFFFFF; tmp = CryptAcquireContext(&ctx, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT); if (tmp == FALSE) return -1; - tmp = CryptGenRandom(ctx, n, (BYTE*) buf); - if (tmp == FALSE) return -1; + while (n > 0) { + to_read = (DWORD)(n < MAX_DWORD ? n : MAX_DWORD); + tmp = CryptGenRandom(ctx, to_read, (BYTE*) buf); + if (tmp == FALSE) return -1; + buf = ((char*)buf) + to_read; + n -= to_read; + } tmp = CryptReleaseContext(ctx, 0); if (tmp == FALSE) return -1;