diff --git a/ModernKeePass/Pages/EntryDetailPage.xaml b/ModernKeePass/Pages/EntryDetailPage.xaml
index eb7ed65..0bb4328 100644
--- a/ModernKeePass/Pages/EntryDetailPage.xaml
+++ b/ModernKeePass/Pages/EntryDetailPage.xaml
@@ -13,6 +13,348 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Visible
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -39,7 +381,7 @@
-
+
diff --git a/ModernKeePass/Pages/EntryDetailPage.xaml.cs b/ModernKeePass/Pages/EntryDetailPage.xaml.cs
index b405860..0605848 100644
--- a/ModernKeePass/Pages/EntryDetailPage.xaml.cs
+++ b/ModernKeePass/Pages/EntryDetailPage.xaml.cs
@@ -7,6 +7,7 @@ using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;
using ModernKeePass.Common;
using ModernKeePass.ViewModels;
+using ModernKeePassLib.Cryptography.PasswordGenerator;
// Pour en savoir plus sur le modèle d'élément Page Détail de l'élément, consultez la page http://go.microsoft.com/fwlink/?LinkId=234232
@@ -113,5 +114,12 @@ namespace ModernKeePass.Pages
// TODO: Show some error
}
}
+
+ private void PasswordGenerationButton_Click(object sender, RoutedEventArgs e)
+ {
+ Model.GeneratePassword();
+ /*var button = (Button)sender;
+ button?.Flyout?.Hide();*/
+ }
}
}
diff --git a/ModernKeePass/Pages/NewDatabasePage.xaml b/ModernKeePass/Pages/NewDatabasePage.xaml
index b023095..ca5b38d 100644
--- a/ModernKeePass/Pages/NewDatabasePage.xaml
+++ b/ModernKeePass/Pages/NewDatabasePage.xaml
@@ -25,7 +25,7 @@
Password complexity
-
+
diff --git a/ModernKeePass/Pages/OpenDatabasePage.xaml b/ModernKeePass/Pages/OpenDatabasePage.xaml
index c132f87..b5bd8c9 100644
--- a/ModernKeePass/Pages/OpenDatabasePage.xaml
+++ b/ModernKeePass/Pages/OpenDatabasePage.xaml
@@ -23,7 +23,7 @@
Open an existing password database from an Internet location (not yet implemented).
-
+
diff --git a/ModernKeePass/ViewModels/EntryVm.cs b/ModernKeePass/ViewModels/EntryVm.cs
index 5598efe..b934617 100644
--- a/ModernKeePass/ViewModels/EntryVm.cs
+++ b/ModernKeePass/ViewModels/EntryVm.cs
@@ -1,8 +1,8 @@
using System.ComponentModel;
using Windows.UI.Xaml.Controls;
-using ModernKeePass.Common;
using ModernKeePass.Mappings;
using ModernKeePassLib;
+using ModernKeePassLib.Cryptography.PasswordGenerator;
using ModernKeePassLib.Security;
namespace ModernKeePass.ViewModels
@@ -16,6 +16,17 @@ namespace ModernKeePass.ViewModels
public System.Drawing.Color? ForegroundColor => Entry?.ForegroundColor;
public bool IsRevealPasswordEnabled => !string.IsNullOrEmpty(Password);
+ public double PasswordLength { get; set; } = 25;
+ public bool UpperCasePatternSelected { get; set; } = true;
+ public bool LowerCasePatternSelected { get; set; } = true;
+ public bool DigitsPatternSelected { get; set; } = true;
+ public bool MinusPatternSelected { get; set; }
+ public bool UnderscorePatternSelected { get; set; }
+ public bool SpacePatternSelected { get; set; }
+ public bool SpecialPatternSelected { get; set; }
+ public bool BracketsPatternSelected { get; set; }
+ public string CustomChars { get; set; } = string.Empty;
+
public string Title
{
get
@@ -82,7 +93,7 @@ namespace ModernKeePass.ViewModels
NotifyPropertyChanged("IsRevealPassword");
}
}
-
+
public event PropertyChangedEventHandler PropertyChanged;
private bool _isEditMode;
@@ -104,6 +115,34 @@ namespace ModernKeePass.ViewModels
ParentGroup.RemoveEntry(this);
}
+ public void GeneratePassword()
+ {
+ var pwProfile = new PwProfile()
+ {
+ GeneratorType = PasswordGeneratorType.CharSet,
+ Length = (uint)PasswordLength,
+ CharSet = new PwCharSet()
+ };
+
+ if (UpperCasePatternSelected) pwProfile.CharSet.Add(PwCharSet.UpperCase);
+ if (LowerCasePatternSelected) pwProfile.CharSet.Add(PwCharSet.LowerCase);
+ if (DigitsPatternSelected) pwProfile.CharSet.Add(PwCharSet.Digits);
+ if (SpecialPatternSelected) pwProfile.CharSet.Add(PwCharSet.SpecialChars);
+ if (MinusPatternSelected) pwProfile.CharSet.Add('-');
+ if (UnderscorePatternSelected) pwProfile.CharSet.Add('_');
+ if (SpacePatternSelected) pwProfile.CharSet.Add(' ');
+ if (BracketsPatternSelected) pwProfile.CharSet.Add(PwCharSet.Brackets);
+
+ pwProfile.CharSet.Add(CustomChars);
+
+ ProtectedString password;
+ PwGenerator.Generate(out password, pwProfile, null, new CustomPwGeneratorPool());
+
+ Entry?.Strings.Set(PwDefs.PasswordField, password);
+ NotifyPropertyChanged("Password");
+ NotifyPropertyChanged("IsRevealPasswordEnabled");
+ }
+
private string GetEntryValue(string key)
{
return Entry?.Strings.GetSafe(key).ReadString();