public static int ValidateActivation(string jwt, string publicKey, string licenseKey, string productId, ActivationPayload activationPayload) { string payload = LexJwtService.VerifyToken(jwt, publicKey); if (String.IsNullOrEmpty(payload)) { return(LexStatusCodes.LA_FAIL); } var tempActivationPayload = JsonConvert.DeserializeObject <ActivationPayload>(payload); activationPayload.CopyProperties(tempActivationPayload); activationPayload.IsValid = true; int status; if (licenseKey != activationPayload.Key) { status = LexStatusCodes.LA_FAIL; } else if (productId != activationPayload.ProductId) { status = LexStatusCodes.LA_FAIL; } else if (activationPayload.Fingerprint != LexSystemInfo.GetFingerPrint()) { status = LexStatusCodes.LA_E_MACHINE_FINGERPRINT; } else if (!ValidateTime(activationPayload.IssuedAt, activationPayload.AllowedClockOffset)) { status = LexStatusCodes.LA_E_TIME; } else { status = LexValidator.ValidateActivationStatus(productId, activationPayload); } if (status == LexStatusCodes.LA_OK || status == LexStatusCodes.LA_EXPIRED || status == LexStatusCodes.LA_SUSPENDED || status == LexStatusCodes.LA_GRACE_PERIOD_OVER) { var now = GetUtcTimestamp(); LexDataStore.SaveValue(productId, LexConstants.KEY_LAST_RECORDED_TIME, now.ToString()); LexDataStore.SaveValue(productId, LexConstants.KEY_ACTIVATION_JWT, jwt); } else { LexDataStore.SaveValue(productId, LexConstants.KEY_LAST_RECORDED_TIME, activationPayload.IssuedAt.ToString()); } return(status); }
public static string GetActivationRequest(string licenseKey, string productId, List <ActivationMetadata> metadata, List <ActivationMeterAttribute> meterAttributes) { var activationRequest = new ActivationRequest(); activationRequest.Fingerprint = LexSystemInfo.GetFingerPrint(); activationRequest.ProductId = productId; activationRequest.Key = licenseKey; activationRequest.Os = LexSystemInfo.GetOsName(); activationRequest.OsVersion = LexSystemInfo.GetOsVersion(); activationRequest.UserHash = LexEncryptionService.Sha256(LexSystemInfo.GetUser()); activationRequest.AppVersion = LexDataStore.AppVersion; activationRequest.ClientVersion = LexDataStore.ClientVersion; activationRequest.VmName = LexSystemInfo.GetVmName(); activationRequest.Hostname = LexSystemInfo.GetHostname(); activationRequest.Email = String.Empty; activationRequest.Password = String.Empty; activationRequest.Metadata = metadata; activationRequest.MeterAttributes = meterAttributes; string jsonBody = JsonConvert.SerializeObject(activationRequest); return(jsonBody); }