deserializeKey method
Deserializes symmetric key from binary data (Step 3).
Converts serialized key data back to a SymmetricKey object. If key is null, retrieves the reused key from cache (for broadcast/reused keys).
Parameters:
key: Serialized binary data of the symmetric key (null for reused keys)sMsg: Parent secure message object (context)
Returns: Deserialized symmetric key (null if key is invalid/missing)
Implementation
@override
Future<SymmetricKey?> deserializeKey(Uint8List? key, SecureMessage sMsg) async {
if (key == null) {
// get key from cache with direction: sender -> receiver(group)
return await getDecryptKey(sMsg);
}
SymmetricKey? password = await super.deserializeKey(key, sMsg);
// cache decrypt key when success
if (password != null) {
// cache the key with direction: sender -> receiver(group)
await cacheDecryptKey(password, sMsg);
}
return password;
}