decrypt function
Implementation
Future<TTValue> decrypt(dynamic data, dynamic pair,
[DefaultAESDecryptKey? opt]) async {
opt ??= DEFAULT_OPTS;
final json = parse(data);
final encoding = opt.encode ?? DEFAULT_OPTS.encode;
final key = pair is PairReturnType ? pair.epriv : pair;
try {
final aeskey = await importAesKey(key, base64Decode(json['s']).buffer,
DefaultAESKey.from(name: opt.name));
final encrypted = base64Decode(json['ct']);
final iv = base64Decode(json['iv']);
final ct = await aeskey.decryptBytes(encrypted, iv, tagLength: 128);
return parse(Shims.textDecoder(ct));
} catch (e) {
_debugLog('decrypt error: ${e.toString()}');
if (opt.fallback == null || encoding == opt.fallback) {
throw ('Could not decrypt');
}
return decrypt(
data,
pair,
DefaultAESDecryptKey.from(
encode: opt.fallback, name: opt.name, fallback: opt.fallback));
}
}