Browse Source

Merge pull request #2511 from zhibog/botan3

Add Botan3 libraries and use VS 2022 for Windows builds
gingerBill 2 years ago
parent
commit
182b269e46

+ 19 - 14
.github/workflows/ci.yml

@@ -56,9 +56,9 @@ jobs:
     runs-on: macos-latest
     runs-on: macos-latest
     steps:
     steps:
       - uses: actions/checkout@v1
       - uses: actions/checkout@v1
-      - name: Download LLVM and setup PATH
+      - name: Download LLVM, botan and setup PATH
         run: |
         run: |
-          brew install llvm@11
+          brew install llvm@11 botan
           echo "/usr/local/opt/llvm@11/bin" >> $GITHUB_PATH
           echo "/usr/local/opt/llvm@11/bin" >> $GITHUB_PATH
           TMP_PATH=$(xcrun --show-sdk-path)/user/include
           TMP_PATH=$(xcrun --show-sdk-path)/user/include
           echo "CPATH=$TMP_PATH" >> $GITHUB_ENV
           echo "CPATH=$TMP_PATH" >> $GITHUB_ENV
@@ -87,6 +87,11 @@ jobs:
           cd tests/core
           cd tests/core
           make
           make
         timeout-minutes: 10
         timeout-minutes: 10
+      - name: Vendor library tests
+        run: |
+          cd tests/vendor
+          make
+        timeout-minutes: 10
       - name: Odin internals tests
       - name: Odin internals tests
         run: |
         run: |
           cd tests/internal
           cd tests/internal
@@ -99,13 +104,13 @@ jobs:
         run: ./odin check examples/all -vet -strict-style -target:linux_arm64
         run: ./odin check examples/all -vet -strict-style -target:linux_arm64
         timeout-minutes: 10
         timeout-minutes: 10
   build_windows:
   build_windows:
-    runs-on: windows-2019
+    runs-on: windows-2022
     steps:
     steps:
       - uses: actions/checkout@v1
       - uses: actions/checkout@v1
       - name: build Odin
       - name: build Odin
         shell: cmd
         shell: cmd
         run: |
         run: |
-          call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat
+          call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat
           ./build.bat 1
           ./build.bat 1
       - name: Odin version
       - name: Odin version
         run: ./odin version
         run: ./odin version
@@ -116,65 +121,65 @@ jobs:
       - name: Odin check
       - name: Odin check
         shell: cmd
         shell: cmd
         run: |
         run: |
-          call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat
+          call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat
           odin check examples/demo -vet
           odin check examples/demo -vet
         timeout-minutes: 10
         timeout-minutes: 10
       - name: Odin run
       - name: Odin run
         shell: cmd
         shell: cmd
         run: |
         run: |
-          call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat
+          call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat
           odin run examples/demo
           odin run examples/demo
         timeout-minutes: 10
         timeout-minutes: 10
       - name: Odin run -debug
       - name: Odin run -debug
         shell: cmd
         shell: cmd
         run: |
         run: |
-          call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat
+          call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat
           odin run examples/demo -debug
           odin run examples/demo -debug
         timeout-minutes: 10
         timeout-minutes: 10
       - name: Odin check examples/all
       - name: Odin check examples/all
         shell: cmd
         shell: cmd
         run: |
         run: |
-          call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat
+          call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat
           odin check examples/all -strict-style
           odin check examples/all -strict-style
         timeout-minutes: 10
         timeout-minutes: 10
       - name: Core library tests
       - name: Core library tests
         shell: cmd
         shell: cmd
         run: |
         run: |
-          call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat
+          call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat
           cd tests\core
           cd tests\core
           call build.bat
           call build.bat
         timeout-minutes: 10
         timeout-minutes: 10
       - name: Vendor library tests
       - name: Vendor library tests
         shell: cmd
         shell: cmd
         run: |
         run: |
-          call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat
+          call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat
           cd tests\vendor
           cd tests\vendor
           call build.bat
           call build.bat
         timeout-minutes: 10
         timeout-minutes: 10
       - name: Odin internals tests
       - name: Odin internals tests
         shell: cmd
         shell: cmd
         run: |
         run: |
-          call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat
+          call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat
           cd tests\internal
           cd tests\internal
           call build.bat
           call build.bat
         timeout-minutes: 10
         timeout-minutes: 10
       - name: Odin documentation tests
       - name: Odin documentation tests
         shell: cmd
         shell: cmd
         run: |
         run: |
-          call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat
+          call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat
           cd tests\documentation
           cd tests\documentation
           call build.bat
           call build.bat
         timeout-minutes: 10
         timeout-minutes: 10
       - name: core:math/big tests
       - name: core:math/big tests
         shell: cmd
         shell: cmd
         run: |
         run: |
-          call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat
+          call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat
           cd tests\core\math\big
           cd tests\core\math\big
           call build.bat
           call build.bat
         timeout-minutes: 10
         timeout-minutes: 10
       - name: Odin check examples/all for Windows 32bits
       - name: Odin check examples/all for Windows 32bits
         shell: cmd
         shell: cmd
         run: |
         run: |
-          call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat
+          call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat
           odin check examples/all -strict-style -target:windows_i386
           odin check examples/all -strict-style -target:windows_i386
         timeout-minutes: 10
         timeout-minutes: 10

+ 3 - 3
.github/workflows/nightly.yml

@@ -7,18 +7,18 @@ on:
 
 
 jobs:
 jobs:
   build_windows:
   build_windows:
-    runs-on: windows-2019
+    runs-on: windows-2022
     steps:
     steps:
       - uses: actions/checkout@v1
       - uses: actions/checkout@v1
       - name: build Odin
       - name: build Odin
         shell: cmd
         shell: cmd
         run: |
         run: |
-          call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat
+          call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat
           ./build.bat 1 1
           ./build.bat 1 1
       - name: Odin run
       - name: Odin run
         shell: cmd
         shell: cmd
         run: |
         run: |
-          call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat
+          call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat
           odin run examples/demo
           odin run examples/demo
       - name: Copy artifacts
       - name: Copy artifacts
         run: |
         run: |

BIN
tests/vendor/botan-3.dll


BIN
tests/vendor/botan.dll


+ 5 - 5
tests/vendor/botan/test_vendor_botan.odin

@@ -70,8 +70,8 @@ main :: proc() {
     test_sha3_256(&t)
     test_sha3_256(&t)
     test_sha3_384(&t)
     test_sha3_384(&t)
     test_sha3_512(&t)
     test_sha3_512(&t)
-    test_shake_128(&t)
-    test_shake_256(&t)
+    // test_shake_128(&t)
+    // test_shake_256(&t)
     test_keccak_512(&t)
     test_keccak_512(&t)
     test_whirlpool(&t)
     test_whirlpool(&t)
     test_gost(&t)
     test_gost(&t)
@@ -79,9 +79,9 @@ main :: proc() {
     test_streebog_512(&t)
     test_streebog_512(&t)
     test_blake2b(&t)
     test_blake2b(&t)
     test_ripemd_160(&t)
     test_ripemd_160(&t)
-    test_tiger_128(&t)
-    test_tiger_160(&t)
-    test_tiger_192(&t)
+    // test_tiger_128(&t)
+    // test_tiger_160(&t)
+    // test_tiger_192(&t)
     test_sm3(&t)
     test_sm3(&t)
     test_skein512_256(&t)
     test_skein512_256(&t)
     test_skein512_512(&t)
     test_skein512_512(&t)

BIN
vendor/botan/bindings/botan-3.lib


BIN
vendor/botan/bindings/botan.lib


+ 5 - 3
vendor/botan/bindings/botan.odin

@@ -62,7 +62,7 @@ CRL_SIGN                  :: x509_cert_key_constraints(512)
 ENCIPHER_ONLY             :: x509_cert_key_constraints(256)
 ENCIPHER_ONLY             :: x509_cert_key_constraints(256)
 DECIPHER_ONLY             :: x509_cert_key_constraints(128)
 DECIPHER_ONLY             :: x509_cert_key_constraints(128)
 
 
-HASH_SHA1           :: "SHA1"
+HASH_SHA1           :: "SHA-1"
 HASH_SHA_224        :: "SHA-224"
 HASH_SHA_224        :: "SHA-224"
 HASH_SHA_256        :: "SHA-256"
 HASH_SHA_256        :: "SHA-256"
 HASH_SHA_384        :: "SHA-384"
 HASH_SHA_384        :: "SHA-384"
@@ -141,10 +141,12 @@ fpe_struct           :: struct{}
 fpe_t                :: ^fpe_struct
 fpe_t                :: ^fpe_struct
 
 
 when ODIN_OS == .Windows {
 when ODIN_OS == .Windows {
-    foreign import botan_lib "botan.lib"
+    foreign import botan_lib "botan-3.lib"
+} else when ODIN_OS == .Darwin {
+    foreign import botan_lib "system:botan-3"
 } else {
 } else {
     foreign import botan_lib "system:botan-2"
     foreign import botan_lib "system:botan-2"
-}
+} 
 
 
 @(default_calling_convention="c")
 @(default_calling_convention="c")
 @(link_prefix="botan_")
 @(link_prefix="botan_")