From 87ec3620d2259064831356c2f4000ae591756fd2 Mon Sep 17 00:00:00 2001 From: pacien Date: Sat, 10 Feb 2018 14:16:15 +0100 Subject: Reformat code --- .../main/java/org/pacien/tincapp/utils/PemUtils.kt | 82 +++++++++++----------- 1 file changed, 41 insertions(+), 41 deletions(-) (limited to 'app/src/main/java/org/pacien/tincapp/utils') diff --git a/app/src/main/java/org/pacien/tincapp/utils/PemUtils.kt b/app/src/main/java/org/pacien/tincapp/utils/PemUtils.kt index 3d59476..33240f9 100644 --- a/app/src/main/java/org/pacien/tincapp/utils/PemUtils.kt +++ b/app/src/main/java/org/pacien/tincapp/utils/PemUtils.kt @@ -17,46 +17,46 @@ import java.io.Writer */ object PemUtils { - private val PROVIDER = org.bouncycastle.jce.provider.BouncyCastleProvider() - private val ENCRYPTED_PROC_TYPE_HEADER = PemHeader("Proc-Type", "4,ENCRYPTED") - private val DEK_INFO_HEADER_KEY = "DEK-Info" - private val ALGO = "AES-256-CBC" - - private class DekInfo(val algName: String, val iv: ByteArray) - - private fun dekInfoHeader(iv: ByteArray) = PemHeader(DEK_INFO_HEADER_KEY, "$ALGO,${Hex.toHexString(iv)}") - private fun PemObject.getPemHeaders() = headers.map { it as PemHeader } - - fun read(f: File): PemObject = PEMParser(FileReader(f)).readPemObject() - fun write(obj: PemObject, out: Writer) = JcaPEMWriter(out).apply { writeObject(obj) }.apply { close() } - fun isEncrypted(obj: PemObject) = obj.headers.contains(ENCRYPTED_PROC_TYPE_HEADER) - - fun encrypt(obj: PemObject, passPhrase: String) = - JcePEMEncryptorBuilder(ALGO) - .setProvider(PROVIDER) - .build(passPhrase.toCharArray()) - .let { PemObject(obj.type, listOf(ENCRYPTED_PROC_TYPE_HEADER, dekInfoHeader(it.iv)), it.encrypt(obj.content)) } - - fun decrypt(obj: PemObject, passPhrase: String?) = - if (isEncrypted(obj)) { - val dekInfo = try { - obj.getPemHeaders() - .find { it.name == DEK_INFO_HEADER_KEY }!! - .value!! - .split(',') - .let { DekInfo(it[0], Hex.decode(it[1])) } - } catch (e: Exception) { - throw PEMException("Malformed DEK-Info header.", e) - } - - JcePEMDecryptorProviderBuilder() - .setProvider(PROVIDER) - .build(passPhrase?.toCharArray()) - .get(dekInfo.algName) - .decrypt(obj.content, dekInfo.iv) - .let { PemObject(obj.type, it) } - } else { - obj - } + private val PROVIDER = org.bouncycastle.jce.provider.BouncyCastleProvider() + private val ENCRYPTED_PROC_TYPE_HEADER = PemHeader("Proc-Type", "4,ENCRYPTED") + private val DEK_INFO_HEADER_KEY = "DEK-Info" + private val ALGO = "AES-256-CBC" + + private class DekInfo(val algName: String, val iv: ByteArray) + + private fun dekInfoHeader(iv: ByteArray) = PemHeader(DEK_INFO_HEADER_KEY, "$ALGO,${Hex.toHexString(iv)}") + private fun PemObject.getPemHeaders() = headers.map { it as PemHeader } + + fun read(f: File): PemObject = PEMParser(FileReader(f)).readPemObject() + fun write(obj: PemObject, out: Writer) = JcaPEMWriter(out).apply { writeObject(obj) }.apply { close() } + fun isEncrypted(obj: PemObject) = obj.headers.contains(ENCRYPTED_PROC_TYPE_HEADER) + + fun encrypt(obj: PemObject, passPhrase: String) = + JcePEMEncryptorBuilder(ALGO) + .setProvider(PROVIDER) + .build(passPhrase.toCharArray()) + .let { PemObject(obj.type, listOf(ENCRYPTED_PROC_TYPE_HEADER, dekInfoHeader(it.iv)), it.encrypt(obj.content)) } + + fun decrypt(obj: PemObject, passPhrase: String?) = + if (isEncrypted(obj)) { + val dekInfo = try { + obj.getPemHeaders() + .find { it.name == DEK_INFO_HEADER_KEY }!! + .value!! + .split(',') + .let { DekInfo(it[0], Hex.decode(it[1])) } + } catch (e: Exception) { + throw PEMException("Malformed DEK-Info header.", e) + } + + JcePEMDecryptorProviderBuilder() + .setProvider(PROVIDER) + .build(passPhrase?.toCharArray()) + .get(dekInfo.algName) + .decrypt(obj.content, dekInfo.iv) + .let { PemObject(obj.type, it) } + } else { + obj + } } -- cgit v1.2.3