Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/keepassxreboot/keepassxc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTheZ3ro <io@thezero.org>2017-05-01 19:13:09 +0300
committerGitHub <noreply@github.com>2017-05-01 19:13:09 +0300
commit7040bef27e105774da05ac372e0832d2affe008b (patch)
tree4daa9d55c97ce4bbd3c01d217634f6dfa4e9a419 /src
parentc40a7a5265286c8f5b724ec81b994963928c95a3 (diff)
parent40b4dc3b61b36c250a21de74dd2660fb4384683a (diff)
Merge pull request #538 from keepassxreboot/feature/extendedAscii
Add support for extended ASCII in password generator
Diffstat (limited to 'src')
-rw-r--r--src/core/PasswordGenerator.cpp21
-rw-r--r--src/core/PasswordGenerator.h3
-rw-r--r--src/gui/PasswordGeneratorWidget.cpp9
-rw-r--r--src/gui/PasswordGeneratorWidget.ui47
4 files changed, 74 insertions, 6 deletions
diff --git a/src/core/PasswordGenerator.cpp b/src/core/PasswordGenerator.cpp
index cee1c55be..0fa5198fc 100644
--- a/src/core/PasswordGenerator.cpp
+++ b/src/core/PasswordGenerator.cpp
@@ -195,6 +195,24 @@ QVector<PasswordGroup> PasswordGenerator::passwordGroups() const
passwordGroups.append(group);
}
+ if (m_classes & EASCII) {
+ PasswordGroup group;
+
+ // [U+0080, U+009F] are C1 control characters,
+ // U+00A0 is non-breaking space
+ for (int i = 161; i <= 172; i++) {
+ group.append(i);
+ }
+ // U+00AD is soft hyphen (format character)
+ for (int i = 174; i <= 255; i++) {
+ if ((m_flags & ExcludeLookAlike) && (i == 249)) { // "﹒"
+ continue;
+ }
+ group.append(i);
+ }
+
+ passwordGroups.append(group);
+ }
return passwordGroups;
}
@@ -215,6 +233,9 @@ int PasswordGenerator::numCharClasses() const
if (m_classes & SpecialCharacters) {
numClasses++;
}
+ if (m_classes & EASCII) {
+ numClasses++;
+ }
return numClasses;
}
diff --git a/src/core/PasswordGenerator.h b/src/core/PasswordGenerator.h
index b47159324..8ec82c0a0 100644
--- a/src/core/PasswordGenerator.h
+++ b/src/core/PasswordGenerator.h
@@ -32,7 +32,8 @@ public:
LowerLetters = 0x1,
UpperLetters = 0x2,
Numbers = 0x4,
- SpecialCharacters = 0x8
+ SpecialCharacters = 0x8,
+ EASCII = 0x10
};
Q_DECLARE_FLAGS(CharClasses, CharClass)
diff --git a/src/gui/PasswordGeneratorWidget.cpp b/src/gui/PasswordGeneratorWidget.cpp
index 1f5606cf6..e585b6f58 100644
--- a/src/gui/PasswordGeneratorWidget.cpp
+++ b/src/gui/PasswordGeneratorWidget.cpp
@@ -92,6 +92,7 @@ void PasswordGeneratorWidget::loadSettings()
m_ui->checkBoxUpper->setChecked(config()->get("generator/UpperCase", true).toBool());
m_ui->checkBoxNumbers->setChecked(config()->get("generator/Numbers", true).toBool());
m_ui->checkBoxSpecialChars->setChecked(config()->get("generator/SpecialChars", false).toBool());
+ m_ui->checkBoxExtASCII->setChecked(config()->get("generator/EASCII", false).toBool());
m_ui->checkBoxExcludeAlike->setChecked(config()->get("generator/ExcludeAlike", true).toBool());
m_ui->checkBoxEnsureEvery->setChecked(config()->get("generator/EnsureEvery", true).toBool());
m_ui->spinBoxLength->setValue(config()->get("generator/Length", 16).toInt());
@@ -112,6 +113,7 @@ void PasswordGeneratorWidget::saveSettings()
config()->set("generator/UpperCase", m_ui->checkBoxUpper->isChecked());
config()->set("generator/Numbers", m_ui->checkBoxNumbers->isChecked());
config()->set("generator/SpecialChars", m_ui->checkBoxSpecialChars->isChecked());
+ config()->set("generator/EASCII", m_ui->checkBoxExtASCII->isChecked());
config()->set("generator/ExcludeAlike", m_ui->checkBoxExcludeAlike->isChecked());
config()->set("generator/EnsureEvery", m_ui->checkBoxEnsureEvery->isChecked());
config()->set("generator/Length", m_ui->spinBoxLength->value());
@@ -287,6 +289,10 @@ PasswordGenerator::CharClasses PasswordGeneratorWidget::charClasses()
classes |= PasswordGenerator::SpecialCharacters;
}
+ if (m_ui->checkBoxExtASCII->isChecked()) {
+ classes |= PasswordGenerator::EASCII;
+ }
+
return classes;
}
@@ -325,6 +331,9 @@ void PasswordGeneratorWidget::updateGenerator()
if (classes.testFlag(PasswordGenerator::SpecialCharacters)) {
minLength++;
}
+ if (classes.testFlag(PasswordGenerator::EASCII)) {
+ minLength++;
+ }
}
minLength = qMax(minLength, 1);
diff --git a/src/gui/PasswordGeneratorWidget.ui b/src/gui/PasswordGeneratorWidget.ui
index bb8bc0e76..a7af3d7f0 100644
--- a/src/gui/PasswordGeneratorWidget.ui
+++ b/src/gui/PasswordGeneratorWidget.ui
@@ -222,11 +222,11 @@ QProgressBar::chunk {
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
- <layout class="QHBoxLayout" name="alphabetLayout" stretch="0,0,0,0,1">
+ <layout class="QHBoxLayout" name="alphabetLayout" stretch="0,0,0,0,1,0">
<item>
<widget class="QToolButton" name="checkBoxUpper">
<property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+ <sizepolicy hsizetype="Maximum" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@@ -257,7 +257,7 @@ QProgressBar::chunk {
<item>
<widget class="QToolButton" name="checkBoxLower">
<property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+ <sizepolicy hsizetype="Maximum" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@@ -288,7 +288,7 @@ QProgressBar::chunk {
<item>
<widget class="QToolButton" name="checkBoxNumbers">
<property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+ <sizepolicy hsizetype="Maximum" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@@ -319,7 +319,7 @@ QProgressBar::chunk {
<item>
<widget class="QToolButton" name="checkBoxSpecialChars">
<property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+ <sizepolicy hsizetype="Maximum" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@@ -348,6 +348,43 @@ QProgressBar::chunk {
</widget>
</item>
<item>
+ <widget class="QToolButton" name="checkBoxExtASCII">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Maximum" vsizetype="MinimumExpanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Extended ASCII</string>
+ </property>
+ <property name="text">
+ <string notr="true">Extended ASCII</string>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <attribute name="buttonGroup">
+ <string notr="true">optionButtons</string>
+ </attribute>
+ </widget>
+ </item>
+ <item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>