diff options
| author | Harsh Shandilya <me@msfjarvis.dev> | 2021-12-10 14:51:05 +0530 |
|---|---|---|
| committer | Harsh Shandilya <me@msfjarvis.dev> | 2021-12-21 13:01:41 +0530 |
| commit | a700e2a76622745890f21d499b380abce2031aab (patch) | |
| tree | 2e69baba0cd6f278a8c40849896b857da514535f /app/src/main/java/dev/msfjarvis/aps/util | |
| parent | 0f837b003317970d50774df99bd474d3144120f8 (diff) | |
| download | HardenedPass-a700e2a76622745890f21d499b380abce2031aab.tar.gz HardenedPass-a700e2a76622745890f21d499b380abce2031aab.zip | |
app: remove XkPasswd generator
Diffstat (limited to 'app/src/main/java/dev/msfjarvis/aps/util')
3 files changed, 0 insertions, 199 deletions
diff --git a/app/src/main/java/dev/msfjarvis/aps/util/pwgenxkpwd/CapsType.kt b/app/src/main/java/dev/msfjarvis/aps/util/pwgenxkpwd/CapsType.kt deleted file mode 100644 index 69a4692d..00000000 --- a/app/src/main/java/dev/msfjarvis/aps/util/pwgenxkpwd/CapsType.kt +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright © 2014-2021 The Android Password Store Authors. All Rights Reserved. - * SPDX-License-Identifier: GPL-3.0-only - */ -package dev.msfjarvis.aps.util.pwgenxkpwd - -enum class CapsType { - lowercase, - UPPERCASE, - TitleCase, - Sentence, - As_iS -} diff --git a/app/src/main/java/dev/msfjarvis/aps/util/pwgenxkpwd/PasswordBuilder.kt b/app/src/main/java/dev/msfjarvis/aps/util/pwgenxkpwd/PasswordBuilder.kt deleted file mode 100644 index af8ac5c2..00000000 --- a/app/src/main/java/dev/msfjarvis/aps/util/pwgenxkpwd/PasswordBuilder.kt +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright © 2014-2021 The Android Password Store Authors. All Rights Reserved. - * SPDX-License-Identifier: GPL-3.0-only - */ -package dev.msfjarvis.aps.util.pwgenxkpwd - -import android.content.Context -import com.github.michaelbull.result.Result -import com.github.michaelbull.result.runCatching -import dev.msfjarvis.aps.R -import dev.msfjarvis.aps.util.pwgen.PasswordGenerator.PasswordGeneratorException -import dev.msfjarvis.aps.util.pwgen.secureRandomCharacter -import dev.msfjarvis.aps.util.pwgen.secureRandomElement -import dev.msfjarvis.aps.util.pwgen.secureRandomNumber -import java.util.Locale - -class PasswordBuilder(ctx: Context) { - - private var numSymbols = 0 - private var isAppendSymbolsSeparator = false - private var context = ctx - private var numWords = 3 - private var maxWordLength = 9 - private var minWordLength = 5 - private var separator = "." - private var capsType = CapsType.Sentence - private var prependDigits = 0 - private var numDigits = 0 - private var isPrependWithSeparator = false - private var isAppendNumberSeparator = false - - fun setNumberOfWords(amount: Int) = apply { numWords = amount } - - fun setMinimumWordLength(min: Int) = apply { minWordLength = min } - - fun setMaximumWordLength(max: Int) = apply { maxWordLength = max } - - fun setSeparator(separator: String) = apply { this.separator = separator } - - fun setCapitalization(capitalizationScheme: CapsType) = apply { capsType = capitalizationScheme } - - @JvmOverloads - fun prependNumbers(numDigits: Int, addSeparator: Boolean = true) = apply { - prependDigits = numDigits - isPrependWithSeparator = addSeparator - } - - @JvmOverloads - fun appendNumbers(numDigits: Int, addSeparator: Boolean = false) = apply { - this.numDigits = numDigits - isAppendNumberSeparator = addSeparator - } - - @JvmOverloads - fun appendSymbols(numSymbols: Int, addSeparator: Boolean = false) = apply { - this.numSymbols = numSymbols - isAppendSymbolsSeparator = addSeparator - } - - private fun generateRandomNumberSequence(totalNumbers: Int): String { - val numbers = StringBuilder(totalNumbers) - for (i in 0 until totalNumbers) { - numbers.append(secureRandomNumber(10)) - } - return numbers.toString() - } - - private fun generateRandomSymbolSequence(numSymbols: Int): String { - val numbers = StringBuilder(numSymbols) - for (i in 0 until numSymbols) { - numbers.append(SYMBOLS.secureRandomCharacter()) - } - return numbers.toString() - } - - @OptIn(ExperimentalStdlibApi::class) - fun create(): Result<String, Throwable> { - val wordBank = mutableListOf<String>() - val password = StringBuilder() - - if (prependDigits != 0) { - password.append(generateRandomNumberSequence(prependDigits)) - if (isPrependWithSeparator) { - password.append(separator) - } - } - return runCatching { - val dictionary = XkpwdDictionary(context) - val words = dictionary.words - for (wordLength in minWordLength..maxWordLength) { - wordBank.addAll(words[wordLength] ?: emptyList()) - } - - if (wordBank.size == 0) { - throw PasswordGeneratorException( - context.getString(R.string.xkpwgen_builder_error, minWordLength, maxWordLength) - ) - } - - for (i in 0 until numWords) { - val candidate = wordBank.secureRandomElement() - val s = - when (capsType) { - CapsType.UPPERCASE -> candidate.uppercase(Locale.getDefault()) - CapsType.Sentence -> - if (i == 0) - candidate.replaceFirstChar { - if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() - } - else candidate - CapsType.TitleCase -> - candidate.replaceFirstChar { - if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() - } - CapsType.lowercase -> candidate.lowercase(Locale.getDefault()) - CapsType.As_iS -> candidate - } - password.append(s) - if (i + 1 < numWords) { - password.append(separator) - } - } - if (numDigits != 0) { - if (isAppendNumberSeparator) { - password.append(separator) - } - password.append(generateRandomNumberSequence(numDigits)) - } - if (numSymbols != 0) { - if (isAppendSymbolsSeparator) { - password.append(separator) - } - password.append(generateRandomSymbolSequence(numSymbols)) - } - password.toString() - } - } - - companion object { - - private const val SYMBOLS = "!@\$%^&*-_+=:|~?/.;#" - } -} diff --git a/app/src/main/java/dev/msfjarvis/aps/util/pwgenxkpwd/XkpwdDictionary.kt b/app/src/main/java/dev/msfjarvis/aps/util/pwgenxkpwd/XkpwdDictionary.kt deleted file mode 100644 index 25162378..00000000 --- a/app/src/main/java/dev/msfjarvis/aps/util/pwgenxkpwd/XkpwdDictionary.kt +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright © 2014-2021 The Android Password Store Authors. All Rights Reserved. - * SPDX-License-Identifier: GPL-3.0-only - */ -package dev.msfjarvis.aps.util.pwgenxkpwd - -import android.content.Context -import dev.msfjarvis.aps.R -import dev.msfjarvis.aps.util.extensions.getString -import dev.msfjarvis.aps.util.extensions.sharedPrefs -import dev.msfjarvis.aps.util.settings.PreferenceKeys -import java.io.File - -class XkpwdDictionary(context: Context) { - - val words: Map<Int, List<String>> - - init { - val prefs = context.sharedPrefs - val uri = prefs.getString(PreferenceKeys.PREF_KEY_CUSTOM_DICT) ?: "" - val customDictFile = File(context.filesDir, XKPWD_CUSTOM_DICT_FILE) - - val lines = - if (prefs.getBoolean(PreferenceKeys.PREF_KEY_IS_CUSTOM_DICT, false) && - uri.isNotEmpty() && - customDictFile.canRead() - ) { - customDictFile.readLines() - } else { - context.resources.openRawResource(R.raw.xkpwdict).bufferedReader().readLines() - } - - words = - lines.asSequence().map { it.trim() }.filter { it.isNotEmpty() && !it.contains(' ') }.groupBy { - it.length - } - } - - companion object { - - const val XKPWD_CUSTOM_DICT_FILE = "custom_dict.txt" - } -} |
