Ejemplo n.º 1
0
        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);
        }