aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/com/zeapo/pwdstore/sshkeygen/SshKeygenTask.kt
diff options
context:
space:
mode:
authorAditya Wasan <adityawasan55@gmail.com>2019-11-13 00:55:56 +0530
committerHarsh Shandilya <msfjarvis@gmail.com>2019-11-13 00:55:56 +0530
commit9acad2abf68b64d3ca70b5263a72dfe3d5ff0081 (patch)
treeaa84fe70cc5fc4906db89e42bb90e6463ad6c2ec /app/src/main/java/com/zeapo/pwdstore/sshkeygen/SshKeygenTask.kt
parent5749c97d7c597b01ecfc483ad5d387fc025e4653 (diff)
downloadHardenedPass-9acad2abf68b64d3ca70b5263a72dfe3d5ff0081.tar.gz
HardenedPass-9acad2abf68b64d3ca70b5263a72dfe3d5ff0081.zip
Convert java files to kotlin (#570)
* Break SshKeyGen into multiple files * Use tinted material button * Convert PasswordStore to kotlin * Remove SshKeyGen * Remove explicit imports and other tweaks Signed-off-by: Aditya Wasan <adityawasan55@gmail.com>
Diffstat (limited to 'app/src/main/java/com/zeapo/pwdstore/sshkeygen/SshKeygenTask.kt')
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/sshkeygen/SshKeygenTask.kt77
1 files changed, 77 insertions, 0 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/sshkeygen/SshKeygenTask.kt b/app/src/main/java/com/zeapo/pwdstore/sshkeygen/SshKeygenTask.kt
new file mode 100644
index 00000000..194d1023
--- /dev/null
+++ b/app/src/main/java/com/zeapo/pwdstore/sshkeygen/SshKeygenTask.kt
@@ -0,0 +1,77 @@
+/*
+ * Copyright © 2014-2019 The Android Password Store Authors. All Rights Reserved.
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+package com.zeapo.pwdstore.sshkeygen
+
+import android.app.ProgressDialog
+import android.os.AsyncTask
+import android.widget.Toast
+import androidx.appcompat.app.AppCompatActivity
+import androidx.fragment.app.DialogFragment
+import androidx.preference.PreferenceManager
+import com.google.android.material.dialog.MaterialAlertDialogBuilder
+import com.jcraft.jsch.JSch
+import com.jcraft.jsch.KeyPair
+import com.zeapo.pwdstore.R
+import java.io.File
+import java.io.FileOutputStream
+import java.lang.ref.WeakReference
+
+class KeyGenerateTask(activity: AppCompatActivity) : AsyncTask<String?, Void?, Exception?>() {
+ private var pd: ProgressDialog? = null
+ private val weakReference = WeakReference(activity)
+ override fun onPreExecute() {
+ super.onPreExecute()
+ pd = ProgressDialog.show(weakReference.get(), "", "Generating keys")
+ }
+
+ override fun doInBackground(vararg strings: String?): Exception? {
+ val length = strings[0]?.toInt()
+ val passphrase = strings[1]
+ val comment = strings[2]
+ val jsch = JSch()
+ try {
+ val kp = length?.let { KeyPair.genKeyPair(jsch, KeyPair.RSA, it) }
+ var file = File(weakReference.get()!!.filesDir.toString() + "/.ssh_key")
+ var out = FileOutputStream(file, false)
+ if (passphrase?.isNotEmpty()!!) {
+ kp?.writePrivateKey(out, passphrase.toByteArray())
+ } else {
+ kp?.writePrivateKey(out)
+ }
+ file = File(weakReference.get()!!.filesDir.toString() + "/.ssh_key.pub")
+ out = FileOutputStream(file, false)
+ kp?.writePublicKey(out, comment)
+ return null
+ } catch (e: Exception) {
+ e.printStackTrace()
+ return e
+ }
+ }
+
+ override fun onPostExecute(e: Exception?) {
+ super.onPostExecute(e)
+ val activity = weakReference.get()
+ if (activity is AppCompatActivity) {
+ pd!!.dismiss()
+ if (e == null) {
+ Toast.makeText(activity, "SSH-key generated", Toast.LENGTH_LONG).show()
+ val df: DialogFragment = ShowSshKeyFragment()
+ df.show(activity.supportFragmentManager, "public_key")
+ val prefs = PreferenceManager.getDefaultSharedPreferences(weakReference.get())
+ val editor = prefs.edit()
+ editor.putBoolean("use_generated_key", true)
+ editor.apply()
+ } else {
+ MaterialAlertDialogBuilder(weakReference.get())
+ .setTitle(activity.getString(R.string.error_generate_ssh_key))
+ .setMessage(activity.getString(R.string.ssh_key_error_dialog_text) + e.message)
+ .setPositiveButton(activity.getString(R.string.dialog_ok), null)
+ .show()
+ }
+ } else {
+ // TODO: When activity is destroyed
+ }
+ }
+}