diff options
| author | Aditya Wasan <adityawasan55@gmail.com> | 2019-11-13 00:55:56 +0530 |
|---|---|---|
| committer | Harsh Shandilya <msfjarvis@gmail.com> | 2019-11-13 00:55:56 +0530 |
| commit | 9acad2abf68b64d3ca70b5263a72dfe3d5ff0081 (patch) | |
| tree | aa84fe70cc5fc4906db89e42bb90e6463ad6c2ec /app/src/main/java/com/zeapo/pwdstore/sshkeygen/SshKeygenTask.kt | |
| parent | 5749c97d7c597b01ecfc483ad5d387fc025e4653 (diff) | |
| download | HardenedPass-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.kt | 77 |
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 + } + } +} |
