diff options
| author | Harsh Shandilya <msfjarvis@gmail.com> | 2020-06-29 12:50:05 +0530 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-06-29 12:50:05 +0530 |
| commit | ac6220eed31f1aab0f73403b3befe77c57f0c9a1 (patch) | |
| tree | 5950bb69dcfc1f10170af563151d4b52b1b055bc /app/src/main/java/com/zeapo/pwdstore/sshkeygen/SshKeyGenFragment.kt | |
| parent | 063c1a1144bb50845ecfb7d56eea16e4db4540e4 (diff) | |
| download | HardenedPass-ac6220eed31f1aab0f73403b3befe77c57f0c9a1.tar.gz HardenedPass-ac6220eed31f1aab0f73403b3befe77c57f0c9a1.zip | |
Merge SshKeyGenFragment into its activity (#897)
* Merge SshKeyGenFragment into its activity
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* Drop neutral button discouraged by material specs
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* Address review comments
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
Diffstat (limited to 'app/src/main/java/com/zeapo/pwdstore/sshkeygen/SshKeyGenFragment.kt')
| -rw-r--r-- | app/src/main/java/com/zeapo/pwdstore/sshkeygen/SshKeyGenFragment.kt | 111 |
1 files changed, 0 insertions, 111 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/sshkeygen/SshKeyGenFragment.kt b/app/src/main/java/com/zeapo/pwdstore/sshkeygen/SshKeyGenFragment.kt deleted file mode 100644 index 9b9d58f5..00000000 --- a/app/src/main/java/com/zeapo/pwdstore/sshkeygen/SshKeyGenFragment.kt +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright © 2014-2020 The Android Password Store Authors. All Rights Reserved. - * SPDX-License-Identifier: GPL-3.0-only - */ -package com.zeapo.pwdstore.sshkeygen - -import android.os.Bundle -import android.view.View -import android.view.inputmethod.InputMethodManager -import androidx.core.content.edit -import androidx.core.content.getSystemService -import androidx.fragment.app.Fragment -import androidx.lifecycle.lifecycleScope -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 com.zeapo.pwdstore.databinding.FragmentSshKeygenBinding -import com.zeapo.pwdstore.utils.getEncryptedPrefs -import com.zeapo.pwdstore.utils.viewBinding -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext -import java.io.File -import java.io.FileOutputStream - -class SshKeyGenFragment : Fragment(R.layout.fragment_ssh_keygen) { - - private var keyLength = 4096 - private val binding by viewBinding(FragmentSshKeygenBinding::bind) - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - with(binding) { - generate.setOnClickListener { - lifecycleScope.launch { generate(passphrase.text.toString(), comment.text.toString()) } - } - keyLengthGroup.check(R.id.key_length_4096) - keyLengthGroup.addOnButtonCheckedListener { _, checkedId, isChecked -> - if (isChecked) { - when (checkedId) { - R.id.key_length_2048 -> keyLength = 2048 - R.id.key_length_4096 -> keyLength = 4096 - } - } - } - } - } - - override fun onDestroyView() { - super.onDestroyView() - } - - // Invoked when 'Generate' button of SshKeyGenFragment clicked. Generates a - // private and public key, then replaces the SshKeyGenFragment with a - // ShowSshKeyFragment which displays the public key. - private suspend fun generate(passphrase: String, comment: String) { - binding.generate.text = getString(R.string.ssh_key_gen_generating_progress) - val e = try { - withContext(Dispatchers.IO) { - val kp = KeyPair.genKeyPair(JSch(), KeyPair.RSA, keyLength) - var file = File(requireActivity().filesDir, ".ssh_key") - var out = FileOutputStream(file, false) - if (passphrase.isNotEmpty()) { - kp?.writePrivateKey(out, passphrase.toByteArray()) - } else { - kp?.writePrivateKey(out) - } - file = File(requireActivity().filesDir, ".ssh_key.pub") - out = FileOutputStream(file, false) - kp?.writePublicKey(out, comment) - } - null - } catch (e: Exception) { - e.printStackTrace() - e - } finally { - requireContext().getEncryptedPrefs("git_operation").edit { - remove("ssh_key_local_passphrase") - } - } - val activity = requireActivity() - binding.generate.text = getString(R.string.ssh_keygen_generating_done) - if (e == null) { - val df = ShowSshKeyFragment() - df.show(requireActivity().supportFragmentManager, "public_key") - val prefs = PreferenceManager.getDefaultSharedPreferences(activity) - prefs.edit { putBoolean("use_generated_key", true) } - } else { - MaterialAlertDialogBuilder(activity) - .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)) { _, _ -> - requireActivity().finish() - } - .show() - } - hideKeyboard() - } - - private fun hideKeyboard() { - val activity = activity ?: return - val imm = activity.getSystemService<InputMethodManager>() ?: return - var view = activity.currentFocus - if (view == null) { - view = View(activity) - } - imm.hideSoftInputFromWindow(view.windowToken, 0) - } -} |
