@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
@@ -66,41 +66,47 @@
66
66
  #include "../internal.h"
67
67
 
68
68
 
69
- X509_PKEY *X509_PKEY_new(void)
70
- {
71
- X509_PKEY *ret = OPENSSL_malloc(sizeof(X509_PKEY));
72
- if (ret == NULL) {
73
- OPENSSL_PUT_ERROR(X509, ERR_R_MALLOC_FAILURE);
74
- goto err;
75
- }
76
- OPENSSL_memset(ret, 0, sizeof(X509_PKEY));
69
+ X509_PKEY *X509_PKEY_new(void) {
70
+ X509_PKEY *ret = OPENSSL_malloc(sizeof(X509_PKEY));
71
+ if (ret == NULL) {
72
+ OPENSSL_PUT_ERROR(X509, ERR_R_MALLOC_FAILURE);
73
+ goto err;
74
+ }
75
+ OPENSSL_memset(ret, 0, sizeof(X509_PKEY));
77
76
 
78
- ret->enc_algor = X509_ALGOR_new();
79
- if (ret->enc_algor == NULL)
80
- goto err;
81
- ret->enc_pkey = ASN1_OCTET_STRING_new();
82
- if (ret->enc_pkey == NULL)
83
- goto err;
84
- return ret;
77
+ ret->enc_algor = X509_ALGOR_new();
78
+ if (ret->enc_algor == NULL) {
79
+ goto err;
80
+ }
81
+ ret->enc_pkey = ASN1_OCTET_STRING_new();
82
+ if (ret->enc_pkey == NULL) {
83
+ goto err;
84
+ }
85
+ return ret;
85
86
 
86
- err:
87
- if (ret != NULL)
88
- X509_PKEY_free(ret);
89
- return NULL;
87
+ err:
88
+ if (ret != NULL) {
89
+ X509_PKEY_free(ret);
90
+ }
91
+ return NULL;
90
92
  }
91
93
 
92
- void X509_PKEY_free(X509_PKEY *x)
93
- {
94
- if (x == NULL)
95
- return;
94
+ void X509_PKEY_free(X509_PKEY *x) {
95
+ if (x == NULL) {
96
+ return;
97
+ }
96
98
 
97
- if (x->enc_algor != NULL)
98
- X509_ALGOR_free(x->enc_algor);
99
- if (x->enc_pkey != NULL)
100
- ASN1_OCTET_STRING_free(x->enc_pkey);
101
- if (x->dec_pkey != NULL)
102
- EVP_PKEY_free(x->dec_pkey);
103
- if ((x->key_data != NULL) && (x->key_free))
104
- OPENSSL_free(x->key_data);
105
- OPENSSL_free(x);
99
+ if (x->enc_algor != NULL) {
100
+ X509_ALGOR_free(x->enc_algor);
101
+ }
102
+ if (x->enc_pkey != NULL) {
103
+ ASN1_OCTET_STRING_free(x->enc_pkey);
104
+ }
105
+ if (x->dec_pkey != NULL) {
106
+ EVP_PKEY_free(x->dec_pkey);
107
+ }
108
+ if ((x->key_data != NULL) && (x->key_free)) {
109
+ OPENSSL_free(x->key_data);
110
+ }
111
+ OPENSSL_free(x);
106
112
  }
@@ -70,148 +70,145 @@
70
70
  #include "../internal.h"
71
71
  #include "internal.h"
72
72
 
73
- /* Minor tweak to operation: free up EVP_PKEY */
73
+ // Minor tweak to operation: free up EVP_PKEY
74
74
  static int pubkey_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it,
75
- void *exarg)
76
- {
77
- if (operation == ASN1_OP_FREE_POST) {
78
- X509_PUBKEY *pubkey = (X509_PUBKEY *)*pval;
79
- EVP_PKEY_free(pubkey->pkey);
80
- }
81
- return 1;
75
+ void *exarg) {
76
+ if (operation == ASN1_OP_FREE_POST) {
77
+ X509_PUBKEY *pubkey = (X509_PUBKEY *)*pval;
78
+ EVP_PKEY_free(pubkey->pkey);
79
+ }
80
+ return 1;
82
81
  }
83
82
 
84
83
  ASN1_SEQUENCE_cb(X509_PUBKEY, pubkey_cb) = {
85
- ASN1_SIMPLE(X509_PUBKEY, algor, X509_ALGOR),
86
- ASN1_SIMPLE(X509_PUBKEY, public_key, ASN1_BIT_STRING),
84
+ ASN1_SIMPLE(X509_PUBKEY, algor, X509_ALGOR),
85
+ ASN1_SIMPLE(X509_PUBKEY, public_key, ASN1_BIT_STRING),
87
86
  } ASN1_SEQUENCE_END_cb(X509_PUBKEY, X509_PUBKEY)
88
87
 
89
88
  IMPLEMENT_ASN1_FUNCTIONS(X509_PUBKEY)
90
89
 
91
- int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey)
92
- {
93
- X509_PUBKEY *pk = NULL;
94
- uint8_t *spki = NULL;
95
- size_t spki_len;
96
-
97
- if (x == NULL)
98
- return (0);
99
-
100
- CBB cbb;
101
- if (!CBB_init(&cbb, 0) ||
102
- !EVP_marshal_public_key(&cbb, pkey) ||
103
- !CBB_finish(&cbb, &spki, &spki_len) ||
104
- spki_len > LONG_MAX) {
105
- CBB_cleanup(&cbb);
106
- OPENSSL_PUT_ERROR(X509, X509_R_PUBLIC_KEY_ENCODE_ERROR);
107
- goto error;
108
- }
109
-
110
- const uint8_t *p = spki;
111
- pk = d2i_X509_PUBKEY(NULL, &p, (long)spki_len);
112
- if (pk == NULL || p != spki + spki_len) {
113
- OPENSSL_PUT_ERROR(X509, X509_R_PUBLIC_KEY_DECODE_ERROR);
114
- goto error;
115
- }
116
-
117
- OPENSSL_free(spki);
118
- X509_PUBKEY_free(*x);
119
- *x = pk;
120
-
121
- return 1;
122
- error:
123
- X509_PUBKEY_free(pk);
124
- OPENSSL_free(spki);
90
+ int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey) {
91
+ X509_PUBKEY *pk = NULL;
92
+ uint8_t *spki = NULL;
93
+ size_t spki_len;
94
+
95
+ if (x == NULL) {
125
96
  return 0;
97
+ }
98
+
99
+ CBB cbb;
100
+ if (!CBB_init(&cbb, 0) || //
101
+ !EVP_marshal_public_key(&cbb, pkey) ||
102
+ !CBB_finish(&cbb, &spki, &spki_len) || //
103
+ spki_len > LONG_MAX) {
104
+ CBB_cleanup(&cbb);
105
+ OPENSSL_PUT_ERROR(X509, X509_R_PUBLIC_KEY_ENCODE_ERROR);
106
+ goto error;
107
+ }
108
+
109
+ const uint8_t *p = spki;
110
+ pk = d2i_X509_PUBKEY(NULL, &p, (long)spki_len);
111
+ if (pk == NULL || p != spki + spki_len) {
112
+ OPENSSL_PUT_ERROR(X509, X509_R_PUBLIC_KEY_DECODE_ERROR);
113
+ goto error;
114
+ }
115
+
116
+ OPENSSL_free(spki);
117
+ X509_PUBKEY_free(*x);
118
+ *x = pk;
119
+
120
+ return 1;
121
+ error:
122
+ X509_PUBKEY_free(pk);
123
+ OPENSSL_free(spki);
124
+ return 0;
126
125
  }
127
126
 
128
- /* g_pubkey_lock is used to protect the initialisation of the |pkey| member of
129
- * |X509_PUBKEY| objects. Really |X509_PUBKEY| should have a |CRYPTO_once_t|
130
- * inside it for this, but |CRYPTO_once_t| is private and |X509_PUBKEY| is
131
- * not. */
127
+ // g_pubkey_lock is used to protect the initialisation of the |pkey| member of
128
+ // |X509_PUBKEY| objects. Really |X509_PUBKEY| should have a |CRYPTO_once_t|
129
+ // inside it for this, but |CRYPTO_once_t| is private and |X509_PUBKEY| is
130
+ // not.
132
131
  static struct CRYPTO_STATIC_MUTEX g_pubkey_lock = CRYPTO_STATIC_MUTEX_INIT;
133
132
 
134
- EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key)
135
- {
136
- EVP_PKEY *ret = NULL;
137
- uint8_t *spki = NULL;
133
+ EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key) {
134
+ EVP_PKEY *ret = NULL;
135
+ uint8_t *spki = NULL;
138
136
 
139
- if (key == NULL)
140
- goto error;
137
+ if (key == NULL) {
138
+ goto error;
139
+ }
141
140
 
142
- CRYPTO_STATIC_MUTEX_lock_read(&g_pubkey_lock);
143
- if (key->pkey != NULL) {
144
- CRYPTO_STATIC_MUTEX_unlock_read(&g_pubkey_lock);
145
- EVP_PKEY_up_ref(key->pkey);
146
- return key->pkey;
147
- }
141
+ CRYPTO_STATIC_MUTEX_lock_read(&g_pubkey_lock);
142
+ if (key->pkey != NULL) {
148
143
  CRYPTO_STATIC_MUTEX_unlock_read(&g_pubkey_lock);
149
-
150
- /* Re-encode the |X509_PUBKEY| to DER and parse it. */
151
- int spki_len = i2d_X509_PUBKEY(key, &spki);
152
- if (spki_len < 0) {
153
- goto error;
154
- }
155
- CBS cbs;
156
- CBS_init(&cbs, spki, (size_t)spki_len);
157
- ret = EVP_parse_public_key(&cbs);
158
- if (ret == NULL || CBS_len(&cbs) != 0) {
159
- OPENSSL_PUT_ERROR(X509, X509_R_PUBLIC_KEY_DECODE_ERROR);
160
- goto error;
161
- }
162
-
163
- /* Check to see if another thread set key->pkey first */
164
- CRYPTO_STATIC_MUTEX_lock_write(&g_pubkey_lock);
165
- if (key->pkey) {
166
- CRYPTO_STATIC_MUTEX_unlock_write(&g_pubkey_lock);
167
- EVP_PKEY_free(ret);
168
- ret = key->pkey;
169
- } else {
170
- key->pkey = ret;
171
- CRYPTO_STATIC_MUTEX_unlock_write(&g_pubkey_lock);
172
- }
173
-
174
- OPENSSL_free(spki);
175
- EVP_PKEY_up_ref(ret);
176
- return ret;
177
-
178
- error:
179
- OPENSSL_free(spki);
144
+ EVP_PKEY_up_ref(key->pkey);
145
+ return key->pkey;
146
+ }
147
+ CRYPTO_STATIC_MUTEX_unlock_read(&g_pubkey_lock);
148
+
149
+ // Re-encode the |X509_PUBKEY| to DER and parse it.
150
+ int spki_len = i2d_X509_PUBKEY(key, &spki);
151
+ if (spki_len < 0) {
152
+ goto error;
153
+ }
154
+ CBS cbs;
155
+ CBS_init(&cbs, spki, (size_t)spki_len);
156
+ ret = EVP_parse_public_key(&cbs);
157
+ if (ret == NULL || CBS_len(&cbs) != 0) {
158
+ OPENSSL_PUT_ERROR(X509, X509_R_PUBLIC_KEY_DECODE_ERROR);
159
+ goto error;
160
+ }
161
+
162
+ // Check to see if another thread set key->pkey first
163
+ CRYPTO_STATIC_MUTEX_lock_write(&g_pubkey_lock);
164
+ if (key->pkey) {
165
+ CRYPTO_STATIC_MUTEX_unlock_write(&g_pubkey_lock);
180
166
  EVP_PKEY_free(ret);
181
- return NULL;
167
+ ret = key->pkey;
168
+ } else {
169
+ key->pkey = ret;
170
+ CRYPTO_STATIC_MUTEX_unlock_write(&g_pubkey_lock);
171
+ }
172
+
173
+ OPENSSL_free(spki);
174
+ EVP_PKEY_up_ref(ret);
175
+ return ret;
176
+
177
+ error:
178
+ OPENSSL_free(spki);
179
+ EVP_PKEY_free(ret);
180
+ return NULL;
182
181
  }
183
182
 
184
183
  int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *obj, int param_type,
185
- void *param_value, uint8_t *key, int key_len)
186
- {
187
- if (!X509_ALGOR_set0(pub->algor, obj, param_type, param_value)) {
188
- return 0;
189
- }
190
-
191
- ASN1_STRING_set0(pub->public_key, key, key_len);
192
- /* Set the number of unused bits to zero. */
193
- pub->public_key->flags &= ~(ASN1_STRING_FLAG_BITS_LEFT | 0x07);
194
- pub->public_key->flags |= ASN1_STRING_FLAG_BITS_LEFT;
195
- return 1;
184
+ void *param_value, uint8_t *key, int key_len) {
185
+ if (!X509_ALGOR_set0(pub->algor, obj, param_type, param_value)) {
186
+ return 0;
187
+ }
188
+
189
+ ASN1_STRING_set0(pub->public_key, key, key_len);
190
+ // Set the number of unused bits to zero.
191
+ pub->public_key->flags &= ~(ASN1_STRING_FLAG_BITS_LEFT | 0x07);
192
+ pub->public_key->flags |= ASN1_STRING_FLAG_BITS_LEFT;
193
+ return 1;
196
194
  }
197
195
 
198
196
  int X509_PUBKEY_get0_param(ASN1_OBJECT **out_obj, const uint8_t **out_key,
199
197
  int *out_key_len, X509_ALGOR **out_alg,
200
- X509_PUBKEY *pub)
201
- {
202
- if (out_obj != NULL) {
203
- *out_obj = pub->algor->algorithm;
204
- }
205
- if (out_key != NULL) {
206
- *out_key = pub->public_key->data;
207
- *out_key_len = pub->public_key->length;
208
- }
209
- if (out_alg != NULL) {
210
- *out_alg = pub->algor;
211
- }
212
- return 1;
198
+ X509_PUBKEY *pub) {
199
+ if (out_obj != NULL) {
200
+ *out_obj = pub->algor->algorithm;
201
+ }
202
+ if (out_key != NULL) {
203
+ *out_key = pub->public_key->data;
204
+ *out_key_len = pub->public_key->length;
205
+ }
206
+ if (out_alg != NULL) {
207
+ *out_alg = pub->algor;
208
+ }
209
+ return 1;
213
210
  }
214
211
 
215
212
  const ASN1_BIT_STRING *X509_PUBKEY_get0_public_key(const X509_PUBKEY *pub) {
216
- return pub->public_key;
213
+ return pub->public_key;
217
214
  }
@@ -63,50 +63,48 @@
63
63
  #include "internal.h"
64
64
 
65
65
 
66
- /*
67
- * X509_REQ_INFO is handled in an unusual way to get round invalid encodings.
68
- * Some broken certificate requests don't encode the attributes field if it
69
- * is empty. This is in violation of PKCS#10 but we need to tolerate it. We
70
- * do this by making the attributes field OPTIONAL then using the callback to
71
- * initialise it to an empty STACK. This means that the field will be
72
- * correctly encoded unless we NULL out the field.
73
- */
66
+ // X509_REQ_INFO is handled in an unusual way to get round invalid encodings.
67
+ // Some broken certificate requests don't encode the attributes field if it
68
+ // is empty. This is in violation of PKCS#10 but we need to tolerate it. We
69
+ // do this by making the attributes field OPTIONAL then using the callback to
70
+ // initialise it to an empty STACK. This means that the field will be
71
+ // correctly encoded unless we NULL out the field.
74
72
 
75
73
  static int rinf_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it,
76
- void *exarg)
77
- {
78
- X509_REQ_INFO *rinf = (X509_REQ_INFO *)*pval;
74
+ void *exarg) {
75
+ X509_REQ_INFO *rinf = (X509_REQ_INFO *)*pval;
79
76
 
80
- if (operation == ASN1_OP_NEW_POST) {
81
- rinf->attributes = sk_X509_ATTRIBUTE_new_null();
82
- if (!rinf->attributes)
83
- return 0;
77
+ if (operation == ASN1_OP_NEW_POST) {
78
+ rinf->attributes = sk_X509_ATTRIBUTE_new_null();
79
+ if (!rinf->attributes) {
80
+ return 0;
84
81
  }
82
+ }
85
83
 
86
- if (operation == ASN1_OP_D2I_POST) {
87
- if (ASN1_INTEGER_get(rinf->version) != X509_REQ_VERSION_1) {
88
- OPENSSL_PUT_ERROR(X509, X509_R_INVALID_VERSION);
89
- return 0;
90
- }
84
+ if (operation == ASN1_OP_D2I_POST) {
85
+ if (ASN1_INTEGER_get(rinf->version) != X509_REQ_VERSION_1) {
86
+ OPENSSL_PUT_ERROR(X509, X509_R_INVALID_VERSION);
87
+ return 0;
91
88
  }
89
+ }
92
90
 
93
- return 1;
91
+ return 1;
94
92
  }
95
93
 
96
94
  ASN1_SEQUENCE_enc(X509_REQ_INFO, enc, rinf_cb) = {
97
- ASN1_SIMPLE(X509_REQ_INFO, version, ASN1_INTEGER),
98
- ASN1_SIMPLE(X509_REQ_INFO, subject, X509_NAME),
99
- ASN1_SIMPLE(X509_REQ_INFO, pubkey, X509_PUBKEY),
100
- /* This isn't really OPTIONAL but it gets around invalid encodings. */
101
- ASN1_IMP_SET_OF_OPT(X509_REQ_INFO, attributes, X509_ATTRIBUTE, 0),
95
+ ASN1_SIMPLE(X509_REQ_INFO, version, ASN1_INTEGER),
96
+ ASN1_SIMPLE(X509_REQ_INFO, subject, X509_NAME),
97
+ ASN1_SIMPLE(X509_REQ_INFO, pubkey, X509_PUBKEY),
98
+ // This isn't really OPTIONAL but it gets around invalid encodings.
99
+ ASN1_IMP_SET_OF_OPT(X509_REQ_INFO, attributes, X509_ATTRIBUTE, 0),
102
100
  } ASN1_SEQUENCE_END_enc(X509_REQ_INFO, X509_REQ_INFO)
103
101
 
104
102
  IMPLEMENT_ASN1_FUNCTIONS(X509_REQ_INFO)
105
103
 
106
104
  ASN1_SEQUENCE_ref(X509_REQ, 0) = {
107
- ASN1_SIMPLE(X509_REQ, req_info, X509_REQ_INFO),
108
- ASN1_SIMPLE(X509_REQ, sig_alg, X509_ALGOR),
109
- ASN1_SIMPLE(X509_REQ, signature, ASN1_BIT_STRING),
105
+ ASN1_SIMPLE(X509_REQ, req_info, X509_REQ_INFO),
106
+ ASN1_SIMPLE(X509_REQ, sig_alg, X509_ALGOR),
107
+ ASN1_SIMPLE(X509_REQ, signature, ASN1_BIT_STRING),
110
108
  } ASN1_SEQUENCE_END_ref(X509_REQ, X509_REQ)
111
109
 
112
110
  IMPLEMENT_ASN1_FUNCTIONS(X509_REQ)
@@ -67,8 +67,8 @@ struct X509_sig_st {
67
67
  } /* X509_SIG */;
68
68
 
69
69
  ASN1_SEQUENCE(X509_SIG) = {
70
- ASN1_SIMPLE(X509_SIG, algor, X509_ALGOR),
71
- ASN1_SIMPLE(X509_SIG, digest, ASN1_OCTET_STRING),
70
+ ASN1_SIMPLE(X509_SIG, algor, X509_ALGOR),
71
+ ASN1_SIMPLE(X509_SIG, digest, ASN1_OCTET_STRING),
72
72
  } ASN1_SEQUENCE_END(X509_SIG)
73
73
 
74
74
  IMPLEMENT_ASN1_FUNCTIONS(X509_SIG)
@@ -55,26 +55,24 @@
55
55
  * copied and put under another distribution licence
56
56
  * [including the GNU Public Licence.] */
57
57
 
58
- /*
59
- * This module was send to me my Pat Richards <patr@x509.com> who wrote it.
60
- * It is under my Copyright with his permission.
61
- */
58
+ // This module was send to me my Pat Richards <patr@x509.com> who wrote it.
59
+ // It is under my Copyright with his permission.
62
60
 
63
- #include <openssl/x509.h>
64
61
  #include <openssl/asn1t.h>
62
+ #include <openssl/x509.h>
65
63
 
66
64
 
67
65
  ASN1_SEQUENCE(NETSCAPE_SPKAC) = {
68
- ASN1_SIMPLE(NETSCAPE_SPKAC, pubkey, X509_PUBKEY),
69
- ASN1_SIMPLE(NETSCAPE_SPKAC, challenge, ASN1_IA5STRING),
66
+ ASN1_SIMPLE(NETSCAPE_SPKAC, pubkey, X509_PUBKEY),
67
+ ASN1_SIMPLE(NETSCAPE_SPKAC, challenge, ASN1_IA5STRING),
70
68
  } ASN1_SEQUENCE_END(NETSCAPE_SPKAC)
71
69
 
72
70
  IMPLEMENT_ASN1_FUNCTIONS(NETSCAPE_SPKAC)
73
71
 
74
72
  ASN1_SEQUENCE(NETSCAPE_SPKI) = {
75
- ASN1_SIMPLE(NETSCAPE_SPKI, spkac, NETSCAPE_SPKAC),
76
- ASN1_SIMPLE(NETSCAPE_SPKI, sig_algor, X509_ALGOR),
77
- ASN1_SIMPLE(NETSCAPE_SPKI, signature, ASN1_BIT_STRING),
73
+ ASN1_SIMPLE(NETSCAPE_SPKI, spkac, NETSCAPE_SPKAC),
74
+ ASN1_SIMPLE(NETSCAPE_SPKI, sig_algor, X509_ALGOR),
75
+ ASN1_SIMPLE(NETSCAPE_SPKI, signature, ASN1_BIT_STRING),
78
76
  } ASN1_SEQUENCE_END(NETSCAPE_SPKI)
79
77
 
80
78
  IMPLEMENT_ASN1_FUNCTIONS(NETSCAPE_SPKI)
@@ -64,8 +64,8 @@
64
64
 
65
65
 
66
66
  ASN1_SEQUENCE(X509_VAL) = {
67
- ASN1_SIMPLE(X509_VAL, notBefore, ASN1_TIME),
68
- ASN1_SIMPLE(X509_VAL, notAfter, ASN1_TIME),
67
+ ASN1_SIMPLE(X509_VAL, notBefore, ASN1_TIME),
68
+ ASN1_SIMPLE(X509_VAL, notAfter, ASN1_TIME),
69
69
  } ASN1_SEQUENCE_END(X509_VAL)
70
70
 
71
71
  IMPLEMENT_ASN1_FUNCTIONS(X509_VAL)