@fails-components/webtransport 0.0.1 → 0.0.2

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 (300) hide show
  1. package/package.json +1 -1
  2. package/readme.md +1 -3
  3. package/src/http3eventloop.cc +83 -9
  4. package/src/http3eventloop.h +13 -3
  5. package/src/http3server.cc +22 -22
  6. package/src/http3server.h +7 -20
  7. package/src/http3wtstreamvisitor.cc +31 -10
  8. package/src/http3wtstreamvisitor.h +38 -11
  9. package/src/webtransport.js +91 -23
  10. package/test/echoserver.js +29 -5
  11. package/test/testsuite.js +242 -220
  12. package/third_party/boringssl/src/CMakeLists.txt +2 -0
  13. package/third_party/boringssl/src/crypto/CMakeLists.txt +1 -0
  14. package/third_party/boringssl/src/crypto/asn1/a_bitstr.c +174 -177
  15. package/third_party/boringssl/src/crypto/asn1/a_bool.c +46 -48
  16. package/third_party/boringssl/src/crypto/asn1/a_d2i_fp.c +21 -23
  17. package/third_party/boringssl/src/crypto/asn1/a_dup.c +21 -23
  18. package/third_party/boringssl/src/crypto/asn1/a_gentm.c +84 -187
  19. package/third_party/boringssl/src/crypto/asn1/a_i2d_fp.c +19 -21
  20. package/third_party/boringssl/src/crypto/asn1/a_int.c +305 -329
  21. package/third_party/boringssl/src/crypto/asn1/a_mbstr.c +190 -195
  22. package/third_party/boringssl/src/crypto/asn1/a_object.c +182 -189
  23. package/third_party/boringssl/src/crypto/asn1/a_octet.c +6 -9
  24. package/third_party/boringssl/src/crypto/asn1/a_print.c +15 -16
  25. package/third_party/boringssl/src/crypto/asn1/a_strex.c +386 -399
  26. package/third_party/boringssl/src/crypto/asn1/a_strnid.c +110 -131
  27. package/third_party/boringssl/src/crypto/asn1/a_time.c +118 -111
  28. package/third_party/boringssl/src/crypto/asn1/a_type.c +59 -60
  29. package/third_party/boringssl/src/crypto/asn1/a_utctm.c +114 -186
  30. package/third_party/boringssl/src/crypto/asn1/a_utf8.c +171 -159
  31. package/third_party/boringssl/src/crypto/asn1/asn1_lib.c +245 -260
  32. package/third_party/boringssl/src/crypto/asn1/asn1_par.c +41 -40
  33. package/third_party/boringssl/src/crypto/asn1/asn1_test.cc +31 -0
  34. package/third_party/boringssl/src/crypto/asn1/asn_pack.c +31 -33
  35. package/third_party/boringssl/src/crypto/asn1/f_int.c +36 -33
  36. package/third_party/boringssl/src/crypto/asn1/f_string.c +29 -26
  37. package/third_party/boringssl/src/crypto/asn1/internal.h +62 -61
  38. package/third_party/boringssl/src/crypto/asn1/tasn_dec.c +706 -702
  39. package/third_party/boringssl/src/crypto/asn1/tasn_enc.c +507 -524
  40. package/third_party/boringssl/src/crypto/asn1/tasn_fre.c +141 -133
  41. package/third_party/boringssl/src/crypto/asn1/tasn_new.c +207 -199
  42. package/third_party/boringssl/src/crypto/asn1/tasn_typ.c +19 -22
  43. package/third_party/boringssl/src/crypto/asn1/tasn_utl.c +24 -24
  44. package/third_party/boringssl/src/crypto/asn1/time_support.c +13 -13
  45. package/third_party/boringssl/src/crypto/bio/connect.c +9 -3
  46. package/third_party/boringssl/src/crypto/bytestring/bytestring_test.cc +125 -1
  47. package/third_party/boringssl/src/crypto/bytestring/cbb.c +4 -7
  48. package/third_party/boringssl/src/crypto/bytestring/cbs.c +167 -9
  49. package/third_party/boringssl/src/crypto/cipher_extra/e_aesctrhmac.c +0 -2
  50. package/third_party/boringssl/src/crypto/cipher_extra/e_aesgcmsiv.c +23 -54
  51. package/third_party/boringssl/src/crypto/cipher_extra/e_chacha20poly1305.c +0 -2
  52. package/third_party/boringssl/src/crypto/cipher_extra/e_tls.c +0 -2
  53. package/third_party/boringssl/src/crypto/curve25519/curve25519.c +6 -8
  54. package/third_party/boringssl/src/crypto/evp/evp_ctx.c +25 -22
  55. package/third_party/boringssl/src/crypto/evp/internal.h +15 -9
  56. package/third_party/boringssl/src/crypto/evp/p_dsa_asn1.c +2 -0
  57. package/third_party/boringssl/src/crypto/evp/p_ec_asn1.c +2 -0
  58. package/third_party/boringssl/src/crypto/evp/p_ed25519.c +3 -3
  59. package/third_party/boringssl/src/crypto/evp/p_ed25519_asn1.c +10 -7
  60. package/third_party/boringssl/src/crypto/evp/p_hkdf.c +241 -0
  61. package/third_party/boringssl/src/crypto/evp/p_rsa_asn1.c +2 -0
  62. package/third_party/boringssl/src/crypto/evp/p_x25519_asn1.c +1 -0
  63. package/third_party/boringssl/src/crypto/fipsmodule/aes/aes_nohw.c +9 -10
  64. package/third_party/boringssl/src/crypto/fipsmodule/aes/key_wrap.c +2 -6
  65. package/third_party/boringssl/src/crypto/fipsmodule/bn/exponentiation.c +5 -11
  66. package/third_party/boringssl/src/crypto/fipsmodule/bn/internal.h +1 -1
  67. package/third_party/boringssl/src/crypto/fipsmodule/bn/prime.c +2 -0
  68. package/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.c +10 -26
  69. package/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aesccm.c +2 -3
  70. package/third_party/boringssl/src/crypto/fipsmodule/digestsign/digestsign.c +1 -0
  71. package/third_party/boringssl/src/crypto/fipsmodule/ec/p256-nistz.c +44 -43
  72. package/third_party/boringssl/src/crypto/fipsmodule/modes/cbc.c +5 -9
  73. package/third_party/boringssl/src/crypto/fipsmodule/modes/gcm.c +14 -21
  74. package/third_party/boringssl/src/crypto/fipsmodule/rand/ctrdrbg.c +8 -8
  75. package/third_party/boringssl/src/crypto/fipsmodule/rand/internal.h +1 -4
  76. package/third_party/boringssl/src/crypto/hkdf/hkdf_test.cc +104 -0
  77. package/third_party/boringssl/src/crypto/internal.h +18 -4
  78. package/third_party/boringssl/src/crypto/lhash/internal.h +13 -1
  79. package/third_party/boringssl/src/crypto/obj/obj_dat.h +4 -1
  80. package/third_party/boringssl/src/crypto/obj/obj_mac.num +1 -0
  81. package/third_party/boringssl/src/crypto/obj/objects.txt +2 -0
  82. package/third_party/boringssl/src/crypto/pem/pem_all.c +77 -86
  83. package/third_party/boringssl/src/crypto/pem/pem_info.c +221 -233
  84. package/third_party/boringssl/src/crypto/pem/pem_lib.c +639 -608
  85. package/third_party/boringssl/src/crypto/pem/pem_oth.c +17 -16
  86. package/third_party/boringssl/src/crypto/pem/pem_pk8.c +133 -142
  87. package/third_party/boringssl/src/crypto/pem/pem_pkey.c +96 -92
  88. package/third_party/boringssl/src/crypto/poly1305/poly1305_vec.c +12 -28
  89. package/third_party/boringssl/src/crypto/siphash/siphash.c +8 -11
  90. package/third_party/boringssl/src/crypto/siphash/siphash_test.cc +5 -7
  91. package/third_party/boringssl/src/crypto/stack/stack.c +33 -16
  92. package/third_party/boringssl/src/crypto/thread_pthread.c +0 -2
  93. package/third_party/boringssl/src/crypto/thread_win.c +0 -2
  94. package/third_party/boringssl/src/crypto/trust_token/internal.h +14 -0
  95. package/third_party/boringssl/src/crypto/trust_token/pmbtoken.c +127 -30
  96. package/third_party/boringssl/src/crypto/trust_token/trust_token.c +40 -0
  97. package/third_party/boringssl/src/crypto/trust_token/trust_token_test.cc +165 -0
  98. package/third_party/boringssl/src/crypto/trust_token/voprf.c +55 -6
  99. package/third_party/boringssl/src/crypto/x509/a_digest.c +23 -24
  100. package/third_party/boringssl/src/crypto/x509/a_sign.c +52 -55
  101. package/third_party/boringssl/src/crypto/x509/a_verify.c +33 -34
  102. package/third_party/boringssl/src/crypto/x509/algorithm.c +17 -18
  103. package/third_party/boringssl/src/crypto/x509/asn1_gen.c +618 -612
  104. package/third_party/boringssl/src/crypto/x509/by_dir.c +320 -337
  105. package/third_party/boringssl/src/crypto/x509/by_file.c +186 -186
  106. package/third_party/boringssl/src/crypto/x509/i2d_pr.c +11 -14
  107. package/third_party/boringssl/src/crypto/x509/internal.h +22 -22
  108. package/third_party/boringssl/src/crypto/x509/name_print.c +155 -150
  109. package/third_party/boringssl/src/crypto/x509/rsa_pss.c +27 -29
  110. package/third_party/boringssl/src/crypto/x509/t_crl.c +67 -70
  111. package/third_party/boringssl/src/crypto/x509/t_req.c +3 -5
  112. package/third_party/boringssl/src/crypto/x509/t_x509.c +280 -251
  113. package/third_party/boringssl/src/crypto/x509/t_x509a.c +52 -47
  114. package/third_party/boringssl/src/crypto/x509/x509.c +3 -4
  115. package/third_party/boringssl/src/crypto/x509/x509_att.c +234 -223
  116. package/third_party/boringssl/src/crypto/x509/x509_cmp.c +286 -296
  117. package/third_party/boringssl/src/crypto/x509/x509_d2.c +37 -32
  118. package/third_party/boringssl/src/crypto/x509/x509_def.c +14 -30
  119. package/third_party/boringssl/src/crypto/x509/x509_ext.c +55 -84
  120. package/third_party/boringssl/src/crypto/x509/x509_lu.c +545 -581
  121. package/third_party/boringssl/src/crypto/x509/x509_obj.c +131 -121
  122. package/third_party/boringssl/src/crypto/x509/x509_req.c +120 -139
  123. package/third_party/boringssl/src/crypto/x509/x509_set.c +128 -142
  124. package/third_party/boringssl/src/crypto/x509/x509_trs.c +185 -193
  125. package/third_party/boringssl/src/crypto/x509/x509_txt.c +70 -72
  126. package/third_party/boringssl/src/crypto/x509/x509_v3.c +172 -161
  127. package/third_party/boringssl/src/crypto/x509/x509_vfy.c +2041 -2053
  128. package/third_party/boringssl/src/crypto/x509/x509_vpm.c +441 -461
  129. package/third_party/boringssl/src/crypto/x509/x509cset.c +152 -170
  130. package/third_party/boringssl/src/crypto/x509/x509name.c +274 -260
  131. package/third_party/boringssl/src/crypto/x509/x509rset.c +43 -20
  132. package/third_party/boringssl/src/crypto/x509/x509spki.c +62 -63
  133. package/third_party/boringssl/src/crypto/x509/x_algor.c +64 -62
  134. package/third_party/boringssl/src/crypto/x509/x_all.c +103 -133
  135. package/third_party/boringssl/src/crypto/x509/x_attrib.c +23 -24
  136. package/third_party/boringssl/src/crypto/x509/x_crl.c +310 -321
  137. package/third_party/boringssl/src/crypto/x509/x_exten.c +6 -5
  138. package/third_party/boringssl/src/crypto/x509/x_info.c +31 -28
  139. package/third_party/boringssl/src/crypto/x509/x_name.c +361 -365
  140. package/third_party/boringssl/src/crypto/x509/x_pkey.c +38 -32
  141. package/third_party/boringssl/src/crypto/x509/x_pubkey.c +114 -117
  142. package/third_party/boringssl/src/crypto/x509/x_req.c +27 -29
  143. package/third_party/boringssl/src/crypto/x509/x_sig.c +2 -2
  144. package/third_party/boringssl/src/crypto/x509/x_spki.c +8 -10
  145. package/third_party/boringssl/src/crypto/x509/x_val.c +2 -2
  146. package/third_party/boringssl/src/crypto/x509/x_x509.c +212 -226
  147. package/third_party/boringssl/src/crypto/x509/x_x509a.c +112 -109
  148. package/third_party/boringssl/src/crypto/x509v3/ext_dat.h +10 -13
  149. package/third_party/boringssl/src/crypto/x509v3/internal.h +72 -87
  150. package/third_party/boringssl/src/crypto/x509v3/pcy_cache.c +184 -176
  151. package/third_party/boringssl/src/crypto/x509v3/pcy_data.c +58 -56
  152. package/third_party/boringssl/src/crypto/x509v3/pcy_lib.c +71 -70
  153. package/third_party/boringssl/src/crypto/x509v3/pcy_map.c +56 -58
  154. package/third_party/boringssl/src/crypto/x509v3/pcy_node.c +89 -91
  155. package/third_party/boringssl/src/crypto/x509v3/pcy_tree.c +585 -590
  156. package/third_party/boringssl/src/crypto/x509v3/v3_akey.c +118 -112
  157. package/third_party/boringssl/src/crypto/x509v3/v3_akeya.c +3 -3
  158. package/third_party/boringssl/src/crypto/x509v3/v3_alt.c +447 -451
  159. package/third_party/boringssl/src/crypto/x509v3/v3_bcons.c +44 -38
  160. package/third_party/boringssl/src/crypto/x509v3/v3_bitst.c +39 -43
  161. package/third_party/boringssl/src/crypto/x509v3/v3_conf.c +321 -320
  162. package/third_party/boringssl/src/crypto/x509v3/v3_cpols.c +352 -327
  163. package/third_party/boringssl/src/crypto/x509v3/v3_crld.c +437 -383
  164. package/third_party/boringssl/src/crypto/x509v3/v3_enum.c +23 -16
  165. package/third_party/boringssl/src/crypto/x509v3/v3_extku.c +62 -53
  166. package/third_party/boringssl/src/crypto/x509v3/v3_genn.c +118 -115
  167. package/third_party/boringssl/src/crypto/x509v3/v3_ia5.c +30 -31
  168. package/third_party/boringssl/src/crypto/x509v3/v3_info.c +112 -98
  169. package/third_party/boringssl/src/crypto/x509v3/v3_int.c +40 -15
  170. package/third_party/boringssl/src/crypto/x509v3/v3_lib.c +248 -252
  171. package/third_party/boringssl/src/crypto/x509v3/v3_ncons.c +390 -386
  172. package/third_party/boringssl/src/crypto/x509v3/v3_ocsp.c +45 -32
  173. package/third_party/boringssl/src/crypto/x509v3/v3_pci.c +206 -209
  174. package/third_party/boringssl/src/crypto/x509v3/v3_pcia.c +6 -8
  175. package/third_party/boringssl/src/crypto/x509v3/v3_pcons.c +54 -50
  176. package/third_party/boringssl/src/crypto/x509v3/v3_pmaps.c +66 -65
  177. package/third_party/boringssl/src/crypto/x509v3/v3_prn.c +144 -133
  178. package/third_party/boringssl/src/crypto/x509v3/v3_purp.c +695 -709
  179. package/third_party/boringssl/src/crypto/x509v3/v3_skey.c +75 -69
  180. package/third_party/boringssl/src/crypto/x509v3/v3_utl.c +1102 -1082
  181. package/third_party/boringssl/src/include/openssl/base.h +3 -1
  182. package/third_party/boringssl/src/include/openssl/bn.h +3 -0
  183. package/third_party/boringssl/src/include/openssl/bytestring.h +20 -0
  184. package/third_party/boringssl/src/include/openssl/evp.h +6 -5
  185. package/third_party/boringssl/src/include/openssl/kdf.h +91 -0
  186. package/third_party/boringssl/src/include/openssl/nid.h +4 -0
  187. package/third_party/boringssl/src/include/openssl/ssl.h +6 -1
  188. package/third_party/boringssl/src/include/openssl/stack.h +47 -32
  189. package/third_party/boringssl/src/include/openssl/trust_token.h +18 -3
  190. package/third_party/boringssl/src/include/openssl/x509.h +18 -0
  191. package/third_party/boringssl/src/ssl/ssl_file.cc +61 -99
  192. package/third_party/boringssl/src/ssl/ssl_test.cc +101 -0
  193. package/third_party/boringssl/src/util/doc.config +2 -1
  194. package/third_party/boringssl/src/util/fipstools/acvp/acvptool/subprocess/subprocess.go +8 -0
  195. package/third_party/googleurl/AUTHORS +16 -2
  196. package/third_party/googleurl/base/BUILD +1 -0
  197. package/third_party/googleurl/base/compiler_specific.h +16 -17
  198. package/third_party/googleurl/base/containers/contiguous_iterator.h +13 -9
  199. package/third_party/googleurl/base/containers/span.h +23 -8
  200. package/third_party/googleurl/base/memory/raw_ptr.h +17 -25
  201. package/third_party/googleurl/base/memory/raw_ptr_exclusion.h +21 -0
  202. package/third_party/googleurl/base/strings/escape.cc +14 -2
  203. package/third_party/googleurl/base/strings/safe_sprintf.h +1 -1
  204. package/third_party/googleurl/base/strings/string_number_conversions.cc +5 -3
  205. package/third_party/googleurl/base/strings/string_number_conversions_internal.h +5 -5
  206. package/third_party/googleurl/base/strings/string_piece.h +3 -3
  207. package/third_party/googleurl/base/strings/string_util.cc +4 -27
  208. package/third_party/googleurl/base/strings/string_util.h +43 -8
  209. package/third_party/googleurl/base/strings/string_util_internal.h +11 -12
  210. package/third_party/googleurl/base/strings/string_util_unittest.cc +33 -0
  211. package/third_party/googleurl/base/strings/string_util_win.cc +0 -5
  212. package/third_party/googleurl/base/strings/string_util_win.h +9 -1
  213. package/third_party/googleurl/base/strings/utf_offset_string_conversions.cc +1 -1
  214. package/third_party/googleurl/base/strings/utf_string_conversion_utils.cc +5 -8
  215. package/third_party/googleurl/base/strings/utf_string_conversion_utils.h +13 -10
  216. package/third_party/googleurl/base/strings/utf_string_conversions.cc +32 -25
  217. package/third_party/googleurl/base/template_util.h +23 -35
  218. package/third_party/googleurl/build/build_config.h +14 -3
  219. package/third_party/googleurl/copy.bara.sky +1 -1
  220. package/third_party/googleurl/url/gurl.cc +8 -4
  221. package/third_party/googleurl/url/gurl.h +1 -0
  222. package/third_party/googleurl/url/gurl_unittest.cc +1 -0
  223. package/third_party/googleurl/url/origin.h +36 -26
  224. package/third_party/googleurl/url/scheme_host_port.h +4 -1
  225. package/third_party/googleurl/url/url_canon.h +2 -1
  226. package/third_party/googleurl/url/url_canon_internal.cc +9 -7
  227. package/third_party/googleurl/url/url_canon_internal.h +16 -16
  228. package/third_party/googleurl/url/url_canon_stdstring.h +2 -1
  229. package/third_party/googleurl/url/url_util.cc +9 -8
  230. package/third_party/quiche/build/source_list.bzl +7 -0
  231. package/third_party/quiche/build/source_list.gni +7 -0
  232. package/third_party/quiche/build/source_list.json +7 -0
  233. package/third_party/quiche/quiche/common/platform/api/quiche_mem_slice.h +7 -3
  234. package/third_party/quiche/quiche/http2/adapter/nghttp2_adapter_test.cc +86 -2
  235. package/third_party/quiche/quiche/http2/adapter/oghttp2_adapter_test.cc +104 -2
  236. package/third_party/quiche/quiche/http2/adapter/oghttp2_session.cc +23 -0
  237. package/third_party/quiche/quiche/http2/adapter/oghttp2_session.h +6 -1
  238. package/third_party/quiche/quiche/quic/core/congestion_control/send_algorithm_test.cc +0 -16
  239. package/third_party/quiche/quiche/quic/core/crypto/crypto_protocol.h +1 -1
  240. package/third_party/quiche/quiche/quic/core/http/end_to_end_test.cc +56 -2
  241. package/third_party/quiche/quiche/quic/core/http/http_constants.cc +1 -0
  242. package/third_party/quiche/quiche/quic/core/http/http_constants.h +1 -0
  243. package/third_party/quiche/quiche/quic/core/http/http_encoder.cc +28 -17
  244. package/third_party/quiche/quiche/quic/core/http/http_encoder.h +5 -0
  245. package/third_party/quiche/quiche/quic/core/http/http_encoder_test.cc +26 -30
  246. package/third_party/quiche/quiche/quic/core/http/http_frames.h +1 -0
  247. package/third_party/quiche/quiche/quic/core/http/quic_server_session_base.cc +4 -4
  248. package/third_party/quiche/quiche/quic/core/http/quic_server_session_base_test.cc +1 -1
  249. package/third_party/quiche/quiche/quic/core/http/quic_spdy_client_session.cc +5 -1
  250. package/third_party/quiche/quiche/quic/core/http/quic_spdy_stream.cc +6 -33
  251. package/third_party/quiche/quiche/quic/core/http/quic_spdy_stream.h +0 -17
  252. package/third_party/quiche/quiche/quic/core/http/quic_spdy_stream_test.cc +5 -20
  253. package/third_party/quiche/quiche/quic/core/io/quic_event_loop.h +81 -0
  254. package/third_party/quiche/quiche/quic/core/io/quic_poll_event_loop.cc +265 -0
  255. package/third_party/quiche/quiche/quic/core/io/quic_poll_event_loop.h +152 -0
  256. package/third_party/quiche/quiche/quic/core/io/quic_poll_event_loop_test.cc +341 -0
  257. package/third_party/quiche/quiche/quic/core/quic_buffered_packet_store.cc +3 -1
  258. package/third_party/quiche/quiche/quic/core/quic_buffered_packet_store.h +7 -7
  259. package/third_party/quiche/quiche/quic/core/quic_buffered_packet_store_test.cc +4 -3
  260. package/third_party/quiche/quiche/quic/core/quic_connection.cc +69 -19
  261. package/third_party/quiche/quiche/quic/core/quic_connection.h +9 -3
  262. package/third_party/quiche/quiche/quic/core/quic_connection_id_manager.cc +29 -10
  263. package/third_party/quiche/quiche/quic/core/quic_connection_id_manager.h +5 -3
  264. package/third_party/quiche/quiche/quic/core/quic_connection_id_manager_test.cc +85 -22
  265. package/third_party/quiche/quiche/quic/core/quic_connection_test.cc +186 -30
  266. package/third_party/quiche/quiche/quic/core/quic_crypto_stream.cc +2 -1
  267. package/third_party/quiche/quiche/quic/core/quic_default_clock.cc +31 -0
  268. package/third_party/quiche/quiche/quic/core/quic_default_clock.h +34 -0
  269. package/third_party/quiche/quiche/quic/core/quic_default_connection_helper.h +49 -0
  270. package/third_party/quiche/quiche/quic/core/quic_dispatcher.cc +53 -37
  271. package/third_party/quiche/quiche/quic/core/quic_dispatcher.h +19 -11
  272. package/third_party/quiche/quiche/quic/core/quic_dispatcher_test.cc +15 -2
  273. package/third_party/quiche/quiche/quic/core/quic_flags_list.h +10 -4
  274. package/third_party/quiche/quiche/quic/core/quic_idle_network_detector.cc +2 -2
  275. package/third_party/quiche/quiche/quic/core/quic_idle_network_detector_test.cc +4 -4
  276. package/third_party/quiche/quiche/quic/core/quic_packet_creator.cc +14 -3
  277. package/third_party/quiche/quiche/quic/core/quic_packet_creator_test.cc +145 -2
  278. package/third_party/quiche/quiche/quic/core/quic_packets.cc +3 -1
  279. package/third_party/quiche/quiche/quic/core/quic_packets.h +4 -0
  280. package/third_party/quiche/quiche/quic/core/quic_sent_packet_manager.cc +13 -11
  281. package/third_party/quiche/quiche/quic/core/quic_sent_packet_manager.h +9 -0
  282. package/third_party/quiche/quiche/quic/core/quic_sent_packet_manager_test.cc +6 -0
  283. package/third_party/quiche/quiche/quic/core/quic_session.cc +3 -2
  284. package/third_party/quiche/quiche/quic/core/quic_session.h +8 -3
  285. package/third_party/quiche/quiche/quic/core/quic_types.cc +18 -0
  286. package/third_party/quiche/quiche/quic/core/quic_types.h +3 -0
  287. package/third_party/quiche/quiche/quic/core/tls_chlo_extractor.cc +3 -0
  288. package/third_party/quiche/quiche/quic/core/tls_chlo_extractor.h +10 -0
  289. package/third_party/quiche/quiche/quic/test_tools/mock_quic_session_visitor.h +1 -1
  290. package/third_party/quiche/quiche/quic/test_tools/quic_test_utils.h +1 -1
  291. package/third_party/quiche/quiche/quic/test_tools/server_thread.cc +3 -2
  292. package/third_party/quiche/quiche/quic/test_tools/simple_session_notifier.cc +7 -1
  293. package/third_party/quiche/quiche/quic/test_tools/simple_session_notifier.h +3 -0
  294. package/third_party/quiche/quiche/quic/test_tools/simulator/quic_endpoint.h +4 -2
  295. package/certs/ca.cnf +0 -69
  296. package/certs/generate_certs.sh +0 -53
  297. package/certs/generate_certs_leaf.sh +0 -53
  298. package/certs/leaf.cnf +0 -24
  299. package/certs/readme.txt +0 -2
  300. package/third_party/quiche/build/BUILD.bazel +0 -7
@@ -71,286 +71,274 @@
71
71
  #include <openssl/x509.h>
72
72
 
73
73
  STACK_OF(X509_INFO) *PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk,
74
- pem_password_cb *cb, void *u)
75
- {
76
- BIO *b = BIO_new_fp(fp, BIO_NOCLOSE);
77
- if (b == NULL) {
78
- OPENSSL_PUT_ERROR(PEM, ERR_R_BUF_LIB);
79
- return 0;
80
- }
81
- STACK_OF(X509_INFO) *ret = PEM_X509_INFO_read_bio(b, sk, cb, u);
82
- BIO_free(b);
83
- return ret;
74
+ pem_password_cb *cb, void *u) {
75
+ BIO *b = BIO_new_fp(fp, BIO_NOCLOSE);
76
+ if (b == NULL) {
77
+ OPENSSL_PUT_ERROR(PEM, ERR_R_BUF_LIB);
78
+ return 0;
79
+ }
80
+ STACK_OF(X509_INFO) *ret = PEM_X509_INFO_read_bio(b, sk, cb, u);
81
+ BIO_free(b);
82
+ return ret;
84
83
  }
85
84
 
86
85
  enum parse_result_t {
87
- parse_ok,
88
- parse_error,
89
- parse_new_entry,
86
+ parse_ok,
87
+ parse_error,
88
+ parse_new_entry,
90
89
  };
91
90
 
92
91
  static enum parse_result_t parse_x509(X509_INFO *info, const uint8_t *data,
93
- size_t len, int key_type)
94
- {
95
- if (info->x509 != NULL) {
96
- return parse_new_entry;
97
- }
98
- info->x509 = d2i_X509(NULL, &data, len);
99
- return info->x509 != NULL ? parse_ok : parse_error;
92
+ size_t len, int key_type) {
93
+ if (info->x509 != NULL) {
94
+ return parse_new_entry;
95
+ }
96
+ info->x509 = d2i_X509(NULL, &data, len);
97
+ return info->x509 != NULL ? parse_ok : parse_error;
100
98
  }
101
99
 
102
100
  static enum parse_result_t parse_x509_aux(X509_INFO *info, const uint8_t *data,
103
- size_t len, int key_type)
104
- {
105
- if (info->x509 != NULL) {
106
- return parse_new_entry;
107
- }
108
- info->x509 = d2i_X509_AUX(NULL, &data, len);
109
- return info->x509 != NULL ? parse_ok : parse_error;
101
+ size_t len, int key_type) {
102
+ if (info->x509 != NULL) {
103
+ return parse_new_entry;
104
+ }
105
+ info->x509 = d2i_X509_AUX(NULL, &data, len);
106
+ return info->x509 != NULL ? parse_ok : parse_error;
110
107
  }
111
108
 
112
109
  static enum parse_result_t parse_crl(X509_INFO *info, const uint8_t *data,
113
- size_t len, int key_type)
114
- {
115
- if (info->crl != NULL) {
116
- return parse_new_entry;
117
- }
118
- info->crl = d2i_X509_CRL(NULL, &data, len);
119
- return info->crl != NULL ? parse_ok : parse_error;
110
+ size_t len, int key_type) {
111
+ if (info->crl != NULL) {
112
+ return parse_new_entry;
113
+ }
114
+ info->crl = d2i_X509_CRL(NULL, &data, len);
115
+ return info->crl != NULL ? parse_ok : parse_error;
120
116
  }
121
117
 
122
118
  static enum parse_result_t parse_key(X509_INFO *info, const uint8_t *data,
123
- size_t len, int key_type)
124
- {
125
- if (info->x_pkey != NULL) {
126
- return parse_new_entry;
127
- }
128
- info->x_pkey = X509_PKEY_new();
129
- if (info->x_pkey == NULL) {
130
- return parse_error;
131
- }
132
- info->x_pkey->dec_pkey = d2i_PrivateKey(key_type, NULL, &data, len);
133
- return info->x_pkey->dec_pkey != NULL ? parse_ok : parse_error;
119
+ size_t len, int key_type) {
120
+ if (info->x_pkey != NULL) {
121
+ return parse_new_entry;
122
+ }
123
+ info->x_pkey = X509_PKEY_new();
124
+ if (info->x_pkey == NULL) {
125
+ return parse_error;
126
+ }
127
+ info->x_pkey->dec_pkey = d2i_PrivateKey(key_type, NULL, &data, len);
128
+ return info->x_pkey->dec_pkey != NULL ? parse_ok : parse_error;
134
129
  }
135
130
 
136
131
  STACK_OF(X509_INFO) *PEM_X509_INFO_read_bio(BIO *bp, STACK_OF(X509_INFO) *sk,
137
- pem_password_cb *cb, void *u)
138
- {
139
- X509_INFO *info = NULL;
140
- char *name = NULL, *header = NULL;
141
- unsigned char *data = NULL;
142
- long len;
143
- int ok = 0;
144
- STACK_OF(X509_INFO) *ret = NULL;
132
+ pem_password_cb *cb, void *u) {
133
+ X509_INFO *info = NULL;
134
+ char *name = NULL, *header = NULL;
135
+ unsigned char *data = NULL;
136
+ long len;
137
+ int ok = 0;
138
+ STACK_OF(X509_INFO) *ret = NULL;
145
139
 
146
- if (sk == NULL) {
147
- ret = sk_X509_INFO_new_null();
148
- if (ret == NULL) {
149
- OPENSSL_PUT_ERROR(PEM, ERR_R_MALLOC_FAILURE);
150
- return NULL;
151
- }
152
- } else {
153
- ret = sk;
140
+ if (sk == NULL) {
141
+ ret = sk_X509_INFO_new_null();
142
+ if (ret == NULL) {
143
+ OPENSSL_PUT_ERROR(PEM, ERR_R_MALLOC_FAILURE);
144
+ return NULL;
154
145
  }
155
- size_t orig_num = sk_X509_INFO_num(ret);
146
+ } else {
147
+ ret = sk;
148
+ }
149
+ size_t orig_num = sk_X509_INFO_num(ret);
156
150
 
157
- info = X509_INFO_new();
158
- if (info == NULL) {
159
- goto err;
160
- }
151
+ info = X509_INFO_new();
152
+ if (info == NULL) {
153
+ goto err;
154
+ }
161
155
 
162
- for (;;) {
163
- if (!PEM_read_bio(bp, &name, &header, &data, &len)) {
164
- uint32_t error = ERR_peek_last_error();
165
- if (ERR_GET_LIB(error) == ERR_LIB_PEM &&
166
- ERR_GET_REASON(error) == PEM_R_NO_START_LINE) {
167
- ERR_clear_error();
168
- break;
169
- }
170
- goto err;
171
- }
172
-
173
- enum parse_result_t (*parse_function)(X509_INFO *, const uint8_t *,
174
- size_t, int) = NULL;
175
- int key_type = EVP_PKEY_NONE;
176
- if (strcmp(name, PEM_STRING_X509) == 0 ||
177
- strcmp(name, PEM_STRING_X509_OLD) == 0) {
178
- parse_function = parse_x509;
179
- } else if (strcmp(name, PEM_STRING_X509_TRUSTED) == 0) {
180
- parse_function = parse_x509_aux;
181
- } else if (strcmp(name, PEM_STRING_X509_CRL) == 0) {
182
- parse_function = parse_crl;
183
- } else if (strcmp(name, PEM_STRING_RSA) == 0) {
184
- parse_function = parse_key;
185
- key_type = EVP_PKEY_RSA;
186
- } else if (strcmp(name, PEM_STRING_DSA) == 0) {
187
- parse_function = parse_key;
188
- key_type = EVP_PKEY_DSA;
189
- } else if (strcmp(name, PEM_STRING_ECPRIVATEKEY) == 0) {
190
- parse_function = parse_key;
191
- key_type = EVP_PKEY_EC;
192
- }
156
+ for (;;) {
157
+ if (!PEM_read_bio(bp, &name, &header, &data, &len)) {
158
+ uint32_t error = ERR_peek_last_error();
159
+ if (ERR_GET_LIB(error) == ERR_LIB_PEM &&
160
+ ERR_GET_REASON(error) == PEM_R_NO_START_LINE) {
161
+ ERR_clear_error();
162
+ break;
163
+ }
164
+ goto err;
165
+ }
193
166
 
194
- /* If a private key has a header, assume it is encrypted. */
195
- if (key_type != EVP_PKEY_NONE && strlen(header) > 10) {
196
- if (info->x_pkey != NULL) {
197
- if (!sk_X509_INFO_push(ret, info)) {
198
- goto err;
199
- }
200
- info = X509_INFO_new();
201
- if (info == NULL) {
202
- goto err;
203
- }
204
- }
205
- /* Historically, raw entries pushed an empty key. */
206
- info->x_pkey = X509_PKEY_new();
207
- if (info->x_pkey == NULL ||
208
- !PEM_get_EVP_CIPHER_INFO(header, &info->enc_cipher)) {
209
- goto err;
210
- }
211
- info->enc_data = (char *)data;
212
- info->enc_len = (int)len;
213
- data = NULL;
214
- } else if (parse_function != NULL) {
215
- EVP_CIPHER_INFO cipher;
216
- if (!PEM_get_EVP_CIPHER_INFO(header, &cipher) ||
217
- !PEM_do_header(&cipher, data, &len, cb, u)) {
218
- goto err;
219
- }
220
- enum parse_result_t result =
221
- parse_function(info, data, len, key_type);
222
- if (result == parse_new_entry) {
223
- if (!sk_X509_INFO_push(ret, info)) {
224
- goto err;
225
- }
226
- info = X509_INFO_new();
227
- if (info == NULL) {
228
- goto err;
229
- }
230
- result = parse_function(info, data, len, key_type);
231
- }
232
- if (result != parse_ok) {
233
- OPENSSL_PUT_ERROR(PEM, ERR_R_ASN1_LIB);
234
- goto err;
235
- }
236
- }
237
- OPENSSL_free(name);
238
- OPENSSL_free(header);
239
- OPENSSL_free(data);
240
- name = NULL;
241
- header = NULL;
242
- data = NULL;
167
+ enum parse_result_t (*parse_function)(X509_INFO *, const uint8_t *, size_t,
168
+ int) = NULL;
169
+ int key_type = EVP_PKEY_NONE;
170
+ if (strcmp(name, PEM_STRING_X509) == 0 ||
171
+ strcmp(name, PEM_STRING_X509_OLD) == 0) {
172
+ parse_function = parse_x509;
173
+ } else if (strcmp(name, PEM_STRING_X509_TRUSTED) == 0) {
174
+ parse_function = parse_x509_aux;
175
+ } else if (strcmp(name, PEM_STRING_X509_CRL) == 0) {
176
+ parse_function = parse_crl;
177
+ } else if (strcmp(name, PEM_STRING_RSA) == 0) {
178
+ parse_function = parse_key;
179
+ key_type = EVP_PKEY_RSA;
180
+ } else if (strcmp(name, PEM_STRING_DSA) == 0) {
181
+ parse_function = parse_key;
182
+ key_type = EVP_PKEY_DSA;
183
+ } else if (strcmp(name, PEM_STRING_ECPRIVATEKEY) == 0) {
184
+ parse_function = parse_key;
185
+ key_type = EVP_PKEY_EC;
243
186
  }
244
187
 
245
- /* Push the last entry on the stack if not empty. */
246
- if (info->x509 != NULL || info->crl != NULL ||
247
- info->x_pkey != NULL || info->enc_data != NULL) {
188
+ // If a private key has a header, assume it is encrypted.
189
+ if (key_type != EVP_PKEY_NONE && strlen(header) > 10) {
190
+ if (info->x_pkey != NULL) {
248
191
  if (!sk_X509_INFO_push(ret, info)) {
249
- goto err;
192
+ goto err;
250
193
  }
251
- info = NULL;
252
- }
253
-
254
- ok = 1;
255
-
256
- err:
257
- X509_INFO_free(info);
258
- if (!ok) {
259
- while (sk_X509_INFO_num(ret) > orig_num) {
260
- X509_INFO_free(sk_X509_INFO_pop(ret));
194
+ info = X509_INFO_new();
195
+ if (info == NULL) {
196
+ goto err;
197
+ }
198
+ }
199
+ // Historically, raw entries pushed an empty key.
200
+ info->x_pkey = X509_PKEY_new();
201
+ if (info->x_pkey == NULL ||
202
+ !PEM_get_EVP_CIPHER_INFO(header, &info->enc_cipher)) {
203
+ goto err;
204
+ }
205
+ info->enc_data = (char *)data;
206
+ info->enc_len = (int)len;
207
+ data = NULL;
208
+ } else if (parse_function != NULL) {
209
+ EVP_CIPHER_INFO cipher;
210
+ if (!PEM_get_EVP_CIPHER_INFO(header, &cipher) ||
211
+ !PEM_do_header(&cipher, data, &len, cb, u)) {
212
+ goto err;
213
+ }
214
+ enum parse_result_t result = parse_function(info, data, len, key_type);
215
+ if (result == parse_new_entry) {
216
+ if (!sk_X509_INFO_push(ret, info)) {
217
+ goto err;
261
218
  }
262
- if (ret != sk) {
263
- sk_X509_INFO_free(ret);
219
+ info = X509_INFO_new();
220
+ if (info == NULL) {
221
+ goto err;
264
222
  }
265
- ret = NULL;
223
+ result = parse_function(info, data, len, key_type);
224
+ }
225
+ if (result != parse_ok) {
226
+ OPENSSL_PUT_ERROR(PEM, ERR_R_ASN1_LIB);
227
+ goto err;
228
+ }
266
229
  }
267
-
268
230
  OPENSSL_free(name);
269
231
  OPENSSL_free(header);
270
232
  OPENSSL_free(data);
271
- return ret;
233
+ name = NULL;
234
+ header = NULL;
235
+ data = NULL;
236
+ }
237
+
238
+ // Push the last entry on the stack if not empty.
239
+ if (info->x509 != NULL || info->crl != NULL || info->x_pkey != NULL ||
240
+ info->enc_data != NULL) {
241
+ if (!sk_X509_INFO_push(ret, info)) {
242
+ goto err;
243
+ }
244
+ info = NULL;
245
+ }
246
+
247
+ ok = 1;
248
+
249
+ err:
250
+ X509_INFO_free(info);
251
+ if (!ok) {
252
+ while (sk_X509_INFO_num(ret) > orig_num) {
253
+ X509_INFO_free(sk_X509_INFO_pop(ret));
254
+ }
255
+ if (ret != sk) {
256
+ sk_X509_INFO_free(ret);
257
+ }
258
+ ret = NULL;
259
+ }
260
+
261
+ OPENSSL_free(name);
262
+ OPENSSL_free(header);
263
+ OPENSSL_free(data);
264
+ return ret;
272
265
  }
273
266
 
274
- /* A TJH addition */
267
+ // A TJH addition
275
268
  int PEM_X509_INFO_write_bio(BIO *bp, X509_INFO *xi, EVP_CIPHER *enc,
276
- unsigned char *kstr, int klen,
277
- pem_password_cb *cb, void *u)
278
- {
279
- int i, ret = 0;
280
- unsigned char *data = NULL;
281
- const char *objstr = NULL;
282
- char buf[PEM_BUFSIZE];
283
- unsigned char *iv = NULL;
284
- unsigned iv_len = 0;
269
+ unsigned char *kstr, int klen, pem_password_cb *cb,
270
+ void *u) {
271
+ int i, ret = 0;
272
+ unsigned char *data = NULL;
273
+ const char *objstr = NULL;
274
+ char buf[PEM_BUFSIZE];
275
+ unsigned char *iv = NULL;
276
+ unsigned iv_len = 0;
285
277
 
286
- if (enc != NULL) {
287
- iv_len = EVP_CIPHER_iv_length(enc);
288
- objstr = OBJ_nid2sn(EVP_CIPHER_nid(enc));
289
- if (objstr == NULL) {
290
- OPENSSL_PUT_ERROR(PEM, PEM_R_UNSUPPORTED_CIPHER);
291
- goto err;
292
- }
278
+ if (enc != NULL) {
279
+ iv_len = EVP_CIPHER_iv_length(enc);
280
+ objstr = OBJ_nid2sn(EVP_CIPHER_nid(enc));
281
+ if (objstr == NULL) {
282
+ OPENSSL_PUT_ERROR(PEM, PEM_R_UNSUPPORTED_CIPHER);
283
+ goto err;
293
284
  }
285
+ }
294
286
 
295
- /*
296
- * now for the fun part ... if we have a private key then we have to be
297
- * able to handle a not-yet-decrypted key being written out correctly ...
298
- * if it is decrypted or it is non-encrypted then we use the base code
299
- */
300
- if (xi->x_pkey != NULL) {
301
- if ((xi->enc_data != NULL) && (xi->enc_len > 0)) {
302
- if (enc == NULL) {
303
- OPENSSL_PUT_ERROR(PEM, PEM_R_CIPHER_IS_NULL);
304
- goto err;
305
- }
287
+ // now for the fun part ... if we have a private key then we have to be
288
+ // able to handle a not-yet-decrypted key being written out correctly ...
289
+ // if it is decrypted or it is non-encrypted then we use the base code
290
+ if (xi->x_pkey != NULL) {
291
+ if ((xi->enc_data != NULL) && (xi->enc_len > 0)) {
292
+ if (enc == NULL) {
293
+ OPENSSL_PUT_ERROR(PEM, PEM_R_CIPHER_IS_NULL);
294
+ goto err;
295
+ }
306
296
 
307
- /* copy from weirdo names into more normal things */
308
- iv = xi->enc_cipher.iv;
309
- data = (unsigned char *)xi->enc_data;
310
- i = xi->enc_len;
297
+ // copy from weirdo names into more normal things
298
+ iv = xi->enc_cipher.iv;
299
+ data = (unsigned char *)xi->enc_data;
300
+ i = xi->enc_len;
311
301
 
312
- /*
313
- * we take the encryption data from the internal stuff rather
314
- * than what the user has passed us ... as we have to match
315
- * exactly for some strange reason
316
- */
317
- objstr = OBJ_nid2sn(EVP_CIPHER_nid(xi->enc_cipher.cipher));
318
- if (objstr == NULL) {
319
- OPENSSL_PUT_ERROR(PEM, PEM_R_UNSUPPORTED_CIPHER);
320
- goto err;
321
- }
302
+ // we take the encryption data from the internal stuff rather
303
+ // than what the user has passed us ... as we have to match
304
+ // exactly for some strange reason
305
+ objstr = OBJ_nid2sn(EVP_CIPHER_nid(xi->enc_cipher.cipher));
306
+ if (objstr == NULL) {
307
+ OPENSSL_PUT_ERROR(PEM, PEM_R_UNSUPPORTED_CIPHER);
308
+ goto err;
309
+ }
322
310
 
323
- /* create the right magic header stuff */
324
- assert(strlen(objstr) + 23 + 2 * iv_len + 13 <= sizeof buf);
325
- buf[0] = '\0';
326
- PEM_proc_type(buf, PEM_TYPE_ENCRYPTED);
327
- PEM_dek_info(buf, objstr, iv_len, (char *)iv);
311
+ // create the right magic header stuff
312
+ assert(strlen(objstr) + 23 + 2 * iv_len + 13 <= sizeof buf);
313
+ buf[0] = '\0';
314
+ PEM_proc_type(buf, PEM_TYPE_ENCRYPTED);
315
+ PEM_dek_info(buf, objstr, iv_len, (char *)iv);
328
316
 
329
- /* use the normal code to write things out */
330
- i = PEM_write_bio(bp, PEM_STRING_RSA, buf, data, i);
331
- if (i <= 0)
332
- goto err;
333
- } else {
334
- /* Add DSA/DH */
335
- /* normal optionally encrypted stuff */
336
- if (PEM_write_bio_RSAPrivateKey(bp,
337
- xi->x_pkey->dec_pkey->pkey.rsa,
338
- enc, kstr, klen, cb, u) <= 0)
339
- goto err;
340
- }
317
+ // use the normal code to write things out
318
+ i = PEM_write_bio(bp, PEM_STRING_RSA, buf, data, i);
319
+ if (i <= 0) {
320
+ goto err;
321
+ }
322
+ } else {
323
+ // Add DSA/DH
324
+ // normal optionally encrypted stuff
325
+ if (PEM_write_bio_RSAPrivateKey(bp, xi->x_pkey->dec_pkey->pkey.rsa, enc,
326
+ kstr, klen, cb, u) <= 0) {
327
+ goto err;
328
+ }
341
329
  }
330
+ }
342
331
 
343
- /* if we have a certificate then write it out now */
344
- if ((xi->x509 != NULL) && (PEM_write_bio_X509(bp, xi->x509) <= 0))
345
- goto err;
332
+ // if we have a certificate then write it out now
333
+ if ((xi->x509 != NULL) && (PEM_write_bio_X509(bp, xi->x509) <= 0)) {
334
+ goto err;
335
+ }
346
336
 
347
- /*
348
- * we are ignoring anything else that is loaded into the X509_INFO
349
- * structure for the moment ... as I don't need it so I'm not coding it
350
- * here and Eric can do it when this makes it into the base library --tjh
351
- */
337
+ // we are ignoring anything else that is loaded into the X509_INFO
338
+ // structure for the moment ... as I don't need it so I'm not coding it
339
+ // here and Eric can do it when this makes it into the base library --tjh
352
340
 
353
- ret = 1;
341
+ ret = 1;
354
342
 
355
343
  err:
356
344
  OPENSSL_cleanse(buf, PEM_BUFSIZE);