decryptPacket method
Implementation
QuicDecryptedPacket decryptPacket(Uint8List packet, EncryptionLevel level) {
final keys = switch (level) {
EncryptionLevel.initial => initialRead,
EncryptionLevel.handshake => handshakeRead,
EncryptionLevel.application => appRead,
};
if (keys == null) {
throw StateError("No read keys for $level");
}
final dcidForLevel = switch (level) {
EncryptionLevel.initial => clientOrigDcid,
EncryptionLevel.handshake => localCid,
EncryptionLevel.application => localCid,
};
final pnSpace = recvPnSpaces[level]!;
final result = decryptQuicPacketBytes(
packet,
keys.key,
keys.iv,
keys.hp,
dcidForLevel,
pnSpace.largestPn,
);
if (result == null) {
throw StateError("Decryption failed for $level");
}
pnSpace.onPacketDecrypted(result.packetNumber);
return result;
}