@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
@@ -74,68 +74,55 @@ DEFINE_LHASH_OF(ASN1_STRING_TABLE)
74
74
  static LHASH_OF(ASN1_STRING_TABLE) *string_tables = NULL;
75
75
  static struct CRYPTO_STATIC_MUTEX string_tables_lock = CRYPTO_STATIC_MUTEX_INIT;
76
76
 
77
- void ASN1_STRING_set_default_mask(unsigned long mask)
78
- {
79
- }
77
+ void ASN1_STRING_set_default_mask(unsigned long mask) {}
80
78
 
81
- unsigned long ASN1_STRING_get_default_mask(void)
82
- {
83
- return B_ASN1_UTF8STRING;
84
- }
79
+ unsigned long ASN1_STRING_get_default_mask(void) { return B_ASN1_UTF8STRING; }
85
80
 
86
- int ASN1_STRING_set_default_mask_asc(const char *p)
87
- {
88
- return 1;
89
- }
81
+ int ASN1_STRING_set_default_mask_asc(const char *p) { return 1; }
90
82
 
91
83
  static const ASN1_STRING_TABLE *asn1_string_table_get(int nid);
92
84
 
93
- /*
94
- * The following function generates an ASN1_STRING based on limits in a
95
- * table. Frequently the types and length of an ASN1_STRING are restricted by
96
- * a corresponding OID. For example certificates and certificate requests.
97
- */
85
+ // The following function generates an ASN1_STRING based on limits in a
86
+ // table. Frequently the types and length of an ASN1_STRING are restricted by
87
+ // a corresponding OID. For example certificates and certificate requests.
98
88
 
99
89
  ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out, const unsigned char *in,
100
- int len, int inform, int nid)
101
- {
102
- ASN1_STRING *str = NULL;
103
- int ret;
104
- if (!out) {
105
- out = &str;
106
- }
107
- const ASN1_STRING_TABLE *tbl = asn1_string_table_get(nid);
108
- if (tbl != NULL) {
109
- unsigned long mask = tbl->mask;
110
- if (!(tbl->flags & STABLE_NO_MASK)) {
111
- mask &= B_ASN1_UTF8STRING;
112
- }
113
- ret = ASN1_mbstring_ncopy(out, in, len, inform, mask, tbl->minsize,
114
- tbl->maxsize);
115
- } else {
116
- ret = ASN1_mbstring_copy(out, in, len, inform, B_ASN1_UTF8STRING);
117
- }
118
- if (ret <= 0) {
119
- return NULL;
90
+ int len, int inform, int nid) {
91
+ ASN1_STRING *str = NULL;
92
+ int ret;
93
+ if (!out) {
94
+ out = &str;
95
+ }
96
+ const ASN1_STRING_TABLE *tbl = asn1_string_table_get(nid);
97
+ if (tbl != NULL) {
98
+ unsigned long mask = tbl->mask;
99
+ if (!(tbl->flags & STABLE_NO_MASK)) {
100
+ mask &= B_ASN1_UTF8STRING;
120
101
  }
121
- return *out;
102
+ ret = ASN1_mbstring_ncopy(out, in, len, inform, mask, tbl->minsize,
103
+ tbl->maxsize);
104
+ } else {
105
+ ret = ASN1_mbstring_copy(out, in, len, inform, B_ASN1_UTF8STRING);
106
+ }
107
+ if (ret <= 0) {
108
+ return NULL;
109
+ }
110
+ return *out;
122
111
  }
123
112
 
124
- /*
125
- * Now the tables and helper functions for the string table:
126
- */
113
+ // Now the tables and helper functions for the string table:
127
114
 
128
- /* See RFC 5280. */
129
- #define ub_name 32768
130
- #define ub_common_name 64
131
- #define ub_locality_name 128
132
- #define ub_state_name 128
133
- #define ub_organization_name 64
134
- #define ub_organization_unit_name 64
135
- #define ub_email_address 128
136
- #define ub_serial_number 64
115
+ // See RFC 5280.
116
+ #define ub_name 32768
117
+ #define ub_common_name 64
118
+ #define ub_locality_name 128
119
+ #define ub_state_name 128
120
+ #define ub_organization_name 64
121
+ #define ub_organization_unit_name 64
122
+ #define ub_email_address 128
123
+ #define ub_serial_number 64
137
124
 
138
- /* This table must be kept in NID order */
125
+ // This table must be kept in NID order
139
126
 
140
127
  static const ASN1_STRING_TABLE tbl_standard[] = {
141
128
  {NID_commonName, 1, ub_common_name, DIRSTRING_TYPE, 0},
@@ -159,108 +146,100 @@ static const ASN1_STRING_TABLE tbl_standard[] = {
159
146
  {NID_name, 1, ub_name, DIRSTRING_TYPE, 0},
160
147
  {NID_dnQualifier, -1, -1, B_ASN1_PRINTABLESTRING, STABLE_NO_MASK},
161
148
  {NID_domainComponent, 1, -1, B_ASN1_IA5STRING, STABLE_NO_MASK},
162
- {NID_ms_csp_name, -1, -1, B_ASN1_BMPSTRING, STABLE_NO_MASK}
163
- };
149
+ {NID_ms_csp_name, -1, -1, B_ASN1_BMPSTRING, STABLE_NO_MASK}};
164
150
 
165
- static int table_cmp(const ASN1_STRING_TABLE *a, const ASN1_STRING_TABLE *b)
166
- {
167
- if (a->nid < b->nid) {
168
- return -1;
169
- }
170
- if (a->nid > b->nid) {
171
- return 1;
172
- }
173
- return 0;
151
+ static int table_cmp(const ASN1_STRING_TABLE *a, const ASN1_STRING_TABLE *b) {
152
+ if (a->nid < b->nid) {
153
+ return -1;
154
+ }
155
+ if (a->nid > b->nid) {
156
+ return 1;
157
+ }
158
+ return 0;
174
159
  }
175
160
 
176
- static int table_cmp_void(const void *a, const void *b)
177
- {
178
- return table_cmp(a, b);
161
+ static int table_cmp_void(const void *a, const void *b) {
162
+ return table_cmp(a, b);
179
163
  }
180
164
 
181
- static uint32_t table_hash(const ASN1_STRING_TABLE *tbl)
182
- {
183
- return OPENSSL_hash32(&tbl->nid, sizeof(tbl->nid));
165
+ static uint32_t table_hash(const ASN1_STRING_TABLE *tbl) {
166
+ return OPENSSL_hash32(&tbl->nid, sizeof(tbl->nid));
184
167
  }
185
168
 
186
- static const ASN1_STRING_TABLE *asn1_string_table_get(int nid)
187
- {
188
- ASN1_STRING_TABLE key;
189
- key.nid = nid;
190
- const ASN1_STRING_TABLE *tbl =
191
- bsearch(&key, tbl_standard, OPENSSL_ARRAY_SIZE(tbl_standard),
192
- sizeof(ASN1_STRING_TABLE), table_cmp_void);
193
- if (tbl != NULL) {
194
- return tbl;
195
- }
196
-
197
- CRYPTO_STATIC_MUTEX_lock_read(&string_tables_lock);
198
- if (string_tables != NULL) {
199
- tbl = lh_ASN1_STRING_TABLE_retrieve(string_tables, &key);
200
- }
201
- CRYPTO_STATIC_MUTEX_unlock_read(&string_tables_lock);
202
- /* Note returning |tbl| without the lock is only safe because
203
- * |ASN1_STRING_TABLE_add| cannot modify or delete existing entries. If we
204
- * wish to support that, this function must copy the result under a lock. */
169
+ static const ASN1_STRING_TABLE *asn1_string_table_get(int nid) {
170
+ ASN1_STRING_TABLE key;
171
+ key.nid = nid;
172
+ const ASN1_STRING_TABLE *tbl =
173
+ bsearch(&key, tbl_standard, OPENSSL_ARRAY_SIZE(tbl_standard),
174
+ sizeof(ASN1_STRING_TABLE), table_cmp_void);
175
+ if (tbl != NULL) {
205
176
  return tbl;
177
+ }
178
+
179
+ CRYPTO_STATIC_MUTEX_lock_read(&string_tables_lock);
180
+ if (string_tables != NULL) {
181
+ tbl = lh_ASN1_STRING_TABLE_retrieve(string_tables, &key);
182
+ }
183
+ CRYPTO_STATIC_MUTEX_unlock_read(&string_tables_lock);
184
+ // Note returning |tbl| without the lock is only safe because
185
+ // |ASN1_STRING_TABLE_add| cannot modify or delete existing entries. If we
186
+ // wish to support that, this function must copy the result under a lock.
187
+ return tbl;
206
188
  }
207
189
 
208
190
  int ASN1_STRING_TABLE_add(int nid, long minsize, long maxsize,
209
- unsigned long mask, unsigned long flags)
210
- {
211
- /* Existing entries cannot be overwritten. */
212
- if (asn1_string_table_get(nid) != NULL) {
213
- OPENSSL_PUT_ERROR(ASN1, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
214
- return 0;
215
- }
191
+ unsigned long mask, unsigned long flags) {
192
+ // Existing entries cannot be overwritten.
193
+ if (asn1_string_table_get(nid) != NULL) {
194
+ OPENSSL_PUT_ERROR(ASN1, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
195
+ return 0;
196
+ }
216
197
 
217
- int ret = 0;
218
- CRYPTO_STATIC_MUTEX_lock_write(&string_tables_lock);
198
+ int ret = 0;
199
+ CRYPTO_STATIC_MUTEX_lock_write(&string_tables_lock);
219
200
 
201
+ if (string_tables == NULL) {
202
+ string_tables = lh_ASN1_STRING_TABLE_new(table_hash, table_cmp);
220
203
  if (string_tables == NULL) {
221
- string_tables = lh_ASN1_STRING_TABLE_new(table_hash, table_cmp);
222
- if (string_tables == NULL) {
223
- goto err;
224
- }
225
- } else {
226
- /* Check again for an existing entry. One may have been added while
227
- * unlocked. */
228
- ASN1_STRING_TABLE key;
229
- key.nid = nid;
230
- if (lh_ASN1_STRING_TABLE_retrieve(string_tables, &key) != NULL) {
231
- OPENSSL_PUT_ERROR(ASN1, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
232
- goto err;
233
- }
204
+ goto err;
234
205
  }
235
-
236
- ASN1_STRING_TABLE *tbl = OPENSSL_malloc(sizeof(ASN1_STRING_TABLE));
237
- if (tbl == NULL) {
238
- goto err;
239
- }
240
- tbl->nid = nid;
241
- tbl->flags = flags;
242
- tbl->minsize = minsize;
243
- tbl->maxsize = maxsize;
244
- tbl->mask = mask;
245
- ASN1_STRING_TABLE *old_tbl;
246
- if (!lh_ASN1_STRING_TABLE_insert(string_tables, &old_tbl, tbl)) {
247
- OPENSSL_free(tbl);
248
- goto err;
206
+ } else {
207
+ // Check again for an existing entry. One may have been added while
208
+ // unlocked.
209
+ ASN1_STRING_TABLE key;
210
+ key.nid = nid;
211
+ if (lh_ASN1_STRING_TABLE_retrieve(string_tables, &key) != NULL) {
212
+ OPENSSL_PUT_ERROR(ASN1, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
213
+ goto err;
249
214
  }
250
- assert(old_tbl == NULL);
251
- ret = 1;
215
+ }
216
+
217
+ ASN1_STRING_TABLE *tbl = OPENSSL_malloc(sizeof(ASN1_STRING_TABLE));
218
+ if (tbl == NULL) {
219
+ goto err;
220
+ }
221
+ tbl->nid = nid;
222
+ tbl->flags = flags;
223
+ tbl->minsize = minsize;
224
+ tbl->maxsize = maxsize;
225
+ tbl->mask = mask;
226
+ ASN1_STRING_TABLE *old_tbl;
227
+ if (!lh_ASN1_STRING_TABLE_insert(string_tables, &old_tbl, tbl)) {
228
+ OPENSSL_free(tbl);
229
+ goto err;
230
+ }
231
+ assert(old_tbl == NULL);
232
+ ret = 1;
252
233
 
253
234
  err:
254
- CRYPTO_STATIC_MUTEX_unlock_write(&string_tables_lock);
255
- return ret;
235
+ CRYPTO_STATIC_MUTEX_unlock_write(&string_tables_lock);
236
+ return ret;
256
237
  }
257
238
 
258
- void ASN1_STRING_TABLE_cleanup(void)
259
- {
260
- }
239
+ void ASN1_STRING_TABLE_cleanup(void) {}
261
240
 
262
241
  void asn1_get_string_table_for_testing(const ASN1_STRING_TABLE **out_ptr,
263
242
  size_t *out_len) {
264
- *out_ptr = tbl_standard;
265
- *out_len = OPENSSL_ARRAY_SIZE(tbl_standard);
243
+ *out_ptr = tbl_standard;
244
+ *out_len = OPENSSL_ARRAY_SIZE(tbl_standard);
266
245
  }
@@ -65,148 +65,155 @@
65
65
 
66
66
  #include "internal.h"
67
67
 
68
- /*
69
- * This is an implementation of the ASN1 Time structure which is: Time ::=
70
- * CHOICE { utcTime UTCTime, generalTime GeneralizedTime } written by Steve
71
- * Henson.
72
- */
68
+ // This is an implementation of the ASN1 Time structure which is: Time ::=
69
+ // CHOICE { utcTime UTCTime, generalTime GeneralizedTime } written by Steve
70
+ // Henson.
73
71
 
74
72
  IMPLEMENT_ASN1_MSTRING(ASN1_TIME, B_ASN1_TIME)
75
73
 
76
74
  IMPLEMENT_ASN1_FUNCTIONS_const(ASN1_TIME)
77
75
 
78
- ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t)
79
- {
80
- return ASN1_TIME_adj(s, t, 0, 0);
76
+ ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t) {
77
+ return ASN1_TIME_adj(s, t, 0, 0);
81
78
  }
82
79
 
83
- ASN1_TIME *ASN1_TIME_adj(ASN1_TIME *s, time_t t,
84
- int offset_day, long offset_sec)
85
- {
86
- struct tm *ts;
87
- struct tm data;
80
+ ASN1_TIME *ASN1_TIME_adj(ASN1_TIME *s, time_t t, int offset_day,
81
+ long offset_sec) {
82
+ struct tm *ts;
83
+ struct tm data;
88
84
 
89
- ts = OPENSSL_gmtime(&t, &data);
90
- if (ts == NULL) {
91
- OPENSSL_PUT_ERROR(ASN1, ASN1_R_ERROR_GETTING_TIME);
92
- return NULL;
93
- }
94
- if (offset_day || offset_sec) {
95
- if (!OPENSSL_gmtime_adj(ts, offset_day, offset_sec))
96
- return NULL;
85
+ ts = OPENSSL_gmtime(&t, &data);
86
+ if (ts == NULL) {
87
+ OPENSSL_PUT_ERROR(ASN1, ASN1_R_ERROR_GETTING_TIME);
88
+ return NULL;
89
+ }
90
+ if (offset_day || offset_sec) {
91
+ if (!OPENSSL_gmtime_adj(ts, offset_day, offset_sec)) {
92
+ return NULL;
97
93
  }
98
- if ((ts->tm_year >= 50) && (ts->tm_year < 150))
99
- return ASN1_UTCTIME_adj(s, t, offset_day, offset_sec);
100
- return ASN1_GENERALIZEDTIME_adj(s, t, offset_day, offset_sec);
94
+ }
95
+ if ((ts->tm_year >= 50) && (ts->tm_year < 150)) {
96
+ return ASN1_UTCTIME_adj(s, t, offset_day, offset_sec);
97
+ }
98
+ return ASN1_GENERALIZEDTIME_adj(s, t, offset_day, offset_sec);
101
99
  }
102
100
 
103
- int ASN1_TIME_check(const ASN1_TIME *t)
104
- {
105
- if (t->type == V_ASN1_GENERALIZEDTIME)
106
- return ASN1_GENERALIZEDTIME_check(t);
107
- else if (t->type == V_ASN1_UTCTIME)
108
- return ASN1_UTCTIME_check(t);
109
- return 0;
101
+ int ASN1_TIME_check(const ASN1_TIME *t) {
102
+ if (t->type == V_ASN1_GENERALIZEDTIME) {
103
+ return ASN1_GENERALIZEDTIME_check(t);
104
+ } else if (t->type == V_ASN1_UTCTIME) {
105
+ return ASN1_UTCTIME_check(t);
106
+ }
107
+ return 0;
110
108
  }
111
109
 
112
- /* Convert an ASN1_TIME structure to GeneralizedTime */
110
+ // Convert an ASN1_TIME structure to GeneralizedTime
113
111
  ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(const ASN1_TIME *t,
114
- ASN1_GENERALIZEDTIME **out)
115
- {
116
- ASN1_GENERALIZEDTIME *ret = NULL;
117
- char *str;
118
- int newlen;
119
-
120
- if (!ASN1_TIME_check(t))
121
- return NULL;
122
-
123
- if (!out || !*out) {
124
- if (!(ret = ASN1_GENERALIZEDTIME_new()))
125
- goto err;
126
- } else {
127
- ret = *out;
128
- }
112
+ ASN1_GENERALIZEDTIME **out) {
113
+ ASN1_GENERALIZEDTIME *ret = NULL;
114
+ char *str;
115
+ int newlen;
129
116
 
130
- /* If already GeneralizedTime just copy across */
131
- if (t->type == V_ASN1_GENERALIZEDTIME) {
132
- if (!ASN1_STRING_set(ret, t->data, t->length))
133
- goto err;
134
- goto done;
135
- }
136
-
137
- /* grow the string */
138
- if (!ASN1_STRING_set(ret, NULL, t->length + 2))
139
- goto err;
140
- /* ASN1_STRING_set() allocated 'len + 1' bytes. */
141
- newlen = t->length + 2 + 1;
142
- str = (char *)ret->data;
143
- /* Work out the century and prepend */
144
- if (t->data[0] >= '5')
145
- OPENSSL_strlcpy(str, "19", newlen);
146
- else
147
- OPENSSL_strlcpy(str, "20", newlen);
148
-
149
- OPENSSL_strlcat(str, (char *)t->data, newlen);
150
-
151
- done:
152
- if (out != NULL && *out == NULL)
153
- *out = ret;
154
- return ret;
155
-
156
- err:
157
- if (out == NULL || *out != ret)
158
- ASN1_GENERALIZEDTIME_free(ret);
117
+ if (!ASN1_TIME_check(t)) {
159
118
  return NULL;
119
+ }
120
+
121
+ if (!out || !*out) {
122
+ if (!(ret = ASN1_GENERALIZEDTIME_new())) {
123
+ goto err;
124
+ }
125
+ } else {
126
+ ret = *out;
127
+ }
128
+
129
+ // If already GeneralizedTime just copy across
130
+ if (t->type == V_ASN1_GENERALIZEDTIME) {
131
+ if (!ASN1_STRING_set(ret, t->data, t->length)) {
132
+ goto err;
133
+ }
134
+ goto done;
135
+ }
136
+
137
+ // grow the string
138
+ if (!ASN1_STRING_set(ret, NULL, t->length + 2)) {
139
+ goto err;
140
+ }
141
+ // ASN1_STRING_set() allocated 'len + 1' bytes.
142
+ newlen = t->length + 2 + 1;
143
+ str = (char *)ret->data;
144
+ // Work out the century and prepend
145
+ if (t->data[0] >= '5') {
146
+ OPENSSL_strlcpy(str, "19", newlen);
147
+ } else {
148
+ OPENSSL_strlcpy(str, "20", newlen);
149
+ }
150
+
151
+ OPENSSL_strlcat(str, (char *)t->data, newlen);
152
+
153
+ done:
154
+ if (out != NULL && *out == NULL) {
155
+ *out = ret;
156
+ }
157
+ return ret;
158
+
159
+ err:
160
+ if (out == NULL || *out != ret) {
161
+ ASN1_GENERALIZEDTIME_free(ret);
162
+ }
163
+ return NULL;
160
164
  }
161
165
 
162
166
 
163
- int ASN1_TIME_set_string(ASN1_TIME *s, const char *str)
164
- {
165
- ASN1_TIME t;
167
+ int ASN1_TIME_set_string(ASN1_TIME *s, const char *str) {
168
+ ASN1_TIME t;
166
169
 
167
- t.length = strlen(str);
168
- t.data = (unsigned char *)str;
169
- t.flags = 0;
170
+ t.length = strlen(str);
171
+ t.data = (unsigned char *)str;
172
+ t.flags = 0;
170
173
 
171
- t.type = V_ASN1_UTCTIME;
174
+ t.type = V_ASN1_UTCTIME;
172
175
 
176
+ if (!ASN1_TIME_check(&t)) {
177
+ t.type = V_ASN1_GENERALIZEDTIME;
173
178
  if (!ASN1_TIME_check(&t)) {
174
- t.type = V_ASN1_GENERALIZEDTIME;
175
- if (!ASN1_TIME_check(&t))
176
- return 0;
179
+ return 0;
177
180
  }
181
+ }
178
182
 
179
- if (s && !ASN1_STRING_copy((ASN1_STRING *)s, (ASN1_STRING *)&t))
180
- return 0;
183
+ if (s && !ASN1_STRING_copy((ASN1_STRING *)s, (ASN1_STRING *)&t)) {
184
+ return 0;
185
+ }
181
186
 
182
- return 1;
187
+ return 1;
183
188
  }
184
189
 
185
- static int asn1_time_to_tm(struct tm *tm, const ASN1_TIME *t)
186
- {
187
- if (t == NULL) {
188
- time_t now_t;
189
- time(&now_t);
190
- if (OPENSSL_gmtime(&now_t, tm))
191
- return 1;
192
- return 0;
190
+ static int asn1_time_to_tm(struct tm *tm, const ASN1_TIME *t) {
191
+ if (t == NULL) {
192
+ time_t now_t;
193
+ time(&now_t);
194
+ if (OPENSSL_gmtime(&now_t, tm)) {
195
+ return 1;
193
196
  }
197
+ return 0;
198
+ }
194
199
 
195
- if (t->type == V_ASN1_UTCTIME)
196
- return asn1_utctime_to_tm(tm, t);
197
- else if (t->type == V_ASN1_GENERALIZEDTIME)
198
- return asn1_generalizedtime_to_tm(tm, t);
200
+ if (t->type == V_ASN1_UTCTIME) {
201
+ return asn1_utctime_to_tm(tm, t);
202
+ } else if (t->type == V_ASN1_GENERALIZEDTIME) {
203
+ return asn1_generalizedtime_to_tm(tm, t);
204
+ }
199
205
 
200
- return 0;
206
+ return 0;
201
207
  }
202
208
 
203
- int ASN1_TIME_diff(int *out_days, int *out_seconds,
204
- const ASN1_TIME *from, const ASN1_TIME *to)
205
- {
206
- struct tm tm_from, tm_to;
207
- if (!asn1_time_to_tm(&tm_from, from))
208
- return 0;
209
- if (!asn1_time_to_tm(&tm_to, to))
210
- return 0;
211
- return OPENSSL_gmtime_diff(out_days, out_seconds, &tm_from, &tm_to);
209
+ int ASN1_TIME_diff(int *out_days, int *out_seconds, const ASN1_TIME *from,
210
+ const ASN1_TIME *to) {
211
+ struct tm tm_from, tm_to;
212
+ if (!asn1_time_to_tm(&tm_from, from)) {
213
+ return 0;
214
+ }
215
+ if (!asn1_time_to_tm(&tm_to, to)) {
216
+ return 0;
217
+ }
218
+ return OPENSSL_gmtime_diff(out_days, out_seconds, &tm_from, &tm_to);
212
219
  }