From 60cf3f3f34bf98c89ce0e42304a0b4792ef94c27 Mon Sep 17 00:00:00 2001 From: Lobsinger Sebastian Date: Fri, 11 Sep 2026 07:55:09 +0000 Subject: [PATCH] Use proper settings for concurrency. Fix pre-commit hook --- .pre-commit-config.yaml | 2 +- .../provider/pkcs11/pkcs11_provider_factory.hpp | 4 +--- .../provider/pkcs11/src/pkcs11_provider_factory.cpp | 13 +++++++++++-- third_party/openssl/BUILD | 3 +-- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 50d5796b9..3b48dad12 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -35,7 +35,7 @@ repos: files: ^\.github/workflows/ - id: generate-compile-commands name: bazel-compile-commands (for clang-tidy) - entry: bazel-compile-commands --compiler /usr/bin/clang -R "-fno-canonical-system-headers=" //... + entry: bazel-compile-commands --compiler /usr/bin/clang -R "-fno-canonical-system-headers=" -b '--define=pkcs11_lib=/dummy/path/to/make/pkcs11_lib_path/gen_rule/happy' //... language: system files: \.(c|cpp|h|hpp)$ pass_filenames: false diff --git a/score/crypto/src/daemon/provider/pkcs11/pkcs11_provider_factory.hpp b/score/crypto/src/daemon/provider/pkcs11/pkcs11_provider_factory.hpp index d197e01a1..31aae760c 100644 --- a/score/crypto/src/daemon/provider/pkcs11/pkcs11_provider_factory.hpp +++ b/score/crypto/src/daemon/provider/pkcs11/pkcs11_provider_factory.hpp @@ -17,8 +17,6 @@ #include "score/crypto/src/daemon/provider/i_provider_factory.hpp" #include "score/crypto/src/daemon/provider/pkcs11/pkcs11_token_config.hpp" -#include - namespace score::crypto::daemon::provider::pkcs11 { @@ -47,7 +45,7 @@ namespace score::crypto::daemon::provider::pkcs11 class Pkcs11ProviderFactory final : public IProviderFactory { public: - explicit Pkcs11ProviderFactory(Pkcs11ProviderFactoryConfig config); + explicit Pkcs11ProviderFactory(const Pkcs11ProviderFactoryConfig& config); ~Pkcs11ProviderFactory() override = default; diff --git a/score/crypto/src/daemon/provider/pkcs11/src/pkcs11_provider_factory.cpp b/score/crypto/src/daemon/provider/pkcs11/src/pkcs11_provider_factory.cpp index 35c2742bc..3b27c1eda 100644 --- a/score/crypto/src/daemon/provider/pkcs11/src/pkcs11_provider_factory.cpp +++ b/score/crypto/src/daemon/provider/pkcs11/src/pkcs11_provider_factory.cpp @@ -14,17 +14,22 @@ #include "score/crypto/src/daemon/provider/pkcs11/pkcs11_provider_factory.hpp" #include +#include + +#include #include "score/crypto/src/daemon/common/daemon_error.hpp" #include "score/crypto/src/daemon/common/types.hpp" +#include "score/crypto/src/daemon/provider/i_provider_factory.hpp" #include "score/crypto/src/daemon/provider/pkcs11/pkcs11_module.hpp" #include "score/crypto/src/daemon/provider/pkcs11/pkcs11_provider.hpp" +#include "score/crypto/src/daemon/provider/pkcs11/pkcs11_token_config.hpp" #include "score/crypto/src/daemon/provider/provider_manager.hpp" namespace score::crypto::daemon::provider::pkcs11 { -Pkcs11ProviderFactory::Pkcs11ProviderFactory(Pkcs11ProviderFactoryConfig config) : m_config{std::move(config)} {} +Pkcs11ProviderFactory::Pkcs11ProviderFactory(const Pkcs11ProviderFactoryConfig& config) : m_config{config} {} ProviderFactoryResult Pkcs11ProviderFactory::CreateAndRegister(ProviderManager& manager) { @@ -60,7 +65,11 @@ ProviderFactoryResult Pkcs11ProviderFactory::CreateAndRegister(ProviderManager& // so that C_Initialize is called exactly once and C_Finalize is deferred // until the very last provider (and therefore all its sessions) is destroyed. auto pkcs11Module = std::make_shared(); - const auto initResult = pkcs11Module->Init(); + + CK_C_INITIALIZE_ARGS init_args{}; + // Set CKF_OS_LOCKING_OK since the daemon will use it in a multi-threaded manner. + init_args.flags = CKF_OS_LOCKING_OK; + const auto initResult = pkcs11Module->Init(&init_args); if (!initResult.has_value()) { result.failures.push_back(ProviderFailure{ diff --git a/third_party/openssl/BUILD b/third_party/openssl/BUILD index b8824f61d..db7844a8b 100644 --- a/third_party/openssl/BUILD +++ b/third_party/openssl/BUILD @@ -30,7 +30,6 @@ configure_make( }) + [ "shared", # Build shared libraries (libcrypto.so, libssl.so) "no-asm", # Disable assembly optimizations to avoid GCC inline assembly issues - "no-threads", # Disable threading to avoid pthread requirement on QNX "no-makedepend", # Disable dependency generation that causes QCC issues "no-sock", # Disable socket/network BIO (not needed for a crypto library; avoids missing socket APIs in QNX sysroot) # Note: ENGINE API kept enabled for SoftHSM compatibility (ENGINE is deprecated in OpenSSL 3.x but still functional) @@ -81,7 +80,7 @@ configure_make( "no-afalgeng", # Disable Linux AF_ALG engine (requires linux/version.h, not available in QNX sysroot) "no-padlockeng", # Disable VIA Padlock engine (x86-only, irrelevant for aarch64/QNX targets) "no-legacy", # Disable legacy provider (only default provider used) - "no-async", # Disable async dispatch (unused, especially with no-threads) + "no-async", # Disable async dispatch (unused) "-DUSE_TIMEGM", # QNX doesn't provide the 'timezone' global variable "--prefix=$${INSTALLDIR}", "--openssldir=$${INSTALLDIR}",