public static LSLocalKey ReadLocalKey()
        {
            LSLocalKey lSLocalKey = null;
            string     keyPath    = Path.Combine(Application.persistentDataPath, "api.bin");

            var content = File.ReadAllText(keyPath);

            content = SecureStorage.Decrypt(content);

            lSLocalKey = LSLocalKey.FromString(content);
            return(lSLocalKey);
        }
        void Awake()
        {
            _licensePath = Path.Combine(Application.persistentDataPath, Application.productName, "lock.lic");
            _apiPath     = Path.Combine(Application.persistentDataPath, Application.productName, "app.lic");

            _enumActiveStatus = ActivationStatus.Unknown;

            if (!File.Exists(_apiPath))
            {
                _enumActiveStatus = ActivationStatus.Unknown;
                throw new LicenseConfigurationException("Configuration invalid");
            }
            else
            {
                try
                {
                    //extended configuration options.
                    _lseo = new LicenseSpringExtendedOptions
                    {
                        HardwareID                = this.HardwareId,
                        LicenseFilePath           = _licensePath,
                        CollectHostNameAndLocalIP = true
                    };

                    //local config decryptor
                    _localKey = KeyStorage.ReadLocalKey();

                    //main configurations
                    LicenseSpringConfiguration lsConfig = new LicenseSpringConfiguration(_localKey.ApiKey,
                                                                                         _localKey.SharedKey,
                                                                                         _localKey.ProductCode,
                                                                                         _localKey.ApplicationName,
                                                                                         _localKey.ApplicationVersion,
                                                                                         _lseo);

                    _internalLicenseManager = (LicenseManager)LicenseManager.GetInstance();
                    _internalLicenseManager.Initialize(_lsConfig);

                    _installedLicense = (License)_internalLicenseManager.CurrentLicense();
                    SetLicenseStatus();
                }
                catch (Exception ex)
                {
                    Debug.LogError(ex.Message);
                }
            }

            DontDestroyOnLoad(this);
        }
        public static void SaveLocalKey(LSLocalKey localKey, string password)
        {
            try
            {
                var savePath      = Path.Combine(Application.persistentDataPath, "api.bin");
                var encryptResult = SecureStorage.Encrypt(localKey.ToString(), password);

                using (StreamWriter writer = new StreamWriter(savePath))
                {
                    writer.Write(encryptResult.Item1);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }