Hi and thank you for your help
We have an application that might be installed both in online and offline environments. The application is dockerized therefore we built up a pretty complex structure of scripts that manages the activation for both scenarios.
In some (but not all) installations, we want to provide a timed license, meaning that after a certain date the application must stop working.
I know limelm offers the timed trial option, but its introduction would require the refactoring of the complex structure of scripts and we prefer to examine the options we have with the standard activation procedure paramount.
We work with Ubuntu 18.04, the application is written in C and we are using TurboActivate 4.3.1.0 but we conducted tests also with 4.4.4.0. Given that, our questions are:
1) How can we detect that the user is changing the system date to gain more time? We added a custom field expire_date to the license that is filled only if required by the installation. We experimented the function TA_isDateValid()
that should return TA_FAIL
if the date expires (it works), or the system dates have been tampered. To test the latter we tried to change system time up to one year backward but the function returns TA_OK
instead. The return of TA_FAIL
due to tampering it is critical, especially in the offline scenario. We also experimented with TA_GenuineDays()
that should set DaysRemaining
to 0 if the system time has been tampered, but it is set to more than 300 if we bring the system time one year backward. In to online scenario we can rely on TA_isGenuine[Ex]()
that returns TA_E_INET_TLS
and deactivate the product in case of time tampering but, of course, it is of no use in case we are offline
2) Is there a simple and reliable, client-side, way to determine whether the application was activated online or offline using the TurboActivate interface? Up until now we are using a license's custom field of type checkbox, ticked if the activation was offline.
Thank you in advance