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>'].