decryptJson method
Funcion Utilizada para desencriptar un json
como opcional se puede enviar una clave alternativa alternativeKey si
esta cumple con los requisitos de longitud la funcion va a utilizar esta
nueva clave para encriptar el json, si este paramentro no se envia se
utilizara la clave por defecto
Implementation
Map<String, dynamic> decryptJson(String base64Data,
[String? alternativeKey]) {
try {
Uint8List? keyAlternative;
if (alternativeKey != null) {
keyAlternative = Uint8List.fromList(alternativeKey.codeUnits);
validateKey(keyAlternative);
}
///
final ivAndCiphertext = base64Decode(base64Data);
final iv = ivAndCiphertext.sublist(0, 12);
final ciphertextWithMac = ivAndCiphertext.sublist(12);
final gcmCipher = GCMBlockCipher(AESEngine());
gcmCipher.init(
false,
AEADParameters(
KeyParameter((keyAlternative == null) ? key : keyAlternative),
128,
iv,
Uint8List(0))); // 128 bit MAC tag
final plaintext = gcmCipher.process(ciphertextWithMac);
return jsonDecode(utf8.decode(plaintext));
} catch (error) {
return {
EnvironmentApiRest.dataNOk: false,
EnvironmentApiRest.error: 'Error: $error'
};
}
}