51 lines
1.4 KiB
Dart
51 lines
1.4 KiB
Dart
// Copyright (c) 2020
|
|
// Author: Hugo Pointcheval
|
|
import 'dart:async';
|
|
import 'dart:developer';
|
|
import 'dart:typed_data';
|
|
|
|
import 'package:flutter/services.dart';
|
|
|
|
class NativeCrypto {
|
|
static const String _tag = 'fr.pointcheval.native_crypto';
|
|
static const MethodChannel _channel =
|
|
const MethodChannel('native.crypto.helper');
|
|
|
|
Future<Uint8List> sumKeygen() async {
|
|
final Uint8List aesKey = await _channel.invokeMethod('symKeygen');
|
|
|
|
log('AES Key Length: ${aesKey.length}', name: _tag);
|
|
print('AES Key: $aesKey');
|
|
|
|
return aesKey;
|
|
}
|
|
|
|
Future<List<Uint8List>> symEncrypt(
|
|
Uint8List payloadbytes, Uint8List aesKey) async {
|
|
final List<Uint8List> encryptedPayload =
|
|
await _channel.invokeListMethod('symEncrypt', <String, dynamic>{
|
|
'payload': payloadbytes,
|
|
'aesKey': aesKey,
|
|
});
|
|
|
|
log('Payload Length: ${payloadbytes.length}', name: _tag);
|
|
log('Cipher Length: ${encryptedPayload.first.length}', name: _tag);
|
|
print('Cipher: ${encryptedPayload.first}');
|
|
log('IV Length: ${encryptedPayload.last.length}', name: _tag);
|
|
print('IV: ${encryptedPayload.last}');
|
|
|
|
return encryptedPayload;
|
|
}
|
|
|
|
Future<Uint8List> symDecrypt(
|
|
List<Uint8List> payloadbytes, Uint8List aesKey) async {
|
|
final Uint8List decryptedPayload =
|
|
await _channel.invokeMethod('symDecrypt', <String, dynamic>{
|
|
'payload': payloadbytes,
|
|
'aesKey': aesKey,
|
|
});
|
|
|
|
return decryptedPayload;
|
|
}
|
|
}
|