LicenseSpring C++ SDK
Easily add Software Licensing to your application
ExtendedOptions.h
Go to the documentation of this file.
1#ifndef LS_EXTENDED_OPTIONS_H
2#define LS_EXTENDED_OPTIONS_H
3
4#ifdef _MSC_VER
5#pragma once
6#pragma warning(push)
7#pragma warning(disable : 4251)
8#endif
9
10#include <vector>
11#include "APIDef.h"
12#include "CryptoProvider.h"
13#include "PODTypes.h"
14
15namespace LicenseSpring
16{
21{
22public:
24 NetworkInfo() = default;
25
28
31 void setIp(const std::string &ip);
32
35 const std::string &ip() const;
36
39 void setMac(const std::string &mac);
40
43 const std::string &mac() const;
44
47 void setHostName(const std::string &hostName);
48
51 const std::string &hostName() const;
52
53private:
54 std::string m_localIP;
55 std::string m_hostName;
56 std::string m_macAddress;
57};
58
61{
62public:
64 ProxySettings() = default;
65
70 ProxySettings(const std::string &proxy, const std::string &user, const std::string &password);
71
74
85 bool fetchProxySettings(const std::string &serviceURL, const std::string &credentialTarget,
86 bool throwExceptions = false);
87
90 void setProxyUri(const std::string &uri);
91
94 const std::string &getProxyUri() const;
95
98 void setUser(const std::string &user);
99
102 const std::string &getUser() const;
103
106 void setPassword(const std::string &password);
107
110 const std::string &getPassword() const;
111
114 bool isValid() const;
115
116private:
117 std::string m_proxyUri; // e.g. "http://local.example.com:1080"
118 std::string m_user;
119 std::string m_password;
120};
121
127{
128public:
131
134
140 static std::vector<std::string> ListAvailableKeys();
141
145 void setTargetSerial(const std::string &serial);
146
149 const std::string &getTargetSerial() const;
150
153 void setPin(const std::string &pin);
154
157 const std::string &getPin() const;
158
159private:
160 std::string m_targetSerial;
161 std::string m_pin;
162};
163
166{
167public:
170
173 ExtendedOptions(const std::wstring &licenseFilePath);
174
179 ExtendedOptions(const std::wstring &licenseFilePath, const std::string &hardwareID,
180 const ProxySettings &proxy = ProxySettings());
181
184
189 void setLicenseFilePath(const std::wstring &filePath);
190
194 const std::wstring &getLicenseFilePath() const;
195
198 void setHardwareID(const std::string &ID);
199
202 const std::string &getHardwareID() const;
203
207
212
218 void collectNetworkInfo(bool collect);
219
223
231 void enableLogging(bool enable);
232
235 bool isLoggingEnabled() const;
236
241 void enableGuardFile(bool enable);
242
245 bool isGuardFileEnabled() const;
246
251 void enableVMDetection(bool enable);
252
256
262 void enableSSLCheck(bool enable);
263
266 bool isSSLCheckEnabled() const;
267
274 void setUseNativeTLS(bool value);
275
279 bool isNativeTLSEnabled() const;
280
287
292
297 void enableHardwareKey(bool enable);
298
303
309 void setGracePeriod(uint32_t value);
310
313 uint32_t getGracePeriod() const;
314
318 void setNetworkTimeout(long timeout);
319
322 long getNetworkTimeout() const;
323
327 void setConnectTimeout(long timeout);
328
331 long getConnectTimeout() const;
332
336 void setProxySettings(const ProxySettings &settings);
337
341
344 void overrideNetworkInfo(const NetworkInfo &networkInfo);
345
349
354
358
364 void setAlternateServiceURL(const std::string &URL);
365
368 const std::string &getAlternateServiceURL() const;
369
375 void setAlternateKey(const std::string &key);
376
380 void setAlternateKey(const std::vector<int32_t> &key);
381
386 void setAlternateKey(const int32_t *key, std::size_t size);
387
390 const std::string &getAlternateKey() const;
391
397
401
402private:
403 std::wstring m_licenseFilePath;
404 std::string m_hardwareID;
405 std::string m_serviceURL;
406 std::string m_key;
407 bool m_collectNetworkInfo; // false by default
408 bool m_enableVMDetection; // false by default
409 bool m_enableGuardFile; // true by default
410 bool m_enableSSLCheck; // false by default
411 bool m_useNativeTLS; // see isNativeTLSEnabled
412 bool m_enableLicenseCorruptionCheck; // false by default
413 bool m_enableHardwareKey; // false by default
414 uint32_t m_gracePeriod; // in hours, default value is 48
415 long m_networkTimeout; // in seconds, default is 5 seconds
416 long m_connectTimeout; // in seconds, default is 7 seconds
417 ProxySettings m_proxySettings; // by default doesn't use any proxy
418 NetworkInfo m_networkInfo;
419 DeviceIDAlgorithm m_deviceIDAlgorithm;
420 CryptoProvider::ptr_t m_cryptoProvider;
421 HardwareKeyOptions m_hardwareKeyOptions;
422};
423
424} // namespace LicenseSpring
425
426#ifdef _MSC_VER
427#pragma warning(pop)
428#endif
429
430#endif // LS_EXTENDED_OPTIONS_H
#define LS_API
Definition: APIDef.h:23
DeviceIDAlgorithm
Type of Device ID algorithm used by the SDK.
Definition: PODTypes.h:119
std::shared_ptr< CryptoProvider > ptr_t
Class for storing useful settings that the Configuration object will inherit.
uint32_t getGracePeriod() const
Getter for grace period.
const std::string & getHardwareID() const
Get hardware ID.
~ExtendedOptions()
Destructor for ExtendedOptions.
void setUseNativeTLS(bool value)
Enable or disable native TLS for curl.
bool isLicenseCorruptionCheckEnabled() const
Checker for whether encrypted license data corruption checking is enabled.
bool isGuardFileEnabled() const
Checker for whether enableGuardFile() is enabled.
void overrideCryptoProvider(CryptoProvider::ptr_t cryptoProvider)
Setter for CryptoProvider.
void collectNetworkInfo(bool collect)
Collect network information.
DeviceIDAlgorithm getDeviceIdAlgorithm() const
Get device (hardware) id calculation algorithm.
const std::wstring & getLicenseFilePath() const
Get license file path.
void setGracePeriod(uint32_t value)
Setter for grace period.
void setHardwareKeyOptions(const HardwareKeyOptions &options)
Sets the hardware key (YubiKey PIV) specific options.
void overrideNetworkInfo(const NetworkInfo &networkInfo)
Setter for NetworkInfo.
bool isHardwareKeyEnabled() const
Checker for whether requests should be sent with a hardware key signature.
void setConnectTimeout(long timeout)
Setter for connect timeout, used for CURLOPT_CONNECTTIMEOUT option.
CryptoProvider::ptr_t getCryptoProvider()
Getter for CryptoProvider.
void setProxySettings(const ProxySettings &settings)
Setter for proxy settings.
bool isLoggingEnabled() const
Checker for whether enableLogging() is enabled.
void setLicenseFilePath(const std::wstring &filePath)
Set license file path.
bool isNativeTLSEnabled() const
Checker for whether native TLS for curl enabled or not.
void setHardwareID(const std::string &ID)
Setter for hardware ID.
bool isVMDetectionEnabled() const
Checker for whether enableVMDetection() is enabled.
void enableGuardFile(bool enable)
Enable guard file.
void setAlternateKey(const std::vector< int32_t > &key)
Set alternate public key.
void enableVMDetection(bool enable)
Enable VM detection.
long getNetworkTimeout() const
Getter for network timeout.
const NetworkInfo & getNetworkInfo() const
Getter for network info.
void enableHardwareKey(bool enable)
Enable or disable sending requests with a hardware key signature.
void enableSSLCheck(bool enable)
Enable or disable SSL certificate verification.
long getConnectTimeout() const
Getter for connect timeout, used for CURLOPT_CONNECTTIMEOUT option.
const std::string & getAlternateKey() const
Getter for alternate License API URL.
const ProxySettings & getProxySettings() const
Getter for proxy settings.
void setAlternateServiceURL(const std::string &URL)
This method can be used if you are planning to deploy self-hosted server.
ExtendedOptions(const std::wstring &licenseFilePath, const std::string &hardwareID, const ProxySettings &proxy=ProxySettings())
Constructor for ExtendedOptions.
void enableLicenseCorruptionCheck(bool enable)
Enable or disable encrypted license data corruption checking.
void setDeviceIdAlgorithm(DeviceIDAlgorithm algorithm)
Allows to choose device (hardware) id calculation algorithm.
ExtendedOptions(const std::wstring &licenseFilePath)
Constructor for ExtendedOptions.
bool isCollectNetworkInfoEnabled() const
Checker for whether collectNetworkInfo() is enabled.
void enableLogging(bool enable)
Enable logging.
ExtendedOptions()
Default constructor for ExtendedOptions.
const std::string & getAlternateServiceURL() const
Getter for alternate License API URL.
void setNetworkTimeout(long timeout)
Setter for network timeout.
void setAlternateKey(const int32_t *key, std::size_t size)
Set alternate public key.
bool isSSLCheckEnabled() const
Checker for whether SSL certificate verification is enabled.
void setAlternateKey(const std::string &key)
Set alternate public key. This method can be used if you are planning to deploy self-hosted server.
const HardwareKeyOptions & getHardwareKeyOptions() const
Gets the configured hardware key (YubiKey PIV) options.
Class for managing Hardware Key (YubiKey PIV) specific options.
const std::string & getTargetSerial() const
Gets the configured target YubiKey serial number.
~HardwareKeyOptions()=default
Default destructor.
const std::string & getPin() const
Gets the configured PIN for the YubiKey.
void setPin(const std::string &pin)
Sets the PIN required to access the PIV functions on the target YubiKey.
HardwareKeyOptions()=default
Default constructor. Initializes empty target serial and PIN.
static std::vector< std::string > ListAvailableKeys()
Lists the serial numbers of all connected YubiKeys with PIV support.
void setTargetSerial(const std::string &serial)
Sets the serial number of the target YubiKey to be used for signing.
Class for storing a device's network information.
const std::string & mac() const
Getter for MAC address.
void setIp(const std::string &ip)
Setter for IP address.
void setHostName(const std::string &hostName)
Setter for host name.
NetworkInfo()=default
Constructor for networkInfo.
const std::string & ip() const
Getter for IP address.
const std::string & hostName() const
Getter for host name.
void setMac(const std::string &mac)
Setter for MAC address.
~NetworkInfo()
Destructor for networkInfo.
Class for storing settings when using a proxy server.
void setUser(const std::string &user)
Setter for proxy user.
bool fetchProxySettings(const std::string &serviceURL, const std::string &credentialTarget, bool throwExceptions=false)
Automatically fetch proxy URI and credentials.
~ProxySettings()
Destructor for proxy settings.
const std::string & getProxyUri() const
Getter for proxy URI.
const std::string & getPassword() const
Getter for password.
const std::string & getUser() const
Getter for proxy user.
bool isValid() const
Checker for if proxy URI is specified (i.e. not empty).
void setProxyUri(const std::string &uri)
Setter for proxy URI.
void setPassword(const std::string &password)
Setter for password.
ProxySettings(const std::string &proxy, const std::string &user, const std::string &password)
Constructor for proxy settings.
ProxySettings()=default
Default constructor for proxy settings.