1
0
mirror of https://github.com/facebookincubator/mvfst.git synced 2025-07-30 14:43:05 +03:00

Remove throws from PacketNumberCipher

Summary: Continuing the theme.

Reviewed By: kvtsoy

Differential Revision: D74944002

fbshipit-source-id: 9f23780aada2841ee88a365b93850fde4bb27a70
This commit is contained in:
Matt Joras
2025-05-19 13:49:37 -07:00
committed by Facebook GitHub Bot
parent ab8a6386c2
commit 92c50dad6f
17 changed files with 161 additions and 62 deletions

View File

@ -309,13 +309,19 @@ continuousMemoryBuildScheduleEncrypt(
packetBuf->prepend(headerLen);
HeaderForm headerForm = packet->packet.header.getHeaderForm();
encryptPacketHeader(
auto headerEncryptResult = encryptPacketHeader(
headerForm,
packetBuf->writableData(),
headerLen,
packetBuf->data() + headerLen,
packetBuf->length() - headerLen,
headerCipher);
if (headerEncryptResult.hasError()) {
return folly::makeUnexpected(headerEncryptResult.error());
}
if (headerEncryptResult.hasError()) {
return folly::makeUnexpected(headerEncryptResult.error());
}
CHECK(!packetBuf->isChained());
auto encodedSize = packetBuf->length();
auto encodedBodySize = encodedSize - headerLen;
@ -413,13 +419,16 @@ iobufChainBasedBuildScheduleEncrypt(
packetBuf->append(headerLen + bodyLen + aead.getCipherOverhead());
HeaderForm headerForm = packet->packet.header.getHeaderForm();
encryptPacketHeader(
auto headerEncryptResult = encryptPacketHeader(
headerForm,
packetBuf->writableData(),
headerLen,
packetBuf->data() + headerLen,
packetBuf->length() - headerLen,
headerCipher);
if (headerEncryptResult.hasError()) {
return folly::makeUnexpected(headerEncryptResult.error());
}
auto encodedSize = packetBuf->computeChainDataLength();
auto encodedBodySize = encodedSize - headerLen;
if (encodedSize > connection.udpSendPacketLen) {
@ -1525,7 +1534,7 @@ void writeShortClose(
headerCipher);
}
void encryptPacketHeader(
folly::Expected<folly::Unit, QuicError> encryptPacketHeader(
HeaderForm headerForm,
uint8_t* header,
size_t headerLen,
@ -1546,12 +1555,19 @@ void encryptPacketHeader(
MutableByteRange packetNumByteRange(
header + headerLen - packetNumberLength, packetNumberLength);
if (headerForm == HeaderForm::Short) {
headerCipher.encryptShortHeader(
auto result = headerCipher.encryptShortHeader(
sample, initialByteRange, packetNumByteRange);
if (result.hasError()) {
return folly::makeUnexpected(result.error());
}
} else {
headerCipher.encryptLongHeader(
auto result = headerCipher.encryptLongHeader(
sample, initialByteRange, packetNumByteRange);
if (result.hasError()) {
return folly::makeUnexpected(result.error());
}
}
return folly::unit;
}
/**