@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
package/test/testsuite.js CHANGED
@@ -3,273 +3,295 @@
3
3
  // found in the LICENSE file.
4
4
 
5
5
  export async function incomingBidirectionalEchoTest(session) {
6
- try {
7
- const bidiReader = session.incomingBidirectionalStreams.getReader()
8
- while (true) {
9
- const bidistr = await bidiReader.read()
10
- if (bidistr.done) {
11
- console.log('bidiReader terminated')
12
- break
13
- }
14
- if (bidistr.value) {
15
- // ok we got a stream
16
- const bidistream = bidistr.value
17
- // echo it
18
- await bidistream.readable.pipeTo(bidistream.writable)
19
- console.log('bidiReader finished piping')
20
- }
6
+ try {
7
+ const bidiReader = session.incomingBidirectionalStreams.getReader()
8
+ while (true) {
9
+ const bidistr = await bidiReader.read()
10
+ if (bidistr.done) {
11
+ console.log('bidiReader terminated')
12
+ break
13
+ }
14
+ if (bidistr.value) {
15
+ // ok we got a stream
16
+ const bidistream = bidistr.value
17
+ // echo it
18
+ await bidistream.readable.pipeTo(bidistream.writable)
19
+ console.log('bidiReader finished piping')
21
20
  }
22
- } catch (error) {
23
- console.log('incoming bidiReader exited with', error)
24
21
  }
22
+ } catch (error) {
23
+ console.log('incoming bidiReader exited with', error)
25
24
  }
26
-
27
- export async function outgoingBidirectionalEchoTest(session)
28
- {
29
- try {
30
- const mybidistream = await session.createBidirectionalStream()
31
- await mybidistream.readable.pipeTo(mybidistream.writable)
32
- } catch (error) {
33
- console.log('outgoing bidiReader exited with', error)
34
- }
25
+ }
26
+
27
+ export async function outgoingBidirectionalEchoTest(session) {
28
+ try {
29
+ const mybidistream = await session.createBidirectionalStream()
30
+ await mybidistream.readable.pipeTo(mybidistream.writable)
31
+ } catch (error) {
32
+ console.log('outgoing bidiReader exited with', error)
35
33
  }
36
-
37
- export async function unidirectionalEchoTest(session){
38
- try {
39
- const unidiReader = session.incomingUnidirectionalStreams.getReader()
40
- while (true) {
41
- const unidistr = await unidiReader.read()
42
- if (unidistr.done) {
43
- console.log('unidiReader terminated')
44
- break
45
- }
46
- if (unidistr.value) {
47
- // ok we got a stream
48
- const unidistream = unidistr.value
49
- // echo it
50
- const uniwritable = await session.createUnidirectionalStream()
51
- await unidistream.pipeTo(uniwritable)
52
- console.log('unidiReader finished piping')
53
- }
34
+ }
35
+
36
+ export async function unidirectionalEchoTest(session) {
37
+ try {
38
+ const unidiReader = session.incomingUnidirectionalStreams.getReader()
39
+ while (true) {
40
+ const unidistr = await unidiReader.read()
41
+ if (unidistr.done) {
42
+ console.log('unidiReader terminated')
43
+ break
44
+ }
45
+ if (unidistr.value) {
46
+ // ok we got a stream
47
+ const unidistream = unidistr.value
48
+ // echo it
49
+ const uniwritable = await session.createUnidirectionalStream()
50
+ await unidistream.pipeTo(uniwritable)
51
+ console.log('unidiReader finished piping')
54
52
  }
55
- } catch (error) {
56
- console.log('unidiReader exited with', error)
57
53
  }
54
+ } catch (error) {
55
+ console.log('unidiReader exited with', error)
58
56
  }
59
-
60
- export async function datagramEchoTest(session) {
61
- try {
62
- session.datagrams.readable.pipeTo(session.datagrams.writable)
63
- } catch (error) {
64
- console.log('datagram echo exited with', error)
65
- }
57
+ }
58
+
59
+ export async function datagramEchoTest(session) {
60
+ try {
61
+ session.datagrams.readable.pipeTo(session.datagrams.writable)
62
+ } catch (error) {
63
+ console.log('datagram echo exited with', error)
66
64
  }
67
-
68
- export async function runEchoServer(server) {
69
- try {
70
- const sessionStream = await server.sessionStream('/echo')
71
- const sessionReader = sessionStream.getReader()
72
- while (true) {
73
- const { done, value } = await sessionReader.read()
74
- if (done) {
75
- console.log('Server is gone')
76
- break
77
- }
78
- console.log('got a newsession')
79
- await value.ready
80
- console.log('server session is ready')
81
- const helpfunc = async () => {
82
- try {
83
- const err = await value.closed
84
- console.log('server session was closed', err)
85
- } catch (error) {
86
- console.log('server session close error:', error)
87
- }
65
+ }
66
+
67
+ export async function runEchoServer(server) {
68
+ try {
69
+ const sessionStream = await server.sessionStream('/echo')
70
+ const sessionReader = sessionStream.getReader()
71
+ while (true) {
72
+ const { done, value } = await sessionReader.read()
73
+ if (done) {
74
+ console.log('Server is gone')
75
+ break
76
+ }
77
+ console.log('got a newsession')
78
+ await value.ready
79
+ console.log('server session is ready')
80
+ const helpfunc = async () => {
81
+ try {
82
+ const err = await value.closed
83
+ console.log('server session was closed', err)
84
+ } catch (error) {
85
+ console.log('server session close error:', error)
88
86
  }
89
- helpfunc()
90
- // install BidirectionalEchoTest
91
- incomingBidirectionalEchoTest(value)
92
- // now send a bidirectional stream out
93
- outgoingBidirectionalEchoTest(value)
94
- unidirectionalEchoTest(value)
95
- console.log('install datagram echo')
96
- datagramEchoTest(value)
97
87
  }
98
- } catch (error) {
99
- console.log('problem in runEchoServer', error)
88
+ helpfunc()
89
+ // install BidirectionalEchoTest
90
+ incomingBidirectionalEchoTest(value)
91
+ // now send a bidirectional stream out
92
+ outgoingBidirectionalEchoTest(value)
93
+ unidirectionalEchoTest(value)
94
+ console.log('install datagram echo')
95
+ datagramEchoTest(value)
100
96
  }
97
+ } catch (error) {
98
+ console.log('problem in runEchoServer', error)
101
99
  }
100
+ }
102
101
 
103
- function testArraysEqual(array1, array2)
104
- {
105
- if (array1.length !== array2.length) throw new Error('Array not equal in length')
106
- for (let i = 0; i < array1.length; i++)
107
- {
108
- if (array1[i] !== array2[i]) throw new Error('Array not equal in value')
109
- }
102
+ function testArraysEqual(array1, array2) {
103
+ if (array1.length !== array2.length)
104
+ throw new Error('Array not equal in length')
105
+ for (let i = 0; i < array1.length; i++) {
106
+ if (array1[i] !== array2[i]) throw new Error('Array not equal in value')
107
+ }
108
+ }
109
+
110
+ export async function echoTestsConnection(transport) {
111
+ // some echo tests for testing the webtransport library, not for production
112
+ const stream = await transport.createBidirectionalStream()
113
+ const writer = stream.writable.getWriter()
114
+ const data1 = new Uint8Array([65, 66, 67])
115
+ const data2 = new Uint8Array([68, 69, 70])
116
+ writer.write(data1)
117
+ writer.write(data2)
118
+ const reader = stream.readable.getReader()
119
+ let i = data1.length + data2.length
120
+ let pos = 0
121
+ const refArray1 = new Uint8Array(i)
122
+ refArray1.set(data1)
123
+ refArray1.set(data2, data1.length)
124
+
125
+ const resultArray1 = new Uint8Array(i)
126
+
127
+ while (true && i > 0) {
128
+ const { done, value } = await reader.read()
129
+ if (done) {
130
+ break
131
+ }
132
+ // value is a Uint8Array
133
+ console.log('incoming bidi stream', value)
134
+ resultArray1.set(value, pos)
135
+ i -= value.length
136
+ pos += value.length
137
+ }
138
+ console.log('all bidi received, next close writer')
139
+ try {
140
+ await writer.close()
141
+ console.log('All data has been sent.')
142
+ } catch (error) {
143
+ console.error(`An error occurred: ${error}`)
144
+ throw new Error('outgoing bidi stream test failed')
145
+ }
146
+ console.log('next close reader')
147
+ try {
148
+ await reader.cancel(0)
149
+ console.log('All data has been read.')
150
+ } catch (error) {
151
+ console.error(`An error occurred: ${error}`)
152
+ throw new Error('outgoing bidi stream test failed')
110
153
  }
154
+ testArraysEqual(refArray1, resultArray1)
111
155
 
112
- export async function echoTestsConnection(transport) {
113
- // some echo tests for testing the webtransport library, not for production
114
- const stream = await transport.createBidirectionalStream()
115
- const writer = stream.writable.getWriter()
116
- const data1 = new Uint8Array([65, 66, 67])
117
- const data2 = new Uint8Array([68, 69, 70])
118
- writer.write(data1)
119
- writer.write(data2)
120
- const reader = stream.readable.getReader()
121
- let i = data1.length + data2.length
156
+ console.log('webtransport sending bidistream success')
157
+ const bidiReader = transport.incomingBidirectionalStreams.getReader()
158
+ const incombidi = await bidiReader.read()
159
+ if (incombidi.value) {
160
+ const bidistream = incombidi.value
161
+ console.log('got a bidistream')
162
+ const write = bidistream.writable.getWriter()
163
+ const data3 = new Uint8Array([71, 72, 73])
164
+ const data4 = new Uint8Array([74, 75, 76])
165
+ write.write(data3)
166
+ write.write(data4)
167
+
168
+ const readbd = bidistream.readable.getReader()
169
+ let i = data3.length + data4.length
122
170
  let pos = 0
123
- const refArray1 = new Uint8Array(i);
124
- refArray1.set(data1);
125
- refArray1.set(data2, data1.length);
126
171
 
127
- const resultArray1 = new Uint8Array(i);
172
+ const refArray2 = new Uint8Array(i)
173
+ refArray2.set(data3)
174
+ refArray2.set(data4, data3.length)
128
175
 
176
+ const resultArray2 = new Uint8Array(i)
129
177
  while (true && i > 0) {
130
- const { done, value } = await reader.read()
178
+ const { done, value } = await readbd.read()
131
179
  if (done) {
132
180
  break
133
181
  }
134
182
  // value is a Uint8Array
135
- console.log('incoming bidi stream', value)
136
- resultArray1.set(value, pos)
183
+ console.log('incom bd', value)
184
+ resultArray2.set(value, pos)
137
185
  i -= value.length
138
186
  pos += value.length
139
187
  }
140
- console.log('all bidi received, next close writer')
141
188
  try {
142
- await writer.close()
143
- console.log('All data has been sent.')
189
+ await write.close()
190
+ console.log('All data has been sent for incoming bidi stream.')
144
191
  } catch (error) {
145
192
  console.error(`An error occurred: ${error}`)
146
- throw new Error('outgoing bidi stream test failed')
193
+ throw new Error('incoming bidi stream test failed')
147
194
  }
148
- testArraysEqual(refArray1, resultArray1)
149
-
150
- console.log('webtransport sending bidistream success')
151
- const bidiReader = transport.incomingBidirectionalStreams.getReader()
152
- const incombidi = await bidiReader.read()
153
- if (incombidi.value) {
154
- const bidistream = incombidi.value
155
- console.log('got a bidistream')
156
- const write = bidistream.writable.getWriter()
157
- const data3 = new Uint8Array([71, 72, 73])
158
- const data4 = new Uint8Array([74, 75, 76])
159
- write.write(data3)
160
- write.write(data4)
161
-
162
-
163
-
164
- const readbd = bidistream.readable.getReader()
165
- let i = data3.length + data4.length
166
- let pos = 0
167
-
168
- const refArray2 = new Uint8Array(i);
169
- refArray2.set(data3);
170
- refArray2.set(data4, data3.length);
171
-
172
- const resultArray2 = new Uint8Array(i);
173
- while (true && i > 0) {
174
- const { done, value } = await readbd.read()
175
- if (done) {
176
- break
177
- }
178
- // value is a Uint8Array
179
- console.log('incom bd', value)
180
- resultArray2.set(value, pos)
181
- i -= value.length
182
- pos += value.length
183
- }
184
- try {
185
- await write.close()
186
- console.log('All data has been sent for incoming bidi stream.')
187
- } catch (error) {
188
- console.error(`An error occurred: ${error}`)
189
- throw new Error('incoming bidi stream test failed')
190
- }
191
- testArraysEqual(refArray2, resultArray2)
195
+ try {
196
+ await readbd.cancel(0)
197
+ console.log('All data has been read for incoming bidi stream.')
198
+ } catch (error) {
199
+ console.error(`An error occurred: ${error}`)
200
+ throw new Error('outgoing bidi stream test failed')
192
201
  }
193
-
194
- console.log('now unidirectional tests')
195
- const unidioutstream = await transport.createUnidirectionalStream()
196
- const unidiwrite = unidioutstream.getWriter()
197
- const data5 = new Uint8Array([77, 78, 79])
198
- const data6 = new Uint8Array([80, 81, 82])
199
- unidiwrite.write(data5)
200
- unidiwrite.write(data6)
201
- const unidiReader = transport.incomingUnidirectionalStreams.getReader()
202
- const incomunidi = await unidiReader.read()
203
-
204
- i = data5.length + data6.length
205
-
206
- const refArray3 = new Uint8Array(i);
207
- refArray3.set(data5);
208
- refArray3.set(data6, data5.length);
202
+ testArraysEqual(refArray2, resultArray2)
203
+ }
209
204
 
205
+ console.log('now unidirectional tests')
206
+ const unidioutstream = await transport.createUnidirectionalStream()
207
+ const unidiwrite = unidioutstream.getWriter()
208
+ const data5 = new Uint8Array([77, 78, 79])
209
+ const data6 = new Uint8Array([80, 81, 82])
210
+ unidiwrite.write(data5)
211
+ unidiwrite.write(data6)
212
+ const unidiReader = transport.incomingUnidirectionalStreams.getReader()
213
+ const incomunidi = await unidiReader.read()
210
214
 
211
- if (incomunidi.value) {
212
- const unidistream = incomunidi.value
213
- console.log('got a unidistream')
214
- const readud = unidistream.getReader()
215
- let pos = 0
215
+ i = data5.length + data6.length
216
216
 
217
- const resultArray3 = new Uint8Array(i);
217
+ const refArray3 = new Uint8Array(i)
218
+ refArray3.set(data5)
219
+ refArray3.set(data6, data5.length)
218
220
 
219
- while (true && i > 0) {
220
- const { done, value } = await readud.read()
221
- if (done) {
222
- break
223
- }
224
- // value is a Uint8Array
225
- console.log('incom ud', value)
226
- resultArray3.set(value, pos)
227
- i -= value.length
228
- pos += value.length
229
- }
230
- testArraysEqual(refArray3, resultArray3)
231
- }
232
- try {
233
- await unidiwrite.close()
234
- console.log('All data has been sent for incoming unidi stream.')
235
- } catch (error) {
236
- console.error(`An error occurred: ${error}`)
237
- throw new Error('incoming unidi stream test failed')
238
- }
239
- console.log('finally test datagrams')
240
- const datawrite = await transport.datagrams.writable.getWriter()
241
- const data7 = new Uint8Array([83, 84, 85])
242
- const data8 = new Uint8Array([86, 87, 88])
221
+ let readud
243
222
 
244
- i = data7.length + data8.length
245
- const refArray4 = new Uint8Array(i);
246
- refArray4.set(data7);
247
- refArray4.set(data8, data7.length);
223
+ if (incomunidi.value) {
224
+ const unidistream = incomunidi.value
225
+ console.log('got a unidistream')
226
+ readud = unidistream.getReader()
227
+ let pos = 0
248
228
 
249
- datawrite.write(data7)
250
- datawrite.write(data8)
251
- const readdg = await transport.datagrams.readable.getReader()
252
- pos = 0
253
- const resultArray4 = new Uint8Array(i);
229
+ const resultArray3 = new Uint8Array(i)
254
230
 
255
231
  while (true && i > 0) {
256
- const { done, value } = await readdg.read()
232
+ const { done, value } = await readud.read()
257
233
  if (done) {
258
234
  break
259
235
  }
260
236
  // value is a Uint8Array
261
- console.log('incom dg', value)
262
- resultArray4.set(value, pos)
237
+ console.log('incom ud', value)
238
+ resultArray3.set(value, pos)
263
239
  i -= value.length
264
240
  pos += value.length
265
241
  }
266
- testArraysEqual(refArray4, resultArray4)
242
+ testArraysEqual(refArray3, resultArray3)
243
+ }
244
+ try {
245
+ await unidiwrite.close()
246
+ console.log('All data has been sent for incoming unidi stream.')
247
+ } catch (error) {
248
+ console.error(`An error occurred: ${error}`)
249
+ throw new Error('incoming unidi stream test failed')
250
+ }
251
+ if (readud) {
267
252
  try {
268
- await datawrite.close()
269
- console.log('All data has been sent for datagram stream.')
253
+ await readud.cancel(0)
254
+ console.log('All data has been read for incoming unidi stream.')
270
255
  } catch (error) {
271
256
  console.error(`An error occurred: ${error}`)
272
- throw new Error('datagram stream test failed')
257
+ throw new Error('incoming unidi stream test failed')
273
258
  }
274
- console.log('test datagrams finished')
275
- }
259
+ }
260
+ console.log('finally test datagrams')
261
+ const datawrite = await transport.datagrams.writable.getWriter()
262
+ const data7 = new Uint8Array([83, 84, 85])
263
+ const data8 = new Uint8Array([86, 87, 88])
264
+
265
+ i = data7.length + data8.length
266
+ const refArray4 = new Uint8Array(i)
267
+ refArray4.set(data7)
268
+ refArray4.set(data8, data7.length)
269
+
270
+ datawrite.write(data7)
271
+ datawrite.write(data8)
272
+ const readdg = await transport.datagrams.readable.getReader()
273
+ pos = 0
274
+ const resultArray4 = new Uint8Array(i)
275
+
276
+ while (true && i > 0) {
277
+ const { done, value } = await readdg.read()
278
+ if (done) {
279
+ break
280
+ }
281
+ // value is a Uint8Array
282
+ console.log('incom dg', value)
283
+ resultArray4.set(value, pos)
284
+ i -= value.length
285
+ pos += value.length
286
+ }
287
+ testArraysEqual(refArray4, resultArray4)
288
+ try {
289
+ await datawrite.close()
290
+ console.log('All data has been sent for datagram stream.')
291
+ } catch (error) {
292
+ console.error(`An error occurred: ${error}`)
293
+ throw new Error('datagram stream test failed')
294
+ }
295
+ console.log('test datagrams finished')
296
+ console.log('start close stream tests')
297
+ }
@@ -494,6 +494,8 @@ elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "mips")
494
494
  set(ARCH "generic")
495
495
  elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64le")
496
496
  set(ARCH "ppc64le")
497
+ elseif (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "riscv64")
498
+ set(ARCH "riscv64")
497
499
  else()
498
500
  message(FATAL_ERROR "Unknown processor:" ${CMAKE_SYSTEM_PROCESSOR})
499
501
  endif()
@@ -296,6 +296,7 @@ add_library(
296
296
  evp/p_ec_asn1.c
297
297
  evp/p_ed25519.c
298
298
  evp/p_ed25519_asn1.c
299
+ evp/p_hkdf.c
299
300
  evp/p_rsa.c
300
301
  evp/p_rsa_asn1.c
301
302
  evp/p_x25519.c