I have a package written in Koltin and I want to rewrite it in Dart. I have been trying to use encrypt and pointycastle. But I'm having problems
How will I write this implementation in Dart.
I have started off with try to encode the public key
var modulusBytes = base64.decode(publicKey!);
import android.util.Base64
import java.security.KeyFactory
import java.security.NoSuchAlgorithmException
import java.security.PublicKey
import java.security.spec.InvalidKeySpecException
import java.security.spec.X509EncodedKeySpec
import javax.crypto.Cipher
object Crypto {
private const val PUBLIC_KEY = "MFwwDQYJKoZIhvcNAQEBBQADfafwfegRHqfkBiKGn/rrgrgrgrrgg" +
"2wkeSokw2OJrCI+d6YGJPrHHx+nmb/Qn885/R01Gw6d7M824qofmCvkCAwEAAQ=="
private const val ALGORITHM = "RSA"
private const val CIPHER = "RSA/ECB/PKCS1Padding"
private fun encrypt(text: String, key: PublicKey): ByteArray? {
var cipherText: ByteArray? = null
try {
// get an RSA cipher object
val cipher = Cipher.getInstance(CIPHER)
//init cipher and encrypt the plain text using the public key
cipher.init(Cipher.ENCRYPT_MODE, key)
cipherText = cipher.doFinal(text.toByteArray())
} catch (e: Exception) {
e.printStackTrace()
}
return cipherText
}
How do I used Byte Arrays in Dart?
I have this also as part of trying to encrypt the data in Koltin.
@Throws(SecurityException::class)
fun encrypt(text: String): String {
return String(Base64.encode(encrypt(text, getPublicKeyFromString(PUBLIC_KEY)), Base64.NO_WRAP))
}
@Throws(SecurityException::class)
private fun getPublicKeyFromString(pubKey: String): PublicKey {
val key: PublicKey
try {
//init keyFactory
val kf = KeyFactory.getInstance(ALGORITHM)
//decode the key into a byte array
val keyBytes = Base64.decode(pubKey, Base64.NO_WRAP)
//create spec
val spec = X509EncodedKeySpec(keyBytes)
//generate public key
key = kf.generatePublic(spec)
} catch (e: InvalidKeySpecException) {
throw SecurityException("Invalid public key: " + e.message)
} catch (e: NoSuchAlgorithmException) {
throw SecurityException("Invalid public key: " + e.message)
}
return key
}
}