encrypt method
Implementation
@override
Future<String> encrypt(
String message,
String symKey, {
int? type,
String? iv,
String? senderPublicKey,
}) async {
final int decodedType = type ?? EncodeOptions.TYPE_0;
// print(message);
// print(symKey);
// Check for type 1 envelope, throw an error if data is invalid
if (decodedType == EncodeOptions.TYPE_1 && senderPublicKey == null) {
throw const ReownCoreError(
code: -1,
message: 'Missing sender public key for type 1 envelope',
);
}
// final String senderPublicKey = senderPublicKey !=
final Uint8List usedIV =
(iv != null ? hex.decode(iv) : randomBytes(IV_LENGTH)) as Uint8List;
final chacha = dc.Chacha20.poly1305Aead();
dc.SecretBox b = await chacha.encrypt(
utf8.encode(message),
secretKey: dc.SecretKey(
hex.decode(symKey),
),
nonce: usedIV,
);
return serialize(
decodedType,
b.concatenation(),
usedIV,
senderPublicKey: senderPublicKey != null
? hex.decode(senderPublicKey) as Uint8List
: null,
);
}