Error after offline activation

After offline activation, an error will result in license check.
Could you tell me why?

This phenomenon occurs only in some people, and the person who gets out has expired trial. People within the deadline will not occur.

The license checking function (ResultType.Expired is returned) is as follows:

public ResultType Verify(LicenseUserSetting setting, string proxy)
{
var status = LexActivator.SetProductFile(m_ProductFilePath);
if (status != LexActivator.LA_OK)
{
throw new InternalLicenseErrorException(status);
}
status = LexActivator.SetVersionGUID(m_VersionGuid, m_Permission);
if (status != LexActivator.LA_OK)
{
throw new InternalLicenseErrorException(status);
}
status = LexActivator.SetUserLock(true);
if (status != LexActivator.LA_OK)
{
throw new InternalLicenseErrorException(status);
}
status = LexActivator.SetDayIntervalForServerCheck(m_LicenseManager.ServerCheckInterval);
if (status != LexActivator.LA_OK)
{
throw new InternalLicenseErrorException(status);
}

if (!string.IsNullOrEmpty(proxy))
{
	status = LexActivator.SetNetworkProxy(proxy);
	if (status != LexActivator.LA_OK)
	{
		throw new InternalLicenseErrorException(status);
	}
}

status = LexActivator.IsProductActivated();
switch (status)
{
	case LexActivator.LA_EXPIRED:
	case LexActivator.LA_GP_OVER:
		return ResultType.Expired;

	case LexActivator.LA_REVOKED:
		return ResultType.Revoked;

	case LexActivator.LA_OK:
		break;

	default:
		throw new InternalLicenseErrorException(status);
}

status = LexActivator.IsProductGenuine();
switch (status)
{
	case LexActivator.LA_OK:
		return ResultType.OK;

	case LexActivator.LA_EXPIRED:
	case LexActivator.LA_GP_OVER:
		return ResultType.Expired;

	case LexActivator.LA_REVOKED:
		return ResultType.Revoked;

	default:
		throw new InternalLicenseErrorException(status);
}

}

Can you please state the error code, also in your code you don’t need to LexActivator.IsProductActivated(); if you are calling LexActivator.IsProductGenuine(); function

Hi adnan,

IsProductActivated() return LA_FAIL error code.

How should I edit?
I would like to tell you the reason.

Before generating offline activation request did you enable the user lock? As you are using user lock.

Yes,
The generating offlice activation function (ResultType.Expired is returned) is as follows:

	public ResultType CreateOfflineActivateRequest(string productKey, string identificationKey, string filePath)
	{
		var status = LexActivator.SetProductFile(m_ProductFilePath);
		if (status != LexActivator.LA_OK)
		{
			throw new InternalLicenseErrorException(status);
		}
		status = LexActivator.SetVersionGUID(m_VersionGuid, m_Permission);
		if (status != LexActivator.LA_OK)
		{
			throw new InternalLicenseErrorException(status);
		}
		status = LexActivator.SetUserLock(true);
		if (status != LexActivator.LA_OK)
		{
			throw new InternalLicenseErrorException(status);
		}
		status = LexActivator.SetDayIntervalForServerCheck(m_LicenseManager.ServerCheckInterval);
		if (status != LexActivator.LA_OK)
		{
			throw new InternalLicenseErrorException(status);
		}

		status = LexActivator.SetProductKey(productKey);
		if (status != LexActivator.LA_OK)
		{
			throw new InternalLicenseErrorException(status);
		}

		if (!string.IsNullOrEmpty(identificationKey))
		{
			status = LexActivator.SetExtraActivationData(identificationKey);
			if (status != LexActivator.LA_OK)
			{
				throw new InternalLicenseErrorException(status);
			}
		}

		status = LexActivator.GenerateOfflineActivationRequest(filePath);
		switch (status)
		{
			case LexActivator.LA_OK:
				return ResultType.OK;

			case LexActivator.LA_E_PKEY:
			case LexActivator.LA_FAIL:
				return ResultType.Failed;

			default:
				throw new InternalLicenseErrorException(status);
		}
	}

It seems that the fingerprint of the machine returned after activation has changed. Some machines misbehave and return a different machine fingerprint even if no hardware part has been changed. In this case your user needs to provide a new offline request.

Device fingerprinting has undergone major improvements in Cryptlex v3 and allows for different fingerprint matching strategies to allow for such cases.

https://docs.cryptlex.com/license-management/license-policies#fingerprint-matching-strategy

How do you create fingerprints of machine?
Can I confirm that the fingerprint has been changed?
I would like to confirm that the cause is that the fingerprint has changed.

Also, when upgrading to v3.x, which strategy(Exact / Fuzzy / Loose) would you choose to solve the problem?

Hi,

How do you create fingerprints of the machine?

Fingerprinting algo uses information of different hardware parts of the user machine to create multiple different fingerprints.

Can I confirm that the fingerprint has been changed?

Yes, increase the activation count of the license and ask user to the provide the offline activation request again, if total activations count increases to 2 it would mean fingerprint changed.

Also, when upgrading to v3.x, which strategy(Exact / Fuzzy / Loose) would you choose to solve the problem?

You should always use Fuzzy strategy by default. The v3 fingerprinting algo is very robust. And if such a case occurs (which is highly unlikely in v3), you just need to change the strategy from Fuzzy to Loose in the dashboard, and that would fix the issue for the user (and also confirm that issue was due to fingerprint). In v3 every error has a code now in LexActivator, even fingerprint change.

Hi,

You should always use Fuzzy strategy by default. The v3 fingerprinting algo is very robust. And if such a case occurs (which is highly unlikely in v3), you just need to change the strategy from Fuzzy to Loose in the dashboard, and that would fix the issue for the user (and also confirm that issue was due to fingerprint). In v3 every error has a code now in LexActivator, even fingerprint change.

Thank you for your answering.
I will try it in the way taught.

Fingerprinting algo uses information of different hardware parts of the user machine to create multiple different fingerprints.

This problem occurred only on the user machine of my product, it can not be reproduced on my PC.
Therefore, I want to create a reproduction environment.
How can I change the fingerprint of my machine?

This problem occurred only on the user machine of my product, it can not be reproduced on my PC.
Therefore, I want to create a reproduction environment.
How can I change the fingerprint of my machine?

I am afraid changing fingerprint is not that simple. It depends on the operating system. Which operating system are you testing on?

Which operating system are you testing on?

I want to know the method of Win7 32bit / Win7 64bit / Win10 64bit each.

Try changing mac address of all the network devices. Alternatively, you can disable the network drivers for your lan or wifi adapter. This may or may not invalidate the fingerprint. Make sure you restart the app after making the changes.

Thank you for your answering.