├── .claude └── settings.local.json ├── .github ├── copilot-instructions.md ├── git-commit-instructions.md └── workflows │ ├── cli-app-run.yml │ └── lib-unit-tests.yml ├── .gitignore ├── DEVELOPMENT.md ├── README.md ├── cliApp ├── build.gradle.kts ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── src │ ├── commonMain │ └── kotlin │ │ └── tech │ │ └── arnav │ │ └── twofac │ │ └── cli │ │ ├── Main.kt │ │ ├── Platform.kt │ │ ├── commands │ │ ├── AddCommand.kt │ │ ├── DisplayCommand.kt │ │ └── InfoCommand.kt │ │ ├── di │ │ ├── modules.kt │ │ └── qualifiers.kt │ │ ├── storage │ │ ├── AppDirUtils.kt │ │ └── FileStorage.kt │ │ └── viewmodels │ │ └── AccountsViewModel.kt │ ├── commonTest │ └── kotlin │ │ └── tech │ │ └── arnav │ │ └── twofac │ │ └── cli │ │ ├── commands │ │ ├── DisplayCommandTest.kt │ │ └── InfoCommandTest.kt │ │ └── di │ │ └── KoinVerificationTest.kt │ ├── linuxMain │ └── kotlin │ │ └── tech │ │ └── arnav │ │ └── twofac │ │ └── cli │ │ └── Platform.linux.kt │ ├── macosMain │ └── kotlin │ │ └── tech │ │ └── arnav │ │ └── twofac │ │ └── cli │ │ └── Platform.macos.kt │ └── mingwMain │ └── kotlin │ └── tech │ └── arnav │ └── twofac │ └── cli │ └── Platform.mingw.kt ├── composeApp ├── .gitignore ├── build.gradle.kts └── src │ ├── androidMain │ ├── AndroidManifest.xml │ ├── kotlin │ │ └── tech │ │ │ └── arnav │ │ │ └── twofac │ │ │ ├── MainActivity.kt │ │ │ ├── Platform.android.kt │ │ │ ├── TwoFacApplication.kt │ │ │ └── storage │ │ │ └── AppDirUtils.android.kt │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ └── ic_launcher_background.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ └── strings.xml │ ├── commonMain │ ├── composeResources │ │ └── drawable │ │ │ └── compose-multiplatform.xml │ └── kotlin │ │ └── tech │ │ └── arnav │ │ └── twofac │ │ ├── App.kt │ │ ├── Application.kt │ │ ├── Greeting.kt │ │ ├── Platform.kt │ │ ├── components │ │ ├── OTPCard.kt │ │ └── PasskeyDialog.kt │ │ ├── di │ │ └── modules.kt │ │ ├── navigation │ │ └── NavigationRoutes.kt │ │ ├── screens │ │ ├── AccountDetailScreen.kt │ │ ├── AccountsScreen.kt │ │ ├── AddAccountScreen.kt │ │ ├── HomeScreen.kt │ │ └── SettingsScreen.kt │ │ ├── storage │ │ ├── AppDirUtils.kt │ │ └── FileStorage.kt │ │ └── viewmodels │ │ └── AccountsViewModel.kt │ ├── commonTest │ └── kotlin │ │ └── tech │ │ └── arnav │ │ └── twofac │ │ └── ComposeAppCommonTest.kt │ ├── desktopMain │ └── kotlin │ │ └── tech │ │ └── arnav │ │ └── twofac │ │ ├── Platform.jvm.kt │ │ ├── main.kt │ │ └── storage │ │ └── AppDirUtils.jvm.kt │ ├── iosMain │ └── kotlin │ │ └── tech │ │ └── arnav │ │ └── twofac │ │ ├── MainViewController.kt │ │ ├── Platform.ios.kt │ │ └── storage │ │ └── AppDirUtils.ios.kt │ └── wasmJsMain │ ├── kotlin │ └── tech │ │ └── arnav │ │ └── twofac │ │ ├── Platform.wasmJs.kt │ │ ├── main.kt │ │ └── storage │ │ └── AppDirUtils.wasmJs.kt │ └── resources │ ├── index.html │ └── styles.css ├── gradle.properties ├── gradle ├── libs.versions.toml └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── iosApp ├── .gitignore ├── Configuration │ └── Config.xcconfig ├── iosApp.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata └── iosApp │ ├── Assets.xcassets │ ├── AccentColor.colorset │ │ └── Contents.json │ ├── AppIcon.appiconset │ │ ├── Contents.json │ │ └── app-icon-1024.png │ └── Contents.json │ ├── ContentView.swift │ ├── Info.plist │ ├── Preview Content │ └── Preview Assets.xcassets │ │ └── Contents.json │ └── iOSApp.swift ├── kotlin-js-store ├── wasm │ └── yarn.lock └── yarn.lock ├── settings.gradle.kts ├── sharedLib ├── .gitignore ├── build.gradle.kts └── src │ ├── commonMain │ └── kotlin │ │ └── tech │ │ └── arnav │ │ └── twofac │ │ └── lib │ │ ├── Platform.kt │ │ ├── TwoFacLib.kt │ │ ├── crypto │ │ ├── CryptoTools.kt │ │ ├── DefaultCryptoTools.kt │ │ └── Encoding.kt │ │ ├── otp │ │ ├── HOTP.kt │ │ ├── OTP.kt │ │ └── TOTP.kt │ │ ├── storage │ │ ├── MemoryStorage.kt │ │ ├── Storage.kt │ │ ├── StorageUtils.kt │ │ └── StoredAccount.kt │ │ └── uri │ │ └── OtpAuthURI.kt │ ├── commonTest │ └── kotlin │ │ └── tech │ │ └── arnav │ │ └── twofac │ │ └── lib │ │ ├── TwoFacLibTest.kt │ │ ├── crypto │ │ ├── CryptoToolsTest.kt │ │ └── EncodingTest.kt │ │ ├── otp │ │ ├── HOTPTest.kt │ │ └── TOTPTest.kt │ │ ├── storage │ │ ├── MemoryStorageTest.kt │ │ └── StorageUtilsTest.kt │ │ └── uri │ │ └── OtpAuthURITest.kt │ ├── jvmMain │ └── kotlin │ │ └── tech │ │ └── arnav │ │ └── twofac │ │ └── lib │ │ └── Platform.jvm.kt │ ├── jvmTest │ └── kotlin │ │ └── tech │ │ └── arnav │ │ └── twofac │ │ └── lib │ │ └── crypto │ │ └── CryptoProviderTests.kt │ ├── nativeMain │ ├── cinterop │ │ └── zlib.def │ └── kotlin │ │ ├── libtwofac.kt │ │ └── tech │ │ └── arnav │ │ └── twofac │ │ └── lib │ │ └── Platform.native.kt │ ├── nativeTest │ └── kotlin │ │ └── tech │ │ └── arnav │ │ └── twofac │ │ └── lib │ │ └── crypto │ │ └── CryptoProviderTests.kt │ ├── wasmJsMain │ └── kotlin │ │ └── tech │ │ └── arnav │ │ └── twofac │ │ └── lib │ │ └── Platform.wasmJs.kt │ └── wasmJsTest │ └── kotlin │ └── tech │ └── arnav │ └── twofac │ └── lib │ └── crypto │ └── CryptoProviderTests.kt └── versions.properties /.claude/settings.local.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/.claude/settings.local.json -------------------------------------------------------------------------------- /.github/copilot-instructions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/.github/copilot-instructions.md -------------------------------------------------------------------------------- /.github/git-commit-instructions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/.github/git-commit-instructions.md -------------------------------------------------------------------------------- /.github/workflows/cli-app-run.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/.github/workflows/cli-app-run.yml -------------------------------------------------------------------------------- /.github/workflows/lib-unit-tests.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/.github/workflows/lib-unit-tests.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/.gitignore -------------------------------------------------------------------------------- /DEVELOPMENT.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/DEVELOPMENT.md -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/README.md -------------------------------------------------------------------------------- /cliApp/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/cliApp/build.gradle.kts -------------------------------------------------------------------------------- /cliApp/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/cliApp/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /cliApp/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/cliApp/gradle/wrapper/gradle-wrapper.properties -------------------------------------------------------------------------------- /cliApp/gradlew: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/cliApp/gradlew -------------------------------------------------------------------------------- /cliApp/gradlew.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/cliApp/gradlew.bat -------------------------------------------------------------------------------- /cliApp/src/commonMain/kotlin/tech/arnav/twofac/cli/Main.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/cliApp/src/commonMain/kotlin/tech/arnav/twofac/cli/Main.kt -------------------------------------------------------------------------------- /cliApp/src/commonMain/kotlin/tech/arnav/twofac/cli/Platform.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/cliApp/src/commonMain/kotlin/tech/arnav/twofac/cli/Platform.kt -------------------------------------------------------------------------------- /cliApp/src/commonMain/kotlin/tech/arnav/twofac/cli/commands/AddCommand.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/cliApp/src/commonMain/kotlin/tech/arnav/twofac/cli/commands/AddCommand.kt -------------------------------------------------------------------------------- /cliApp/src/commonMain/kotlin/tech/arnav/twofac/cli/commands/DisplayCommand.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/cliApp/src/commonMain/kotlin/tech/arnav/twofac/cli/commands/DisplayCommand.kt -------------------------------------------------------------------------------- /cliApp/src/commonMain/kotlin/tech/arnav/twofac/cli/commands/InfoCommand.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/cliApp/src/commonMain/kotlin/tech/arnav/twofac/cli/commands/InfoCommand.kt -------------------------------------------------------------------------------- /cliApp/src/commonMain/kotlin/tech/arnav/twofac/cli/di/modules.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/cliApp/src/commonMain/kotlin/tech/arnav/twofac/cli/di/modules.kt -------------------------------------------------------------------------------- /cliApp/src/commonMain/kotlin/tech/arnav/twofac/cli/di/qualifiers.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/cliApp/src/commonMain/kotlin/tech/arnav/twofac/cli/di/qualifiers.kt -------------------------------------------------------------------------------- /cliApp/src/commonMain/kotlin/tech/arnav/twofac/cli/storage/AppDirUtils.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/cliApp/src/commonMain/kotlin/tech/arnav/twofac/cli/storage/AppDirUtils.kt -------------------------------------------------------------------------------- /cliApp/src/commonMain/kotlin/tech/arnav/twofac/cli/storage/FileStorage.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/cliApp/src/commonMain/kotlin/tech/arnav/twofac/cli/storage/FileStorage.kt -------------------------------------------------------------------------------- /cliApp/src/commonMain/kotlin/tech/arnav/twofac/cli/viewmodels/AccountsViewModel.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/cliApp/src/commonMain/kotlin/tech/arnav/twofac/cli/viewmodels/AccountsViewModel.kt -------------------------------------------------------------------------------- /cliApp/src/commonTest/kotlin/tech/arnav/twofac/cli/commands/DisplayCommandTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/cliApp/src/commonTest/kotlin/tech/arnav/twofac/cli/commands/DisplayCommandTest.kt -------------------------------------------------------------------------------- /cliApp/src/commonTest/kotlin/tech/arnav/twofac/cli/commands/InfoCommandTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/cliApp/src/commonTest/kotlin/tech/arnav/twofac/cli/commands/InfoCommandTest.kt -------------------------------------------------------------------------------- /cliApp/src/commonTest/kotlin/tech/arnav/twofac/cli/di/KoinVerificationTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/cliApp/src/commonTest/kotlin/tech/arnav/twofac/cli/di/KoinVerificationTest.kt -------------------------------------------------------------------------------- /cliApp/src/linuxMain/kotlin/tech/arnav/twofac/cli/Platform.linux.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/cliApp/src/linuxMain/kotlin/tech/arnav/twofac/cli/Platform.linux.kt -------------------------------------------------------------------------------- /cliApp/src/macosMain/kotlin/tech/arnav/twofac/cli/Platform.macos.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/cliApp/src/macosMain/kotlin/tech/arnav/twofac/cli/Platform.macos.kt -------------------------------------------------------------------------------- /cliApp/src/mingwMain/kotlin/tech/arnav/twofac/cli/Platform.mingw.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/cliApp/src/mingwMain/kotlin/tech/arnav/twofac/cli/Platform.mingw.kt -------------------------------------------------------------------------------- /composeApp/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/.gitignore -------------------------------------------------------------------------------- /composeApp/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/build.gradle.kts -------------------------------------------------------------------------------- /composeApp/src/androidMain/AndroidManifest.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/androidMain/AndroidManifest.xml -------------------------------------------------------------------------------- /composeApp/src/androidMain/kotlin/tech/arnav/twofac/MainActivity.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/androidMain/kotlin/tech/arnav/twofac/MainActivity.kt -------------------------------------------------------------------------------- /composeApp/src/androidMain/kotlin/tech/arnav/twofac/Platform.android.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/androidMain/kotlin/tech/arnav/twofac/Platform.android.kt -------------------------------------------------------------------------------- /composeApp/src/androidMain/kotlin/tech/arnav/twofac/TwoFacApplication.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/androidMain/kotlin/tech/arnav/twofac/TwoFacApplication.kt -------------------------------------------------------------------------------- /composeApp/src/androidMain/kotlin/tech/arnav/twofac/storage/AppDirUtils.android.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/androidMain/kotlin/tech/arnav/twofac/storage/AppDirUtils.android.kt -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/drawable/ic_launcher_background.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/androidMain/res/drawable/ic_launcher_background.xml -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/values/strings.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/androidMain/res/values/strings.xml -------------------------------------------------------------------------------- /composeApp/src/commonMain/composeResources/drawable/compose-multiplatform.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/commonMain/composeResources/drawable/compose-multiplatform.xml -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/tech/arnav/twofac/App.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/commonMain/kotlin/tech/arnav/twofac/App.kt -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/tech/arnav/twofac/Application.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/commonMain/kotlin/tech/arnav/twofac/Application.kt -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/tech/arnav/twofac/Greeting.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/commonMain/kotlin/tech/arnav/twofac/Greeting.kt -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/tech/arnav/twofac/Platform.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/commonMain/kotlin/tech/arnav/twofac/Platform.kt -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/tech/arnav/twofac/components/OTPCard.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/commonMain/kotlin/tech/arnav/twofac/components/OTPCard.kt -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/tech/arnav/twofac/components/PasskeyDialog.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/commonMain/kotlin/tech/arnav/twofac/components/PasskeyDialog.kt -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/tech/arnav/twofac/di/modules.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/commonMain/kotlin/tech/arnav/twofac/di/modules.kt -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/tech/arnav/twofac/navigation/NavigationRoutes.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/commonMain/kotlin/tech/arnav/twofac/navigation/NavigationRoutes.kt -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/tech/arnav/twofac/screens/AccountDetailScreen.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/commonMain/kotlin/tech/arnav/twofac/screens/AccountDetailScreen.kt -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/tech/arnav/twofac/screens/AccountsScreen.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/commonMain/kotlin/tech/arnav/twofac/screens/AccountsScreen.kt -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/tech/arnav/twofac/screens/AddAccountScreen.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/commonMain/kotlin/tech/arnav/twofac/screens/AddAccountScreen.kt -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/tech/arnav/twofac/screens/HomeScreen.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/commonMain/kotlin/tech/arnav/twofac/screens/HomeScreen.kt -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/tech/arnav/twofac/screens/SettingsScreen.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/commonMain/kotlin/tech/arnav/twofac/screens/SettingsScreen.kt -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/tech/arnav/twofac/storage/AppDirUtils.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/commonMain/kotlin/tech/arnav/twofac/storage/AppDirUtils.kt -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/tech/arnav/twofac/storage/FileStorage.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/commonMain/kotlin/tech/arnav/twofac/storage/FileStorage.kt -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/tech/arnav/twofac/viewmodels/AccountsViewModel.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/commonMain/kotlin/tech/arnav/twofac/viewmodels/AccountsViewModel.kt -------------------------------------------------------------------------------- /composeApp/src/commonTest/kotlin/tech/arnav/twofac/ComposeAppCommonTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/commonTest/kotlin/tech/arnav/twofac/ComposeAppCommonTest.kt -------------------------------------------------------------------------------- /composeApp/src/desktopMain/kotlin/tech/arnav/twofac/Platform.jvm.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/desktopMain/kotlin/tech/arnav/twofac/Platform.jvm.kt -------------------------------------------------------------------------------- /composeApp/src/desktopMain/kotlin/tech/arnav/twofac/main.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/desktopMain/kotlin/tech/arnav/twofac/main.kt -------------------------------------------------------------------------------- /composeApp/src/desktopMain/kotlin/tech/arnav/twofac/storage/AppDirUtils.jvm.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/desktopMain/kotlin/tech/arnav/twofac/storage/AppDirUtils.jvm.kt -------------------------------------------------------------------------------- /composeApp/src/iosMain/kotlin/tech/arnav/twofac/MainViewController.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/iosMain/kotlin/tech/arnav/twofac/MainViewController.kt -------------------------------------------------------------------------------- /composeApp/src/iosMain/kotlin/tech/arnav/twofac/Platform.ios.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/iosMain/kotlin/tech/arnav/twofac/Platform.ios.kt -------------------------------------------------------------------------------- /composeApp/src/iosMain/kotlin/tech/arnav/twofac/storage/AppDirUtils.ios.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/iosMain/kotlin/tech/arnav/twofac/storage/AppDirUtils.ios.kt -------------------------------------------------------------------------------- /composeApp/src/wasmJsMain/kotlin/tech/arnav/twofac/Platform.wasmJs.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/wasmJsMain/kotlin/tech/arnav/twofac/Platform.wasmJs.kt -------------------------------------------------------------------------------- /composeApp/src/wasmJsMain/kotlin/tech/arnav/twofac/main.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/wasmJsMain/kotlin/tech/arnav/twofac/main.kt -------------------------------------------------------------------------------- /composeApp/src/wasmJsMain/kotlin/tech/arnav/twofac/storage/AppDirUtils.wasmJs.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/wasmJsMain/kotlin/tech/arnav/twofac/storage/AppDirUtils.wasmJs.kt -------------------------------------------------------------------------------- /composeApp/src/wasmJsMain/resources/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/wasmJsMain/resources/index.html -------------------------------------------------------------------------------- /composeApp/src/wasmJsMain/resources/styles.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/composeApp/src/wasmJsMain/resources/styles.css -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/gradle.properties -------------------------------------------------------------------------------- /gradle/libs.versions.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/gradle/libs.versions.toml -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/gradle/wrapper/gradle-wrapper.properties -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/gradlew -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/gradlew.bat -------------------------------------------------------------------------------- /iosApp/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/iosApp/.gitignore -------------------------------------------------------------------------------- /iosApp/Configuration/Config.xcconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/iosApp/Configuration/Config.xcconfig -------------------------------------------------------------------------------- /iosApp/iosApp.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/iosApp/iosApp.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /iosApp/iosApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/iosApp/iosApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /iosApp/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/iosApp/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json -------------------------------------------------------------------------------- /iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json -------------------------------------------------------------------------------- /iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/app-icon-1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/app-icon-1024.png -------------------------------------------------------------------------------- /iosApp/iosApp/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/iosApp/iosApp/Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /iosApp/iosApp/ContentView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/iosApp/iosApp/ContentView.swift -------------------------------------------------------------------------------- /iosApp/iosApp/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/iosApp/iosApp/Info.plist -------------------------------------------------------------------------------- /iosApp/iosApp/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/iosApp/iosApp/Preview Content/Preview Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /iosApp/iosApp/iOSApp.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/iosApp/iosApp/iOSApp.swift -------------------------------------------------------------------------------- /kotlin-js-store/wasm/yarn.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/kotlin-js-store/wasm/yarn.lock -------------------------------------------------------------------------------- /kotlin-js-store/yarn.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/kotlin-js-store/yarn.lock -------------------------------------------------------------------------------- /settings.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/settings.gradle.kts -------------------------------------------------------------------------------- /sharedLib/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /sharedLib/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/sharedLib/build.gradle.kts -------------------------------------------------------------------------------- /sharedLib/src/commonMain/kotlin/tech/arnav/twofac/lib/Platform.kt: -------------------------------------------------------------------------------- 1 | package tech.arnav.twofac.lib 2 | 3 | expect fun libPlatform(): String -------------------------------------------------------------------------------- /sharedLib/src/commonMain/kotlin/tech/arnav/twofac/lib/TwoFacLib.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/sharedLib/src/commonMain/kotlin/tech/arnav/twofac/lib/TwoFacLib.kt -------------------------------------------------------------------------------- /sharedLib/src/commonMain/kotlin/tech/arnav/twofac/lib/crypto/CryptoTools.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/sharedLib/src/commonMain/kotlin/tech/arnav/twofac/lib/crypto/CryptoTools.kt -------------------------------------------------------------------------------- /sharedLib/src/commonMain/kotlin/tech/arnav/twofac/lib/crypto/DefaultCryptoTools.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/sharedLib/src/commonMain/kotlin/tech/arnav/twofac/lib/crypto/DefaultCryptoTools.kt -------------------------------------------------------------------------------- /sharedLib/src/commonMain/kotlin/tech/arnav/twofac/lib/crypto/Encoding.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/sharedLib/src/commonMain/kotlin/tech/arnav/twofac/lib/crypto/Encoding.kt -------------------------------------------------------------------------------- /sharedLib/src/commonMain/kotlin/tech/arnav/twofac/lib/otp/HOTP.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/sharedLib/src/commonMain/kotlin/tech/arnav/twofac/lib/otp/HOTP.kt -------------------------------------------------------------------------------- /sharedLib/src/commonMain/kotlin/tech/arnav/twofac/lib/otp/OTP.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/sharedLib/src/commonMain/kotlin/tech/arnav/twofac/lib/otp/OTP.kt -------------------------------------------------------------------------------- /sharedLib/src/commonMain/kotlin/tech/arnav/twofac/lib/otp/TOTP.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/sharedLib/src/commonMain/kotlin/tech/arnav/twofac/lib/otp/TOTP.kt -------------------------------------------------------------------------------- /sharedLib/src/commonMain/kotlin/tech/arnav/twofac/lib/storage/MemoryStorage.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/sharedLib/src/commonMain/kotlin/tech/arnav/twofac/lib/storage/MemoryStorage.kt -------------------------------------------------------------------------------- /sharedLib/src/commonMain/kotlin/tech/arnav/twofac/lib/storage/Storage.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/sharedLib/src/commonMain/kotlin/tech/arnav/twofac/lib/storage/Storage.kt -------------------------------------------------------------------------------- /sharedLib/src/commonMain/kotlin/tech/arnav/twofac/lib/storage/StorageUtils.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/sharedLib/src/commonMain/kotlin/tech/arnav/twofac/lib/storage/StorageUtils.kt -------------------------------------------------------------------------------- /sharedLib/src/commonMain/kotlin/tech/arnav/twofac/lib/storage/StoredAccount.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/sharedLib/src/commonMain/kotlin/tech/arnav/twofac/lib/storage/StoredAccount.kt -------------------------------------------------------------------------------- /sharedLib/src/commonMain/kotlin/tech/arnav/twofac/lib/uri/OtpAuthURI.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/sharedLib/src/commonMain/kotlin/tech/arnav/twofac/lib/uri/OtpAuthURI.kt -------------------------------------------------------------------------------- /sharedLib/src/commonTest/kotlin/tech/arnav/twofac/lib/TwoFacLibTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/sharedLib/src/commonTest/kotlin/tech/arnav/twofac/lib/TwoFacLibTest.kt -------------------------------------------------------------------------------- /sharedLib/src/commonTest/kotlin/tech/arnav/twofac/lib/crypto/CryptoToolsTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/sharedLib/src/commonTest/kotlin/tech/arnav/twofac/lib/crypto/CryptoToolsTest.kt -------------------------------------------------------------------------------- /sharedLib/src/commonTest/kotlin/tech/arnav/twofac/lib/crypto/EncodingTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/sharedLib/src/commonTest/kotlin/tech/arnav/twofac/lib/crypto/EncodingTest.kt -------------------------------------------------------------------------------- /sharedLib/src/commonTest/kotlin/tech/arnav/twofac/lib/otp/HOTPTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/sharedLib/src/commonTest/kotlin/tech/arnav/twofac/lib/otp/HOTPTest.kt -------------------------------------------------------------------------------- /sharedLib/src/commonTest/kotlin/tech/arnav/twofac/lib/otp/TOTPTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/sharedLib/src/commonTest/kotlin/tech/arnav/twofac/lib/otp/TOTPTest.kt -------------------------------------------------------------------------------- /sharedLib/src/commonTest/kotlin/tech/arnav/twofac/lib/storage/MemoryStorageTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/sharedLib/src/commonTest/kotlin/tech/arnav/twofac/lib/storage/MemoryStorageTest.kt -------------------------------------------------------------------------------- /sharedLib/src/commonTest/kotlin/tech/arnav/twofac/lib/storage/StorageUtilsTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/sharedLib/src/commonTest/kotlin/tech/arnav/twofac/lib/storage/StorageUtilsTest.kt -------------------------------------------------------------------------------- /sharedLib/src/commonTest/kotlin/tech/arnav/twofac/lib/uri/OtpAuthURITest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/sharedLib/src/commonTest/kotlin/tech/arnav/twofac/lib/uri/OtpAuthURITest.kt -------------------------------------------------------------------------------- /sharedLib/src/jvmMain/kotlin/tech/arnav/twofac/lib/Platform.jvm.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/sharedLib/src/jvmMain/kotlin/tech/arnav/twofac/lib/Platform.jvm.kt -------------------------------------------------------------------------------- /sharedLib/src/jvmTest/kotlin/tech/arnav/twofac/lib/crypto/CryptoProviderTests.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/sharedLib/src/jvmTest/kotlin/tech/arnav/twofac/lib/crypto/CryptoProviderTests.kt -------------------------------------------------------------------------------- /sharedLib/src/nativeMain/cinterop/zlib.def: -------------------------------------------------------------------------------- 1 | headers = zlib.h 2 | linkerOpts = -lz 3 | -------------------------------------------------------------------------------- /sharedLib/src/nativeMain/kotlin/libtwofac.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/sharedLib/src/nativeMain/kotlin/libtwofac.kt -------------------------------------------------------------------------------- /sharedLib/src/nativeMain/kotlin/tech/arnav/twofac/lib/Platform.native.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/sharedLib/src/nativeMain/kotlin/tech/arnav/twofac/lib/Platform.native.kt -------------------------------------------------------------------------------- /sharedLib/src/nativeTest/kotlin/tech/arnav/twofac/lib/crypto/CryptoProviderTests.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/sharedLib/src/nativeTest/kotlin/tech/arnav/twofac/lib/crypto/CryptoProviderTests.kt -------------------------------------------------------------------------------- /sharedLib/src/wasmJsMain/kotlin/tech/arnav/twofac/lib/Platform.wasmJs.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/sharedLib/src/wasmJsMain/kotlin/tech/arnav/twofac/lib/Platform.wasmJs.kt -------------------------------------------------------------------------------- /sharedLib/src/wasmJsTest/kotlin/tech/arnav/twofac/lib/crypto/CryptoProviderTests.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/sharedLib/src/wasmJsTest/kotlin/tech/arnav/twofac/lib/crypto/CryptoProviderTests.kt -------------------------------------------------------------------------------- /versions.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/championswimmer/TwoFac/HEAD/versions.properties --------------------------------------------------------------------------------