diff options
| author | Harsh Shandilya <me@msfjarvis.dev> | 2022-07-15 00:53:48 +0530 |
|---|---|---|
| committer | Harsh Shandilya <me@msfjarvis.dev> | 2022-07-15 01:13:47 +0530 |
| commit | 549ee790d3e52bc62565ddf92e6a556e98b5195e (patch) | |
| tree | d5758e5eb80093704e683c8da926838e18182588 /passgen/diceware/src/main/kotlin/dev | |
| parent | 010c6e227c9cc27f4d01bc912311f977b2aeb3a7 (diff) | |
| download | HardenedPass-549ee790d3e52bc62565ddf92e6a556e98b5195e.tar.gz HardenedPass-549ee790d3e52bc62565ddf92e6a556e98b5195e.zip | |
all: re-do package structure yet again
Diffstat (limited to 'passgen/diceware/src/main/kotlin/dev')
4 files changed, 0 insertions, 105 deletions
diff --git a/passgen/diceware/src/main/kotlin/dev/msfjarvis/aps/passgen/diceware/DicewarePassphraseGenerator.kt b/passgen/diceware/src/main/kotlin/dev/msfjarvis/aps/passgen/diceware/DicewarePassphraseGenerator.kt deleted file mode 100644 index 62e3b97b..00000000 --- a/passgen/diceware/src/main/kotlin/dev/msfjarvis/aps/passgen/diceware/DicewarePassphraseGenerator.kt +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright © 2014-2021 The Android Password Store Authors. All Rights Reserved. - * SPDX-License-Identifier: GPL-3.0-only - */ - -package dev.msfjarvis.aps.passgen.diceware - -import java.io.InputStream -import javax.inject.Inject - -/** - * Password generator implementing the Diceware passphrase generation mechanism. For detailed - * information on how this works, see https://theworld.com/~reinhold/diceware.html. - */ -public class DicewarePassphraseGenerator -@Inject -constructor( - private val die: Die, - wordList: InputStream, -) { - - private val wordMap = WordListParser.parse(wordList) - - /** Generates a passphrase with [wordCount] words. */ - public fun generatePassphrase(wordCount: Int, separator: Char): String { - return buildString { - repeat(wordCount) { idx -> - append(wordMap[die.rollMultiple(DIGITS)]) - if (idx < wordCount - 1) append(separator) - } - } - } - - private companion object { - - /** Number of digits used by indices in the default wordlist. */ - const val DIGITS: Int = 5 - } -} diff --git a/passgen/diceware/src/main/kotlin/dev/msfjarvis/aps/passgen/diceware/Die.kt b/passgen/diceware/src/main/kotlin/dev/msfjarvis/aps/passgen/diceware/Die.kt deleted file mode 100644 index d6e5aa23..00000000 --- a/passgen/diceware/src/main/kotlin/dev/msfjarvis/aps/passgen/diceware/Die.kt +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright © 2014-2021 The Android Password Store Authors. All Rights Reserved. - * SPDX-License-Identifier: GPL-3.0-only - */ - -package dev.msfjarvis.aps.passgen.diceware - -import javax.inject.Inject - -/** Basic implementation of a die with configurable number of sides. */ -public class Die -@Inject -constructor( - private val sides: Int, - private val random: RandomIntGenerator, -) { - - /** Roll the die to return a single number. */ - public fun roll(): Int { - return random.get(1..sides) - } - - /** - * Roll the die multiple times, concatenating each result to obtain a number with [iterations] - * digits. - */ - public fun rollMultiple(iterations: Int): Int { - return StringBuilder().apply { repeat(iterations) { append(roll()) } }.toString().toInt() - } -} diff --git a/passgen/diceware/src/main/kotlin/dev/msfjarvis/aps/passgen/diceware/RandomIntGenerator.kt b/passgen/diceware/src/main/kotlin/dev/msfjarvis/aps/passgen/diceware/RandomIntGenerator.kt deleted file mode 100644 index 7f957419..00000000 --- a/passgen/diceware/src/main/kotlin/dev/msfjarvis/aps/passgen/diceware/RandomIntGenerator.kt +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright © 2014-2021 The Android Password Store Authors. All Rights Reserved. - * SPDX-License-Identifier: GPL-3.0-only - */ - -package dev.msfjarvis.aps.passgen.diceware - -/** - * SAM interface that takes in an [IntRange] and returns a randomly chosen [Int] within its bounds. - * This is used as a replacement for [kotlin.random.Random] since there is no CSPRNG-backed - * implementation of it in the Kotlin stdlib. - */ -public fun interface RandomIntGenerator { - public fun get(range: IntRange): Int -} diff --git a/passgen/diceware/src/main/kotlin/dev/msfjarvis/aps/passgen/diceware/WordListParser.kt b/passgen/diceware/src/main/kotlin/dev/msfjarvis/aps/passgen/diceware/WordListParser.kt deleted file mode 100644 index 5351aaa1..00000000 --- a/passgen/diceware/src/main/kotlin/dev/msfjarvis/aps/passgen/diceware/WordListParser.kt +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright © 2014-2021 The Android Password Store Authors. All Rights Reserved. - * SPDX-License-Identifier: GPL-3.0-only - */ - -package dev.msfjarvis.aps.passgen.diceware - -import java.io.InputStream - -internal object WordListParser { - fun parse(wordlistStream: InputStream) = - wordlistStream - .bufferedReader() - .lineSequence() - .map { line -> line.split(DELIMITER) } - .filter { items -> items.size == 2 && items[0].toIntOrNull() != null } - .map { items -> items[0].toInt() to items[1] } - .toMap() - - private const val DELIMITER = "\t" -} |
