aboutsummaryrefslogtreecommitdiffstats
path: root/passgen/diceware/src/main/kotlin/dev
diff options
context:
space:
mode:
authorHarsh Shandilya <me@msfjarvis.dev>2022-07-15 00:53:48 +0530
committerHarsh Shandilya <me@msfjarvis.dev>2022-07-15 01:13:47 +0530
commit549ee790d3e52bc62565ddf92e6a556e98b5195e (patch)
treed5758e5eb80093704e683c8da926838e18182588 /passgen/diceware/src/main/kotlin/dev
parent010c6e227c9cc27f4d01bc912311f977b2aeb3a7 (diff)
downloadHardenedPass-549ee790d3e52bc62565ddf92e6a556e98b5195e.tar.gz
HardenedPass-549ee790d3e52bc62565ddf92e6a556e98b5195e.zip
all: re-do package structure yet again
Diffstat (limited to 'passgen/diceware/src/main/kotlin/dev')
-rw-r--r--passgen/diceware/src/main/kotlin/dev/msfjarvis/aps/passgen/diceware/DicewarePassphraseGenerator.kt39
-rw-r--r--passgen/diceware/src/main/kotlin/dev/msfjarvis/aps/passgen/diceware/Die.kt30
-rw-r--r--passgen/diceware/src/main/kotlin/dev/msfjarvis/aps/passgen/diceware/RandomIntGenerator.kt15
-rw-r--r--passgen/diceware/src/main/kotlin/dev/msfjarvis/aps/passgen/diceware/WordListParser.kt21
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"
-}