aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/com/zeapo/pwdstore/git/sshj
diff options
context:
space:
mode:
authorFabian Henneke <FabianHenneke@users.noreply.github.com>2020-09-04 11:16:05 +0200
committerGitHub <noreply@github.com>2020-09-04 14:46:05 +0530
commit4214b7fbb4b42e187ce23b9a56df89b45df87ca6 (patch)
treea96dd0ffda61b598aeeda3addd052f467eb74c3d /app/src/main/java/com/zeapo/pwdstore/git/sshj
parente731943437861f2eeac4d8a442f512065be2a0e7 (diff)
downloadHardenedPass-4214b7fbb4b42e187ce23b9a56df89b45df87ca6.tar.gz
HardenedPass-4214b7fbb4b42e187ce23b9a56df89b45df87ca6.zip
Add migration to new SshKey backend (#1076)
Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
Diffstat (limited to 'app/src/main/java/com/zeapo/pwdstore/git/sshj')
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/git/sshj/SshKey.kt12
1 files changed, 10 insertions, 2 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/git/sshj/SshKey.kt b/app/src/main/java/com/zeapo/pwdstore/git/sshj/SshKey.kt
index 8b657040..da49111e 100644
--- a/app/src/main/java/com/zeapo/pwdstore/git/sshj/SshKey.kt
+++ b/app/src/main/java/com/zeapo/pwdstore/git/sshj/SshKey.kt
@@ -76,7 +76,7 @@ object SshKey {
val sshPublicKey
get() = if (publicKeyFile.exists()) publicKeyFile.readText() else null
val canShowSshPublicKey
- get() = type in listOf(Type.KeystoreNative, Type.KeystoreWrappedEd25519)
+ get() = type in listOf(Type.LegacyGenerated, Type.KeystoreNative, Type.KeystoreWrappedEd25519)
val exists
get() = type != null
val mustAuthenticate: Boolean
@@ -128,6 +128,9 @@ object SshKey {
Imported("imported"),
KeystoreNative("keystore_native"),
KeystoreWrappedEd25519("keystore_wrapped_ed25519"),
+
+ // Behaves like `Imported`, but allows to view the public key.
+ LegacyGenerated("legacy_generated"),
;
companion object {
@@ -204,6 +207,11 @@ object SshKey {
type = Type.Imported
}
+ @Deprecated("To be used only in Migrations.kt")
+ fun useLegacyKey(isGenerated: Boolean) {
+ type = if (isGenerated) Type.LegacyGenerated else Type.Imported
+ }
+
@Suppress("BlockingMethodInNonBlockingContext")
private suspend fun getOrCreateWrappingMasterKey(requireAuthentication: Boolean) = withContext(Dispatchers.IO) {
MasterKey.Builder(context, KEYSTORE_ALIAS).run {
@@ -268,7 +276,7 @@ object SshKey {
}
fun provide(client: SSHClient, passphraseFinder: InteractivePasswordFinder): KeyProvider? = when (type) {
- Type.Imported -> client.loadKeys(privateKeyFile.absolutePath, passphraseFinder)
+ Type.LegacyGenerated, Type.Imported -> client.loadKeys(privateKeyFile.absolutePath, passphraseFinder)
Type.KeystoreNative -> KeystoreNativeKeyProvider
Type.KeystoreWrappedEd25519 -> KeystoreWrappedEd25519KeyProvider
null -> null