aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/org/pacien/tincapp/utils/TincKeyring.kt
diff options
context:
space:
mode:
authorpacien2018-02-16 18:23:01 +0100
committerpacien2018-02-16 18:23:01 +0100
commitc359d78bcd45cb506bac51a616ef62af0845df85 (patch)
treee526bbf710d301310fdee6a0da6399fb79c71f66 /app/src/main/java/org/pacien/tincapp/utils/TincKeyring.kt
parent680fe07b6ea000ee29ac28e2f48665433e7011df (diff)
downloadtincapp-c359d78bcd45cb506bac51a616ef62af0845df85.tar.gz
Refactor activities and service, locking app at daemon startup and shutdown
Diffstat (limited to 'app/src/main/java/org/pacien/tincapp/utils/TincKeyring.kt')
-rw-r--r--app/src/main/java/org/pacien/tincapp/utils/TincKeyring.kt26
1 files changed, 26 insertions, 0 deletions
diff --git a/app/src/main/java/org/pacien/tincapp/utils/TincKeyring.kt b/app/src/main/java/org/pacien/tincapp/utils/TincKeyring.kt
new file mode 100644
index 0000000..422763f
--- /dev/null
+++ b/app/src/main/java/org/pacien/tincapp/utils/TincKeyring.kt
@@ -0,0 +1,26 @@
1package org.pacien.tincapp.utils
2
3import android.os.ParcelFileDescriptor
4import org.pacien.tincapp.commands.TincApp
5import java.io.File
6import java.io.FileNotFoundException
7
8/**
9 * @author pacien
10 */
11object TincKeyring {
12 fun needsPassphrase(netName: String) = try {
13 TincApp.listPrivateKeys(netName).filter { it.exists() }.any { PemUtils.isEncrypted(PemUtils.read(it)) }
14 } catch (e: FileNotFoundException) {
15 false
16 }
17
18 fun openPrivateKey(f: File?, passphrase: String?): ParcelFileDescriptor? {
19 if (f == null || !f.exists() || passphrase == null) return null
20 val pipe = ParcelFileDescriptor.createPipe()
21 val decryptedKey = PemUtils.decrypt(PemUtils.read(f), passphrase)
22 val outputStream = ParcelFileDescriptor.AutoCloseOutputStream(pipe[1])
23 PemUtils.write(decryptedKey, outputStream.writer())
24 return pipe[0]
25 }
26}