app: add diceware injection module
This commit is contained in:
parent
5bcbf8da08
commit
0e8f899434
1 changed files with 55 additions and 0 deletions
|
@ -0,0 +1,55 @@
|
|||
/*
|
||||
* Copyright © 2014-2021 The Android Password Store Authors. All Rights Reserved.
|
||||
* SPDX-License-Identifier: GPL-3.0-only
|
||||
*/
|
||||
|
||||
package dev.msfjarvis.aps.injection.pwgen
|
||||
|
||||
import android.content.Context
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import dagger.hilt.InstallIn
|
||||
import dagger.hilt.android.components.FragmentComponent
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
import dev.msfjarvis.aps.passgen.diceware.DicewarePassphraseGenerator
|
||||
import dev.msfjarvis.aps.passgen.diceware.Die
|
||||
import dev.msfjarvis.aps.passgen.diceware.RandomIntGenerator
|
||||
import java.io.InputStream
|
||||
import java.security.SecureRandom
|
||||
import javax.inject.Qualifier
|
||||
|
||||
@Module
|
||||
@InstallIn(FragmentComponent::class)
|
||||
object DicewareModule {
|
||||
|
||||
@Provides
|
||||
fun provideDicewareGenerator(
|
||||
die: Die,
|
||||
@WordlistQualifier wordList: InputStream,
|
||||
): DicewarePassphraseGenerator {
|
||||
return DicewarePassphraseGenerator(die, wordList)
|
||||
}
|
||||
|
||||
@Provides
|
||||
fun provideDie(
|
||||
intGenerator: RandomIntGenerator,
|
||||
): Die {
|
||||
return Die(6, intGenerator)
|
||||
}
|
||||
|
||||
@Provides
|
||||
fun provideRandomIntGenerator(): RandomIntGenerator {
|
||||
return RandomIntGenerator { range ->
|
||||
SecureRandom().nextInt(range.last).coerceAtLeast(range.first)
|
||||
}
|
||||
}
|
||||
|
||||
@[Provides WordlistQualifier]
|
||||
fun provideDefaultWordList(@ApplicationContext context: Context): InputStream {
|
||||
return context.resources.openRawResource(
|
||||
dev.msfjarvis.aps.passgen.diceware.R.raw.diceware_wordlist
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Qualifier annotation class WordlistQualifier
|
Loading…
Reference in a new issue