mirror of
https://github.com/bitwarden/android.git
synced 2024-12-24 18:08:26 +03:00
clear settings for prefix when key is generated
This commit is contained in:
parent
65d2d45a82
commit
f41ace4d7c
2 changed files with 31 additions and 5 deletions
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio 14
|
# Visual Studio 15
|
||||||
VisualStudioVersion = 14.0.25420.1
|
VisualStudioVersion = 15.0.26430.13
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Android", "src\Android\Android.csproj", "{04B18ED2-B76D-4947-8474-191F8FD2B5E0}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Android", "src\Android\Android.csproj", "{04B18ED2-B76D-4947-8474-191F8FD2B5E0}"
|
||||||
EndProject
|
EndProject
|
||||||
|
|
|
@ -11,6 +11,7 @@ using Android.App;
|
||||||
using Plugin.Settings.Abstractions;
|
using Plugin.Settings.Abstractions;
|
||||||
using Java.Util;
|
using Java.Util;
|
||||||
using Javax.Crypto.Spec;
|
using Javax.Crypto.Spec;
|
||||||
|
using Android.Preferences;
|
||||||
|
|
||||||
namespace Bit.Android.Services
|
namespace Bit.Android.Services
|
||||||
{
|
{
|
||||||
|
@ -22,6 +23,7 @@ namespace Bit.Android.Services
|
||||||
private const string KeyAlias = "bitwardenKey2";
|
private const string KeyAlias = "bitwardenKey2";
|
||||||
private const string KeyAliasV1 = "bitwardenKey";
|
private const string KeyAliasV1 = "bitwardenKey";
|
||||||
|
|
||||||
|
private const string SettingsPrefix = "ksSecured2";
|
||||||
private const string SettingsFormat = "ksSecured2:{0}";
|
private const string SettingsFormat = "ksSecured2:{0}";
|
||||||
private const string SettingsFormatV1 = "ksSecured:{0}";
|
private const string SettingsFormatV1 = "ksSecured:{0}";
|
||||||
|
|
||||||
|
@ -91,7 +93,7 @@ namespace Bit.Android.Services
|
||||||
{
|
{
|
||||||
return App.Utilities.Crypto.AesCbcDecrypt(new App.Models.CipherString(cs), aesKey);
|
return App.Utilities.Crypto.AesCbcDecrypt(new App.Models.CipherString(cs), aesKey);
|
||||||
}
|
}
|
||||||
catch(Exception)
|
catch
|
||||||
{
|
{
|
||||||
Console.WriteLine("Failed to decrypt from secure storage.");
|
Console.WriteLine("Failed to decrypt from secure storage.");
|
||||||
_settings.Remove(formattedKey);
|
_settings.Remove(formattedKey);
|
||||||
|
@ -121,7 +123,7 @@ namespace Bit.Android.Services
|
||||||
var cipherString = App.Utilities.Crypto.AesCbcEncrypt(dataBytes, aesKey);
|
var cipherString = App.Utilities.Crypto.AesCbcEncrypt(dataBytes, aesKey);
|
||||||
_settings.AddOrUpdateValue(formattedKey, cipherString.EncryptedString);
|
_settings.AddOrUpdateValue(formattedKey, cipherString.EncryptedString);
|
||||||
}
|
}
|
||||||
catch(Exception)
|
catch
|
||||||
{
|
{
|
||||||
Console.WriteLine("Failed to encrypt to secure storage.");
|
Console.WriteLine("Failed to encrypt to secure storage.");
|
||||||
//Utilities.SendCrashEmail(e);
|
//Utilities.SendCrashEmail(e);
|
||||||
|
@ -135,6 +137,8 @@ namespace Bit.Android.Services
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ClearSettings();
|
||||||
|
|
||||||
var end = Calendar.Instance;
|
var end = Calendar.Instance;
|
||||||
end.Add(CalendarField.Year, 99);
|
end.Add(CalendarField.Year, 99);
|
||||||
|
|
||||||
|
@ -222,7 +226,7 @@ namespace Bit.Android.Services
|
||||||
return new App.Models.SymmetricCryptoKey(key);
|
return new App.Models.SymmetricCryptoKey(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch(Exception)
|
catch
|
||||||
{
|
{
|
||||||
Console.WriteLine("Cannot get AesKey.");
|
Console.WriteLine("Cannot get AesKey.");
|
||||||
_keyStore.DeleteEntry(KeyAlias);
|
_keyStore.DeleteEntry(KeyAlias);
|
||||||
|
@ -336,5 +340,27 @@ namespace Bit.Android.Services
|
||||||
_settings.Remove(formattedKeyV1);
|
_settings.Remove(formattedKeyV1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void ClearSettings(string prefix = SettingsPrefix)
|
||||||
|
{
|
||||||
|
using(var sharedPreferences = PreferenceManager.GetDefaultSharedPreferences(Application.Context))
|
||||||
|
using(var sharedPreferencesEditor = sharedPreferences.Edit())
|
||||||
|
{
|
||||||
|
var removed = false;
|
||||||
|
foreach(var pref in sharedPreferences.All)
|
||||||
|
{
|
||||||
|
if(pref.Key.StartsWith(prefix))
|
||||||
|
{
|
||||||
|
removed = true;
|
||||||
|
sharedPreferencesEditor.Remove(pref.Key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(removed)
|
||||||
|
{
|
||||||
|
sharedPreferencesEditor.Commit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue