@fails-components/webtransport 0.0.1-rc.2 → 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/CMakeLists.txt +5 -2
  2. package/package.json +1 -1
  3. package/platform/net/quiche/common/platform/impl/quiche_flags_impl.h +1 -54
  4. package/platform/quiche_platform_impl/quic_flags_impl.h +1 -27
  5. package/platform/quiche_platform_impl/quiche_flag_utils_impl.h +1 -16
  6. package/platform/quiche_platform_impl/quiche_flags_impl.h +6 -1
  7. package/src/http3client.cc +14 -2
  8. package/src/http3client.h +10 -15
  9. package/src/webtransport.js +4 -1
  10. package/third_party/boringssl/src/.clang-format +11 -0
  11. package/third_party/boringssl/src/crypto/CMakeLists.txt +0 -1
  12. package/third_party/boringssl/src/crypto/asn1/a_strex.c +61 -95
  13. package/third_party/boringssl/src/crypto/asn1/asn1_par.c +31 -9
  14. package/third_party/boringssl/src/crypto/asn1/tasn_dec.c +33 -19
  15. package/third_party/boringssl/src/crypto/cipher_extra/asm/chacha20_poly1305_armv8.pl +8 -8
  16. package/third_party/boringssl/src/crypto/cipher_extra/derive_key.c +4 -4
  17. package/third_party/boringssl/src/crypto/cipher_extra/e_des.c +1 -0
  18. package/third_party/boringssl/src/crypto/cipher_extra/e_null.c +1 -0
  19. package/third_party/boringssl/src/crypto/cipher_extra/e_rc2.c +1 -0
  20. package/third_party/boringssl/src/crypto/cipher_extra/e_rc4.c +2 -0
  21. package/third_party/boringssl/src/crypto/fipsmodule/bcm.c +1 -0
  22. package/third_party/boringssl/src/crypto/fipsmodule/bn/asm/x86_64-mont5.pl +0 -197
  23. package/third_party/boringssl/src/crypto/fipsmodule/bn/bn_test.cc +0 -9
  24. package/third_party/boringssl/src/crypto/fipsmodule/bn/bn_tests.txt +68 -0
  25. package/third_party/boringssl/src/crypto/fipsmodule/bn/exponentiation.c +45 -40
  26. package/third_party/boringssl/src/crypto/fipsmodule/bn/internal.h +11 -8
  27. package/third_party/boringssl/src/crypto/fipsmodule/bn/rsaz_exp.c +15 -106
  28. package/third_party/boringssl/src/crypto/fipsmodule/bn/rsaz_exp.h +5 -1
  29. package/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.c +12 -32
  30. package/third_party/boringssl/src/crypto/fipsmodule/cipher/internal.h +39 -0
  31. package/third_party/boringssl/src/crypto/{evp → fipsmodule/digestsign}/digestsign.c +7 -9
  32. package/third_party/boringssl/src/crypto/fipsmodule/ec/ec_key.c +1 -0
  33. package/third_party/boringssl/src/crypto/fipsmodule/ecdh/ecdh.c +2 -1
  34. package/third_party/boringssl/src/crypto/fipsmodule/ecdsa/ecdsa.c +1 -0
  35. package/third_party/boringssl/src/crypto/fipsmodule/hmac/hmac.c +1 -0
  36. package/third_party/boringssl/src/crypto/fipsmodule/service_indicator/service_indicator.c +1 -0
  37. package/third_party/boringssl/src/crypto/pkcs8/pkcs8_x509.c +4 -4
  38. package/third_party/boringssl/src/crypto/x509/algorithm.c +18 -1
  39. package/third_party/boringssl/src/crypto/x509/x_algor.c +1 -1
  40. package/third_party/boringssl/src/crypto/x509/x_crl.c +3 -3
  41. package/third_party/boringssl/src/crypto/x509/x_exten.c +1 -1
  42. package/third_party/boringssl/src/crypto/x509/x_name.c +1 -1
  43. package/third_party/boringssl/src/crypto/x509/x_pubkey.c +1 -1
  44. package/third_party/boringssl/src/crypto/x509/x_req.c +2 -2
  45. package/third_party/boringssl/src/crypto/x509/x_sig.c +1 -1
  46. package/third_party/boringssl/src/crypto/x509/x_spki.c +2 -2
  47. package/third_party/boringssl/src/crypto/x509/x_val.c +1 -1
  48. package/third_party/boringssl/src/crypto/x509/x_x509.c +2 -2
  49. package/third_party/boringssl/src/crypto/x509v3/v3_akey.c +1 -1
  50. package/third_party/boringssl/src/crypto/x509v3/v3_akeya.c +1 -1
  51. package/third_party/boringssl/src/crypto/x509v3/v3_bcons.c +2 -2
  52. package/third_party/boringssl/src/crypto/x509v3/v3_cpols.c +6 -6
  53. package/third_party/boringssl/src/crypto/x509v3/v3_crld.c +6 -6
  54. package/third_party/boringssl/src/crypto/x509v3/v3_enum.c +1 -1
  55. package/third_party/boringssl/src/crypto/x509v3/v3_extku.c +2 -2
  56. package/third_party/boringssl/src/crypto/x509v3/v3_genn.c +3 -3
  57. package/third_party/boringssl/src/crypto/x509v3/v3_info.c +3 -3
  58. package/third_party/boringssl/src/crypto/x509v3/v3_int.c +3 -3
  59. package/third_party/boringssl/src/crypto/x509v3/v3_ncons.c +2 -2
  60. package/third_party/boringssl/src/crypto/x509v3/v3_ocsp.c +2 -2
  61. package/third_party/boringssl/src/crypto/x509v3/v3_pcons.c +1 -1
  62. package/third_party/boringssl/src/crypto/x509v3/v3_pmaps.c +2 -2
  63. package/third_party/boringssl/src/crypto/x509v3/v3_skey.c +1 -1
  64. package/third_party/boringssl/src/decrepit/blowfish/blowfish.c +1 -0
  65. package/third_party/boringssl/src/decrepit/cast/cast.c +1 -0
  66. package/third_party/boringssl/src/decrepit/cfb/cfb.c +1 -0
  67. package/third_party/boringssl/src/decrepit/xts/xts.c +2 -1
  68. package/third_party/boringssl/src/fuzz/CMakeLists.txt +1 -0
  69. package/third_party/boringssl/src/fuzz/der_roundtrip.cc +57 -0
  70. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/0461791e54b4840c109637952eab43d9b938cab8 +0 -0
  71. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/06e57a7b98a403a00822739739924b97ae6c74e9 +0 -0
  72. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/078c3c1199930781466871c8dda69bec379286a4 +0 -0
  73. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/082a991742f652549e4b207100ee521f474e0a99 +1 -0
  74. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/091e3389548686c5038d04e3d76b9c4d30502074 +0 -0
  75. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/13e484c406efe97dc9d91f8b80a27b0e597c34da +1 -0
  76. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/153d254254345b61e20e7b37637dd6f6fd71ba01 +0 -0
  77. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/163605136e22f5b5302fe60d1f17837bee6b6b2b +1 -0
  78. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/1a96ec99b487b93052cd860c447e6d126dcc36d4 +1 -0
  79. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/1cc9ad96fcee279e8589b7071c7a0ccd111098f2 +1 -0
  80. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/229b8e1825512868e0e11a199ed71231dd41bb4f +1 -0
  81. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/236d820eadf7f84d70de7bb8be5f1c57a4005de2 +0 -0
  82. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/24fd9742dbdee3167509db4af245ad6f8c4c1e99 +0 -0
  83. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/2896f8deb3c4e8bdfeab743b22c64c92316880f7 +0 -0
  84. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/29b6252fe9c4d1186394b1664c421cca795b61a5 +0 -0
  85. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/2b4955132275314d1d377f37f93d8c1879a3519a +0 -0
  86. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/2e7112ac524a7a663632397cbb41f7dfd22e92c6 +0 -0
  87. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/396d197005432accf99bf0f483286e459eb24063 +1 -0
  88. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/3c75fe79266cf639f2180722a3f03f8fc3e25685 +1 -0
  89. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/3fbb104fb0eb6cae4af34d8a516998336b3a6778 +1 -0
  90. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/422fa995b3fdfed572b68b292062c330d6d05272 +0 -0
  91. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/428b48fc494cee828f0c27f77aef477cb2e1fd80 +0 -0
  92. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/4bd69e424b6fa38f9e63e58b8d0e95ac2d38d598 +1 -0
  93. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/4be7e1f134e1c55aeadeead515200f6f1e6254ba +0 -0
  94. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/4de268400e174db2dc306f45c833cf968a6c6546 +0 -0
  95. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/52d2c7efcd7da0eb7463829e05a598e36729bfae +1 -0
  96. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/53cf415eb9de49fb5a0cb46e745e413a99aa0779 +0 -0
  97. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/53ea84c48a5792281a46eb5a9c896d54ea3f1838 +1 -0
  98. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/5ba93c9db0cff93f52b521d7420e43f6eda2784f +0 -0
  99. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/5bab61eb53176449e25c2c82f172b82cb13ffb9d +1 -0
  100. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/5e5361730362736fe3e2804d8566e3c91454509b +0 -0
  101. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/6654fedb1fc4b07095695b062b5af4c2f12d59ae +0 -0
  102. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/6cad8b2a41194372ec897bece6512fe8331e274d +1 -0
  103. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/6f40330ec07e8e22f113f982b297ff7f86b8e485 +0 -0
  104. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/738f291e53e97c08dae378c71ef70a60e31ae900 +0 -0
  105. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/7396791821e64fc9340249a4bcbd2198e9f237db +0 -0
  106. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/7653595e28f23e62ea6707c99ca08c780a69335f +0 -0
  107. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/77de68daecd823babbb58edb1c8e14d7106e83bb +1 -0
  108. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/7cb5c71603a787032973d6ddc9c2c34638005784 +0 -0
  109. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/80a1e1ae75c1e5ef7bbde5f5877e3e5b26b3cf58 +0 -0
  110. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/872ba8af52a8c1380c388bab0e20bec2e729db80 +1 -0
  111. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/8855f2d904cf1bbaffc54e68d98890fdc9ec14cc +0 -0
  112. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/8a22f56ee86cc2d67e9610a6b0ed59f21008a341 +0 -0
  113. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/935a69e9f3bfa1dd3bf058fa3e1b953e82195de6 +1 -0
  114. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/951ccb49640c8f9e81fb4e0d82730321f4e15bb3 +0 -0
  115. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/9af1f3ed10c7a54f6b57c344015141cc082db23b +0 -0
  116. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a0b7dd1684089c63a4aac2e4a832544df4d639d6 +0 -0
  117. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a22d0d3565a509a4bfedce078090d8c6a908d950 +0 -0
  118. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a22f1185582f66227118c8e9002a5c29728f0650 +0 -0
  119. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a457945cb86ec812235f407ed70fe72fbaf694a1 +1 -0
  120. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a4ee44c4e8728d4924642ef8765063262e8c4601 +0 -0
  121. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a4fc609a6546fc0061f499f0faed9054fd388c9a +1 -0
  122. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a7c13e6fe60eee08b9aac00a095a9301ea1a9824 +1 -0
  123. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a98e22a5a8c2f5dda365d55e76536931010e1560 +0 -0
  124. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/aca6ed86348b1176bfbe4ebf32b2d48a0aa42f9f +0 -0
  125. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/aeefb82d7f5cc69168aade3b196a84d0f5c14bf2 +0 -0
  126. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/b37e0f6fa42840c773747c4cb608c278ab65021d +1 -0
  127. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/b5d4e67f0ec5b1a90100d8ad424d77aea8e16353 +0 -0
  128. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/b65ea16ba4dae8599ebbad7c4cb9fcd505edf485 +0 -0
  129. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/b95311782071c4d9182c0effe32487fc5cdbd33d +1 -0
  130. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/bbcaf4d15f92bfc6d624eee967fade1a74329f30 +0 -0
  131. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/bc26b8c794ac0adf948cbca02e88b3901824ef17 +1 -0
  132. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/bc7b23c2c68e4ad33ecea493ff6e60d423371cd0 +1 -0
  133. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/bd8daf3e78d8ba3a25838053b6993edc7a21c30e +0 -0
  134. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/c4d94647e646f02da1736b3179804ad6083acde9 +0 -0
  135. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/c869b259f9f81bec8ed24a9bc2cef35a513fb9fc +0 -0
  136. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/ceee46f04a09ef5d3342ef25d9f483e861727575 +1 -0
  137. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/d05c069216b54f35bc7e3ee08371baee243c089a +0 -0
  138. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/d18c30ba21e0d085dd983ad528f2c9001285d3d2 +1 -0
  139. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/d2c00146b2f2bcb4c6cecb731d2062273523d8c8 +1 -0
  140. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/d9bc7157a485958a5fce35ce777f551fe3f7d94c +0 -0
  141. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/defce76f0d3c3e057bb623986bacee7bbd07d1a1 +1 -0
  142. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/df9b696736847e43672b7a99ca05655af8a81135 +0 -0
  143. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/e5b420f71cf412bd9fdebdd46245fabd1f3462e5 +1 -0
  144. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/e7979b0e6e3e9cd64ceab99778c55205d6f92a73 +0 -0
  145. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/ee629f1935abc05fdc32ba314ec1f80f4bff2a17 +0 -0
  146. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/f944dcd635f9801f7ac90a407fbc479964dec024 +0 -0
  147. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/fadcde7d914246ca04bd56e68fd4045b1cf1c5ef +0 -0
  148. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/fd8be6506a9995f626eef831b9c981a80b0e3640 +0 -0
  149. package/third_party/boringssl/src/include/openssl/cipher.h +21 -48
  150. package/third_party/boringssl/src/include/openssl/ssl.h +38 -0
  151. package/third_party/boringssl/src/ssl/handshake_client.cc +8 -2
  152. package/third_party/boringssl/src/ssl/internal.h +16 -3
  153. package/third_party/boringssl/src/ssl/s3_both.cc +23 -1
  154. package/third_party/boringssl/src/ssl/ssl_lib.cc +94 -1
  155. package/third_party/boringssl/src/ssl/test/runner/runner.go +192 -0
  156. package/third_party/boringssl/src/ssl/test/test_config.cc +6 -0
  157. package/third_party/boringssl/src/ssl/test/test_config.h +1 -0
  158. package/third_party/boringssl/src/ssl/tls13_client.cc +7 -3
  159. package/third_party/boringssl/src/ssl/tls13_server.cc +2 -1
  160. package/third_party/boringssl/src/util/convert_comments.go +23 -0
  161. package/third_party/boringssl/src/util/fipstools/acvp/acvptool/acvp/acvp.go +1 -1
  162. package/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/modulewrapper.cc +32 -21
  163. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_flags_impl.cc +1 -1
  164. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_flags_impl.h +1 -1
  165. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_logging_impl.h +3 -2
  166. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_test_impl.cc +2 -2
  167. package/third_party/quiche/quiche/http2/adapter/http2_protocol.h +5 -1
  168. package/third_party/quiche/quiche/http2/adapter/http2_util.cc +2 -0
  169. package/third_party/quiche/quiche/http2/adapter/http2_visitor_interface.h +2 -0
  170. package/third_party/quiche/quiche/http2/adapter/nghttp2_adapter_test.cc +119 -0
  171. package/third_party/quiche/quiche/http2/adapter/oghttp2_adapter_test.cc +130 -0
  172. package/third_party/quiche/quiche/http2/adapter/oghttp2_session.cc +23 -12
  173. package/third_party/quiche/quiche/http2/decoder/decode_buffer_test.cc +6 -11
  174. package/third_party/quiche/quiche/quic/core/congestion_control/bbr2_sender.cc +0 -5
  175. package/third_party/quiche/quiche/quic/core/congestion_control/bbr2_sender.h +0 -2
  176. package/third_party/quiche/quiche/quic/core/congestion_control/bbr_sender.cc +0 -10
  177. package/third_party/quiche/quiche/quic/core/congestion_control/bbr_sender.h +0 -1
  178. package/third_party/quiche/quiche/quic/core/congestion_control/send_algorithm_interface.h +0 -6
  179. package/third_party/quiche/quiche/quic/core/congestion_control/tcp_cubic_sender_bytes.cc +0 -2
  180. package/third_party/quiche/quiche/quic/core/congestion_control/tcp_cubic_sender_bytes.h +0 -1
  181. package/third_party/quiche/quiche/quic/core/crypto/transport_parameters_test.cc +1 -3
  182. package/third_party/quiche/quiche/quic/core/http/end_to_end_test.cc +19 -9
  183. package/third_party/quiche/quiche/quic/core/http/http_decoder_test.cc +6 -3
  184. package/third_party/quiche/quiche/quic/core/http/quic_server_session_base.cc +4 -16
  185. package/third_party/quiche/quiche/quic/core/http/quic_spdy_session.h +6 -6
  186. package/third_party/quiche/quiche/quic/core/http/quic_spdy_session_test.cc +25 -15
  187. package/third_party/quiche/quiche/quic/core/http/quic_spdy_stream_test.cc +6 -5
  188. package/third_party/quiche/quiche/quic/core/http/web_transport_http3.cc +1 -2
  189. package/third_party/quiche/quiche/quic/core/quic_bandwidth_test.cc +12 -12
  190. package/third_party/quiche/quiche/quic/core/quic_connection.cc +5 -95
  191. package/third_party/quiche/quiche/quic/core/quic_connection.h +0 -35
  192. package/third_party/quiche/quiche/quic/core/quic_connection_test.cc +80 -196
  193. package/third_party/quiche/quiche/quic/core/quic_control_frame_manager.cc +1 -1
  194. package/third_party/quiche/quiche/quic/core/quic_crypto_stream.cc +29 -5
  195. package/third_party/quiche/quiche/quic/core/quic_crypto_stream_test.cc +46 -0
  196. package/third_party/quiche/quiche/quic/core/quic_dispatcher_test.cc +17 -14
  197. package/third_party/quiche/quiche/quic/core/quic_flags_list.h +54 -54
  198. package/third_party/quiche/quiche/quic/core/quic_flow_controller_test.cc +8 -5
  199. package/third_party/quiche/quiche/quic/core/quic_framer_test.cc +8 -5
  200. package/third_party/quiche/quiche/quic/core/quic_idle_network_detector.cc +1 -0
  201. package/third_party/quiche/quiche/quic/core/quic_idle_network_detector_test.cc +29 -0
  202. package/third_party/quiche/quiche/quic/core/quic_packet_creator.cc +1 -5
  203. package/third_party/quiche/quiche/quic/core/quic_packet_creator_test.cc +18 -11
  204. package/third_party/quiche/quiche/quic/core/quic_sent_packet_manager.cc +9 -28
  205. package/third_party/quiche/quiche/quic/core/quic_sent_packet_manager.h +0 -13
  206. package/third_party/quiche/quiche/quic/core/quic_sent_packet_manager_test.cc +1 -49
  207. package/third_party/quiche/quiche/quic/core/quic_session.cc +0 -8
  208. package/third_party/quiche/quiche/quic/core/quic_session.h +0 -1
  209. package/third_party/quiche/quiche/quic/core/quic_stream.cc +1 -1
  210. package/third_party/quiche/quiche/quic/core/quic_stream_sequencer.cc +5 -0
  211. package/third_party/quiche/quiche/quic/core/quic_stream_sequencer.h +4 -0
  212. package/third_party/quiche/quiche/quic/core/quic_stream_sequencer_test.cc +12 -5
  213. package/third_party/quiche/quiche/quic/core/quic_stream_test.cc +27 -12
  214. package/third_party/quiche/quiche/quic/core/quic_types.cc +0 -1
  215. package/third_party/quiche/quiche/quic/core/quic_types.h +0 -3
  216. package/third_party/quiche/quiche/quic/core/quic_utils.cc +0 -3
  217. package/third_party/quiche/quiche/quic/core/quic_utils_test.cc +0 -2
  218. package/third_party/quiche/quiche/quic/core/tls_client_handshaker_test.cc +16 -12
  219. package/third_party/quiche/quiche/quic/core/tls_handshaker.cc +18 -3
  220. package/third_party/quiche/quiche/quic/qbone/platform/internet_checksum.cc +7 -2
  221. package/third_party/quiche/quiche/quic/test_tools/crypto_test_utils.cc +20 -12
  222. package/third_party/quiche/quiche/quic/test_tools/crypto_test_utils.h +10 -5
  223. package/third_party/quiche/quiche/quic/test_tools/quic_test_utils.h +0 -2
  224. package/third_party/quiche/quiche/quic/test_tools/simulator/quic_endpoint.cc +0 -8
  225. package/third_party/quiche/quiche/quic/test_tools/simulator/quic_endpoint.h +0 -1
  226. package/third_party/quiche/quiche/quic/tools/quic_simple_server_stream_test.cc +2 -1
  227. package/platform/net/quiche/common/platform/impl/quic_flags_list_add.h +0 -379
  228. package/platform/net/quiche/common/platform/impl/quiche_flags_impl.cc +0 -21
  229. package/third_party/boringssl/src/crypto/asn1/charmap.h +0 -15
  230. package/third_party/boringssl/src/crypto/asn1/charmap.pl +0 -135
@@ -174,6 +174,11 @@ OPENSSL_EXPORT int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx,
174
174
  // of output bytes may be up to |in_len| plus the block length minus one and
175
175
  // |out| must have sufficient space. The number of bytes actually output is
176
176
  // written to |*out_len|. It returns one on success and zero otherwise.
177
+ //
178
+ // If |ctx| is an AEAD cipher, e.g. |EVP_aes_128_gcm|, and |out| is NULL, this
179
+ // function instead adds |in_len| bytes from |in| to the AAD and sets |*out_len|
180
+ // to |in_len|. The AAD must be fully specified in this way before this function
181
+ // is used to encrypt plaintext.
177
182
  OPENSSL_EXPORT int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, uint8_t *out,
178
183
  int *out_len, const uint8_t *in,
179
184
  int in_len);
@@ -191,6 +196,11 @@ OPENSSL_EXPORT int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, uint8_t *out,
191
196
  // output bytes may be up to |in_len| plus the block length minus one and |out|
192
197
  // must have sufficient space. The number of bytes actually output is written
193
198
  // to |*out_len|. It returns one on success and zero otherwise.
199
+ //
200
+ // If |ctx| is an AEAD cipher, e.g. |EVP_aes_128_gcm|, and |out| is NULL, this
201
+ // function instead adds |in_len| bytes from |in| to the AAD and sets |*out_len|
202
+ // to |in_len|. The AAD must be fully specified in this way before this function
203
+ // is used to decrypt ciphertext.
194
204
  OPENSSL_EXPORT int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, uint8_t *out,
195
205
  int *out_len, const uint8_t *in,
196
206
  int in_len);
@@ -204,16 +214,18 @@ OPENSSL_EXPORT int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, uint8_t *out,
204
214
  OPENSSL_EXPORT int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, uint8_t *out,
205
215
  int *out_len);
206
216
 
207
- // EVP_Cipher performs a one-shot encryption/decryption operation. No partial
208
- // blocks are maintained between calls. However, any internal cipher state is
209
- // still updated. For CBC-mode ciphers, the IV is updated to the final
210
- // ciphertext block. For stream ciphers, the stream is advanced past the bytes
211
- // used. It returns one on success and zero otherwise, unless |EVP_CIPHER_flags|
212
- // has |EVP_CIPH_FLAG_CUSTOM_CIPHER| set. Then it returns the number of bytes
213
- // written or -1 on error.
217
+ // EVP_Cipher performs a one-shot encryption/decryption operation for non-AEAD
218
+ // ciphers. No partial blocks are maintained between calls. However, any
219
+ // internal cipher state is still updated. For CBC-mode ciphers, the IV is
220
+ // updated to the final ciphertext block. For stream ciphers, the stream is
221
+ // advanced past the bytes used. It returns one on success and zero otherwise.
214
222
  //
215
- // WARNING: this differs from the usual return value convention when using
216
- // |EVP_CIPH_FLAG_CUSTOM_CIPHER|.
223
+ // WARNING: This function behaves completely differently on AEAD ciphers, such
224
+ // as |EVP_aes_128_gcm|. Rather than being a one-shot operation, it behaves like
225
+ // |EVP_CipherUpdate| or |EVP_CipherFinal_ex|, depending on whether |in| is
226
+ // NULL. It also instead returns the number of bytes written or -1 on error.
227
+ // This behavior is deprecated. Use |EVP_CipherUpdate| or |EVP_CipherFinal_ex|
228
+ // instead.
217
229
  //
218
230
  // TODO(davidben): The normal ciphers currently never fail, even if, e.g.,
219
231
  // |in_len| is not a multiple of the block size for CBC-mode decryption. The
@@ -582,45 +594,6 @@ typedef struct evp_cipher_info_st {
582
594
  unsigned char iv[EVP_MAX_IV_LENGTH];
583
595
  } EVP_CIPHER_INFO;
584
596
 
585
- struct evp_cipher_st {
586
- // type contains a NID identifing the cipher. (e.g. NID_aes_128_gcm.)
587
- int nid;
588
-
589
- // block_size contains the block size, in bytes, of the cipher, or 1 for a
590
- // stream cipher.
591
- unsigned block_size;
592
-
593
- // key_len contains the key size, in bytes, for the cipher. If the cipher
594
- // takes a variable key size then this contains the default size.
595
- unsigned key_len;
596
-
597
- // iv_len contains the IV size, in bytes, or zero if inapplicable.
598
- unsigned iv_len;
599
-
600
- // ctx_size contains the size, in bytes, of the per-key context for this
601
- // cipher.
602
- unsigned ctx_size;
603
-
604
- // flags contains the OR of a number of flags. See |EVP_CIPH_*|.
605
- uint32_t flags;
606
-
607
- // app_data is a pointer to opaque, user data.
608
- void *app_data;
609
-
610
- int (*init)(EVP_CIPHER_CTX *ctx, const uint8_t *key, const uint8_t *iv,
611
- int enc);
612
-
613
- int (*cipher)(EVP_CIPHER_CTX *ctx, uint8_t *out, const uint8_t *in,
614
- size_t inl);
615
-
616
- // cleanup, if non-NULL, releases memory associated with the context. It is
617
- // called if |EVP_CTRL_INIT| succeeds. Note that |init| may not have been
618
- // called at this point.
619
- void (*cleanup)(EVP_CIPHER_CTX *);
620
-
621
- int (*ctrl)(EVP_CIPHER_CTX *, int type, int arg, void *ptr);
622
- };
623
-
624
597
 
625
598
  #if defined(__cplusplus)
626
599
  } // extern C
@@ -5104,6 +5104,44 @@ OPENSSL_EXPORT int SSL_CTX_set_tlsext_status_arg(SSL_CTX *ctx, void *arg);
5104
5104
  OPENSSL_EXPORT uint16_t SSL_CIPHER_get_value(const SSL_CIPHER *cipher);
5105
5105
 
5106
5106
 
5107
+ // Compliance policy configurations
5108
+ //
5109
+ // A TLS connection has a large number of different parameters. Some are well
5110
+ // known, like cipher suites, but many are obscure and configuration functions
5111
+ // for them may not exist. These policy controls allow broad configuration
5112
+ // goals to be specified so that they can flow down to all the different
5113
+ // parameters of a TLS connection.
5114
+
5115
+ enum ssl_compliance_policy_t BORINGSSL_ENUM_INT {
5116
+ // ssl_policy_fips_202205 configures a TLS connection to use:
5117
+ // * TLS 1.2 or 1.3
5118
+ // * For TLS 1.2, only ECDHE_[RSA|ECDSA]_WITH_AES_*_GCM_SHA*.
5119
+ // * For TLS 1.3, only AES-GCM
5120
+ // * P-256 or P-384 for key agreement.
5121
+ // * For server signatures, only PKCS#1/PSS with SHA256/384/512, or ECDSA
5122
+ // with P-256 or P-384.
5123
+ //
5124
+ // Note: this policy can be configured even if BoringSSL has not been built in
5125
+ // FIPS mode. Call |FIPS_mode| to check that.
5126
+ //
5127
+ // Note: this setting aids with compliance with NIST requirements but does not
5128
+ // guarantee it. Careful reading of SP 800-52r2 is recommended.
5129
+ ssl_compliance_policy_fips_202205,
5130
+ };
5131
+
5132
+ // SSL_CTX_set_compliance_policy configures various aspects of |ctx| based on
5133
+ // the given policy requirements. Subsequently calling other functions that
5134
+ // configure |ctx| may override |policy|, or may not. This should be the final
5135
+ // configuration function called in order to have defined behaviour.
5136
+ OPENSSL_EXPORT int SSL_CTX_set_compliance_policy(
5137
+ SSL_CTX *ctx, enum ssl_compliance_policy_t policy);
5138
+
5139
+ // SSL_set_compliance_policy acts the same as |SSL_CTX_set_compliance_policy|,
5140
+ // but only configures a single |SSL*|.
5141
+ OPENSSL_EXPORT int SSL_set_compliance_policy(
5142
+ SSL *ssl, enum ssl_compliance_policy_t policy);
5143
+
5144
+
5107
5145
  // Nodejs compatibility section (hidden).
5108
5146
  //
5109
5147
  // These defines exist for node.js, with the hope that we can eliminate the
@@ -235,7 +235,12 @@ static bool ssl_write_client_cipher_list(const SSL_HANDSHAKE *hs, CBB *out,
235
235
  // Add TLS 1.3 ciphers. Order ChaCha20-Poly1305 relative to AES-GCM based on
236
236
  // hardware support.
237
237
  if (hs->max_version >= TLS1_3_VERSION) {
238
- if (!EVP_has_aes_hardware() &&
238
+ const bool include_chacha20 = ssl_tls13_cipher_meets_policy(
239
+ TLS1_CK_CHACHA20_POLY1305_SHA256 & 0xffff,
240
+ ssl->config->only_fips_cipher_suites_in_tls13);
241
+
242
+ if (!EVP_has_aes_hardware() && //
243
+ include_chacha20 && //
239
244
  !CBB_add_u16(&child, TLS1_CK_CHACHA20_POLY1305_SHA256 & 0xffff)) {
240
245
  return false;
241
246
  }
@@ -243,7 +248,8 @@ static bool ssl_write_client_cipher_list(const SSL_HANDSHAKE *hs, CBB *out,
243
248
  !CBB_add_u16(&child, TLS1_CK_AES_256_GCM_SHA384 & 0xffff)) {
244
249
  return false;
245
250
  }
246
- if (EVP_has_aes_hardware() &&
251
+ if (EVP_has_aes_hardware() && //
252
+ include_chacha20 && //
247
253
  !CBB_add_u16(&child, TLS1_CK_CHACHA20_POLY1305_SHA256 & 0xffff)) {
248
254
  return false;
249
255
  }
@@ -660,10 +660,15 @@ bool ssl_cipher_requires_server_key_exchange(const SSL_CIPHER *cipher);
660
660
  size_t ssl_cipher_get_record_split_len(const SSL_CIPHER *cipher);
661
661
 
662
662
  // ssl_choose_tls13_cipher returns an |SSL_CIPHER| corresponding with the best
663
- // available from |cipher_suites| compatible with |version| and |group_id|. It
664
- // returns NULL if there isn't a compatible cipher.
663
+ // available from |cipher_suites| compatible with |version|, |group_id|, and
664
+ // |only_fips|. It returns NULL if there isn't a compatible cipher.
665
665
  const SSL_CIPHER *ssl_choose_tls13_cipher(CBS cipher_suites, uint16_t version,
666
- uint16_t group_id);
666
+ uint16_t group_id, bool only_fips);
667
+
668
+ // ssl_tls13_cipher_meets_policy returns true if |cipher_id| is acceptable given
669
+ // |only_fips|. (For now there's only a single policy and so the policy argument
670
+ // is just a bool.)
671
+ bool ssl_tls13_cipher_meets_policy(uint16_t cipher_id, bool only_fips);
667
672
 
668
673
 
669
674
  // Transcript layer.
@@ -3087,6 +3092,10 @@ struct SSL_CONFIG {
3087
3092
 
3088
3093
  // permute_extensions is whether to permute extensions when sending messages.
3089
3094
  bool permute_extensions : 1;
3095
+
3096
+ // only_fips_cipher_suites_in_tls13 constrains the selection of cipher suites
3097
+ // in TLS 1.3 such that only FIPS approved ones will be selected.
3098
+ bool only_fips_cipher_suites_in_tls13 : 1;
3090
3099
  };
3091
3100
 
3092
3101
  // From RFC 8446, used in determining PSK modes.
@@ -3694,6 +3703,10 @@ struct ssl_ctx_st {
3694
3703
  // If enable_early_data is true, early data can be sent and accepted.
3695
3704
  bool enable_early_data : 1;
3696
3705
 
3706
+ // only_fips_cipher_suites_in_tls13 constrains the selection of cipher suites
3707
+ // in TLS 1.3 such that only FIPS approved ones will be selected.
3708
+ bool only_fips_cipher_suites_in_tls13 : 1;
3709
+
3697
3710
  private:
3698
3711
  ~ssl_ctx_st();
3699
3712
  friend OPENSSL_EXPORT void SSL_CTX_free(SSL_CTX *);
@@ -691,8 +691,25 @@ class CipherScorer {
691
691
  const bool security_128_is_fine_;
692
692
  };
693
693
 
694
+ bool ssl_tls13_cipher_meets_policy(uint16_t cipher_id, bool only_fips) {
695
+ if (!only_fips) {
696
+ return true;
697
+ }
698
+
699
+ switch (cipher_id) {
700
+ case TLS1_CK_AES_128_GCM_SHA256 & 0xffff:
701
+ case TLS1_CK_AES_256_GCM_SHA384 & 0xffff:
702
+ return true;
703
+ case TLS1_CK_CHACHA20_POLY1305_SHA256 & 0xffff:
704
+ return false;
705
+ default:
706
+ assert(false);
707
+ return false;
708
+ }
709
+ }
710
+
694
711
  const SSL_CIPHER *ssl_choose_tls13_cipher(CBS cipher_suites, uint16_t version,
695
- uint16_t group_id) {
712
+ uint16_t group_id, bool only_fips) {
696
713
  if (CBS_len(&cipher_suites) % 2 != 0) {
697
714
  return nullptr;
698
715
  }
@@ -715,6 +732,11 @@ const SSL_CIPHER *ssl_choose_tls13_cipher(CBS cipher_suites, uint16_t version,
715
732
  continue;
716
733
  }
717
734
 
735
+ if (!ssl_tls13_cipher_meets_policy(SSL_CIPHER_get_protocol_id(candidate),
736
+ only_fips)) {
737
+ continue;
738
+ }
739
+
718
740
  const CipherScorer::Score candidate_score = scorer.Evaluate(candidate);
719
741
  // |candidate_score| must be larger to displace the current choice. That way
720
742
  // the client's order controls between ciphers with an equal score.
@@ -519,7 +519,8 @@ ssl_ctx_st::ssl_ctx_st(const SSL_METHOD *ssl_method)
519
519
  allow_unknown_alpn_protos(false),
520
520
  false_start_allowed_without_alpn(false),
521
521
  handoff(false),
522
- enable_early_data(false) {
522
+ enable_early_data(false),
523
+ only_fips_cipher_suites_in_tls13(false) {
523
524
  CRYPTO_MUTEX_init(&lock);
524
525
  CRYPTO_new_ex_data(&ex_data);
525
526
  }
@@ -639,6 +640,8 @@ SSL *SSL_new(SSL_CTX *ctx) {
639
640
  ssl->config->retain_only_sha256_of_client_certs =
640
641
  ctx->retain_only_sha256_of_client_certs;
641
642
  ssl->config->permute_extensions = ctx->permute_extensions;
643
+ ssl->config->only_fips_cipher_suites_in_tls13 =
644
+ ctx->only_fips_cipher_suites_in_tls13;
642
645
 
643
646
  if (!ssl->config->supported_group_list.CopyFrom(ctx->supported_group_list) ||
644
647
  !ssl->config->alpn_client_proto_list.CopyFrom(
@@ -3079,3 +3082,93 @@ int SSL_CTX_set_tlsext_status_arg(SSL_CTX *ctx, void *arg) {
3079
3082
  ctx->legacy_ocsp_callback_arg = arg;
3080
3083
  return 1;
3081
3084
  }
3085
+
3086
+ namespace fips202205 {
3087
+
3088
+ // (References are to SP 800-52r2):
3089
+
3090
+ // Section 3.4.2.2
3091
+ // "at least one of the NIST-approved curves, P-256 (secp256r1) and P384
3092
+ // (secp384r1), shall be supported as described in RFC 8422."
3093
+ //
3094
+ // Section 3.3.1
3095
+ // "The server shall be configured to only use cipher suites that are
3096
+ // composed entirely of NIST approved algorithms"
3097
+ static const int kCurves[] = {NID_X9_62_prime256v1, NID_secp384r1};
3098
+
3099
+ static const uint16_t kSigAlgs[] = {
3100
+ SSL_SIGN_RSA_PKCS1_SHA256,
3101
+ SSL_SIGN_RSA_PKCS1_SHA384,
3102
+ SSL_SIGN_RSA_PKCS1_SHA512,
3103
+ // Table 4.1:
3104
+ // "The curve should be P-256 or P-384"
3105
+ SSL_SIGN_ECDSA_SECP256R1_SHA256,
3106
+ SSL_SIGN_ECDSA_SECP384R1_SHA384,
3107
+ SSL_SIGN_RSA_PSS_RSAE_SHA256,
3108
+ SSL_SIGN_RSA_PSS_RSAE_SHA384,
3109
+ SSL_SIGN_RSA_PSS_RSAE_SHA512,
3110
+ };
3111
+
3112
+ static const char kTLS12Ciphers[] =
3113
+ "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:"
3114
+ "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:"
3115
+ "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:"
3116
+ "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384";
3117
+
3118
+ static int Configure(SSL_CTX *ctx) {
3119
+ ctx->only_fips_cipher_suites_in_tls13 = true;
3120
+
3121
+ return
3122
+ // Section 3.1:
3123
+ // "Servers that support government-only applications shall be
3124
+ // configured to use TLS 1.2 and should be configured to use TLS 1.3
3125
+ // as well. These servers should not be configured to use TLS 1.1 and
3126
+ // shall not use TLS 1.0, SSL 3.0, or SSL 2.0.
3127
+ SSL_CTX_set_min_proto_version(ctx, TLS1_2_VERSION) &&
3128
+ SSL_CTX_set_max_proto_version(ctx, TLS1_3_VERSION) &&
3129
+ // Sections 3.3.1.1.1 and 3.3.1.1.2 are ambiguous about whether
3130
+ // HMAC-SHA-1 cipher suites are permitted with TLS 1.2. However, later the
3131
+ // Encrypt-then-MAC extension is required for all CBC cipher suites and so
3132
+ // it's easier to drop them.
3133
+ SSL_CTX_set_strict_cipher_list(ctx, kTLS12Ciphers) &&
3134
+ SSL_CTX_set1_curves(ctx, kCurves, OPENSSL_ARRAY_SIZE(kCurves)) &&
3135
+ SSL_CTX_set_signing_algorithm_prefs(ctx, kSigAlgs,
3136
+ OPENSSL_ARRAY_SIZE(kSigAlgs)) &&
3137
+ SSL_CTX_set_verify_algorithm_prefs(ctx, kSigAlgs,
3138
+ OPENSSL_ARRAY_SIZE(kSigAlgs));
3139
+ }
3140
+
3141
+ static int Configure(SSL *ssl) {
3142
+ ssl->config->only_fips_cipher_suites_in_tls13 = true;
3143
+
3144
+ // See |Configure(SSL_CTX)|, above, for reasoning.
3145
+ return SSL_set_min_proto_version(ssl, TLS1_2_VERSION) &&
3146
+ SSL_set_max_proto_version(ssl, TLS1_3_VERSION) &&
3147
+ SSL_set_strict_cipher_list(ssl, kTLS12Ciphers) &&
3148
+ SSL_set1_curves(ssl, kCurves, OPENSSL_ARRAY_SIZE(kCurves)) &&
3149
+ SSL_set_signing_algorithm_prefs(ssl, kSigAlgs,
3150
+ OPENSSL_ARRAY_SIZE(kSigAlgs)) &&
3151
+ SSL_set_verify_algorithm_prefs(ssl, kSigAlgs,
3152
+ OPENSSL_ARRAY_SIZE(kSigAlgs));
3153
+ }
3154
+
3155
+ } // namespace fips202205
3156
+
3157
+ int SSL_CTX_set_compliance_policy(SSL_CTX *ctx,
3158
+ enum ssl_compliance_policy_t policy) {
3159
+ switch (policy) {
3160
+ case ssl_compliance_policy_fips_202205:
3161
+ return fips202205::Configure(ctx);
3162
+ default:
3163
+ return 0;
3164
+ }
3165
+ }
3166
+
3167
+ int SSL_set_compliance_policy(SSL *ssl, enum ssl_compliance_policy_t policy) {
3168
+ switch (policy) {
3169
+ case ssl_compliance_policy_fips_202205:
3170
+ return fips202205::Configure(ssl);
3171
+ default:
3172
+ return 0;
3173
+ }
3174
+ }