@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
@@ -901,6 +901,31 @@ static std::string ASN1StringToStdString(const ASN1_STRING *str) {
901
901
  ASN1_STRING_get0_data(str) + ASN1_STRING_length(str));
902
902
  }
903
903
 
904
+ static bool ASN1Time_check_time_t(const ASN1_TIME *s, time_t t) {
905
+ struct tm stm, ttm;
906
+ int day, sec;
907
+
908
+ switch (ASN1_STRING_type(s)) {
909
+ case V_ASN1_GENERALIZEDTIME:
910
+ if (!asn1_generalizedtime_to_tm(&stm, s)) {
911
+ return false;
912
+ }
913
+ break;
914
+ case V_ASN1_UTCTIME:
915
+ if (!asn1_utctime_to_tm(&stm, s)) {
916
+ return false;
917
+ }
918
+ break;
919
+ default:
920
+ return 0;
921
+ }
922
+ if (!OPENSSL_gmtime(&t, &ttm) ||
923
+ !OPENSSL_gmtime_diff(&day, &sec, &ttm, &stm)) {
924
+ return false;
925
+ }
926
+ return day == 0 && sec ==0;
927
+ }
928
+
904
929
  TEST(ASN1Test, SetTime) {
905
930
  static const struct {
906
931
  time_t time;
@@ -911,6 +936,7 @@ TEST(ASN1Test, SetTime) {
911
936
  {-631152000, "19500101000000Z", "500101000000Z"},
912
937
  {0, "19700101000000Z", "700101000000Z"},
913
938
  {981173106, "20010203040506Z", "010203040506Z"},
939
+ {951804000, "20000229060000Z", "000229060000Z"},
914
940
  #if defined(OPENSSL_64_BIT)
915
941
  // TODO(https://crbug.com/boringssl/416): These cases overflow 32-bit
916
942
  // |time_t| and do not consistently work on 32-bit platforms. For now,
@@ -939,6 +965,7 @@ TEST(ASN1Test, SetTime) {
939
965
  ASSERT_TRUE(utc);
940
966
  EXPECT_EQ(V_ASN1_UTCTIME, ASN1_STRING_type(utc.get()));
941
967
  EXPECT_EQ(t.utc, ASN1StringToStdString(utc.get()));
968
+ EXPECT_TRUE(ASN1Time_check_time_t(utc.get(), t.time));
942
969
  } else {
943
970
  EXPECT_FALSE(utc);
944
971
  }
@@ -949,6 +976,7 @@ TEST(ASN1Test, SetTime) {
949
976
  ASSERT_TRUE(generalized);
950
977
  EXPECT_EQ(V_ASN1_GENERALIZEDTIME, ASN1_STRING_type(generalized.get()));
951
978
  EXPECT_EQ(t.generalized, ASN1StringToStdString(generalized.get()));
979
+ EXPECT_TRUE(ASN1Time_check_time_t(generalized.get(), t.time));
952
980
  } else {
953
981
  EXPECT_FALSE(generalized);
954
982
  }
@@ -963,6 +991,7 @@ TEST(ASN1Test, SetTime) {
963
991
  EXPECT_EQ(V_ASN1_GENERALIZEDTIME, ASN1_STRING_type(choice.get()));
964
992
  EXPECT_EQ(t.generalized, ASN1StringToStdString(choice.get()));
965
993
  }
994
+ EXPECT_TRUE(ASN1Time_check_time_t(choice.get(), t.time));
966
995
  } else {
967
996
  EXPECT_FALSE(choice);
968
997
  }
@@ -1042,6 +1071,8 @@ TEST(ASN1Test, StringPrintEx) {
1042
1071
  // RFC 2253 only escapes spaces at the start and end of a string.
1043
1072
  {V_ASN1_T61STRING, StringToVector(" "), 0, ASN1_STRFLGS_ESC_2253,
1044
1073
  "\\ \\ "},
1074
+ {V_ASN1_T61STRING, StringToVector(" "), 0,
1075
+ ASN1_STRFLGS_ESC_2253 | ASN1_STRFLGS_UTF8_CONVERT, "\\ \\ "},
1045
1076
  {V_ASN1_T61STRING, StringToVector(" "), 0,
1046
1077
  ASN1_STRFLGS_ESC_2253 | ASN1_STRFLGS_ESC_QUOTE, "\" \""},
1047
1078
 
@@ -60,42 +60,40 @@
60
60
  #include <openssl/mem.h>
61
61
 
62
62
 
63
- ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_STRING **out)
64
- {
65
- uint8_t *new_data = NULL;
66
- int len = ASN1_item_i2d(obj, &new_data, it);
67
- if (len <= 0) {
68
- OPENSSL_PUT_ERROR(ASN1, ASN1_R_ENCODE_ERROR);
69
- return NULL;
70
- }
63
+ ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_STRING **out) {
64
+ uint8_t *new_data = NULL;
65
+ int len = ASN1_item_i2d(obj, &new_data, it);
66
+ if (len <= 0) {
67
+ OPENSSL_PUT_ERROR(ASN1, ASN1_R_ENCODE_ERROR);
68
+ return NULL;
69
+ }
71
70
 
72
- ASN1_STRING *ret = NULL;
73
- if (out == NULL || *out == NULL) {
74
- ret = ASN1_STRING_new();
75
- if (ret == NULL) {
76
- OPENSSL_PUT_ERROR(ASN1, ERR_R_MALLOC_FAILURE);
77
- OPENSSL_free(new_data);
78
- return NULL;
79
- }
80
- } else {
81
- ret = *out;
71
+ ASN1_STRING *ret = NULL;
72
+ if (out == NULL || *out == NULL) {
73
+ ret = ASN1_STRING_new();
74
+ if (ret == NULL) {
75
+ OPENSSL_PUT_ERROR(ASN1, ERR_R_MALLOC_FAILURE);
76
+ OPENSSL_free(new_data);
77
+ return NULL;
82
78
  }
79
+ } else {
80
+ ret = *out;
81
+ }
83
82
 
84
- ASN1_STRING_set0(ret, new_data, len);
85
- if (out != NULL) {
86
- *out = ret;
87
- }
88
- return ret;
83
+ ASN1_STRING_set0(ret, new_data, len);
84
+ if (out != NULL) {
85
+ *out = ret;
86
+ }
87
+ return ret;
89
88
  }
90
89
 
91
- void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it)
92
- {
93
- const unsigned char *p = oct->data;
94
- void *ret = ASN1_item_d2i(NULL, &p, oct->length, it);
95
- if (ret == NULL || p != oct->data + oct->length) {
96
- OPENSSL_PUT_ERROR(ASN1, ASN1_R_DECODE_ERROR);
97
- ASN1_item_free(ret, it);
98
- return NULL;
99
- }
100
- return ret;
90
+ void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it) {
91
+ const unsigned char *p = oct->data;
92
+ void *ret = ASN1_item_d2i(NULL, &p, oct->length, it);
93
+ if (ret == NULL || p != oct->data + oct->length) {
94
+ OPENSSL_PUT_ERROR(ASN1, ASN1_R_DECODE_ERROR);
95
+ ASN1_item_free(ret, it);
96
+ return NULL;
97
+ }
98
+ return ret;
101
99
  }
@@ -58,45 +58,48 @@
58
58
 
59
59
  #include <openssl/bio.h>
60
60
 
61
- int i2a_ASN1_INTEGER(BIO *bp, const ASN1_INTEGER *a)
62
- {
63
- int i, n = 0;
64
- static const char *h = "0123456789ABCDEF";
65
- char buf[2];
61
+ int i2a_ASN1_INTEGER(BIO *bp, const ASN1_INTEGER *a) {
62
+ int i, n = 0;
63
+ static const char *h = "0123456789ABCDEF";
64
+ char buf[2];
66
65
 
67
- if (a == NULL)
68
- return (0);
66
+ if (a == NULL) {
67
+ return 0;
68
+ }
69
69
 
70
- if (a->type & V_ASN1_NEG) {
71
- if (BIO_write(bp, "-", 1) != 1)
72
- goto err;
73
- n = 1;
70
+ if (a->type & V_ASN1_NEG) {
71
+ if (BIO_write(bp, "-", 1) != 1) {
72
+ goto err;
74
73
  }
74
+ n = 1;
75
+ }
75
76
 
76
- if (a->length == 0) {
77
- if (BIO_write(bp, "00", 2) != 2)
78
- goto err;
79
- n += 2;
80
- } else {
81
- for (i = 0; i < a->length; i++) {
82
- if ((i != 0) && (i % 35 == 0)) {
83
- if (BIO_write(bp, "\\\n", 2) != 2)
84
- goto err;
85
- n += 2;
86
- }
87
- buf[0] = h[((unsigned char)a->data[i] >> 4) & 0x0f];
88
- buf[1] = h[((unsigned char)a->data[i]) & 0x0f];
89
- if (BIO_write(bp, buf, 2) != 2)
90
- goto err;
91
- n += 2;
77
+ if (a->length == 0) {
78
+ if (BIO_write(bp, "00", 2) != 2) {
79
+ goto err;
80
+ }
81
+ n += 2;
82
+ } else {
83
+ for (i = 0; i < a->length; i++) {
84
+ if ((i != 0) && (i % 35 == 0)) {
85
+ if (BIO_write(bp, "\\\n", 2) != 2) {
86
+ goto err;
92
87
  }
88
+ n += 2;
89
+ }
90
+ buf[0] = h[((unsigned char)a->data[i] >> 4) & 0x0f];
91
+ buf[1] = h[((unsigned char)a->data[i]) & 0x0f];
92
+ if (BIO_write(bp, buf, 2) != 2) {
93
+ goto err;
94
+ }
95
+ n += 2;
93
96
  }
94
- return (n);
95
- err:
96
- return (-1);
97
+ }
98
+ return n;
99
+ err:
100
+ return -1;
97
101
  }
98
102
 
99
- int i2a_ASN1_ENUMERATED(BIO *bp, const ASN1_ENUMERATED *a)
100
- {
101
- return i2a_ASN1_INTEGER(bp, a);
103
+ int i2a_ASN1_ENUMERATED(BIO *bp, const ASN1_ENUMERATED *a) {
104
+ return i2a_ASN1_INTEGER(bp, a);
102
105
  }
@@ -58,34 +58,37 @@
58
58
 
59
59
  #include <openssl/bio.h>
60
60
 
61
- int i2a_ASN1_STRING(BIO *bp, const ASN1_STRING *a, int type)
62
- {
63
- int i, n = 0;
64
- static const char *h = "0123456789ABCDEF";
65
- char buf[2];
61
+ int i2a_ASN1_STRING(BIO *bp, const ASN1_STRING *a, int type) {
62
+ int i, n = 0;
63
+ static const char *h = "0123456789ABCDEF";
64
+ char buf[2];
66
65
 
67
- if (a == NULL)
68
- return (0);
66
+ if (a == NULL) {
67
+ return 0;
68
+ }
69
69
 
70
- if (a->length == 0) {
71
- if (BIO_write(bp, "0", 1) != 1)
72
- goto err;
73
- n = 1;
74
- } else {
75
- for (i = 0; i < a->length; i++) {
76
- if ((i != 0) && (i % 35 == 0)) {
77
- if (BIO_write(bp, "\\\n", 2) != 2)
78
- goto err;
79
- n += 2;
80
- }
81
- buf[0] = h[((unsigned char)a->data[i] >> 4) & 0x0f];
82
- buf[1] = h[((unsigned char)a->data[i]) & 0x0f];
83
- if (BIO_write(bp, buf, 2) != 2)
84
- goto err;
85
- n += 2;
70
+ if (a->length == 0) {
71
+ if (BIO_write(bp, "0", 1) != 1) {
72
+ goto err;
73
+ }
74
+ n = 1;
75
+ } else {
76
+ for (i = 0; i < a->length; i++) {
77
+ if ((i != 0) && (i % 35 == 0)) {
78
+ if (BIO_write(bp, "\\\n", 2) != 2) {
79
+ goto err;
86
80
  }
81
+ n += 2;
82
+ }
83
+ buf[0] = h[((unsigned char)a->data[i] >> 4) & 0x0f];
84
+ buf[1] = h[((unsigned char)a->data[i]) & 0x0f];
85
+ if (BIO_write(bp, buf, 2) != 2) {
86
+ goto err;
87
+ }
88
+ n += 2;
87
89
  }
88
- return (n);
89
- err:
90
- return (-1);
90
+ }
91
+ return n;
92
+ err:
93
+ return -1;
91
94
  }
@@ -69,42 +69,42 @@ extern "C" {
69
69
  #endif
70
70
 
71
71
 
72
- /* Wrapper functions for time functions. */
72
+ // Wrapper functions for time functions.
73
73
 
74
- /* OPENSSL_gmtime wraps |gmtime_r|. See the manual page for that function. */
75
- struct tm *OPENSSL_gmtime(const time_t *time, struct tm *result);
74
+ // OPENSSL_gmtime wraps |gmtime_r|. See the manual page for that function.
75
+ OPENSSL_EXPORT struct tm *OPENSSL_gmtime(const time_t *time, struct tm *result);
76
76
 
77
- /* OPENSSL_gmtime_adj updates |tm| by adding |offset_day| days and |offset_sec|
78
- * seconds. */
77
+ // OPENSSL_gmtime_adj updates |tm| by adding |offset_day| days and |offset_sec|
78
+ // seconds.
79
79
  int OPENSSL_gmtime_adj(struct tm *tm, int offset_day, long offset_sec);
80
80
 
81
- /* OPENSSL_gmtime_diff calculates the difference between |from| and |to| and
82
- * outputs the difference as a number of days and seconds in |*out_days| and
83
- * |*out_secs|. */
84
- int OPENSSL_gmtime_diff(int *out_days, int *out_secs, const struct tm *from,
85
- const struct tm *to);
86
-
87
-
88
- /* Internal ASN1 structures and functions: not for application use */
89
-
90
- /* These are used internally in the ASN1_OBJECT to keep track of
91
- * whether the names and data need to be free()ed */
92
- #define ASN1_OBJECT_FLAG_DYNAMIC 0x01 /* internal use */
93
- #define ASN1_OBJECT_FLAG_DYNAMIC_STRINGS 0x04 /* internal use */
94
- #define ASN1_OBJECT_FLAG_DYNAMIC_DATA 0x08 /* internal use */
95
-
96
- /* An asn1_object_st (aka |ASN1_OBJECT|) represents an ASN.1 OBJECT IDENTIFIER.
97
- * Note: Mutating an |ASN1_OBJECT| is only permitted when initializing it. The
98
- * library maintains a table of static |ASN1_OBJECT|s, which may be referenced
99
- * by non-const |ASN1_OBJECT| pointers. Code which receives an |ASN1_OBJECT|
100
- * pointer externally must assume it is immutable, even if the pointer is not
101
- * const. */
81
+ // OPENSSL_gmtime_diff calculates the difference between |from| and |to| and
82
+ // outputs the difference as a number of days and seconds in |*out_days| and
83
+ // |*out_secs|.
84
+ OPENSSL_EXPORT int OPENSSL_gmtime_diff(int *out_days, int *out_secs,
85
+ const struct tm *from,
86
+ const struct tm *to);
87
+
88
+ // Internal ASN1 structures and functions: not for application use
89
+
90
+ // These are used internally in the ASN1_OBJECT to keep track of
91
+ // whether the names and data need to be free()ed
92
+ #define ASN1_OBJECT_FLAG_DYNAMIC 0x01 // internal use
93
+ #define ASN1_OBJECT_FLAG_DYNAMIC_STRINGS 0x04 // internal use
94
+ #define ASN1_OBJECT_FLAG_DYNAMIC_DATA 0x08 // internal use
95
+
96
+ // An asn1_object_st (aka |ASN1_OBJECT|) represents an ASN.1 OBJECT IDENTIFIER.
97
+ // Note: Mutating an |ASN1_OBJECT| is only permitted when initializing it. The
98
+ // library maintains a table of static |ASN1_OBJECT|s, which may be referenced
99
+ // by non-const |ASN1_OBJECT| pointers. Code which receives an |ASN1_OBJECT|
100
+ // pointer externally must assume it is immutable, even if the pointer is not
101
+ // const.
102
102
  struct asn1_object_st {
103
103
  const char *sn, *ln;
104
104
  int nid;
105
105
  int length;
106
- const unsigned char *data; /* data remains const after init */
107
- int flags; /* Should we free this one */
106
+ const unsigned char *data; // data remains const after init
107
+ int flags; // Should we free this one
108
108
  };
109
109
 
110
110
  ASN1_OBJECT *ASN1_OBJECT_new(void);
@@ -126,8 +126,9 @@ typedef struct ASN1_ENCODING_st {
126
126
  unsigned alias_only_on_next_parse : 1;
127
127
  } ASN1_ENCODING;
128
128
 
129
- int asn1_utctime_to_tm(struct tm *tm, const ASN1_UTCTIME *d);
130
- int asn1_generalizedtime_to_tm(struct tm *tm, const ASN1_GENERALIZEDTIME *d);
129
+ OPENSSL_EXPORT int asn1_utctime_to_tm(struct tm *tm, const ASN1_UTCTIME *d);
130
+ OPENSSL_EXPORT int asn1_generalizedtime_to_tm(struct tm *tm,
131
+ const ASN1_GENERALIZEDTIME *d);
131
132
 
132
133
  void asn1_item_combine_free(ASN1_VALUE **pval, const ASN1_ITEM *it,
133
134
  int combine);
@@ -143,31 +144,31 @@ int ASN1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len,
143
144
  const ASN1_ITEM *it, int tag, int aclass, char opt,
144
145
  ASN1_TLC *ctx);
145
146
 
146
- /* ASN1_item_ex_i2d encodes |*pval| as a value of type |it| to |out| under the
147
- * i2d output convention. It returns a non-zero length on success and -1 on
148
- * error. If |tag| is -1. the tag and class come from |it|. Otherwise, the tag
149
- * number is |tag| and the class is |aclass|. This is used for implicit tagging.
150
- * This function treats a missing value as an error, not an optional field. */
147
+ // ASN1_item_ex_i2d encodes |*pval| as a value of type |it| to |out| under the
148
+ // i2d output convention. It returns a non-zero length on success and -1 on
149
+ // error. If |tag| is -1. the tag and class come from |it|. Otherwise, the tag
150
+ // number is |tag| and the class is |aclass|. This is used for implicit tagging.
151
+ // This function treats a missing value as an error, not an optional field.
151
152
  int ASN1_item_ex_i2d(ASN1_VALUE **pval, unsigned char **out,
152
153
  const ASN1_ITEM *it, int tag, int aclass);
153
154
 
154
155
  void ASN1_primitive_free(ASN1_VALUE **pval, const ASN1_ITEM *it);
155
156
 
156
- /* asn1_get_choice_selector returns the CHOICE selector value for |*pval|, which
157
- * must of type |it|. */
157
+ // asn1_get_choice_selector returns the CHOICE selector value for |*pval|, which
158
+ // must of type |it|.
158
159
  int asn1_get_choice_selector(ASN1_VALUE **pval, const ASN1_ITEM *it);
159
160
 
160
161
  int asn1_set_choice_selector(ASN1_VALUE **pval, int value, const ASN1_ITEM *it);
161
162
 
162
- /* asn1_get_field_ptr returns a pointer to the field in |*pval| corresponding to
163
- * |tt|. */
163
+ // asn1_get_field_ptr returns a pointer to the field in |*pval| corresponding to
164
+ // |tt|.
164
165
  ASN1_VALUE **asn1_get_field_ptr(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt);
165
166
 
166
- /* asn1_do_adb returns the |ASN1_TEMPLATE| for the ANY DEFINED BY field |tt|,
167
- * based on the selector INTEGER or OID in |*pval|. If |tt| is not an ADB field,
168
- * it returns |tt|. If the selector does not match any value, it returns NULL.
169
- * If |nullerr| is non-zero, it will additionally push an error to the error
170
- * queue when there is no match. */
167
+ // asn1_do_adb returns the |ASN1_TEMPLATE| for the ANY DEFINED BY field |tt|,
168
+ // based on the selector INTEGER or OID in |*pval|. If |tt| is not an ADB field,
169
+ // it returns |tt|. If the selector does not match any value, it returns NULL.
170
+ // If |nullerr| is non-zero, it will additionally push an error to the error
171
+ // queue when there is no match.
171
172
  const ASN1_TEMPLATE *asn1_do_adb(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt,
172
173
  int nullerr);
173
174
 
@@ -177,29 +178,29 @@ int asn1_refcount_dec_and_test_zero(ASN1_VALUE **pval, const ASN1_ITEM *it);
177
178
  void asn1_enc_init(ASN1_VALUE **pval, const ASN1_ITEM *it);
178
179
  void asn1_enc_free(ASN1_VALUE **pval, const ASN1_ITEM *it);
179
180
 
180
- /* asn1_enc_restore, if |*pval| has a saved encoding, writes it to |out| under
181
- * the i2d output convention, sets |*len| to the length, and returns one. If it
182
- * has no saved encoding, it returns zero. */
181
+ // asn1_enc_restore, if |*pval| has a saved encoding, writes it to |out| under
182
+ // the i2d output convention, sets |*len| to the length, and returns one. If it
183
+ // has no saved encoding, it returns zero.
183
184
  int asn1_enc_restore(int *len, unsigned char **out, ASN1_VALUE **pval,
184
185
  const ASN1_ITEM *it);
185
186
 
186
187
  int asn1_enc_save(ASN1_VALUE **pval, const unsigned char *in, int inlen,
187
188
  const ASN1_ITEM *it);
188
189
 
189
- /* asn1_type_value_as_pointer returns |a|'s value in pointer form. This is
190
- * usually the value object but, for BOOLEAN values, is 0 or 0xff cast to
191
- * a pointer. */
190
+ // asn1_type_value_as_pointer returns |a|'s value in pointer form. This is
191
+ // usually the value object but, for BOOLEAN values, is 0 or 0xff cast to
192
+ // a pointer.
192
193
  const void *asn1_type_value_as_pointer(const ASN1_TYPE *a);
193
194
 
194
- /* asn1_is_printable returns one if |value| is a valid Unicode codepoint for an
195
- * ASN.1 PrintableString, and zero otherwise. */
195
+ // asn1_is_printable returns one if |value| is a valid Unicode codepoint for an
196
+ // ASN.1 PrintableString, and zero otherwise.
196
197
  int asn1_is_printable(uint32_t value);
197
198
 
198
- /* asn1_bit_string_length returns the number of bytes in |str| and sets
199
- * |*out_padding_bits| to the number of padding bits.
200
- *
201
- * This function should be used instead of |ASN1_STRING_length| to correctly
202
- * handle the non-|ASN1_STRING_FLAG_BITS_LEFT| case. */
199
+ // asn1_bit_string_length returns the number of bytes in |str| and sets
200
+ // |*out_padding_bits| to the number of padding bits.
201
+ //
202
+ // This function should be used instead of |ASN1_STRING_length| to correctly
203
+ // handle the non-|ASN1_STRING_FLAG_BITS_LEFT| case.
203
204
  int asn1_bit_string_length(const ASN1_BIT_STRING *str,
204
205
  uint8_t *out_padding_bits);
205
206
 
@@ -211,14 +212,14 @@ typedef struct {
211
212
  unsigned long flags;
212
213
  } ASN1_STRING_TABLE;
213
214
 
214
- /* asn1_get_string_table_for_testing sets |*out_ptr| and |*out_len| to the table
215
- * of built-in |ASN1_STRING_TABLE| values. It is exported for testing. */
215
+ // asn1_get_string_table_for_testing sets |*out_ptr| and |*out_len| to the table
216
+ // of built-in |ASN1_STRING_TABLE| values. It is exported for testing.
216
217
  OPENSSL_EXPORT void asn1_get_string_table_for_testing(
217
218
  const ASN1_STRING_TABLE **out_ptr, size_t *out_len);
218
219
 
219
220
 
220
221
  #if defined(__cplusplus)
221
- } /* extern C */
222
+ } // extern C
222
223
  #endif
223
224
 
224
- #endif /* OPENSSL_HEADER_ASN1_ASN1_LOCL_H */
225
+ #endif // OPENSSL_HEADER_ASN1_ASN1_LOCL_H