From fa7c945363e86e2cf5d7f992461a17842febfe16 Mon Sep 17 00:00:00 2001 From: Louis-Bertrand Varin Date: Sat, 25 Feb 2017 17:41:37 -0500 Subject: [PATCH 1/3] Adding EASCII character class. --- src/core/PasswordGenerator.cpp | 16 ++++++++++++++++ src/core/PasswordGenerator.h | 3 ++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/core/PasswordGenerator.cpp b/src/core/PasswordGenerator.cpp index cee1c55b..8517d85c 100644 --- a/src/core/PasswordGenerator.cpp +++ b/src/core/PasswordGenerator.cpp @@ -195,6 +195,22 @@ QVector PasswordGenerator::passwordGroups() const passwordGroups.append(group); } + if (m_classes & EASCII) { + PasswordGroup group; + + for (int i = 128; i <= 169; i++) { + group.append(i); + } + + for (int i = 171; i <= 254; i++) { + if ((m_flags & ExcludeLookAlike) && (i == 249)) { // "﹒" + continue; + } + group.append(i); + } + + passwordGroups.append(group); + } return passwordGroups; } diff --git a/src/core/PasswordGenerator.h b/src/core/PasswordGenerator.h index b4715932..7c909411 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 = 0x16 }; Q_DECLARE_FLAGS(CharClasses, CharClass) From b474d34cf0a0d6c4bc85b0956b0e4d73b65dc014 Mon Sep 17 00:00:00 2001 From: thez3ro Date: Fri, 28 Apr 2017 21:36:43 +0200 Subject: [PATCH 2/3] Add Extended ASCII to password generator --- src/core/PasswordGenerator.cpp | 3 ++ src/core/PasswordGenerator.h | 2 +- src/gui/PasswordGeneratorWidget.cpp | 9 ++++++ src/gui/PasswordGeneratorWidget.ui | 47 ++++++++++++++++++++++++++--- 4 files changed, 55 insertions(+), 6 deletions(-) diff --git a/src/core/PasswordGenerator.cpp b/src/core/PasswordGenerator.cpp index 8517d85c..8b0f99f8 100644 --- a/src/core/PasswordGenerator.cpp +++ b/src/core/PasswordGenerator.cpp @@ -231,6 +231,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 7c909411..8ec82c0a 100644 --- a/src/core/PasswordGenerator.h +++ b/src/core/PasswordGenerator.h @@ -33,7 +33,7 @@ public: UpperLetters = 0x2, Numbers = 0x4, SpecialCharacters = 0x8, - EASCII = 0x16 + EASCII = 0x10 }; Q_DECLARE_FLAGS(CharClasses, CharClass) diff --git a/src/gui/PasswordGeneratorWidget.cpp b/src/gui/PasswordGeneratorWidget.cpp index 1f5606cf..e585b6f5 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 bb8bc0e7..a7af3d7f 100644 --- a/src/gui/PasswordGeneratorWidget.ui +++ b/src/gui/PasswordGeneratorWidget.ui @@ -222,11 +222,11 @@ QProgressBar::chunk { - + - + 0 0 @@ -257,7 +257,7 @@ QProgressBar::chunk { - + 0 0 @@ -288,7 +288,7 @@ QProgressBar::chunk { - + 0 0 @@ -319,7 +319,7 @@ QProgressBar::chunk { - + 0 0 @@ -347,6 +347,43 @@ QProgressBar::chunk { + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 16777215 + + + + Qt::StrongFocus + + + Extended ASCII + + + Extended ASCII + + + true + + + optionButtons + + + From 40b4dc3b61b36c250a21de74dd2660fb4384683a Mon Sep 17 00:00:00 2001 From: thez3ro Date: Mon, 1 May 2017 01:18:42 +0200 Subject: [PATCH 3/3] Only printable extended ASCII --- src/core/PasswordGenerator.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/core/PasswordGenerator.cpp b/src/core/PasswordGenerator.cpp index 8b0f99f8..0fa5198f 100644 --- a/src/core/PasswordGenerator.cpp +++ b/src/core/PasswordGenerator.cpp @@ -198,11 +198,13 @@ QVector PasswordGenerator::passwordGroups() const if (m_classes & EASCII) { PasswordGroup group; - for (int i = 128; i <= 169; i++) { + // [U+0080, U+009F] are C1 control characters, + // U+00A0 is non-breaking space + for (int i = 161; i <= 172; i++) { group.append(i); } - - for (int i = 171; i <= 254; i++) { + // U+00AD is soft hyphen (format character) + for (int i = 174; i <= 255; i++) { if ((m_flags & ExcludeLookAlike) && (i == 249)) { // "﹒" continue; }