public PlayerPrefsEntry(string key, string value, bool isEncrypted) { Key = key; ValueString = value ?? ""; Type = SecurePlayerPrefs.ItemType.String; SetupSpecifiedEntry(key, isEncrypted); }
public PlayerPrefsEntry(string key, float value, bool isEncrypted) { Key = key; ValueFloat = value; Type = SecurePlayerPrefs.ItemType.Float; SetupSpecifiedEntry(key, isEncrypted); }
public PrefsEntry(string key, int value, bool isEncrypted, bool isPlayerPrefs) { Key = key; ValueInt = value; IsPlayerPrefs = isPlayerPrefs; Type = SecurePlayerPrefs.ItemType.Int; SetupSpecifiedEntry(key, isEncrypted); }
bool ValidateEncryptedValue(SecurePlayerPrefs.ItemType itemType, string encryptedValue) { if (SecurePlayerPrefs.DecryptValue(encryptedValue, itemType) == null) { Type = SecurePlayerPrefs.ItemType.String; ValueString = encryptedValue; IsEncrypted = false; return(false); } return(true); }
bool ValidateEncryptedValue(SecurePlayerPrefs.ItemType itemType, string encryptedValue) { if (SecurePlayerPrefs.DecryptValue(encryptedValue, itemType) == null) { Debug.LogWarning( string.Format( "Unable to decrypt or parse '{0}' ({1}). Please check you have the correct pass phrase set and refresh", _key, encryptedValue)); Type = SecurePlayerPrefs.ItemType.String; ValueString = encryptedValue; IsEncrypted = false; return(false); } return(true); }
/// <summary> /// Load setup key. The passed key will always be the version read from disk so may be encrypted /// As we can't tell the type, we use an unlikely value to determine whether it exists or not! /// NOTE: (should we do a double check on 2 default values to be 100% sure)? /// </summary> void LoadValue(string key) { SecurePlayerPrefs.ItemType itemType = SecurePlayerPrefs.ItemType.None; var stringValue = PlayerPrefs.GetString(key, SecurePlayerPrefs.NotFoundString); if (stringValue != SecurePlayerPrefs.NotFoundString) { itemType = SecurePlayerPrefs.GetItemType(stringValue); } if (itemType != SecurePlayerPrefs.ItemType.None) { // check we can decrypt key - otherwise probably not encrypted var decryptedKey = SecurePlayerPrefs.DecryptKey(key); if (decryptedKey != null) { if (!ValidateEncryptedValue(itemType, stringValue)) { return; } IsEncrypted = true; OriginalEncryptedKey = key; OriginalEncryptedValue = stringValue; Key = decryptedKey; Type = itemType; switch (itemType) { case SecurePlayerPrefs.ItemType.Int: //case SecurePlayerPrefs.ItemType.Bool: ValueInt = SecurePlayerPrefs.GetInt(decryptedKey, 0, true); break; case SecurePlayerPrefs.ItemType.Float: ValueFloat = SecurePlayerPrefs.GetFloat(decryptedKey, 0, true); break; case SecurePlayerPrefs.ItemType.String: //case SecurePlayerPrefs.ItemType.Vector2: //case SecurePlayerPrefs.ItemType.Vector3: ValueString = SecurePlayerPrefs.GetString(decryptedKey, "", true); return; } } else { itemType = SecurePlayerPrefs.ItemType.None; } } // If we still haven't gotten anything. if (itemType == SecurePlayerPrefs.ItemType.None) { // if it wasn't an encrypted item Key = key; if (stringValue != SecurePlayerPrefs.NotFoundString) { Type = SecurePlayerPrefs.ItemType.String; ValueString = stringValue; } else { var intValue = PlayerPrefs.GetInt(Key, int.MinValue + 10); if (intValue != int.MinValue + 10) { Type = SecurePlayerPrefs.ItemType.Int; ValueInt = intValue; } else { var floatValue = PlayerPrefs.GetFloat(Key, float.MinValue + 10); if (!Mathf.Approximately(floatValue, float.MinValue + 10)) { Type = SecurePlayerPrefs.ItemType.Float; ValueFloat = floatValue; } } } } }