Add kotlin key size support

This commit is contained in:
Hugo Pointcheval 2020-04-15 21:35:12 +02:00
parent 2b020f4fe3
commit f472da577b

View File

@ -27,7 +27,6 @@ public class NativeCryptoPlugin : FlutterPlugin, MethodCallHandler {
private val HASH_FUNC = "SHA-256" private val HASH_FUNC = "SHA-256"
private val SYM_CRYPTO_METHOD = "AES" private val SYM_CRYPTO_METHOD = "AES"
private val SYM_CRYPTO_PADDING = "AES/CBC/PKCS5PADDING" private val SYM_CRYPTO_PADDING = "AES/CBC/PKCS5PADDING"
private val SYM_CRYPTO_BITS = 256
override fun onAttachedToEngine(@NonNull flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) { override fun onAttachedToEngine(@NonNull flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) {
val channel = MethodChannel(flutterPluginBinding.getFlutterEngine().getDartExecutor(), "native.crypto.helper") val channel = MethodChannel(flutterPluginBinding.getFlutterEngine().getDartExecutor(), "native.crypto.helper")
@ -44,7 +43,10 @@ public class NativeCryptoPlugin : FlutterPlugin, MethodCallHandler {
override fun onMethodCall(@NonNull call: MethodCall, @NonNull result: Result) { override fun onMethodCall(@NonNull call: MethodCall, @NonNull result: Result) {
if (call.method == "symKeygen") { if (call.method == "symKeygen") {
val aesKey = symKeygen() // Collection<ByteArray>
val keySize = call.argument<Int>("size") // 128, 192, 256
val aesKey = symKeygen(keySize!!) // Collection<ByteArray>
if (aesKey.isNotEmpty()) { if (aesKey.isNotEmpty()) {
result.success(aesKey) result.success(aesKey)
@ -88,7 +90,9 @@ public class NativeCryptoPlugin : FlutterPlugin, MethodCallHandler {
return md.digest(obj) return md.digest(obj)
} }
private fun symKeygen(): ByteArray { private fun symKeygen(keySize : Int): ByteArray {
val SYM_CRYPTO_BITS = keySize
val secureRandom = SecureRandom() val secureRandom = SecureRandom()
val keyGenerator = KeyGenerator.getInstance(SYM_CRYPTO_METHOD) val keyGenerator = KeyGenerator.getInstance(SYM_CRYPTO_METHOD)