102 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
		
		
			
		
	
	
			102 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
|   | --- a/src/3rdparty/chromium/base/hash/md5_constexpr_internal.h
 | ||
|  | +++ b/src/3rdparty/chromium/base/hash/md5_constexpr_internal.h
 | ||
|  | @@ -281,15 +281,63 @@ struct MD5CE {
 | ||
|  |      return IntermediateDataToMD5Digest(ProcessMessage(data, n)); | ||
|  |    } | ||
|  |   | ||
|  | -  static constexpr uint64_t Hash64(const char* data, uint32_t n) {
 | ||
|  | -    IntermediateData intermediate = ProcessMessage(data, n);
 | ||
|  | -    return (static_cast<uint64_t>(SwapEndian(intermediate.a)) << 32) |
 | ||
|  | -           static_cast<uint64_t>(SwapEndian(intermediate.b));
 | ||
|  | +  static constexpr uint64_t Hash64(const char* message, uint32_t n) {
 | ||
|  | +    const uint32_t m = GetPaddedMessageLength(n);
 | ||
|  | +    IntermediateData intermediate0 = kInitialIntermediateData;
 | ||
|  | +    for (uint32_t offset = 0; offset < m; offset += 64) {
 | ||
|  | +      RoundData data = {
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset),
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset + 4),
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset + 8),
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset + 12),
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset + 16),
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset + 20),
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset + 24),
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset + 28),
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset + 32),
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset + 36),
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset + 40),
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset + 44),
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset + 48),
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset + 52),
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset + 56),
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset + 60)};
 | ||
|  | +      IntermediateData intermediate1 = intermediate0;
 | ||
|  | +      for (uint32_t i = 0; i < 64; ++i)
 | ||
|  | +        intermediate1 = ApplyStep(i, data, intermediate1);
 | ||
|  | +      intermediate0 = Add(intermediate0, intermediate1);
 | ||
|  | +    }
 | ||
|  | +    return (static_cast<uint64_t>(SwapEndian(intermediate0.a)) << 32) |
 | ||
|  | +           static_cast<uint64_t>(SwapEndian(intermediate0.b));
 | ||
|  |    } | ||
|  |   | ||
|  | -  static constexpr uint32_t Hash32(const char* data, uint32_t n) {
 | ||
|  | -    IntermediateData intermediate = ProcessMessage(data, n);
 | ||
|  | -    return SwapEndian(intermediate.a);
 | ||
|  | +  static constexpr uint32_t Hash32(const char* message, uint32_t n) {
 | ||
|  | +    const uint32_t m = GetPaddedMessageLength(n);
 | ||
|  | +    IntermediateData intermediate0 = kInitialIntermediateData;
 | ||
|  | +    for (uint32_t offset = 0; offset < m; offset += 64) {
 | ||
|  | +      RoundData data = {
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset),
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset + 4),
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset + 8),
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset + 12),
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset + 16),
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset + 20),
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset + 24),
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset + 28),
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset + 32),
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset + 36),
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset + 40),
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset + 44),
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset + 48),
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset + 52),
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset + 56),
 | ||
|  | +          GetPaddedMessageWord(message, n, m, offset + 60)};
 | ||
|  | +      IntermediateData intermediate1 = intermediate0;
 | ||
|  | +      for (uint32_t i = 0; i < 64; ++i)
 | ||
|  | +        intermediate1 = ApplyStep(i, data, intermediate1);
 | ||
|  | +      intermediate0 = Add(intermediate0, intermediate1);
 | ||
|  | +    }
 | ||
|  | +    return SwapEndian(intermediate0.a);
 | ||
|  |    } | ||
|  |  }; | ||
|  |   | ||
|  | --- a/src/3rdparty/chromium/net/third_party/quiche/src/quic/core/quic_versions.h
 | ||
|  | +++ b/src/3rdparty/chromium/net/third_party/quiche/src/quic/core/quic_versions.h
 | ||
|  | @@ -26,6 +26,7 @@
 | ||
|  |  #include <string> | ||
|  |  #include <vector> | ||
|  |   | ||
|  | +#include "absl/base/macros.h"
 | ||
|  |  #include "net/third_party/quiche/src/quic/core/quic_tag.h" | ||
|  |  #include "net/third_party/quiche/src/quic/core/quic_types.h" | ||
|  |  #include "net/third_party/quiche/src/quic/platform/api/quic_export.h" | ||
|  | @@ -181,8 +182,14 @@ QUIC_EXPORT_PRIVATE constexpr bool ParsedQuicVersionIsValid(
 | ||
|  |        transport_version == QUIC_VERSION_RESERVED_FOR_NEGOTIATION; | ||
|  |    if (!transport_version_is_valid) { | ||
|  |      // Iterators are not constexpr in C++14 which Chrome uses. | ||
|  | -    constexpr auto supported_transport_versions = SupportedTransportVersions();
 | ||
|  | -    for (size_t i = 0; i < supported_transport_versions.size(); ++i) {
 | ||
|  | +    constexpr QuicTransportVersion supported_transport_versions[] = {
 | ||
|  | +        QUIC_VERSION_IETF_DRAFT_29,
 | ||
|  | +        QUIC_VERSION_IETF_DRAFT_27,
 | ||
|  | +        QUIC_VERSION_51,
 | ||
|  | +        QUIC_VERSION_50,
 | ||
|  | +        QUIC_VERSION_46,
 | ||
|  | +        QUIC_VERSION_43};
 | ||
|  | +    for (size_t i = 0; i < ABSL_ARRAYSIZE(supported_transport_versions); ++i) {
 | ||
|  |        const QuicTransportVersion& trans_vers = supported_transport_versions[i]; | ||
|  |        if (trans_vers == transport_version) { | ||
|  |          transport_version_is_valid = true; | ||
|  | 
 |