From 083165f5b8130453907a17ef160896d83db8a348 Mon Sep 17 00:00:00 2001 From: hk2166 <9610hemant@gmail.com> Date: Thu, 14 May 2026 20:47:10 +0530 Subject: [PATCH 1/2] refactor: rename OpenSSLObjectWrapper to CryptoObjectWrapper Rename the generic RAII wrapper from OpenSSLObjectWrapper to CryptoObjectWrapper and move it from impl/openssl_utils/ to impl/, since the wrapper is not OpenSSL-specific and is also used by libsecp256k1 types (Secp256k1Context). Changes: - Created impl/CryptoObjectWrapper.h with the renamed class - Deleted impl/openssl_utils/OpenSSLObjectWrapper.h - Updated all 12 subclass headers to use the new include path and inherit from CryptoObjectWrapper instead - Updated all docstrings to say 'crypto object' instead of 'OpenSSL object' Signed-off-by: hk2166 <9610hemant@gmail.com> --- .../main/include/impl/CryptoObjectWrapper.h | 106 ++++++++++++++++++ .../main/include/impl/openssl_utils/BIGNUM.h | 6 +- .../main/include/impl/openssl_utils/BN_CTX.h | 6 +- .../include/impl/openssl_utils/ECDSA_SIG.h | 6 +- .../include/impl/openssl_utils/EC_GROUP.h | 6 +- .../include/impl/openssl_utils/EC_POINT.h | 6 +- .../main/include/impl/openssl_utils/EVP_MD.h | 6 +- .../include/impl/openssl_utils/EVP_MD_CTX.h | 6 +- .../include/impl/openssl_utils/EVP_PKEY.h | 6 +- .../include/impl/openssl_utils/EVP_PKEY_CTX.h | 6 +- .../impl/openssl_utils/OSSL_DECODER_CTX.h | 6 +- .../include/impl/openssl_utils/OSSL_LIB_CTX.h | 6 +- .../impl/openssl_utils/OpenSSLObjectWrapper.h | 106 ------------------ .../impl/openssl_utils/Secp256k1Context.h | 6 +- 14 files changed, 142 insertions(+), 142 deletions(-) create mode 100644 src/sdk/main/include/impl/CryptoObjectWrapper.h delete mode 100644 src/sdk/main/include/impl/openssl_utils/OpenSSLObjectWrapper.h diff --git a/src/sdk/main/include/impl/CryptoObjectWrapper.h b/src/sdk/main/include/impl/CryptoObjectWrapper.h new file mode 100644 index 000000000..5190bb989 --- /dev/null +++ b/src/sdk/main/include/impl/CryptoObjectWrapper.h @@ -0,0 +1,106 @@ +// SPDX-License-Identifier: Apache-2.0 +#ifndef HIERO_SDK_CPP_IMPL_CRYPTO_OBJECT_WRAPPER_H_ +#define HIERO_SDK_CPP_IMPL_CRYPTO_OBJECT_WRAPPER_H_ + +#include +#include + +namespace Hiero::internal::OpenSSLUtils +{ +/** + * Templated base wrapper class to be used for crypto library objects that require custom deleter and copier functions. + * + * @tparam ObjectType The type of crypto object this class should wrap. + * @tparam CopierFunc The copier type (function signature) for the crypto object. + */ +template> +class CryptoObjectWrapper +{ +public: + virtual ~CryptoObjectWrapper() = default; + + /** + * Copy constructor. + * + * @param other The CryptoObjectWrapper object to copy. + */ + CryptoObjectWrapper(const CryptoObjectWrapper& other) + : mObject({ other.mCopier(other.mObject.get()), other.mObject.get_deleter() }) + , mCopier(other.mCopier) + { + } + + /** + * Copy assignment operator. + * + * @param other The CryptoObjectWrapper object to copy. + */ + CryptoObjectWrapper& operator=(const CryptoObjectWrapper& other) + { + if (this != &other) + { + mObject = { other.mCopier(other.mObject.get()), other.mObject.get_deleter() }; + mCopier = other.mCopier; + } + + return *this; + } + + CryptoObjectWrapper(CryptoObjectWrapper&&) noexcept = default; + CryptoObjectWrapper& operator=(CryptoObjectWrapper&&) noexcept = default; + + /** + * Get the wrapped crypto object. + * + * @return A pointer to the wrapped crypto object. nullptr if no object exists. + */ + [[nodiscard]] ObjectType* get() { return mObject.get(); } + [[nodiscard]] const ObjectType* get() const { return mObject.get(); } + + /** + * Release ownership of the wrapped crypto object. This will cause memory leaks if ownership has not already been + * taken by another object. + */ + void release() { mObject.release(); } + + /** + * Determine if this CryptoObjectWrapper has a valid crypto object. + * + * @return \c TRUE if there exists a crypto object, otherwise \c FALSE. + */ + [[nodiscard]] explicit operator bool() const { return mObject != nullptr; } + +protected: + CryptoObjectWrapper() = default; + + /** + * Construct with values for the object, its custom deleter, and optionally a custom copier. + * + * @param object The crypto object to wrap. + * @param deleter The deleter function for the crypto object. + * @param copier The copier function for the crypto object. + */ + CryptoObjectWrapper(ObjectType* object, + const std::function& deleter, + const CopierFunc& copier = CopierFunc()) + : mObject({ object, deleter }) + , mCopier(copier) + { + } + +private: + /** + * Pointer to the crypto object with its associated deleter. + */ + std::unique_ptr> mObject = { nullptr, + std::function() }; + + /** + * The copier function to use to copy the wrapped crypto object. + */ + CopierFunc mCopier; +}; + +} // namespace Hiero::internal::OpenSSLUtils + +#endif // HIERO_SDK_CPP_IMPL_CRYPTO_OBJECT_WRAPPER_H_ diff --git a/src/sdk/main/include/impl/openssl_utils/BIGNUM.h b/src/sdk/main/include/impl/openssl_utils/BIGNUM.h index 3bd61fb6c..57005ca08 100644 --- a/src/sdk/main/include/impl/openssl_utils/BIGNUM.h +++ b/src/sdk/main/include/impl/openssl_utils/BIGNUM.h @@ -5,7 +5,7 @@ #include "exceptions/OpenSSLException.h" #include "impl/HexConverter.h" #include "impl/openssl_utils/BN_CTX.h" -#include "impl/openssl_utils/OpenSSLObjectWrapper.h" +#include "impl/CryptoObjectWrapper.h" #include "impl/openssl_utils/OpenSSLUtils.h" #include @@ -17,7 +17,7 @@ namespace Hiero::internal::OpenSSLUtils /** * Wrapper class for the OpenSSL BIGNUM object. */ -class BIGNUM : public OpenSSLObjectWrapper<::BIGNUM> +class BIGNUM : public CryptoObjectWrapper<::BIGNUM> { public: /** @@ -26,7 +26,7 @@ class BIGNUM : public OpenSSLObjectWrapper<::BIGNUM> * @param bignum The BIGNUM OpenSSL object to wrap. */ explicit BIGNUM(::BIGNUM* bignum) - : OpenSSLObjectWrapper(bignum, &BN_clear_free, &BN_dup) + : CryptoObjectWrapper(bignum, &BN_clear_free, &BN_dup) { } diff --git a/src/sdk/main/include/impl/openssl_utils/BN_CTX.h b/src/sdk/main/include/impl/openssl_utils/BN_CTX.h index 524dc353f..aea6b8737 100644 --- a/src/sdk/main/include/impl/openssl_utils/BN_CTX.h +++ b/src/sdk/main/include/impl/openssl_utils/BN_CTX.h @@ -2,7 +2,7 @@ #ifndef HIERO_SDK_CPP_IMPL_OPENSSL_UTILS_BN_CTX_H_ #define HIERO_SDK_CPP_IMPL_OPENSSL_UTILS_BN_CTX_H_ -#include "impl/openssl_utils/OpenSSLObjectWrapper.h" +#include "impl/CryptoObjectWrapper.h" #include @@ -11,7 +11,7 @@ namespace Hiero::internal::OpenSSLUtils /** * Wrapper class for the OpenSSL BN_CTX object. */ -class BN_CTX : public OpenSSLObjectWrapper<::BN_CTX> +class BN_CTX : public CryptoObjectWrapper<::BN_CTX> { public: /** @@ -29,7 +29,7 @@ class BN_CTX : public OpenSSLObjectWrapper<::BN_CTX> * @param bnCtx The BN_CTX OpenSSL object to wrap. */ explicit BN_CTX(::BN_CTX* bnCtx) - : OpenSSLObjectWrapper(bnCtx, &BN_CTX_free) + : CryptoObjectWrapper(bnCtx, &BN_CTX_free) { } }; diff --git a/src/sdk/main/include/impl/openssl_utils/ECDSA_SIG.h b/src/sdk/main/include/impl/openssl_utils/ECDSA_SIG.h index fa1f30b69..f8b7e3499 100644 --- a/src/sdk/main/include/impl/openssl_utils/ECDSA_SIG.h +++ b/src/sdk/main/include/impl/openssl_utils/ECDSA_SIG.h @@ -2,7 +2,7 @@ #ifndef HIERO_SDK_CPP_IMPL_OPENSSL_UTILS_ECDSA_SIG_H_ #define HIERO_SDK_CPP_IMPL_OPENSSL_UTILS_ECDSA_SIG_H_ -#include "impl/openssl_utils/OpenSSLObjectWrapper.h" +#include "impl/CryptoObjectWrapper.h" #include @@ -11,7 +11,7 @@ namespace Hiero::internal::OpenSSLUtils /** * Wrapper class for the OpenSSL ECDSA_SIG object. */ -class ECDSA_SIG : public OpenSSLObjectWrapper<::ECDSA_SIG> +class ECDSA_SIG : public CryptoObjectWrapper<::ECDSA_SIG> { public: /** @@ -29,7 +29,7 @@ class ECDSA_SIG : public OpenSSLObjectWrapper<::ECDSA_SIG> * @param ecdsaSig The ECDSA_SIG OpenSSL object to wrap. */ explicit ECDSA_SIG(::ECDSA_SIG* ecdsaSig) - : OpenSSLObjectWrapper(ecdsaSig, &ECDSA_SIG_free) + : CryptoObjectWrapper(ecdsaSig, &ECDSA_SIG_free) { } }; diff --git a/src/sdk/main/include/impl/openssl_utils/EC_GROUP.h b/src/sdk/main/include/impl/openssl_utils/EC_GROUP.h index 2022d4e49..a9be76776 100644 --- a/src/sdk/main/include/impl/openssl_utils/EC_GROUP.h +++ b/src/sdk/main/include/impl/openssl_utils/EC_GROUP.h @@ -2,7 +2,7 @@ #ifndef HIERO_SDK_CPP_IMPL_OPENSSL_UTILS_EC_GROUP_H_ #define HIERO_SDK_CPP_IMPL_OPENSSL_UTILS_EC_GROUP_H_ -#include "impl/openssl_utils/OpenSSLObjectWrapper.h" +#include "impl/CryptoObjectWrapper.h" #include @@ -11,7 +11,7 @@ namespace Hiero::internal::OpenSSLUtils /** * Wrapper class for the OpenSSL EC_GROUP object. */ -class EC_GROUP : public OpenSSLObjectWrapper<::EC_GROUP> +class EC_GROUP : public CryptoObjectWrapper<::EC_GROUP> { public: /** @@ -20,7 +20,7 @@ class EC_GROUP : public OpenSSLObjectWrapper<::EC_GROUP> * @param ecGroup The EC_GROUP OpenSSL object to wrap. */ explicit EC_GROUP(::EC_GROUP* ecGroup) - : OpenSSLObjectWrapper(ecGroup, &EC_GROUP_free, &EC_GROUP_dup) + : CryptoObjectWrapper(ecGroup, &EC_GROUP_free, &EC_GROUP_dup) { } }; diff --git a/src/sdk/main/include/impl/openssl_utils/EC_POINT.h b/src/sdk/main/include/impl/openssl_utils/EC_POINT.h index 16ca7ea72..5040adf1f 100644 --- a/src/sdk/main/include/impl/openssl_utils/EC_POINT.h +++ b/src/sdk/main/include/impl/openssl_utils/EC_POINT.h @@ -2,7 +2,7 @@ #ifndef HIERO_SDK_CPP_IMPL_OPENSSL_UTILS_EC_POINT_H_ #define HIERO_SDK_CPP_IMPL_OPENSSL_UTILS_EC_POINT_H_ -#include "impl/openssl_utils/OpenSSLObjectWrapper.h" +#include "impl/CryptoObjectWrapper.h" #include @@ -11,7 +11,7 @@ namespace Hiero::internal::OpenSSLUtils /** * Wrapper class for the OpenSSL EC_POINT object. */ -class EC_POINT : public OpenSSLObjectWrapper<::EC_POINT> +class EC_POINT : public CryptoObjectWrapper<::EC_POINT> { public: /** @@ -29,7 +29,7 @@ class EC_POINT : public OpenSSLObjectWrapper<::EC_POINT> * @param ecPoint The EC_POINT OpenSSL object to wrap. */ explicit EC_POINT(::EC_POINT* ecPoint) - : OpenSSLObjectWrapper(ecPoint, &EC_POINT_free) + : CryptoObjectWrapper(ecPoint, &EC_POINT_free) { } }; diff --git a/src/sdk/main/include/impl/openssl_utils/EVP_MD.h b/src/sdk/main/include/impl/openssl_utils/EVP_MD.h index 390445ab9..21305e98c 100644 --- a/src/sdk/main/include/impl/openssl_utils/EVP_MD.h +++ b/src/sdk/main/include/impl/openssl_utils/EVP_MD.h @@ -2,7 +2,7 @@ #ifndef HIERO_SDK_CPP_IMPL_OPENSSL_UTILS_EVP_MD_H_ #define HIERO_SDK_CPP_IMPL_OPENSSL_UTILS_EVP_MD_H_ -#include "impl/openssl_utils/OpenSSLObjectWrapper.h" +#include "impl/CryptoObjectWrapper.h" #include @@ -11,7 +11,7 @@ namespace Hiero::internal::OpenSSLUtils /** * Wrapper class for the OpenSSL EVP_MD object. */ -class EVP_MD : public OpenSSLObjectWrapper<::EVP_MD> +class EVP_MD : public CryptoObjectWrapper<::EVP_MD> { public: /** @@ -29,7 +29,7 @@ class EVP_MD : public OpenSSLObjectWrapper<::EVP_MD> * @param evpMd The EVP_MD OpenSSL object to wrap. */ explicit EVP_MD(::EVP_MD* evpMd) - : OpenSSLObjectWrapper(evpMd, &EVP_MD_free) + : CryptoObjectWrapper(evpMd, &EVP_MD_free) { } }; diff --git a/src/sdk/main/include/impl/openssl_utils/EVP_MD_CTX.h b/src/sdk/main/include/impl/openssl_utils/EVP_MD_CTX.h index ce271f823..dbf224b00 100644 --- a/src/sdk/main/include/impl/openssl_utils/EVP_MD_CTX.h +++ b/src/sdk/main/include/impl/openssl_utils/EVP_MD_CTX.h @@ -2,7 +2,7 @@ #ifndef HIERO_SDK_CPP_IMPL_OPENSSL_UTILS_EVP_MD_CTX_H_ #define HIERO_SDK_CPP_IMPL_OPENSSL_UTILS_EVP_MD_CTX_H_ -#include "impl/openssl_utils/OpenSSLObjectWrapper.h" +#include "impl/CryptoObjectWrapper.h" #include @@ -11,7 +11,7 @@ namespace Hiero::internal::OpenSSLUtils /** * Wrapper class for the OpenSSL EVP_MD_CTX object. */ -class EVP_MD_CTX : public OpenSSLObjectWrapper<::EVP_MD_CTX> +class EVP_MD_CTX : public CryptoObjectWrapper<::EVP_MD_CTX> { public: /** @@ -29,7 +29,7 @@ class EVP_MD_CTX : public OpenSSLObjectWrapper<::EVP_MD_CTX> * @param evpMdCtx The EVP_MD_CTX OpenSSL object to wrap. */ explicit EVP_MD_CTX(::EVP_MD_CTX* evpMdCtx) - : OpenSSLObjectWrapper(evpMdCtx, &EVP_MD_CTX_free) + : CryptoObjectWrapper(evpMdCtx, &EVP_MD_CTX_free) { } }; diff --git a/src/sdk/main/include/impl/openssl_utils/EVP_PKEY.h b/src/sdk/main/include/impl/openssl_utils/EVP_PKEY.h index 529df20c8..8e1c05bbe 100644 --- a/src/sdk/main/include/impl/openssl_utils/EVP_PKEY.h +++ b/src/sdk/main/include/impl/openssl_utils/EVP_PKEY.h @@ -2,7 +2,7 @@ #ifndef HIERO_SDK_CPP_IMPL_OPENSSL_UTILS_EVP_PKEY_H_ #define HIERO_SDK_CPP_IMPL_OPENSSL_UTILS_EVP_PKEY_H_ -#include "impl/openssl_utils/OpenSSLObjectWrapper.h" +#include "impl/CryptoObjectWrapper.h" #include @@ -11,7 +11,7 @@ namespace Hiero::internal::OpenSSLUtils /** * Wrapper class for the OpenSSL EVP_PKEY object. */ -class EVP_PKEY : public OpenSSLObjectWrapper<::EVP_PKEY, decltype(&EVP_PKEY_dup)> +class EVP_PKEY : public CryptoObjectWrapper<::EVP_PKEY, decltype(&EVP_PKEY_dup)> { public: EVP_PKEY() = default; @@ -22,7 +22,7 @@ class EVP_PKEY : public OpenSSLObjectWrapper<::EVP_PKEY, decltype(&EVP_PKEY_dup) * @param evpPkey The EVP_PKEY OpenSSL object to wrap. */ explicit EVP_PKEY(::EVP_PKEY* evpPkey) - : OpenSSLObjectWrapper(evpPkey, &EVP_PKEY_free, &EVP_PKEY_dup) + : CryptoObjectWrapper(evpPkey, &EVP_PKEY_free, &EVP_PKEY_dup) { } }; diff --git a/src/sdk/main/include/impl/openssl_utils/EVP_PKEY_CTX.h b/src/sdk/main/include/impl/openssl_utils/EVP_PKEY_CTX.h index 44e3c3d92..1e8d7911b 100644 --- a/src/sdk/main/include/impl/openssl_utils/EVP_PKEY_CTX.h +++ b/src/sdk/main/include/impl/openssl_utils/EVP_PKEY_CTX.h @@ -2,7 +2,7 @@ #ifndef HIERO_SDK_CPP_IMPL_OPENSSL_UTILS_EVP_PKEY_CTX_H_ #define HIERO_SDK_CPP_IMPL_OPENSSL_UTILS_EVP_PKEY_CTX_H_ -#include "impl/openssl_utils/OpenSSLObjectWrapper.h" +#include "impl/CryptoObjectWrapper.h" #include @@ -11,7 +11,7 @@ namespace Hiero::internal::OpenSSLUtils /** * Wrapper class for the OpenSSL EVP_PKEY_CTX object. */ -class EVP_PKEY_CTX : public OpenSSLObjectWrapper<::EVP_PKEY_CTX> +class EVP_PKEY_CTX : public CryptoObjectWrapper<::EVP_PKEY_CTX> { public: /** @@ -21,7 +21,7 @@ class EVP_PKEY_CTX : public OpenSSLObjectWrapper<::EVP_PKEY_CTX> * @param evpPkeyCtx The EVP_PKEY_CTX OpenSSL object to wrap. */ explicit EVP_PKEY_CTX(::EVP_PKEY_CTX* evpPkeyCtx) - : OpenSSLObjectWrapper(evpPkeyCtx, &EVP_PKEY_CTX_free, &EVP_PKEY_CTX_dup) + : CryptoObjectWrapper(evpPkeyCtx, &EVP_PKEY_CTX_free, &EVP_PKEY_CTX_dup) { } }; diff --git a/src/sdk/main/include/impl/openssl_utils/OSSL_DECODER_CTX.h b/src/sdk/main/include/impl/openssl_utils/OSSL_DECODER_CTX.h index 58bc705e8..dc0211798 100644 --- a/src/sdk/main/include/impl/openssl_utils/OSSL_DECODER_CTX.h +++ b/src/sdk/main/include/impl/openssl_utils/OSSL_DECODER_CTX.h @@ -2,7 +2,7 @@ #ifndef HIERO_SDK_CPP_IMPL_OPENSSL_UTILS_OSSL_DECODER_CTX_H_ #define HIERO_SDK_CPP_IMPL_OPENSSL_UTILS_OSSL_DECODER_CTX_H_ -#include "impl/openssl_utils/OpenSSLObjectWrapper.h" +#include "impl/CryptoObjectWrapper.h" #include @@ -11,7 +11,7 @@ namespace Hiero::internal::OpenSSLUtils /** * Wrapper class for the OpenSSL OSSL_DECODER_CTX object. */ -class OSSL_DECODER_CTX : public OpenSSLObjectWrapper<::OSSL_DECODER_CTX> +class OSSL_DECODER_CTX : public CryptoObjectWrapper<::OSSL_DECODER_CTX> { public: /** @@ -29,7 +29,7 @@ class OSSL_DECODER_CTX : public OpenSSLObjectWrapper<::OSSL_DECODER_CTX> * @param osslDecoderCtx The OSSL_DECODER_CTX OpenSSL object to wrap. */ explicit OSSL_DECODER_CTX(::OSSL_DECODER_CTX* osslDecoderCtx) - : OpenSSLObjectWrapper(osslDecoderCtx, &OSSL_DECODER_CTX_free) + : CryptoObjectWrapper(osslDecoderCtx, &OSSL_DECODER_CTX_free) { } }; diff --git a/src/sdk/main/include/impl/openssl_utils/OSSL_LIB_CTX.h b/src/sdk/main/include/impl/openssl_utils/OSSL_LIB_CTX.h index 34877bc77..72e10fcfe 100644 --- a/src/sdk/main/include/impl/openssl_utils/OSSL_LIB_CTX.h +++ b/src/sdk/main/include/impl/openssl_utils/OSSL_LIB_CTX.h @@ -2,7 +2,7 @@ #ifndef HIERO_SDK_CPP_IMPL_OPENSSL_UTILS_OSSL_LIB_CTX_H_ #define HIERO_SDK_CPP_IMPL_OPENSSL_UTILS_OSSL_LIB_CTX_H_ -#include "impl/openssl_utils/OpenSSLObjectWrapper.h" +#include "impl/CryptoObjectWrapper.h" #include @@ -11,7 +11,7 @@ namespace Hiero::internal::OpenSSLUtils /** * Wrapper class for the OpenSSL OSSL_LIB_CTX object. */ -class OSSL_LIB_CTX : public OpenSSLObjectWrapper<::OSSL_LIB_CTX> +class OSSL_LIB_CTX : public CryptoObjectWrapper<::OSSL_LIB_CTX> { public: /** @@ -29,7 +29,7 @@ class OSSL_LIB_CTX : public OpenSSLObjectWrapper<::OSSL_LIB_CTX> * @param osslLibCtx The OSSL_LIB_CTX OpenSSL object to wrap. */ explicit OSSL_LIB_CTX(::OSSL_LIB_CTX* osslLibCtx) - : OpenSSLObjectWrapper(osslLibCtx, &OSSL_LIB_CTX_free) + : CryptoObjectWrapper(osslLibCtx, &OSSL_LIB_CTX_free) { } }; diff --git a/src/sdk/main/include/impl/openssl_utils/OpenSSLObjectWrapper.h b/src/sdk/main/include/impl/openssl_utils/OpenSSLObjectWrapper.h deleted file mode 100644 index 2257b0b9b..000000000 --- a/src/sdk/main/include/impl/openssl_utils/OpenSSLObjectWrapper.h +++ /dev/null @@ -1,106 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -#ifndef HIERO_SDK_CPP_IMPL_OPENSSL_UTILS_OPENSSL_OBJECT_WRAPPER_H_ -#define HIERO_SDK_CPP_IMPL_OPENSSL_UTILS_OPENSSL_OBJECT_WRAPPER_H_ - -#include -#include - -namespace Hiero::internal::OpenSSLUtils -{ -/** - * Templated base wrapper class to be used for OpenSSL objects that require custom deleter and copier functions. - * - * @tparam ObjectType The type of OpenSSL object this class should wrap. - * @tparam CopierFunc The copier type (function signature) for the OpenSSL object. - */ -template> -class OpenSSLObjectWrapper -{ -public: - virtual ~OpenSSLObjectWrapper() = default; - - /** - * Copy constructor. - * - * @param other The OpenSSLObjectWrapper object to copy. - */ - OpenSSLObjectWrapper(const OpenSSLObjectWrapper& other) - : mObject({ other.mCopier(other.mObject.get()), other.mObject.get_deleter() }) - , mCopier(other.mCopier) - { - } - - /** - * Copy assignment operator. - * - * @param other The OpenSSLObjectWrapper object to copy. - */ - OpenSSLObjectWrapper& operator=(const OpenSSLObjectWrapper& other) - { - if (this != &other) - { - mObject = { other.mCopier(other.mObject.get()), other.mObject.get_deleter() }; - mCopier = other.mCopier; - } - - return *this; - } - - OpenSSLObjectWrapper(OpenSSLObjectWrapper&&) noexcept = default; - OpenSSLObjectWrapper& operator=(OpenSSLObjectWrapper&&) noexcept = default; - - /** - * Get the wrapped OpenSSL object. - * - * @return A pointer to the wrapped OpenSSL object. nullptr if no object exists. - */ - [[nodiscard]] ObjectType* get() { return mObject.get(); } - [[nodiscard]] const ObjectType* get() const { return mObject.get(); } - - /** - * Release ownership of the wrapped OpenSSL object. This will cause memory leaks if ownership has not already been - * taken by another object. - */ - void release() { mObject.release(); } - - /** - * Determine if this OpenSSLObjectWrapper has a valid OpenSSL object. - * - * @return \c TRUE if there exists an OpenSSL object, otherwise \c FALSE. - */ - [[nodiscard]] explicit operator bool() const { return mObject != nullptr; } - -protected: - OpenSSLObjectWrapper() = default; - - /** - * Construct with values for the object, its custom deleter, and optionally a custom copier. - * - * @param object The OpenSSL object to wrap. - * @param deleter The deleter function for the OpenSSL object. - * @param copier The copier function for the OpenSSL object. - */ - OpenSSLObjectWrapper(ObjectType* object, - const std::function& deleter, - const CopierFunc& copier = CopierFunc()) - : mObject({ object, deleter }) - , mCopier(copier) - { - } - -private: - /** - * Pointer to the OpenSSL object with its associated deleter. - */ - std::unique_ptr> mObject = { nullptr, - std::function() }; - - /** - * The copier function to use to copy the wrapped OpenSSL object. - */ - CopierFunc mCopier; -}; - -} // namespace Hiero::internal::Utils - -#endif // HIERO_SDK_CPP_IMPL_OPENSSL_UTILS_OPENSSL_OBJECT_WRAPPER_H_ diff --git a/src/sdk/main/include/impl/openssl_utils/Secp256k1Context.h b/src/sdk/main/include/impl/openssl_utils/Secp256k1Context.h index 73d6f0540..c9958cd74 100644 --- a/src/sdk/main/include/impl/openssl_utils/Secp256k1Context.h +++ b/src/sdk/main/include/impl/openssl_utils/Secp256k1Context.h @@ -2,7 +2,7 @@ #ifndef HIERO_SDK_CPP_IMPL_OPENSSL_UTILS_SECP256K1_CONTEXT_H_ #define HIERO_SDK_CPP_IMPL_OPENSSL_UTILS_SECP256K1_CONTEXT_H_ -#include "impl/openssl_utils/OpenSSLObjectWrapper.h" +#include "impl/CryptoObjectWrapper.h" #include @@ -11,7 +11,7 @@ namespace Hiero::internal::OpenSSLUtils /** * Wrapper class for the secp256k1_context object. */ -class Secp256k1Context : public OpenSSLObjectWrapper<::secp256k1_context> +class Secp256k1Context : public CryptoObjectWrapper<::secp256k1_context> { public: /** @@ -29,7 +29,7 @@ class Secp256k1Context : public OpenSSLObjectWrapper<::secp256k1_context> * @param ctx The secp256k1_context object to wrap. */ explicit Secp256k1Context(::secp256k1_context* ctx) - : OpenSSLObjectWrapper(ctx, &secp256k1_context_destroy) + : CryptoObjectWrapper(ctx, &secp256k1_context_destroy) { } }; From 39c0dd58ec6c668cba961a8b81860c7fb6e425bb Mon Sep 17 00:00:00 2001 From: hk2166 <9610hemant@gmail.com> Date: Thu, 14 May 2026 23:32:55 +0530 Subject: [PATCH 2/2] Rename OpenSSLObjectWrapper to CryptoObjectWrapper and move it out of openssl_utils Signed-off-by: hk2166 <9610hemant@gmail.com> --- src/sdk/main/include/impl/openssl_utils/BIGNUM.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sdk/main/include/impl/openssl_utils/BIGNUM.h b/src/sdk/main/include/impl/openssl_utils/BIGNUM.h index 57005ca08..7854eb508 100644 --- a/src/sdk/main/include/impl/openssl_utils/BIGNUM.h +++ b/src/sdk/main/include/impl/openssl_utils/BIGNUM.h @@ -3,9 +3,9 @@ #define HIERO_SDK_CPP_IMPL_OPENSSL_UTILS_BIGNUM_H_ #include "exceptions/OpenSSLException.h" +#include "impl/CryptoObjectWrapper.h" #include "impl/HexConverter.h" #include "impl/openssl_utils/BN_CTX.h" -#include "impl/CryptoObjectWrapper.h" #include "impl/openssl_utils/OpenSSLUtils.h" #include