From e5590d0ad3dd29bbd31269894f3b99ed9f1f2bd7 Mon Sep 17 00:00:00 2001 From: Gowtham Suresh Kumar Date: Thu, 22 Feb 2024 11:55:50 +0000 Subject: [PATCH 1/3] ci: Add cargo fmt Signed-off-by: Gowtham Suresh Kumar --- ci.sh | 12 +++++++----- parsec-openssl-provider-shared/src/lib.rs | 9 ++++----- parsec-openssl-provider/src/provider.rs | 5 ++--- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/ci.sh b/ci.sh index ad53359c..0f5ec615 100755 --- a/ci.sh +++ b/ci.sh @@ -23,10 +23,12 @@ test_string='Providers: version: 0.1.0 status: active' -if [[ $test_string == $provider_load_result ]]; then - echo "Parsec OpenSSL Provider loaded successfully!!!!" - exit 0; +if [[ $test_string != $provider_load_result ]]; then + echo "Loaded Provider has unexpected parameters!!!!" fi -echo "Loaded Provider has unexpected parameters!!!!" -exit 1 +echo "Parsec OpenSSL Provider loaded successfully!!!!" + +if cargo fmt --version; then + cargo fmt --all -- --check +fi diff --git a/parsec-openssl-provider-shared/src/lib.rs b/parsec-openssl-provider-shared/src/lib.rs index 50c01510..dd9413b6 100644 --- a/parsec-openssl-provider-shared/src/lib.rs +++ b/parsec-openssl-provider-shared/src/lib.rs @@ -1,13 +1,12 @@ // Copyright 2023 Contributors to the Parsec project. // SPDX-License-Identifier: Apache-2.0 -use parsec_openssl_provider::{ - openssl_errors, parsec_provider_provider_init, -}; +use parsec_openssl_provider::{openssl_errors, parsec_provider_provider_init}; -use parsec_openssl_provider::parsec_openssl2::{OPENSSL_SUCCESS,OPENSSL_ERROR}; -use parsec_openssl_provider::parsec_openssl2::types::VOID_PTR_PTR; use parsec_openssl_provider::parsec_openssl2::openssl_binding::{OSSL_CORE_HANDLE, OSSL_DISPATCH}; +use parsec_openssl_provider::parsec_openssl2::types::VOID_PTR_PTR; +use parsec_openssl_provider::parsec_openssl2::{OPENSSL_ERROR, OPENSSL_SUCCESS}; + mod catch; use catch::r#catch; diff --git a/parsec-openssl-provider/src/provider.rs b/parsec-openssl-provider/src/provider.rs index c21865f0..e898b47b 100644 --- a/parsec-openssl-provider/src/provider.rs +++ b/parsec-openssl-provider/src/provider.rs @@ -11,9 +11,8 @@ use parsec_openssl2::{ OPENSSL_SUCCESS, OSSL_PROVIDER, }; -use crate::openssl_binding::{ - OSSL_ALGORITHM, OSSL_PARAM, OSSL_PARAM_INTEGER, OSSL_PARAM_UTF8_PTR, -}; +use crate::openssl_binding::{OSSL_ALGORITHM, OSSL_PARAM, OSSL_PARAM_INTEGER, OSSL_PARAM_UTF8_PTR}; + // Parsec provider parameters pub const PARSEC_PROVIDER_NAME: &[u8; 24] = b"Parsec OpenSSL Provider\0"; pub const PARSEC_PROVIDER_VERSION: &[u8; 6] = b"0.1.0\0"; From 90b8b3da4585cc87d329efb31b5f73b702de515d Mon Sep 17 00:00:00 2001 From: Gowtham Suresh Kumar Date: Thu, 22 Feb 2024 12:21:11 +0000 Subject: [PATCH 2/3] ci: Add cargo clippy to CI Signed-off-by: Gowtham Suresh Kumar --- ci.sh | 4 ++++ parsec-openssl-provider-shared/Cargo.toml | 1 + parsec-openssl-provider/Cargo.toml | 1 + parsec-openssl-provider/src/lib.rs | 2 ++ parsec-openssl-sys2/Cargo.toml | 5 +++++ parsec-openssl2/Cargo.toml | 5 +++++ parsec-openssl2/src/lib.rs | 1 + 7 files changed, 19 insertions(+) diff --git a/ci.sh b/ci.sh index 0f5ec615..18c470b0 100755 --- a/ci.sh +++ b/ci.sh @@ -32,3 +32,7 @@ echo "Parsec OpenSSL Provider loaded successfully!!!!" if cargo fmt --version; then cargo fmt --all -- --check fi + +if cargo clippy --version; then + cargo clippy --all-targets -- -D clippy::all -D clippy::cargo +fi \ No newline at end of file diff --git a/parsec-openssl-provider-shared/Cargo.toml b/parsec-openssl-provider-shared/Cargo.toml index 51e04c4a..95c79c81 100644 --- a/parsec-openssl-provider-shared/Cargo.toml +++ b/parsec-openssl-provider-shared/Cargo.toml @@ -8,6 +8,7 @@ readme = "README.md" keywords = ["security", "service"] categories = ["cryptography", "hardware-support"] edition = "2021" +repository = "https://github.com/parallaxsecond/parsec-openssl-provider" [lib] crate-type = ["cdylib"] diff --git a/parsec-openssl-provider/Cargo.toml b/parsec-openssl-provider/Cargo.toml index 2a412583..a7efedc2 100644 --- a/parsec-openssl-provider/Cargo.toml +++ b/parsec-openssl-provider/Cargo.toml @@ -8,6 +8,7 @@ readme = "README.md" keywords = ["security", "service"] categories = ["cryptography", "hardware-support"] edition = "2021" +repository = "https://github.com/parallaxsecond/parsec-openssl-provider" [dependencies] parsec-openssl2 = { path = "../parsec-openssl2" } diff --git a/parsec-openssl-provider/src/lib.rs b/parsec-openssl-provider/src/lib.rs index 78c22d7c..c2d86fec 100644 --- a/parsec-openssl-provider/src/lib.rs +++ b/parsec-openssl-provider/src/lib.rs @@ -1,5 +1,7 @@ // Copyright 2023 Contributors to the Parsec project. // SPDX-License-Identifier: Apache-2.0 +#![allow(clippy::missing_safety_doc)] + use std::mem; pub use openssl_errors; diff --git a/parsec-openssl-sys2/Cargo.toml b/parsec-openssl-sys2/Cargo.toml index cd2c86b0..09261df4 100644 --- a/parsec-openssl-sys2/Cargo.toml +++ b/parsec-openssl-sys2/Cargo.toml @@ -2,8 +2,13 @@ name = "parsec-openssl-sys2" version = "0.1.0" license = "Apache-2.0" +description = "FFI wrapper around the OpenSSL API" authors = ["Parsec Project Contributors"] edition = "2021" +repository = "https://github.com/parallaxsecond/parsec-openssl-provider" +categories = ["api-bindings", "external-ffi-bindings", "cryptography", "hardware-support"] +readme = "README.md" +keywords = ["security", "openssl"] [build-dependencies] bindgen = { version = "0.66.1" } diff --git a/parsec-openssl2/Cargo.toml b/parsec-openssl2/Cargo.toml index 98cd8c4b..dfb1dfba 100644 --- a/parsec-openssl2/Cargo.toml +++ b/parsec-openssl2/Cargo.toml @@ -3,7 +3,12 @@ name = "parsec-openssl2" version = "0.1.0" license = "Apache-2.0" authors = ["Parsec Project Contributors"] +description = "Rust-native wrapper around the OpenSSL API" edition = "2021" +repository = "https://github.com/parallaxsecond/parsec-openssl-provider" +categories = ["api-bindings", "external-ffi-bindings", "cryptography", "hardware-support"] +readme = "README.md" +keywords = ["security", "openssl"] [dependencies] parsec-openssl-sys2 = { path = "../parsec-openssl-sys2" } diff --git a/parsec-openssl2/src/lib.rs b/parsec-openssl2/src/lib.rs index 13507093..7b78915a 100644 --- a/parsec-openssl2/src/lib.rs +++ b/parsec-openssl2/src/lib.rs @@ -1,5 +1,6 @@ // Copyright 2023 Contributors to the Parsec project. // SPDX-License-Identifier: Apache-2.0 +#![allow(clippy::missing_safety_doc)] pub use openssl_sys::OSSL_PROVIDER; pub use parsec_openssl_sys2::openssl_binding; From 1a24cad418f691e31ff0ad22a47b4ac11b09fd89 Mon Sep 17 00:00:00 2001 From: Gowtham Suresh Kumar Date: Thu, 22 Feb 2024 14:12:19 +0000 Subject: [PATCH 3/3] CI: Split jobs This patch adds a ci_script GitHub action and splits the jobs to run specific tests. Signed-off-by: Gowtham Suresh Kumar --- .github/actions/ci_script/action.yml | 23 ++++++++ .github/workflows/ci.yml | 21 ++++--- ci.sh | 85 +++++++++++++++++++++------- 3 files changed, 103 insertions(+), 26 deletions(-) create mode 100644 .github/actions/ci_script/action.yml diff --git a/.github/actions/ci_script/action.yml b/.github/actions/ci_script/action.yml new file mode 100644 index 00000000..c5042ca0 --- /dev/null +++ b/.github/actions/ci_script/action.yml @@ -0,0 +1,23 @@ +name: "Run CI Tests" +description: "Run the ci.sh script with the specified flags" +inputs: + ci-flags: + required: true + description: "Flags with which to run the ci.sh tests" + rs-version: + required: true + default: "stable" + description: "Rust version with which to run the tests" + +runs: + using: "composite" + steps: + - name: Load Docker + uses: ./.github/actions/load_docker + if: ${{ env.TEST_DOCKER_IMAGE == 'parsec-openssl-provider-test' }} + with: + image-name: "${{ env.TEST_DOCKER_IMAGE }}" + image-path: "/tmp" + - name: Run the container to execute the test script + run: docker run -v $(pwd):/tmp/parsec-openssl-provider -w /tmp/parsec-openssl-provider --env RUST_TOOLCHAIN_VERSION=${{ inputs.rs-version }} -t ${{ env.TEST_DOCKER_IMAGE }} /tmp/parsec-openssl-provider/ci.sh --${{ inputs.ci-flags }} + shell: bash diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2ceedce8..21bb7bd2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,12 +37,19 @@ jobs: needs: [build-and-export-test-docker] steps: - uses: actions/checkout@v3 - - name: Load Docker - uses: ./.github/actions/load_docker - if: ${{ env.TEST_DOCKER_IMAGE == 'parsec-openssl-provider-test' }} + - name: Run the container to execute the test script + uses: ./.github/actions/ci_script with: - image-name: "${{ env.TEST_DOCKER_IMAGE }}" - image-path: "/tmp" + ci-flags: "build-test" + + static-checks: + name: Run static checks + runs-on: ubuntu-latest + if: ${{ always() }} + needs: [build-and-export-test-docker] + steps: + - uses: actions/checkout@v3 - name: Run the container to execute the test script - run: - docker run -v $(pwd):/tmp/parsec-openssl-provider -w /tmp/parsec-openssl-provider -t ${{ env.TEST_DOCKER_IMAGE }} ./ci.sh + uses: ./.github/actions/ci_script + with: + ci-flags: "static-checks" diff --git a/ci.sh b/ci.sh index 18c470b0..14960494 100755 --- a/ci.sh +++ b/ci.sh @@ -5,34 +5,81 @@ set -ex -echo "OpenSSL version being used:" -openssl version +usage () { + printf " +Continuous Integration test script -# Build parsec provider shared library -pushd parsec-openssl-provider-shared/ && -cargo build -popd +Usage: ./ci.sh --TEST +where TEST can be one of: + --build-test + --static-checks +" +} -# Try loading the build parsec provider -provider_load_result=$(openssl list -providers -provider-path ./target/debug/ -provider libparsec_openssl_provider_shared) -echo $provider_load_result +error_msg () { + echo "Error: $1" + usage + exit 1 +} -test_string='Providers: +# Change rust toolchain version +if [[ ! -z ${RUST_TOOLCHAIN_VERSION:+x} ]]; then + rustup override set ${RUST_TOOLCHAIN_VERSION} +fi + +rustup update + +BUILD_AND_TEST="False" +STATIC_CHECKS="False" + +while [ "$#" -gt 0 ]; do + case "$1" in + --build-test ) + BUILD_AND_TEST="True" + ;; + --static-checks ) + STATIC_CHECKS="True" + ;; + *) + error_msg "Unknown argument: $1" + ;; + esac + shift +done + +if [ "$BUILD_AND_TEST" == "True" ]; then + echo "OpenSSL version being used:" + openssl version + + # Build parsec provider shared library + pushd parsec-openssl-provider-shared/ && + cargo build + popd + + # Try loading the build parsec provider + PROVIDER_LOAD_RESULT=$(openssl list -providers -provider-path ./target/debug/ -provider libparsec_openssl_provider_shared) + echo $PROVIDER_LOAD_RESULT + + TEST_STRING='Providers: libparsec_openssl_provider_shared name: Parsec OpenSSL Provider version: 0.1.0 status: active' -if [[ $test_string != $provider_load_result ]]; then - echo "Loaded Provider has unexpected parameters!!!!" + if [[ $TEST_STRING != $PROVIDER_LOAD_RESULT ]]; then + echo "Loaded Provider has unexpected parameters!!!!" + exit 1 + fi + + echo "Parsec OpenSSL Provider loaded successfully!!!!" fi -echo "Parsec OpenSSL Provider loaded successfully!!!!" +if [ "$STATIC_CHECKS" == "True" ]; then + if cargo fmt --version; then + cargo fmt --all -- --check + fi -if cargo fmt --version; then - cargo fmt --all -- --check + if cargo clippy --version; then + cargo clippy --all-targets -- -D clippy::all -D clippy::cargo + fi fi - -if cargo clippy --version; then - cargo clippy --all-targets -- -D clippy::all -D clippy::cargo -fi \ No newline at end of file