You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by ma...@apache.org on 2017/11/29 03:50:32 UTC
[trafficserver] branch quic-latest updated: Remove 1-RTT Protected
packet types
This is an automated email from the ASF dual-hosted git repository.
maskit pushed a commit to branch quic-latest
in repository https://gitbox.apache.org/repos/asf/trafficserver.git
The following commit(s) were added to refs/heads/quic-latest by this push:
new 5f3df78 Remove 1-RTT Protected packet types
5f3df78 is described below
commit 5f3df783483b11c0b599b73300d920aa8ae44e29
Author: Masakazu Kitajo <ma...@apache.org>
AuthorDate: Wed Nov 29 12:49:34 2017 +0900
Remove 1-RTT Protected packet types
---
iocore/net/QUICNetVConnection.cc | 3 +--
iocore/net/quic/QUICDebugNames.cc | 6 ++---
iocore/net/quic/QUICPacket.cc | 50 +++++++++++++++------------------------
iocore/net/quic/QUICPacket.h | 15 ++++++------
iocore/net/quic/QUICTypes.h | 7 +++---
5 files changed, 33 insertions(+), 48 deletions(-)
diff --git a/iocore/net/QUICNetVConnection.cc b/iocore/net/QUICNetVConnection.cc
index ed4b6c1..4b113d7 100644
--- a/iocore/net/QUICNetVConnection.cc
+++ b/iocore/net/QUICNetVConnection.cc
@@ -707,8 +707,7 @@ QUICNetVConnection::_state_common_receive_packet()
net_activity(this, this_ethread());
switch (p->type()) {
- case QUICPacketType::ONE_RTT_PROTECTED_KEY_PHASE_0:
- case QUICPacketType::ONE_RTT_PROTECTED_KEY_PHASE_1:
+ case QUICPacketType::PROTECTED:
error = this->_state_connection_established_process_packet(std::move(p));
break;
case QUICPacketType::CLIENT_CLEARTEXT:
diff --git a/iocore/net/quic/QUICDebugNames.cc b/iocore/net/quic/QUICDebugNames.cc
index 7e4fd44..dd750df 100644
--- a/iocore/net/quic/QUICDebugNames.cc
+++ b/iocore/net/quic/QUICDebugNames.cc
@@ -40,10 +40,8 @@ QUICDebugNames::packet_type(QUICPacketType type)
return "CLIENT_CLEARTEXT";
case QUICPacketType::ZERO_RTT_PROTECTED:
return "ZERO_RTT_PROTECTED";
- case QUICPacketType::ONE_RTT_PROTECTED_KEY_PHASE_0:
- return "ONE_RTT_PROTECTED_KEY_PHASE_0";
- case QUICPacketType::ONE_RTT_PROTECTED_KEY_PHASE_1:
- return "ONE_RTT_PROTECTED_KEY_PHASE_1";
+ case QUICPacketType::PROTECTED:
+ return "PROTECTED";
case QUICPacketType::STATELESS_RESET:
return "STATELESS_RESET";
case QUICPacketType::UNINITIALIZED:
diff --git a/iocore/net/quic/QUICPacket.cc b/iocore/net/quic/QUICPacket.cc
index 0fc3f27..2d59871 100644
--- a/iocore/net/quic/QUICPacket.cc
+++ b/iocore/net/quic/QUICPacket.cc
@@ -81,20 +81,21 @@ QUICPacketHeader::build(QUICPacketType type, QUICConnectionId connection_id, QUI
}
QUICPacketHeader *
-QUICPacketHeader::build(QUICPacketType type, QUICPacketNumber packet_number, QUICPacketNumber base_packet_number,
- ats_unique_buf payload, size_t len)
+QUICPacketHeader::build(QUICPacketType type, QUICKeyPhase key_phase, QUICPacketNumber packet_number,
+ QUICPacketNumber base_packet_number, ats_unique_buf payload, size_t len)
{
QUICPacketShortHeader *short_header = quicPacketShortHeaderAllocator.alloc();
- new (short_header) QUICPacketShortHeader(type, packet_number, base_packet_number, std::move(payload), len);
+ new (short_header) QUICPacketShortHeader(type, key_phase, packet_number, base_packet_number, std::move(payload), len);
return short_header;
}
QUICPacketHeader *
-QUICPacketHeader::build(QUICPacketType type, QUICConnectionId connection_id, QUICPacketNumber packet_number,
+QUICPacketHeader::build(QUICPacketType type, QUICKeyPhase key_phase, QUICConnectionId connection_id, QUICPacketNumber packet_number,
QUICPacketNumber base_packet_number, ats_unique_buf payload, size_t len)
{
QUICPacketShortHeader *short_header = quicPacketShortHeaderAllocator.alloc();
- new (short_header) QUICPacketShortHeader(type, connection_id, packet_number, base_packet_number, std::move(payload), len);
+ new (short_header)
+ QUICPacketShortHeader(type, key_phase, connection_id, packet_number, base_packet_number, std::move(payload), len);
return short_header;
}
@@ -246,31 +247,26 @@ QUICPacketLongHeader::store(uint8_t *buf, size_t *len) const
//
// QUICPacketShortHeader
//
-QUICPacketShortHeader::QUICPacketShortHeader(QUICPacketType type, QUICPacketNumber packet_number,
+QUICPacketShortHeader::QUICPacketShortHeader(QUICPacketType type, QUICKeyPhase key_phase, QUICPacketNumber packet_number,
QUICPacketNumber base_packet_number, ats_unique_buf buf, size_t len)
{
this->_type = type;
this->_has_key_phase = true;
+ this->_key_phase = key_phase;
this->_packet_number = packet_number;
this->_base_packet_number = base_packet_number;
this->_packet_number_type = this->_discover_packet_number_type(packet_number, base_packet_number);
this->_payload = std::move(buf);
this->_payload_len = len;
-
- if (type == QUICPacketType::ONE_RTT_PROTECTED_KEY_PHASE_0) {
- this->_key_phase = QUICKeyPhase::PHASE_0;
- } else if (type == QUICPacketType::ONE_RTT_PROTECTED_KEY_PHASE_1) {
- this->_key_phase = QUICKeyPhase::PHASE_1;
- } else {
- ink_assert(false);
- }
}
-QUICPacketShortHeader::QUICPacketShortHeader(QUICPacketType type, QUICConnectionId connection_id, QUICPacketNumber packet_number,
- QUICPacketNumber base_packet_number, ats_unique_buf buf, size_t len)
+QUICPacketShortHeader::QUICPacketShortHeader(QUICPacketType type, QUICKeyPhase key_phase, QUICConnectionId connection_id,
+ QUICPacketNumber packet_number, QUICPacketNumber base_packet_number,
+ ats_unique_buf buf, size_t len)
{
this->_type = type;
this->_has_key_phase = true;
+ this->_key_phase = key_phase;
this->_has_connection_id = true;
this->_connection_id = connection_id;
this->_packet_number = packet_number;
@@ -278,14 +274,6 @@ QUICPacketShortHeader::QUICPacketShortHeader(QUICPacketType type, QUICConnection
this->_packet_number_type = this->_discover_packet_number_type(packet_number, base_packet_number);
this->_payload = std::move(buf);
this->_payload_len = len;
-
- if (type == QUICPacketType::ONE_RTT_PROTECTED_KEY_PHASE_0) {
- this->_key_phase = QUICKeyPhase::PHASE_0;
- } else if (type == QUICPacketType::ONE_RTT_PROTECTED_KEY_PHASE_1) {
- this->_key_phase = QUICKeyPhase::PHASE_1;
- } else {
- this->_key_phase = QUICKeyPhase::CLEARTEXT;
- }
}
QUICPacketType
@@ -295,10 +283,10 @@ QUICPacketShortHeader::type() const
switch (key_phase) {
case QUICKeyPhase::PHASE_0: {
- return QUICPacketType::ONE_RTT_PROTECTED_KEY_PHASE_0;
+ return QUICPacketType::PROTECTED;
}
case QUICKeyPhase::PHASE_1: {
- return QUICPacketType::ONE_RTT_PROTECTED_KEY_PHASE_1;
+ return QUICPacketType::PROTECTED;
}
default:
return QUICPacketType::STATELESS_RESET;
@@ -644,8 +632,7 @@ QUICPacketFactory::create(ats_unique_buf buf, size_t len, QUICPacketNumber base_
plain_txt_len = header->payload_size();
result = QUICPacketCreationResult::SUCCESS;
break;
- case QUICPacketType::ONE_RTT_PROTECTED_KEY_PHASE_0:
- case QUICPacketType::ONE_RTT_PROTECTED_KEY_PHASE_1:
+ case QUICPacketType::PROTECTED:
if (this->_crypto->is_handshake_finished()) {
if (this->_crypto->decrypt(plain_txt.get(), plain_txt_len, max_plain_txt_len, header->payload(), header->payload_size(),
header->packet_number(), header->buf(), header->size(), header->key_phase())) {
@@ -716,7 +703,7 @@ QUICPacketFactory::create_server_protected_packet(QUICConnectionId connection_id
{
// TODO Key phase should be picked up from QUICCrypto, probably
QUICPacketHeader *header =
- QUICPacketHeader::build(QUICPacketType::ONE_RTT_PROTECTED_KEY_PHASE_0, connection_id, this->_packet_number_generator.next(),
+ QUICPacketHeader::build(QUICPacketType::PROTECTED, QUICKeyPhase::PHASE_0, connection_id, this->_packet_number_generator.next(),
base_packet_number, std::move(payload), len);
return this->_create_encrypted_packet(header);
}
@@ -748,8 +735,9 @@ QUICPacketFactory::create_stateless_reset_packet(QUICConnectionId connection_id,
// Copy stateless reset token into payload
memcpy(naked_payload + payload_len - 16, stateless_reset_token.buf(), 16);
- QUICPacketHeader *header = QUICPacketHeader::build(QUICPacketType::STATELESS_RESET, connection_id, random_packet_number, 0,
- std::move(payload), payload_len);
+ // KeyPhase won't be used
+ QUICPacketHeader *header = QUICPacketHeader::build(QUICPacketType::STATELESS_RESET, QUICKeyPhase::CLEARTEXT, connection_id,
+ random_packet_number, 0, std::move(payload), payload_len);
return QUICPacketFactory::_create_unprotected_packet(header);
}
diff --git a/iocore/net/quic/QUICPacket.h b/iocore/net/quic/QUICPacket.h
index cc42d32..8668da5 100644
--- a/iocore/net/quic/QUICPacket.h
+++ b/iocore/net/quic/QUICPacket.h
@@ -106,16 +106,17 @@ public:
*
* This creates a QUICPacketShortHeader that contains a ConnectionID.
*/
- static QUICPacketHeader *build(QUICPacketType type, QUICPacketNumber packet_number, QUICPacketNumber base_packet_number,
- ats_unique_buf payload, size_t len);
+ static QUICPacketHeader *build(QUICPacketType type, QUICKeyPhase key_phase, QUICPacketNumber packet_number,
+ QUICPacketNumber base_packet_number, ats_unique_buf payload, size_t len);
/*
* Build a QUICPacketHeader
*
* This creates a QUICPacketShortHeader that doesn't contain a ConnectionID..
*/
- static QUICPacketHeader *build(QUICPacketType type, QUICConnectionId connection_id, QUICPacketNumber packet_number,
- QUICPacketNumber base_packet_number, ats_unique_buf payload, size_t len);
+ static QUICPacketHeader *build(QUICPacketType type, QUICKeyPhase key_phase, QUICConnectionId connection_id,
+ QUICPacketNumber packet_number, QUICPacketNumber base_packet_number, ats_unique_buf payload,
+ size_t len);
protected:
QUICPacketHeader(){};
@@ -164,9 +165,9 @@ class QUICPacketShortHeader : public QUICPacketHeader
public:
QUICPacketShortHeader() : QUICPacketHeader(){};
QUICPacketShortHeader(const uint8_t *buf, size_t len, QUICPacketNumber base) : QUICPacketHeader(buf, len, base) {}
- QUICPacketShortHeader(QUICPacketType type, QUICPacketNumber packet_number, QUICPacketNumber base_packet_number,
- ats_unique_buf buf, size_t len);
- QUICPacketShortHeader(QUICPacketType type, QUICConnectionId connection_id, QUICPacketNumber packet_number,
+ QUICPacketShortHeader(QUICPacketType type, QUICKeyPhase key_phase, QUICPacketNumber packet_number,
+ QUICPacketNumber base_packet_number, ats_unique_buf buf, size_t len);
+ QUICPacketShortHeader(QUICPacketType type, QUICKeyPhase key_phase, QUICConnectionId connection_id, QUICPacketNumber packet_number,
QUICPacketNumber base_packet_number, ats_unique_buf buf, size_t len);
QUICPacketType type() const;
QUICConnectionId connection_id() const;
diff --git a/iocore/net/quic/QUICTypes.h b/iocore/net/quic/QUICTypes.h
index 23eb3c0..a5bd4d1 100644
--- a/iocore/net/quic/QUICTypes.h
+++ b/iocore/net/quic/QUICTypes.h
@@ -69,10 +69,9 @@ enum class QUICPacketType : int {
SERVER_CLEARTEXT,
CLIENT_CLEARTEXT,
ZERO_RTT_PROTECTED,
- ONE_RTT_PROTECTED_KEY_PHASE_0,
- ONE_RTT_PROTECTED_KEY_PHASE_1,
- STATELESS_RESET,
- UNINITIALIZED,
+ PROTECTED, // Not on the spec. but just for convenience
+ STATELESS_RESET, // Not on the spec. but just for convenience
+ UNINITIALIZED, // Not on the spec. but just for convenience
};
// To detect length of Packet Number
--
To stop receiving notification emails like this one, please contact
['"commits@trafficserver.apache.org" <co...@trafficserver.apache.org>'].