C++ SDK
Integrating software licensing into your C/C++ application is straightforward with the LicenseSpring SDK.
Simply import our SDK into your project, and you're ready to go.
If you don't find the binaries for your specific environment, contact our sales department.
Supported Operating systems
Windows
We support Windows 7 and later, and provide SDK builds created with:
Mac
macOS 10.12 Sierra and later for the x86_64 version and macOS 11.0 Big Sur and later for the ARM version, SDK was built with clang 9.0
Linux
At least Ubuntu 18.04 and 20.04 LTS are supported, SDK should work fine with any Linux distribution that can run GCC 7.5 with C++11/14. We provide SDK builds created with GCC 7.5 and 9.2.1
Android
Minimum Android API level 24 (Android 7.0 Nougat), targeting the arm64-v8a, armeabi-v7a, x86, x86_64 ABIs, built with Android NDK 21.4.7075529, 26.1.10909125 and 27.2.12479018.
New hardware ID generator library
Since v7.42.0, we ship Windows, Linux and macOS C++ SDK releases with the SDK-independent hardware ID generator library. Each zip file on the download pages contains the binaries built for the platform you're downloading the SDK for.
See the Hardware ID generation page for more info.
C++ SDK for Windows
Latest releases for Windows are available on the C++ SDK Windows download page.
C++ SDK for macOS
Latest releases for macOS are available on the C++ SDK macOS download page.
The x86_64 version of the MacOS SDK was built with macOS SDK 10.12.
The ARM version of the MacOS LicenseSpring SDK was built with macOS SDK 11.3 and it's compatible with macOS SDK 11.0 and above.
The MacUniversal build contains both the x86_64 and ARM binaries combined with lipo.
C++ SDK for Linux
Latest releases for Linux are available on the C++ SDK Linux download page.
For legacy purposes, we provide a version of the C++ SDK built with the GLIBCXX_USE_CXX11_ABI compiler flag set to 0.
C++ SDK for Android
Latest releases for Android are available on the C++ SDK Android download page.
Builds targeting Android systems don't use the SDK-independent hardware ID generator library. Instead, algorithms are compiled as part of the SDK.
The build for Centos 7 required installation of a newer version of a compiler (GCC) than one supplied in default system repositories.
GCC 7 is used from the centos-release-scl repository instead of a default 4.8.5.
Installation of a cmake3 is also required instead of 2.8 found in system repositories. The "epel" repository was used to obtain it.
These updates are also required in order to build samples.
The build for Centos 7 is deprecated as of v7.33.0.
When using a static library, you should define the LS_STATIC symbol (e.g. in preprocessor definitions in VS).
Release notes
January 22, 2026, v7.48.1
Fixed validity period parsing in
LicenseSpring::UserLicense.Added missing
LicenseSample.hheader toCppSample.vcxproj.Fixed incorrect VS toolset in project files all Windows samples in VS2015-VS2022 releases.
Changed Windows SDK in project files for all Windows samples to
10.0to allow building with Windows SDK versions other than 10.0.26100.0.Include
cstdintheader inExtendedOptions.h,InstallationFile.h,LicenseID.handLicenseUser.hheaders for GCC 15 compatibility.
January 14, 2026, v7.48.0
Added an optional
redirectUriparameter toLicenseManager::activateLicense, meant to be passed when using a non-default alternate redirect URI for single sign-on.Added
activateLicenseViaSSOAlternateRedirectUrifunction to the C interface.Added support for getting multiple single sign-on URLs. The new, alternate SSO URLs differ from each other only by their redirect URI:
Added
BaseManager::getAllSSOUrlsmethod that returns a list of all available SSO URLs. The first element of the returned std::vector is considered the main SSO URL.Added
LicenseHandler::getAllSSOUrls.Added
getAllSSOUrlsfunction to the C-interface.Updated SSO sample to get all available SSO URLs from the License API.
Added a feature to borrow licenses with SSO:
Added
License::borrowoverloads with SSO-related parameters.Added
LicenseHandler::borrowoverloads with SSO-related parameters.Added
borrowFloatingLicenseWithSSOandborrowFloatingLicenseTillWithSSOfunctions to the C interface.Added buttons for license borrowing in the SSO sample.
December 9, 2025, v7.47.0
Added debug dynamic libraries for Windows built with Address Sanitizer support:
Added LicenseSpringDAsan.dll and LicenseSpringAsan.lib binaries to DLL releases built with v143 and v145 toolsets
Added a
DebugDllAsanconfiguration to theLicenseSpringSamplessolution.This release doesn't contain the ASan runtime library. Make sure to install it on your system.
Updated the exception list in
BaseManager::createOfflineActivationFiledocstrings.Added additional exception logging messages after failing to generate offline request file.
Added MinGW release missing from v7.46.0.
November 27, 2025, 7.46.0
Added a Windows release built with the v145 toolset (Visual Studio 2026, MSVC 14.50 and Windows SDK 10.0.26100.0).
Updated Windows SDK for v141-v143 releases from 10.0.19041.0 to 10.0.26100.0.
Updated v143 MSVC compiler version from 14.36 to 14.44.
Removed v142 ARM64 release due to the combination getting deprecated in Windows SDK 10.0.26100.0
Fixed a bug with generating malformed timestamps on some macOS machines using a non-English locale.
Fixed detection of Linux Docker containers.
Added missing
includedirectory to macOS universal release.
November 6, 2025, v7.45.0
Added Windows releases targeting ARM64, built with VC142 and VC143 toolchains.
Updated CMakeLists in all Qt-based samples to handle ARM64 for Windows.
October 20, 2025, v7.44.0
Migrated QtSample, AirGapQtSample and SSOSample to CMake.
Replaced the
licensespring://...custom URL handler tolicensespringsso://...in SSOSample.Updated SSOSample to open the external browser and capture the custom URL on macOS.
Removed deprecated Qt APIs from all Qt-based samples.
Fixed libcurl, libssl and libykpiv versions in README.
Fixed MinGW release not being published.
October 13, 2025, v7.43.1
Fixed DLL signing in Windows releases.
Fixed CentOS 8 releases not being published.
Fixed clang 19 release not being published.
October 08, 2025, v7.43.0
Added support for version 2 of the offline request schema.
Fixed VM detection DLL loading on Windows targets.
Fixed deactivating license locally when the License API returns a
license_not_activeerror code on license deactivation.Updated libssl version to 3.5.4.
Updated libcurl version to 8.16.0.
Updated libykpiv version to 2.7.2.
Linked secur32.lib to all static Windows targets, required by changes to libcurl, see https://github.com/curl/curl/pull/17413
Updated CppSample to handle Floating Server V2.
September 11, 2025, v7.42.0
Added an x86_64 Linux release (glibc 2.36), built with Clang 19 and linked to libc++ 19.
Added a release for Android compiled with NDK 21.4.7075529, targeting the
arm64-v8a,armeabi-v7a,x86andx86_64ABIs and minimum API level 24.Added a new multi-platform shared library that computes the hardware ID. See the
Hardware ID generationpage on our documentation for more information.The default algorithm is unchanged on all platforms, and will not change at least until the next major release.
New algorithms are listed in the
LicenseSpring::DeviceIDAlgorithmenum, starting from 100.Added
hardware_id_generator.dllbinaries to Windows MSVC releasesAdded
libhardware_id_generator.dllbinaries to Windows MinGW releasesAdded
libhardware_id_generator.soto non-Android Linux releases.Added
libhardware_id_generator.soto macOS releases.On Windows, the dll must be located next to the built executable. On other platforms, it needs to be either next to the built binary, or in the RPATH of
libLicenseSpring.
August 26, 2025, v7.41.1
Fixed automatic discovery of Floating Server V2.
August 01, 2025, v7.41.0
Fixed
includedirectories not containing configured headers on macOS and Linux targets.Added support for Floating server V2 to
LicenseSpring::FloatingClientandLicenseSpring::License.Made
BaseManager::reconfigure()virtual to support overriding inFloatingClientclass.Added a private
FloatingClient::m_isFloatingServerV2member.Added
FloatingClient::getAllLicensesmethod that fetches theLicenseIDof available licenses from the Floating server tied to the configured product code.Added
FloatingClient::authenticateUsermethod that allows a user to log in and use floating licenses.Added
ExtendedOptions::setCertificateChain,ExtendedOptions::setCertificateChainFromFileandExtendedOptions::getCertificateChainmethods to set certificate chains user for verifying Floating Server V2 responses.Added
Configuration::getCertificateChaingetter.
June 16, 2025, v7.40.0
Added new Android builds targeting
armeabi-v7a,x86andx86_64ABIs.Stripped unused debug symbols from shared libraries built with the Android NDK.
Added
LicenseHandler::clearErrorInfomethod for manually clearingLicenseHandlererror codes.Added
clearErrorInfofunction to theLicenseHandlerC interface.Added
License::activationDateandLicense::activationDateUtclicense activation time getters.Added
LicenseHandler::getActivationDateandLicenseHandler:getActivationDateUtclicense activation time getters.Added
LicenseSpring::Companyclass, used for getting the LicenseSpring company ID from the LicenseSpring backend.Added
Companystruct in the C interface with corresponding Create and Free functions.Added
License::companyandLicenseHandler::getCompanygetters.Added
getCompanyfunction in C interfaceLicenseHandler.
June 5, 2025, v7.39.0
Fixed metadata JSON parsing in Android sample.
Fixed a bug where calling
License::isLicenseBelongsToThisDeviceandLicense::checkLicenseBelongsToThisDevicewould overwrite the set DeviceIDAlgorithm with one that doesn't belong to current device.Updated
License::isLicenseBelongsToThisDeviceandLicense::checkLicenseBelongsToThisDevicedocstrings.Removed LDAP dependency for libcurl on static macOS targets.
Fixed CppSample and CSample XCode projects crashing when linking to dynamic libraries.
Added a BundleManager class which handles online and offline bundle activation and deactivation, and bundle checks.
Added two new exceptions,
ProductNotBundleExceptionandBundleMismatchException.Added two new error codes,
eProductNotBundleandeBundleMismatch.Refactored CppSample into two different subsamples, one with license activation, and one with bundle activation.
Fixed a bug where signature verification fails when using custom white-labeled License API domains
May 15, 2025, v7.38.0
Fixed DESTDIR path for
win32target in the Qt sample.Fixed an OpenSSL thread-safety issue when computing HMAC-SHA256.
Added SDK builds for Android compiled with NDK 26.1.10909125 and 27.2.12479018, targeting the
arm64-v8aABI and minimum API level 24.Added an Android NDK sample to
samples/AndroidNDKSample.
April 18, 2025, v7.37.0
Changed rpath for Linux libraries to
$ORIGIN, which fixeslibLicenseSpringnot finding its dependencies provided by LicenseSpring.Added YubiKey support for licenses that require hardware key dongles:
On Linux and macOS targets, new libraries are placed in
bin/shared_HardwareKeyandbin/static_HardwareKey. Libraries inbin/sharedandbin/staticwork as expected without linking tolibykpiv.Linux versions targeting
armandppc64ledon't link toykpiv.On MSVC targets, new libraries are placed in
bin/dynamic_HardwareKey. We don't support static linking tolibykpiv.Added a new class
LicenseSpring::HardwareKeyOptionsused for fetching YubiKey serial numbers, and setting the YubiKey PIN and serial.Added a
LicenseSpring::HardwareKeyOptionssetter and getter toLicenseSpring::ExtendedOptionsAdded the corresponding C inteface for
LicenseSpring::HardwareKeyOptionsAdded a new exception
LicenseSpring::HardwareKeyExceptionand corresponding LicenseSpring error codes.
Added an optional
passwordparameter toLicense::borrowandLicenseHandler::borrowthat allows borrowing user-based licenses.Added
borrowFloatingLicenseWithPasswordandborrowFloatingLicenseTillWithPasswordfunctions to theLicenseHandlerC interface.
April 8, 2025, v7.36.0
Update OpenSSL to version 3.4.1
Update curl to version 8.12.1
The SDK now throws
LicenseSpring::OAuthExceptionwhen sending an unknownclient_idOAuth parameter.The SDK now throws
LicenseSpring::OAuthExceptionwhen sending a malformed OAuth token.Added
eInvalidClienterror code toLSErrorCode.Added
eOAuthTokenMalformederror code toLSErrorCode.Prolonged lifetime of the internal Logger singleton and the internal OpenSSL crypto provider by marking their constructor invocations with [[gnu::constructor]]. This change is relevant only for gcc and clang compilers.
Added overload for
BaseManager::getProductDetailsthat retreives product-level custom fields and filters products by environment string.Added overload for
LicenseHandler::getProductDetailsthat retreives product-level custom fields and filters products by environment string.Added
getProductDetailsWithCustomFieldsAndEnvfunction in C-interface forLicenseHandler.Added
ProductDetails::customFieldsgetter.Added
customFieldsgetter in C-interface forProductFields. SeeCSamplefor usage instructions.Updated
CppSampleandCSample.Changed code formatting rules in header files.
February 20, 2025, v7.35.0
Added OAuth client credentials authentication to the License API.
Added a factory function
Configuration::CreateOAuthfor OAuth authentication.Added a factory function
CreateLSConfigurationOAuthto the C interface.Added
Configuration::isOAuth,Configuration::getClientIdandConfiguration::getClientSecret.Added the same getters to the C interface.
Updated samples with OAuth, see
AppConfig.cppandAppConfig.cAdded
setCryptoProviderKeyandsetCryptoProviderSaltsetters to the C interface forExtendedOptions. Using the key setter is required for OAuth authentication.
February 14, 2025, v7.34.0
Added a new licensing agreement for the SDK.
Added overloads for online and offline activation functions, which enables sending device variables on licnese activation.
Added
License::isNegativeConsumptionAllowed,LicenseHandler::isLicenseNegativeConsumptionAllowedand corresponding C interface getters.Fixed memory leak in Windows hardware ID algorithm.
Added
License::orderStoreIdandLicenseHandler::getOrderStoreIdand corresponding C interface getters for the order store ID.Fixed a crash when calling
License::registerFloatingFeatureandLicense::releaseFloatingFeaturewith the offline floating server.Changed certificate bundle SSL verification to check multiple bundles on the filesystem.
Improved logging on failed SSL verification.
September 03, 2024, v7.33.0
Fixed license object not updating after license relink in
CppSample.Fixed
License::validityWithGracePeriodandLicense::validityWithGracePeriodUtcadding extra hour in case of DST.Added more verbose error messages for license file writing.
Added
ExtendedOptions::enableLicenseCorruptionCheck,ExtendedOptions::isLicenseCorruptionCheckEnabledandConfiguration::isLicenseCorruptionCheckEnabledand associated C interface functions, see SDK documentation for more details.Added
BaseManager::isLicenseFileCorruptedand associatedLicenseHandlerand C interface functions.Fixed hardware ID validation on cloud provider algorithms.
Added license signature validation to
License::localCheck.Added curl connection timeout setter and getter to
ExtendedOptions,Configuration, and corresponding C interfaces.Added new
UserLicenseandUserLicensesDataclasses to encapsulate information about multiple licenses of the same product assigned to a single user.Added
LicenseManager::getUserLicensesandLicenseHandler::getUserLicensesto retrieveUserLicensesDataobjects from the license API.Added a new
LicenseID::fromUserconstructor that takes a server-side license ID parameter fromUserLicensesData.Added
License::serverIdandLicenseHandler::getLicenseServerId.Updated the user-based C++ sample.
Changed return values of
LicenseHandler::licenseFileNameandLicenseHandler::licenseFilePathtoconst std::wstring&for C interface compatibility.Deprecated the CentOS 7 SDK build.
May 24, 2024, v7.32.0
Fixed generating hardware ID on AWS instances.
Improved memory handling of License API wrapper.
Added air-gapped license pre-provisioning through online activation.
Added
getDataLocation,setDataLocation,getLicenseFileName,setLicenseFileNamefunctions to the CLicenseHandlerinterface.Fixed offline license update throwing
ProductMismatchException.Implemented
ProxySettings::fetchProxySettingsthat tries to automatically fetch current user proxy settings
April 19, 2024, v7.31.0
Fixed certificate lookup on macOS.
Fixed documentation for
License::feature.Added
License::trialPeriodmember function, which returns the trial duration of the current license.Fixed
DeviceIDAlgorithm::WinCSProductIdfailing on Windows startup.Added more robust check of tampered VM detection DLL.
Froze the MSVC compiler version to 1936 (runtime library version 14.36.32532) in the v143 toolset Windows build.
February 24, 2024, v7.30.0
Added new hardware ID algorithm
DeviceIDAlgorithm::AutoIdWinCloudthat tries to computeCloudPlatformsIdwithWinCSProductIdas the fallback.Fixed
BaseManager::reconfigurecrashing the SDK.
February 09, 2024, v7.29.0
Added
License::transferLimitmember function, which returns the limit of license transfers between devices.Added
License::isDeviceTransferAllowedandLicense::isDeviceTransferLimitedmember functions.License::syncFeatureConsumptionnow correctly throws theNotEnoughConsumptionExceptionexception.Added optional
includeExpiredFeaturesparameter toLicense::check.Updated CppSample and CSample to print device transfer info.
Updated CppSample and CSample to get expired features.
January 08, 2024, v7.28.1
Fixed handling older non-floating features.
Fixed getting product details in the C SDK sample.
December 12, 2023, v7.28.0
Added handler for
license_user_activated_max_timeserror code, the SDK throwsLicenseNoAvailableActivationsExceptionin case of this error on license activation.Fixed floating in use count parsing for offline floating licenses.
Added floating feature registration and releasing.
Added floating feature watchdog.
Added optional flag
includeLatestVersiontoLicenseManager::getProductDetails.Implemented
ProductDetails::latestVersion()getter.Updated CppSample and CSample to handle floating features, floating feature watchdog and latest version.
October 11, 2023, v7.27.1
curl updated to v8.4.0
August 31, 2023, v7.27.0
Fixed issues in .xcodeproj files for C and Cpp SDK samples.
Improved MinGW SDK build, added VM detection dll.
Updated certificates bundle file.
Updated static libraries for Windows MSVC.
August 25, 2023, v7.26.1
Fixed false positive malware detection in Virtual Machine detection module.
Fixed false positives and improved detection of Hyper-V.
August 21, 2023, v7.25.0
Added CMake build for CppSample on Windows(MSVC).
Added logging to air-gap activation.
Implemented grace period feature.
Added
isGracePeriodStarted,gracePeriodEndDateTime,gracePeriodEndDateTimeUTC,gracePeriodHoursRemainingmethods toLicenseclass.Added
setGracePeriod,getGracePeriodmethods toExtendedOptionsclass.Added
RequestDateInvalidExceptionandeRequestDateHeaderInvaliderror code.Renamed methods related to subscription grace period to
License::isSubscriptionGracePeriodStarted,License::subscriptionGracePeriod.Fixed handling of absolute paths on MacOS and Linux.
Fixed issues with false positive VM detection, improved logging for VM detection module.
Fixed incorrect metadata deserialization issue.
OpenSSL updated to v3.1.2.
curl updated to v8.1.2.
July 14, 2023, v7.25.0
SSL certificate verification now enabled by default
Moved verification of confirmation code to the
activateAirGapLicensemethodAdded
AirGapActivationException, it occurs when confirmation code verification failsAdded
LicenseHandler::isLicenseAirGappedandLicense::isAirGappedmethodsAdded
LicenseHandler::getLicensePolicyIdandLicense::policyIdmethodsAdded improvement: loading license if exist when changing license data location, see
setDataLocationAdded signature verification when handling license borrowing response
Added missing options to Configuration and ExtendedOptions structs for C-interface
Added to C-interface
LSExtendedOptionssetAlternateKey function that accepts C-stringAdded subset of embedded certificates, improved logic for SSL certificate verification and lookup
Added support for Schannel TLS backend for curl on Windows
Added support for Secure Transport TLS backend for curl on macOS
Implemented feature of loading ca certificates from OS and ca bundle file
Implemented caching of product details, added
License::productDetailsmethodImplemented air-gap license deactivation, added
License::deactivateAirGapandLicense::getAirGapDeactivationCodemethodsUpdated AirGapQtSample to handle air-gap deactivation
Fixed air-gap trial license detection issue
Fixed confirmation code verification issue for air-gap licenses
Fixed signature verification issue when using older versions of libcurl
Fixed signature verification issue for older API
Fixed prepending slash path issue when setting license data location
Fixed issues with Unicode symbols in license file path for macOS and Linux
Improved exception handling
Improved alternative device id creation on Linux
Improved air-gap activation security
June 12, 2023, v7.24.0
Added metadata field for
ProductDetails,Customer,LicenseandLicenseFeatureclasses.Added logging and handling exceptions to license watchdog.
Added
WatchdogException, it occurs in case creating watchdog thread failed.Added
ExtendedOptions::setAlternateKeymethod that accepts string.Added minor improvements and logging for offline activation.
OpenSSL updated to v1.1.1.21(u)
curl updated to v8.1.2
Fixed issue of creating a log file when logging is disabled.
Security patch, that address vulnerability of bypassing license signature verification.
May 17, 2023, v7.23.0
Updated SDK demo samples. Implemented better handling of floating licenses in WinSample, CSample and CppSample.
Implemented unlimited consumption feature. Added
License.isUnlimitedConsumptionAllowed,LicenseFeature.isUnlimitedConsumptionAllowedandLicenseHandler.isLicenseUnlimitedConsumptionAllowedmethods.Fixed issue of saving local license after revoking floating license.
Fixed issues with error handling for offline and air-gap activation.
Fixed OS version detection issue for Windows 11.
April 27, 2023, v7.22.0
Improved security check for offline license activation and refresh, implemented offline signature verification.
Improved error handling for offline license activation and refresh, the SDK will throw more specific exceptions in case of errors.
OpenSSL updated to v1.1.1.20(t)
curl updated to v8.0.1
Updated JSON for Modern C++ to v3.11.2
Fixed issue of json serialization when license data contains invalid UTF-8 bytes.
April 04, 2023, v7.21.0
Included cURL and OpenSSL header and lib files.
Added README file with cURL and OpenSSL version information.
Added SDK version to log file.
Added new device id algorithms
DeviceIDAlgorithm::Gen2andDeviceIDAlgorithm::AutoIdGen2.Improved security for
License::updateOfflinemethod.Fixed several issues with offline activation.
Fixed
LicenseManager::relinkLicensemethod.Fixed issue of encrypting long strings.
February 08, 2023, v7.20.0
Added
ApiKeyExceptionand corresponding error codeseInvalidApiKey,eReadOnlyApiKey,eRevokedApiKeyandeApiKeyProductNotAllowed.Added
FloatingTimeoutExpiredException.Implemented
License::maxBorrowTimemethod.Implemented grace period feature for Subscription licenses. See
License::gracePeriodandLicense::validityWithGracePeriod.Implemented
License::isGracePeriodStartedmethod.Fixed issue of auto-revoking floating license at app exit when using static
LicenseHandlerobject.Fixed error handling for successful responses during license activation and online check.
Fixed issue of missing mac SDK version information.
Improved floating expiration logic and local license check.
Removed
License::signature, implemented faster loading and saving of local license.
January 09, 2023, v7.19.0
Implement support for duration fields in license policy file for Air-gap activation.
Implemented a couple of alternative device id algorithms for Windows. See
DeviceIDAlgorithm::WinCSProductIdandWinCryptographyId.Implemented
relinkLicensemethod.Added
License::stopLicenseWatchdogmethod, same added forLicenseHandlerand C-interface.Fixed issue with incorrect rpath for mac universal dynamic libs.
Improved error handling in case license transfer is limited or not allowed.
October 24, 2022, v7.18.0
Improved security, implemented license signature v2 verification.
Implemented
setupLicenseWatchdogfunction for C-interface.Implemented SSO activation using auth code.
For Windows builds VM detection code is moved to satellite DLL.
Fixed issue of incorrect return value for
LicenseHandler::getMaintenanceDaysRemainingmethod.Fixed several problems with Linux machine id in some of the distributions and Docker containers.
Updated SSOSample and CSample.
Updated documentation.
Note:
Starting from v7.18.0 the VM detection module for Windows has been moved to LSVMD.dll. This dll is present in the SDK zips. Customers need to distribute this dll with their applications only if they use the Virtual Machine Detection detection for Windows, it can be simply ignored otherwise and not distributred.
The LicenseSpring C++ SDK loads this dll at runtime when checking if current Windows is a Virtual Machine. There is no need to link against it when building your application. LSVMD.dll cannot be used outside of LicenseSpring and the SDK checks whether the dll is tampered before using functions from it.
August 15, 2022, v7.17.0
FloatingClient::borrowrenamed toFloatingClient::borrowLicense.Implemented getting instance id for cloud platforms: AWS, Azure, and GCP. Added
DeviceIDAlgorithm::CloudPlatformsIdandDeviceIDAlgorithm::AutoId.Fixed issue of virtual methods in
LicenseFeatureclass.Implemented error handling for 401, 403, 407 http errors. See
AuthorizationExceptionandeAuthorizationErrorerror code.Added device variables to offline deactivation file.
July 22, 2022, v7.16.0
Implemented methods
getAirGapActivationCode,verifyConfirmationCodeandactivateAirGapLicenseinLicenseManagerandLicenseHandlerclasses for activation of air gap licenses.Added
DeviceIDAlgorithmenum andExtendedOptions::setDeviceIdAlgorithmfunction.DeviceIDAlgorithm::Gen1option can be useful for air gap activation.Added
Configuration::isSSLCheckEnabledandExtendedOptions::enableSSLCheck, see SDK documentation for more details.Added
Source: sdkheader.Added
FloatingClient::borrowmethod.Added AirGapQtSample project.
Improved SSOSample, added support for authorization with default browser.
Implemented sending optional param
sdk_lang.Implemented
License::isBorrowedandLicenseHandler::isLicenseBorrowedmethods.Fixed virtual destructors and header files for CryptoProvider and LicenseStorage.
Fixed instantiating locale issue for older libcxx versions.
Fixed several issues and improved SDK <-> FloatingServer integration.
Updated SDK documentation.
May 31, 2022, v7.15.0
Improved integration with Floating server.
Updated SDK documentation.
Added
LicenseID::setPasswordmethod.Added methods for consumption licenses:
License::consumptionPeriod,License::isResetConsumptionEnabled,LicenseHandler::isResetLicenseConsumptionEnabled,LicenseHandler::getLicenseConsumptionPeriod.Added methods for consumption license features:
LicenseFeature::maxOverages,LicenseFeature::isOveragesAllowed,LicenseFeature::consumptionPeriod,LicenseFeature::isResetConsumptionEnabled.Fixed typo in
Configuration::isLoggingEnabledmethod.Fixed detection of OS name for Windows 11.
May 12, 2022, v7.14.0
Implemented license borrowing feature. See
License::borrow,LicenseHandler::borrowFloatingLicense.Added
License::floatingEndDateTime, now floating license expires when floating period ends.Added
LicenseHandler::registerFloatingLicensemethod, it is equivalent to online license check for cloud floating license.Added
BorrowLicenseExceptionandeBorrowLicenseError,eBorrowingNotAllowederror codes.Added
Configuration::setUserInfoandConfiguration::getUserInfomethods for passing generic user defined data to the backend.Added
LicenseID::trim, license identifier will be automatically trimmed if you useLicenseID::from...function.Fixed several minor bugs and W4 warnings, stability and performance improvements.
April 19, 2022, v7.13.0
Implemented new API set for managing device variables. See
DeviceVariable,License::getDeviceVariables,License::addDeviceVariableetc. Now device variables a being stored along with local license, managing device variables available both locally and on the backend. See SDK documentation for more details.Fixed problem of auto-revoking floating license.
Implemented adding consumption for offline-floating license.
Added
License::registerFloatingLicensemethod.Updated
TestFloatingServerfunction for CppSample.Fixed name conflict with Google Test Framework in EncryptString.h
March 31, 2022, v7.12.0
Added SDK build for VC143 (Visual Studio 2022)
Improved network communication security.
Added address info data to the
Customerclass (address, city, state, country, postcode).Implemented ability to set desired license policy when requesting trial license. See
LicenseManager::getTrialLicense.Fixed issues with
FloatingClient::registerLicenseandFloatingClient::isOnline.
March 16, 2022, v7.11.0
Implemented Single sign-on (SSO) feature. See
LicenseManager::getSSOUrlandLicenseManager::activateLicenseusing token.Implemented
ExtendedOptions::setAlternateKey,ExtendedOptions::setAlternateServiceURLmethods.Added SSOSample.
Added
FileStorageWithLockimplementation for Linux and macOS.Added
License::startDatemethod andCannotBeActivatedNowException, see SDK docs for more details.Added new exceptions:
SSOException,SSOTokenExceptionandTrialNotAllowedException.Fixed issue of incorrect license status in case license is copied from other device (in case of device id mismatch).
November 17, 2021, v7.10.0
Added
LicenseUser::isInitialPasswordmethod.Fixed issue with license file path on Linux and macOS.
Improved performance of API requests.
November 3, 2021, v7.9.0
Added new class
FileStorageWithLockfor license synchronization between threads and processes.Added data check when sending device variables.
Improved support of handling multiple licenses, added
BaseManager::reloadLicensemethod.Improved loading and saving local license to file, updated documentation.
Improved mutex management in
LicenseFileStorageExclass.Fixed bad locale name issue on some platforms.
October 04, 2021, v7.8.0
Added new methods
License::isAutoReleaseSetandLicense::setAutoRelease, the same forLicenseHandler.Added new class
LicenseUser, see alsoLicense::licenseUser. Implemented getting license user info when activating or checking a license.Implemented new API request
LicenseManager::getLicenseUsersAdded SDK sample for Qt Framework (https://qt.io), see samples/QtSample.
Added SDK sample for JUCE Framework (https://juce.com), see samples/JUCESample.
Fixed issue with removing local license,
clearLocalStoragemethod now also removes license data from memory.Fixed issue with localized dates in requests signature.
September 15, 2021, v7.7.0
Added new methods to
LicenseHandlerclass, seeLicenseHandler::dataLocationandLicenseHandler::setLicenseFileName.Added new documentation for
BaseManagerclass.Improved LicenseStorage classes, added new class
LicenseFileStorageBase.Fixed logging issues.
September 01, 2021, v7.6.0
Added new classes
CryptoProviderandDefaultCryptoProvider. Now it is possible to set crypto key or salt, or implement customCryptoProvider.Added new license data fields, see
License::transferCountandLicense::floatingInUseCount.Added ability to reset local consumption when updating license offline, see
License::updateOffline.Implemented new license storage model. See
LicenseStorageabstract class andLicenseMemoryStorage,LicenseFileStorageclasses. Now it possible to store local license in custom locations like your DB, Windows registry, etc, by implementingLicenseStorage.Implemented interprocess synchronization for local license, see
LicenseFileStorageExclass.Implemented security improvements for offline activation (offline activation guards). See
ExtendedOptions::enableGuardFile.Improved
FloatingClient, see changes inFloatingClient::register/unregisterandLicense::floatingClientId.Improved handling of
InstallationFiles, added helper structInstallFileFilter, updatedLicenseHandlerand C-interface.Improved VM detection, fixed false positive detections.
August 02, 2021, v7.5.0
LicenseManager::getTrialLicensenow returnsLicenseID, that incudes initial password for user-based products.Implemented
License::updateOfflineandLicenseHandler::updateOfflinefunctions, that allow offline license updates.Added new fields to
InstallationFileclass: Environment, Eula Link, Release Notes Link, Size and Channel.Implemented filtering of installation files by Environment and Channel.
Added local consumption information to offline deactivation files.
Added
ClockTamperedExceptioninstead ofDateTimeCheatingException.Fixed issue when deleting floating license.
June 9, 2021, v7.4.0
Implemented new classes for interaction with on-premise floating server. See
FloatingClient,FloatingServerInfo.Added new members to
InstallationFileclass, that allows implementing of intermediate updates. SeeInstallationFile::releaseDateandInstallationFile::requiredVersion.Security improvements, encrypted internal SDK data, added header file for strings encryption see EncryptString.h.
Added SDK build for Mac ARM64 target architecture.
Improved error handling.
Updated JSON for Modern C++ to v3.9.1
OpenSSL updated to v1.1.1k
curl updated to v7.77.0
March 17, 2021, v7.3.0
Implemented feature for requesting overage for consumption licenses, see
License::syncConsumption.Added new class
NetworkInfoand implemented feature allowing override IP, MAC and host name determined by default. SeeExtendedOptions::overrideNetworkInfo.Fixed false positive detection of Windows VMs.
Improved and optimized VM detection for Windows.
Fixed memory leak issue in static library due to missing OpenSSL resources cleanup in curl.
Improved WinSample.
Removed
OptionalPropertiesclass.
February 26, 2021, v7.2.0
Implemented expiry date for
LicenseFeatureclass, seeLicenseFeature::expiryDateandLicenseFeature::isExpired.Fixed COM initialization issue in VM detection module.
SDK build for Linux with GCC 7.5 now has no dependency to std::filesystem.
Fixed static linkage issue in CSample.
Improved WinSample.
February 15, 2021, v7.1.0
Added new feature for storing user data inside license file, see
License::addUserData,License::removeUserDataandLicense::userDataAdded new class
OptionalPropertiesfor sending optional parameters when checking license.Allowed decreasing consumption, see new methods
License::updateConsumptionandLicense::updateFeatureConsumption.curl updated to v7.75.0
Created SDK build for Linux compiled with GCC 7.5
Added Xcode proj files for SDK samples.
Build for macOS now supports macOS 10.12 Sierra and latter.
January 19, 2021, v7.0.0
Implemented C-interface, see header files inside include folder and CSample.
Main namespace was renamed to
LicenseSpring.Most of the classes have been reworked and improved.
Fixed
License::daysRemainingcounter.Added new class
LicenseID, generalized API calls for user-based and key-based products.Added Documentation.
Removed Management API (classes
ManagementService,LicenseDetails,OrderDetails) from the SDK, if you need access to Management functionality please use API directly or through the Java SDK.
November 20, 2020, v6.2.0
Implemented change password feature for user-based Products. See
LicenseManager::changePasswordandLicense::changePassword.Added helper method
License.maintenanceDaysRemaining.Improved error handling when reading/writing license.
Dynamic libraries have been digitally signed.
Fixed minor linking issues on Linux.
Fixed static libraries for Windows, disabled /GL compiler switch.
Fixed redirection issue.
cUrl updated to v7.72.0
June 16, 2020, v6.1.0
Implemented new
LicenseHandlerclass, it is now part of the LicenseSpring library.Fixed LicenseWatchdog timeout issue.
Fixed license data update during online check.
Experimental filesystem replaced with std filesystem for Linux build.
A few methods of the
LicenseManagerclass were renamed.
June 8, 2020, v6.0.0
Implemented VM Detection feature. See
License::isVMAllowed,LicenseSpringExtendedOptions::enableVMDetectionandLicenseSpringConfiguration::isVM.Implemented Floating licensing and LicenseWatchdog. See
License::isFloatingandLicense::setupLicenseWatchdog.Implemented Overages feature for Consumption license type. See
License::isOveragesAllowedandLicense::maxOverages.Added new classes
BaseManagerandManagementService. Functionality divided into management and en-user license handling.Added new exception types
VMIsNotAllowedException,MaxFloatingReachedExceptionandDeviceBlacklistedException.Updated
LicenseDetailsandOrderDetailsclasses, added new data fields.Thread safety and reliability improvements.
Architecture changes and enhancements, LicenseManager no longer a singleton.
Fixed TLS version issue.
Third party libs updated to latest stable versions (OpenSSL 1.0.2u, cURL 7.70+).
May 5, 2020, v5.5.2
Fixed hostname issue for Windows systems.
Fixed problem with
ProxySettings.Added new exception type
LicenseNoAvailableActivationsException.
April 28, 2020, v5.5.1
Fixed consumption features update.
Improved error handling.
April 24, 2020, v5.5.0
Implemented increase feature consumption in offline mode.
Improved consumption handling.
Added new methods
License::updateFeatureConsumption,LicenseFeature::localConsumption.Added helper method
License::feature, it returns feature by code.Improved error handling and added new exception class
InvalidLicenseFeatureException.
April 10, 2020, v5.4.4
Improved error handling and fixed a few minor bugs.
Added new exceptions
MissingEmailExceptionandInvalidOrderIDException.
March 31, 2020, v5.4.3
Added new helper method
LicenseManager::isOnline, for more details see header file.Improved
License::increaseFeatureConsumption, removed redundant check and increased performance.For Windows default license file path changed to %localappdata%\LicenseSpring%ProductCode%\license.key If you use default license path in your app license will be transferred to new location by the SDK automatically.
Added
UnknownLicenseSpringExceptionclass.Improved
LicenseHandlerclass.License:sendCustomDatarenamed toLicense::sendDeviceData.Added new build for Linux that compatible with old ABI.
March 25, 2020, v5.4.1
Added
LicenseFeature::name, now it's possible to get License feature name not only code.Added helper method
License::isMaintenancePeriodExpired.Fixed deactivation bug, timesActivated value wasn't updated properly. Improved online deactivation, see
License::deactivate.Fixed hardware ID issue for Windows systems where system disk or other piece of hardware could not be determined.
Fixed linking errors for Linux build.
March 04, 2020, v5.4.0
Added new
LicenseManager::getTrialLicensemethod. It accepts Customer ptr, when issuing trial license also new customer will be created or license will be assigned to existing customer.Added
License::lastCheckDateUtcand fixedLicense::daysRemainingmethod, see header file for more details.Added logging, see
LicenseSpringExtendedOptions::enableLogging.Improved hardware ID detection for Linux systems.
Fixed issue of consumption features. Consumption changes were not stored to local license file properly.
Fixed Unreal Engine compatibility issues,
ProxySettingsandLicenseSpringExtendedOptionsbecame classes instead of structs.Stability and performance improvements.
January 28, 2020, v5.3.1
Fixed issue with company data member in Customer class.
Added
OrderDetails::setOrderIDmethod.
January 27, 2020, v5.3.0
Added license owner information, see
License::ownerand console sample.Fixed Hardware ID issue in case of foreign (not english) locale.
Fixed issue of consumption license features.
Added exception in case HOME system variable is unavailable (applicable for Linux and Mac OS X).
December 27, 2019 v5.1.0
Added new API request
LicenseManager::getProductDetails, new classProductDetails.Added
LicenseSpringConfiguration::getLicenseSpringAPIVersionmethod. It returns API version that SDK uses.API version field added to offline activation/deactivation.
LicenseManager::getTrialKeyreplaced withLicenseManager::getTrialLicense.Improved
LicenseManager::createOrder, new classLicenseDetails.Improved console sample, now demonstrates both user-based and key-based licensing approaches.
December 11, 2019, v5.0.0
User-based licensing.
New classes
CustomerandOrderDetails.Added requests for creating licenses and orders. See
LicenseManager::createLicenseandLicenseManager::createOrder.Consumption license features. See
License::features,License::increaseFeatureConsumptionandLicenseFeatureclass.Added new methods
License::maxActivationsandLicense::timesActivated.Added ability to track MAC address.
CollectHostNameAndLocalIPrenamed toCollectNetworkInfo.LicenseHandlerSDK wrapper class, it helps handle SDK exceptions in one place.New classes for managing app versions, see Version.h.
Improved samples.
Stability and performance improvements.
September 24, 2019, v4.6.0
New API request
License::sendCustomData, it allows sending custom data to the platform. Data will be linked to a device, so on the platform see device variables.Changed license status logic, now it's possible to check whether license is active even if it was disabled. See
License::isActive,License::isEnabledandLicense::status.
September 19, 2019, v4.5.3
Fixed online license check and hardware ID issue
New helper class
Version, helps compare app versions, during update for exampleMinor performance improvements and improved WTL sample
September 15, 2019, v4.5.2
Fixed
License::isOfflineActivatedmethodImproved SDK sample apps
September 12, 2019, v4.5.1
Improved error handling, added new error codes
eLicenseDisabledandeLicenseInactiveLicenseExpiredExceptionhas been removed. Now in case of expired license the SDK throwsLicenseStateExceptionwith eLicenseExpired error codeFixed online license check
Fixed offline activation in UI sample
September 9, 2019, v4.5.0
Added new feature - Custom product (license) data fields, see
License::customFieldsand CustomField.hAll exceptions now have error code, see LicenseSpringErrorCodes.h
Added new sample with GUI, it's native Windows app based on WTL (Windows Template Library)
Added
License::MaxDaysRemainingValueconstantFixed sending of optional parameters app name and version
August 19, 2019, v4.4.7
Added new API method
License::isOfflineActivated, returns true if license was activated in offline mode.Added new API method
License::isActivefor convenience, equivalent tostatus() == LicenseStatus::Active.Fixed a few minor bugs,
License::isExpirednow returns correct value for inactive or disabled license.
July 31, 2019, v 4.4.6
Added ability to control network timeout interval
Added ability to set up proxy using
ProxySettings
July 26, 2019, v 4.4.5
Fixed expiry policy for subscription license type
Fixed license re-enabling issue
Fixed missing config.h/config.cpp for Linux and Mac samples
LicenseManager::disposerenamed todeinitialize
July 9, 2019, v 4.4.4
Fixed minor memory leak in ErrorHandler class
Fixed a few compiler and linker warnings
Stability and performance improvements
July 8, 2019, v4.4.3
Added static MD configuration
Fixed a few memory leaks
Stability and performance improvements
June 20, 2019, v4.4.2
Fixed access violation crash when using SDK as a plugin for Unreal Engine
Fixed Hardware ID issue, now it's accessible for reading
Build for VC142 (Visual Studio 2019)
OpenSSL and cUrl updated to latest stable builds
Stability and performance improvements
June 12, 2019, v4.4.1
New API method
LicenseManager::dispose, it helps free up SDK resources on demandStability and performance improvements
May 11, 2019, v4.3.0
New Hardware ID calculation algorithm, much more faster and secure
Consumption licensing, new methods
increaseConsumptionCounter,totalConsumptions,maxConsumptionsand new exception typeNotEnoughConsumptionException. See sample app for details.Fixed bug of handling license check response
May 8, 2019, Linux v4.2.1
Removed redundant dependencies
Fixed CMake scripts
Fixed relative path for shared libs
April 23, 2019, v4.2.1
Ability to set custom hardware ID
LicenseSpringExtendedOptions, all optional SDK configuration properties now brought together in ExtendedOptions class, see LicenseSpringConfiguration.h for detailslibanddllfolders changed tostaticanddynamicaccordinglyImproved networking and error handling
April 15, 2019, v4.2.0
License status,
isActivenow replaced withstatusfor the License class, for more details see LicenseStatus.hImplemented getting of local IP address
New and faster method of getting OS version info
Improvements for
LicenseTypeclass, new comparison operators and constructor
April 8, 2019, v4.1.2
Separate release for VC140 (Visual Studio 2015)
Fixed handling of max date time (applicable to validity period of perpetual license or not set maintenance period)
Fixed project files for the SDK and sample apps
SDK dependencies (OpenSSL and cURL) updated to latest stable versions
Added script for building dependencies from sources
Last updated
Was this helpful?