Use std::array<char, 16> instead of uint128 for StatelessResetToken.

Using absl::uint128 does not make much sense since this is an opaque piece of
data with a fixed size of 16 octets (that happen to be the same as the size of
uint128), no numerical operations are performed on it.  Keep absl::uint128
within QuicUtils::GenerateStatelessResetToken(), necessary for the hash
computations, but use the new alias StatelessResetToken elsewhere.

This is a follow-up to a drive-by comment at cl/366984087.

PiperOrigin-RevId: 367245431
Change-Id: Ie79796e22ed4b7c6862a55e0280e7943378d559a
diff --git a/quic/core/quic_config.cc b/quic/core/quic_config.cc
index 1f81daa..796c641 100644
--- a/quic/core/quic_config.cc
+++ b/quic/core/quic_config.cc
@@ -11,7 +11,6 @@
 #include <utility>
 
 #include "absl/base/attributes.h"
-#include "absl/numeric/int128.h"
 #include "absl/strings/string_view.h"
 #include "quic/core/crypto/crypto_handshake_message.h"
 #include "quic/core/crypto/crypto_protocol.h"
@@ -225,54 +224,61 @@
   return error;
 }
 
-QuicFixedUint128::QuicFixedUint128(QuicTag tag, QuicConfigPresence presence)
+QuicFixedStatelessResetToken::QuicFixedStatelessResetToken(
+    QuicTag tag,
+    QuicConfigPresence presence)
     : QuicConfigValue(tag, presence),
       has_send_value_(false),
       has_receive_value_(false) {}
-QuicFixedUint128::~QuicFixedUint128() {}
+QuicFixedStatelessResetToken::~QuicFixedStatelessResetToken() {}
 
-bool QuicFixedUint128::HasSendValue() const {
+bool QuicFixedStatelessResetToken::HasSendValue() const {
   return has_send_value_;
 }
 
-absl::uint128 QuicFixedUint128::GetSendValue() const {
+const StatelessResetToken& QuicFixedStatelessResetToken::GetSendValue() const {
   QUIC_BUG_IF(quic_bug_12743_4, !has_send_value_)
       << "No send value to get for tag:" << QuicTagToString(tag_);
   return send_value_;
 }
 
-void QuicFixedUint128::SetSendValue(absl::uint128 value) {
+void QuicFixedStatelessResetToken::SetSendValue(
+    const StatelessResetToken& value) {
   has_send_value_ = true;
   send_value_ = value;
 }
 
-bool QuicFixedUint128::HasReceivedValue() const {
+bool QuicFixedStatelessResetToken::HasReceivedValue() const {
   return has_receive_value_;
 }
 
-absl::uint128 QuicFixedUint128::GetReceivedValue() const {
+const StatelessResetToken& QuicFixedStatelessResetToken::GetReceivedValue()
+    const {
   QUIC_BUG_IF(quic_bug_12743_5, !has_receive_value_)
       << "No receive value to get for tag:" << QuicTagToString(tag_);
   return receive_value_;
 }
 
-void QuicFixedUint128::SetReceivedValue(absl::uint128 value) {
+void QuicFixedStatelessResetToken::SetReceivedValue(
+    const StatelessResetToken& value) {
   has_receive_value_ = true;
   receive_value_ = value;
 }
 
-void QuicFixedUint128::ToHandshakeMessage(CryptoHandshakeMessage* out) const {
+void QuicFixedStatelessResetToken::ToHandshakeMessage(
+    CryptoHandshakeMessage* out) const {
   if (has_send_value_) {
     out->SetValue(tag_, send_value_);
   }
 }
 
-QuicErrorCode QuicFixedUint128::ProcessPeerHello(
+QuicErrorCode QuicFixedStatelessResetToken::ProcessPeerHello(
     const CryptoHandshakeMessage& peer_hello,
     HelloType /*hello_type*/,
     std::string* error_details) {
   QUICHE_DCHECK(error_details != nullptr);
-  QuicErrorCode error = peer_hello.GetUint128(tag_, &receive_value_);
+  QuicErrorCode error =
+      peer_hello.GetStatelessResetToken(tag_, &receive_value_);
   switch (error) {
     case QUIC_CRYPTO_MESSAGE_PARAMETER_NOT_FOUND:
       if (presence_ == PRESENCE_OPTIONAL) {
@@ -887,7 +893,7 @@
 void QuicConfig::SetIPv6AlternateServerAddressToSend(
     const QuicSocketAddress& alternate_server_address_ipv6,
     const QuicConnectionId& connection_id,
-    absl::uint128 stateless_reset_token) {
+    const StatelessResetToken& stateless_reset_token) {
   if (!alternate_server_address_ipv6.host().IsIPv6()) {
     QUIC_BUG(quic_bug_10575_10)
         << "Cannot use SetIPv6AlternateServerAddressToSend with "
@@ -922,7 +928,7 @@
 void QuicConfig::SetIPv4AlternateServerAddressToSend(
     const QuicSocketAddress& alternate_server_address_ipv4,
     const QuicConnectionId& connection_id,
-    absl::uint128 stateless_reset_token) {
+    const StatelessResetToken& stateless_reset_token) {
   if (!alternate_server_address_ipv4.host().IsIPv4()) {
     QUIC_BUG(quic_bug_10575_12)
         << "Cannot use SetIPv4AlternateServerAddressToSend with "
@@ -949,7 +955,7 @@
          preferred_address_connection_id_and_token_.has_value();
 }
 
-const std::pair<QuicConnectionId, absl::uint128>&
+const std::pair<QuicConnectionId, StatelessResetToken>&
 QuicConfig::ReceivedPreferredAddressConnectionIdAndToken() const {
   QUICHE_DCHECK(HasReceivedPreferredAddressConnectionIdAndToken());
   return *preferred_address_connection_id_and_token_;
@@ -1008,7 +1014,7 @@
 }
 
 void QuicConfig::SetStatelessResetTokenToSend(
-    absl::uint128 stateless_reset_token) {
+    const StatelessResetToken& stateless_reset_token) {
   stateless_reset_token_.SetSendValue(stateless_reset_token);
 }
 
@@ -1016,7 +1022,7 @@
   return stateless_reset_token_.HasReceivedValue();
 }
 
-absl::uint128 QuicConfig::ReceivedStatelessResetToken() const {
+const StatelessResetToken& QuicConfig::ReceivedStatelessResetToken() const {
   return stateless_reset_token_.GetReceivedValue();
 }
 
@@ -1204,7 +1210,8 @@
       max_idle_timeout_to_send_.ToMilliseconds());
 
   if (stateless_reset_token_.HasSendValue()) {
-    absl::uint128 stateless_reset_token = stateless_reset_token_.GetSendValue();
+    StatelessResetToken stateless_reset_token =
+        stateless_reset_token_.GetSendValue();
     params->stateless_reset_token.assign(
         reinterpret_cast<const char*>(&stateless_reset_token),
         reinterpret_cast<const char*>(&stateless_reset_token) +
@@ -1319,7 +1326,7 @@
   }
 
   if (!is_resumption && !params.stateless_reset_token.empty()) {
-    absl::uint128 stateless_reset_token;
+    StatelessResetToken stateless_reset_token;
     if (params.stateless_reset_token.size() != sizeof(stateless_reset_token)) {
       QUIC_BUG(quic_bug_10575_16) << "Bad stateless reset token length "
                                   << params.stateless_reset_token.size();
@@ -1385,7 +1392,7 @@
       if (!params.preferred_address->connection_id.IsEmpty()) {
         preferred_address_connection_id_and_token_ = std::make_pair(
             params.preferred_address->connection_id,
-            *reinterpret_cast<const absl::uint128*>(
+            *reinterpret_cast<const StatelessResetToken*>(
                 &params.preferred_address->stateless_reset_token.front()));
       }
     }