diff --git a/lib/native_crypto.dart b/lib/native_crypto.dart index a487bec..3b3c4ba 100644 --- a/lib/native_crypto.dart +++ b/lib/native_crypto.dart @@ -11,7 +11,11 @@ class NativeCrypto { static const MethodChannel _channel = const MethodChannel('native.crypto.helper'); - Future sumKeygen() async { + /// Generates AES key. + /// + /// Size of **256 bits** by design. + /// And returns `Uint8List`. + Future symKeygen() async { final Uint8List aesKey = await _channel.invokeMethod('symKeygen'); log('AES Key Length: ${aesKey.length}', name: _tag); @@ -20,6 +24,11 @@ class NativeCrypto { return aesKey; } + /// Encrypts passed data with a given AES key. + /// + /// Generates a random **IV**. Returns a list + /// of `Uint8List` with encrypted cipher as first + /// and IV as second member. Future> symEncrypt( Uint8List payloadbytes, Uint8List aesKey) async { final List encryptedPayload = @@ -33,10 +42,14 @@ class NativeCrypto { print('Cipher: ${encryptedPayload.first}'); log('IV Length: ${encryptedPayload.last.length}', name: _tag); print('IV: ${encryptedPayload.last}'); - + return encryptedPayload; } + /// Decrypts a passed payload with a given AES key. + /// + /// The payload must be a list of `Uint8List` + /// with encrypted cipher as first and IV as second member. Future symDecrypt( List payloadbytes, Uint8List aesKey) async { final Uint8List decryptedPayload = @@ -48,3 +61,18 @@ class NativeCrypto { return decryptedPayload; } } + +class TypeHelper { + /// Returns bytes `Uint8List` from a `String`. + Uint8List stringToBytes(String source) { + var list = source.codeUnits; + var bytes = Uint8List.fromList(list); + return bytes; + } + + /// Returns a `String` from bytes `Uint8List`. + String bytesToString(Uint8List bytes) { + var string = String.fromCharCodes(bytes); + return string; + } +}