@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
@@ -72,291 +72,280 @@ static int X509_REVOKED_cmp(const X509_REVOKED **a, const X509_REVOKED **b);
72
72
  static int setup_idp(X509_CRL *crl, ISSUING_DIST_POINT *idp);
73
73
 
74
74
  ASN1_SEQUENCE(X509_REVOKED) = {
75
- ASN1_SIMPLE(X509_REVOKED,serialNumber, ASN1_INTEGER),
76
- ASN1_SIMPLE(X509_REVOKED,revocationDate, ASN1_TIME),
77
- ASN1_SEQUENCE_OF_OPT(X509_REVOKED,extensions, X509_EXTENSION),
75
+ ASN1_SIMPLE(X509_REVOKED, serialNumber, ASN1_INTEGER),
76
+ ASN1_SIMPLE(X509_REVOKED, revocationDate, ASN1_TIME),
77
+ ASN1_SEQUENCE_OF_OPT(X509_REVOKED, extensions, X509_EXTENSION),
78
78
  } ASN1_SEQUENCE_END(X509_REVOKED)
79
79
 
80
80
  static int crl_lookup(X509_CRL *crl, X509_REVOKED **ret, ASN1_INTEGER *serial,
81
81
  X509_NAME *issuer);
82
82
 
83
- /*
84
- * The X509_CRL_INFO structure needs a bit of customisation. Since we cache
85
- * the original encoding the signature wont be affected by reordering of the
86
- * revoked field.
87
- */
83
+ // The X509_CRL_INFO structure needs a bit of customisation. Since we cache
84
+ // the original encoding the signature wont be affected by reordering of the
85
+ // revoked field.
88
86
  static int crl_inf_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it,
89
- void *exarg)
90
- {
91
- X509_CRL_INFO *a = (X509_CRL_INFO *)*pval;
92
-
93
- if (!a || !a->revoked)
94
- return 1;
95
- switch (operation) {
96
- /*
97
- * Just set cmp function here. We don't sort because that would
98
- * affect the output of X509_CRL_print().
99
- */
100
- case ASN1_OP_D2I_POST:
101
- (void)sk_X509_REVOKED_set_cmp_func(a->revoked, X509_REVOKED_cmp);
102
- break;
103
- }
87
+ void *exarg) {
88
+ X509_CRL_INFO *a = (X509_CRL_INFO *)*pval;
89
+
90
+ if (!a || !a->revoked) {
104
91
  return 1;
92
+ }
93
+ switch (operation) {
94
+ // Just set cmp function here. We don't sort because that would
95
+ // affect the output of X509_CRL_print().
96
+ case ASN1_OP_D2I_POST:
97
+ (void)sk_X509_REVOKED_set_cmp_func(a->revoked, X509_REVOKED_cmp);
98
+ break;
99
+ }
100
+ return 1;
105
101
  }
106
102
 
107
103
 
108
104
  ASN1_SEQUENCE_enc(X509_CRL_INFO, enc, crl_inf_cb) = {
109
- ASN1_OPT(X509_CRL_INFO, version, ASN1_INTEGER),
110
- ASN1_SIMPLE(X509_CRL_INFO, sig_alg, X509_ALGOR),
111
- ASN1_SIMPLE(X509_CRL_INFO, issuer, X509_NAME),
112
- ASN1_SIMPLE(X509_CRL_INFO, lastUpdate, ASN1_TIME),
113
- ASN1_OPT(X509_CRL_INFO, nextUpdate, ASN1_TIME),
114
- ASN1_SEQUENCE_OF_OPT(X509_CRL_INFO, revoked, X509_REVOKED),
115
- ASN1_EXP_SEQUENCE_OF_OPT(X509_CRL_INFO, extensions, X509_EXTENSION, 0),
105
+ ASN1_OPT(X509_CRL_INFO, version, ASN1_INTEGER),
106
+ ASN1_SIMPLE(X509_CRL_INFO, sig_alg, X509_ALGOR),
107
+ ASN1_SIMPLE(X509_CRL_INFO, issuer, X509_NAME),
108
+ ASN1_SIMPLE(X509_CRL_INFO, lastUpdate, ASN1_TIME),
109
+ ASN1_OPT(X509_CRL_INFO, nextUpdate, ASN1_TIME),
110
+ ASN1_SEQUENCE_OF_OPT(X509_CRL_INFO, revoked, X509_REVOKED),
111
+ ASN1_EXP_SEQUENCE_OF_OPT(X509_CRL_INFO, extensions, X509_EXTENSION, 0),
116
112
  } ASN1_SEQUENCE_END_enc(X509_CRL_INFO, X509_CRL_INFO)
117
113
 
118
- /*
119
- * Set CRL entry issuer according to CRL certificate issuer extension. Check
120
- * for unhandled critical CRL entry extensions.
121
- */
122
-
123
- static int crl_set_issuers(X509_CRL *crl)
124
- {
125
-
126
- size_t i, k;
127
- int j;
128
- GENERAL_NAMES *gens, *gtmp;
129
- STACK_OF(X509_REVOKED) *revoked;
130
-
131
- revoked = X509_CRL_get_REVOKED(crl);
132
-
133
- gens = NULL;
134
- for (i = 0; i < sk_X509_REVOKED_num(revoked); i++) {
135
- X509_REVOKED *rev = sk_X509_REVOKED_value(revoked, i);
136
- STACK_OF(X509_EXTENSION) *exts;
137
- ASN1_ENUMERATED *reason;
138
- X509_EXTENSION *ext;
139
- gtmp = X509_REVOKED_get_ext_d2i(rev,
140
- NID_certificate_issuer, &j, NULL);
141
- if (!gtmp && (j != -1)) {
142
- crl->flags |= EXFLAG_INVALID;
143
- return 1;
144
- }
114
+ // Set CRL entry issuer according to CRL certificate issuer extension. Check
115
+ // for unhandled critical CRL entry extensions.
145
116
 
146
- if (gtmp) {
147
- gens = gtmp;
148
- if (!crl->issuers) {
149
- crl->issuers = sk_GENERAL_NAMES_new_null();
150
- if (!crl->issuers)
151
- return 0;
152
- }
153
- if (!sk_GENERAL_NAMES_push(crl->issuers, gtmp))
154
- return 0;
155
- }
156
- rev->issuer = gens;
117
+ static int crl_set_issuers(X509_CRL *crl) {
118
+ size_t i, k;
119
+ int j;
120
+ GENERAL_NAMES *gens, *gtmp;
121
+ STACK_OF(X509_REVOKED) *revoked;
157
122
 
158
- reason = X509_REVOKED_get_ext_d2i(rev, NID_crl_reason, &j, NULL);
159
- if (!reason && (j != -1)) {
160
- crl->flags |= EXFLAG_INVALID;
161
- return 1;
162
- }
123
+ revoked = X509_CRL_get_REVOKED(crl);
163
124
 
164
- if (reason) {
165
- rev->reason = ASN1_ENUMERATED_get(reason);
166
- ASN1_ENUMERATED_free(reason);
167
- } else
168
- rev->reason = CRL_REASON_NONE;
169
-
170
- /* Check for critical CRL entry extensions */
171
-
172
- exts = rev->extensions;
173
-
174
- for (k = 0; k < sk_X509_EXTENSION_num(exts); k++) {
175
- ext = sk_X509_EXTENSION_value(exts, k);
176
- if (X509_EXTENSION_get_critical(ext)) {
177
- if (OBJ_obj2nid(X509_EXTENSION_get_object(ext)) ==
178
- NID_certificate_issuer)
179
- continue;
180
- crl->flags |= EXFLAG_CRITICAL;
181
- break;
182
- }
125
+ gens = NULL;
126
+ for (i = 0; i < sk_X509_REVOKED_num(revoked); i++) {
127
+ X509_REVOKED *rev = sk_X509_REVOKED_value(revoked, i);
128
+ STACK_OF(X509_EXTENSION) *exts;
129
+ ASN1_ENUMERATED *reason;
130
+ X509_EXTENSION *ext;
131
+ gtmp = X509_REVOKED_get_ext_d2i(rev, NID_certificate_issuer, &j, NULL);
132
+ if (!gtmp && (j != -1)) {
133
+ crl->flags |= EXFLAG_INVALID;
134
+ return 1;
135
+ }
136
+
137
+ if (gtmp) {
138
+ gens = gtmp;
139
+ if (!crl->issuers) {
140
+ crl->issuers = sk_GENERAL_NAMES_new_null();
141
+ if (!crl->issuers) {
142
+ return 0;
183
143
  }
144
+ }
145
+ if (!sk_GENERAL_NAMES_push(crl->issuers, gtmp)) {
146
+ return 0;
147
+ }
148
+ }
149
+ rev->issuer = gens;
184
150
 
151
+ reason = X509_REVOKED_get_ext_d2i(rev, NID_crl_reason, &j, NULL);
152
+ if (!reason && (j != -1)) {
153
+ crl->flags |= EXFLAG_INVALID;
154
+ return 1;
185
155
  }
186
156
 
187
- return 1;
157
+ if (reason) {
158
+ rev->reason = ASN1_ENUMERATED_get(reason);
159
+ ASN1_ENUMERATED_free(reason);
160
+ } else {
161
+ rev->reason = CRL_REASON_NONE;
162
+ }
163
+
164
+ // Check for critical CRL entry extensions
165
+
166
+ exts = rev->extensions;
167
+
168
+ for (k = 0; k < sk_X509_EXTENSION_num(exts); k++) {
169
+ ext = sk_X509_EXTENSION_value(exts, k);
170
+ if (X509_EXTENSION_get_critical(ext)) {
171
+ if (OBJ_obj2nid(X509_EXTENSION_get_object(ext)) ==
172
+ NID_certificate_issuer) {
173
+ continue;
174
+ }
175
+ crl->flags |= EXFLAG_CRITICAL;
176
+ break;
177
+ }
178
+ }
179
+ }
188
180
 
181
+ return 1;
189
182
  }
190
183
 
191
- /*
192
- * The X509_CRL structure needs a bit of customisation. Cache some extensions
193
- * and hash of the whole CRL.
194
- */
184
+ // The X509_CRL structure needs a bit of customisation. Cache some extensions
185
+ // and hash of the whole CRL.
195
186
  static int crl_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it,
196
- void *exarg)
197
- {
198
- X509_CRL *crl = (X509_CRL *)*pval;
199
- STACK_OF(X509_EXTENSION) *exts;
200
- X509_EXTENSION *ext;
201
- size_t idx;
202
- int i;
203
-
204
- switch (operation) {
187
+ void *exarg) {
188
+ X509_CRL *crl = (X509_CRL *)*pval;
189
+ STACK_OF(X509_EXTENSION) *exts;
190
+ X509_EXTENSION *ext;
191
+ size_t idx;
192
+ int i;
193
+
194
+ switch (operation) {
205
195
  case ASN1_OP_NEW_POST:
206
- crl->idp = NULL;
207
- crl->akid = NULL;
208
- crl->flags = 0;
209
- crl->idp_flags = 0;
210
- crl->idp_reasons = CRLDP_ALL_REASONS;
211
- crl->issuers = NULL;
212
- crl->crl_number = NULL;
213
- crl->base_crl_number = NULL;
214
- break;
196
+ crl->idp = NULL;
197
+ crl->akid = NULL;
198
+ crl->flags = 0;
199
+ crl->idp_flags = 0;
200
+ crl->idp_reasons = CRLDP_ALL_REASONS;
201
+ crl->issuers = NULL;
202
+ crl->crl_number = NULL;
203
+ crl->base_crl_number = NULL;
204
+ break;
215
205
 
216
206
  case ASN1_OP_D2I_POST: {
217
- /* The version must be one of v1(0) or v2(1). */
218
- long version = X509_CRL_VERSION_1;
219
- if (crl->crl->version != NULL) {
220
- version = ASN1_INTEGER_get(crl->crl->version);
221
- /* TODO(https://crbug.com/boringssl/364): |X509_CRL_VERSION_1|
222
- * should also be rejected. This means an explicitly-encoded X.509v1
223
- * version. v1 is DEFAULT, so DER requires it be omitted. */
224
- if (version < X509_CRL_VERSION_1 || version > X509_CRL_VERSION_2) {
225
- OPENSSL_PUT_ERROR(X509, X509_R_INVALID_VERSION);
226
- return 0;
227
- }
207
+ // The version must be one of v1(0) or v2(1).
208
+ long version = X509_CRL_VERSION_1;
209
+ if (crl->crl->version != NULL) {
210
+ version = ASN1_INTEGER_get(crl->crl->version);
211
+ // TODO(https://crbug.com/boringssl/364): |X509_CRL_VERSION_1|
212
+ // should also be rejected. This means an explicitly-encoded X.509v1
213
+ // version. v1 is DEFAULT, so DER requires it be omitted.
214
+ if (version < X509_CRL_VERSION_1 || version > X509_CRL_VERSION_2) {
215
+ OPENSSL_PUT_ERROR(X509, X509_R_INVALID_VERSION);
216
+ return 0;
228
217
  }
218
+ }
229
219
 
230
- /* Per RFC 5280, section 5.1.2.1, extensions require v2. */
231
- if (version != X509_CRL_VERSION_2 && crl->crl->extensions != NULL) {
232
- OPENSSL_PUT_ERROR(X509, X509_R_INVALID_FIELD_FOR_VERSION);
233
- return 0;
234
- }
220
+ // Per RFC 5280, section 5.1.2.1, extensions require v2.
221
+ if (version != X509_CRL_VERSION_2 && crl->crl->extensions != NULL) {
222
+ OPENSSL_PUT_ERROR(X509, X509_R_INVALID_FIELD_FOR_VERSION);
223
+ return 0;
224
+ }
235
225
 
236
- if (!X509_CRL_digest(crl, EVP_sha256(), crl->crl_hash, NULL)) {
237
- return 0;
238
- }
226
+ if (!X509_CRL_digest(crl, EVP_sha256(), crl->crl_hash, NULL)) {
227
+ return 0;
228
+ }
239
229
 
240
- crl->idp = X509_CRL_get_ext_d2i(crl,
241
- NID_issuing_distribution_point, &i,
242
- NULL);
243
- if (crl->idp != NULL) {
244
- if (!setup_idp(crl, crl->idp)) {
245
- return 0;
246
- }
247
- } else if (i != -1) {
248
- return 0;
230
+ crl->idp =
231
+ X509_CRL_get_ext_d2i(crl, NID_issuing_distribution_point, &i, NULL);
232
+ if (crl->idp != NULL) {
233
+ if (!setup_idp(crl, crl->idp)) {
234
+ return 0;
249
235
  }
236
+ } else if (i != -1) {
237
+ return 0;
238
+ }
250
239
 
251
- crl->akid = X509_CRL_get_ext_d2i(crl,
252
- NID_authority_key_identifier, &i,
253
- NULL);
254
- if (crl->akid == NULL && i != -1) {
255
- return 0;
256
- }
240
+ crl->akid =
241
+ X509_CRL_get_ext_d2i(crl, NID_authority_key_identifier, &i, NULL);
242
+ if (crl->akid == NULL && i != -1) {
243
+ return 0;
244
+ }
257
245
 
258
- crl->crl_number = X509_CRL_get_ext_d2i(crl,
259
- NID_crl_number, &i, NULL);
260
- if (crl->crl_number == NULL && i != -1) {
261
- return 0;
262
- }
246
+ crl->crl_number = X509_CRL_get_ext_d2i(crl, NID_crl_number, &i, NULL);
247
+ if (crl->crl_number == NULL && i != -1) {
248
+ return 0;
249
+ }
263
250
 
264
- crl->base_crl_number = X509_CRL_get_ext_d2i(crl, NID_delta_crl, &i,
265
- NULL);
266
- if (crl->base_crl_number == NULL && i != -1) {
267
- return 0;
268
- }
269
- /* Delta CRLs must have CRL number */
270
- if (crl->base_crl_number && !crl->crl_number) {
271
- OPENSSL_PUT_ERROR(X509, X509_R_DELTA_CRL_WITHOUT_CRL_NUMBER);
272
- return 0;
273
- }
251
+ crl->base_crl_number = X509_CRL_get_ext_d2i(crl, NID_delta_crl, &i, NULL);
252
+ if (crl->base_crl_number == NULL && i != -1) {
253
+ return 0;
254
+ }
255
+ // Delta CRLs must have CRL number
256
+ if (crl->base_crl_number && !crl->crl_number) {
257
+ OPENSSL_PUT_ERROR(X509, X509_R_DELTA_CRL_WITHOUT_CRL_NUMBER);
258
+ return 0;
259
+ }
260
+
261
+ // See if we have any unhandled critical CRL extensions and indicate
262
+ // this in a flag. We only currently handle IDP so anything else
263
+ // critical sets the flag. This code accesses the X509_CRL structure
264
+ // directly: applications shouldn't do this.
265
+
266
+ exts = crl->crl->extensions;
274
267
 
275
- /*
276
- * See if we have any unhandled critical CRL extensions and indicate
277
- * this in a flag. We only currently handle IDP so anything else
278
- * critical sets the flag. This code accesses the X509_CRL structure
279
- * directly: applications shouldn't do this.
280
- */
281
-
282
- exts = crl->crl->extensions;
283
-
284
- for (idx = 0; idx < sk_X509_EXTENSION_num(exts); idx++) {
285
- int nid;
286
- ext = sk_X509_EXTENSION_value(exts, idx);
287
- nid = OBJ_obj2nid(X509_EXTENSION_get_object(ext));
288
- if (nid == NID_freshest_crl)
289
- crl->flags |= EXFLAG_FRESHEST;
290
- if (X509_EXTENSION_get_critical(ext)) {
291
- /* We handle IDP and deltas */
292
- if ((nid == NID_issuing_distribution_point)
293
- || (nid == NID_authority_key_identifier)
294
- || (nid == NID_delta_crl))
295
- continue;
296
- crl->flags |= EXFLAG_CRITICAL;
297
- break;
298
- }
268
+ for (idx = 0; idx < sk_X509_EXTENSION_num(exts); idx++) {
269
+ int nid;
270
+ ext = sk_X509_EXTENSION_value(exts, idx);
271
+ nid = OBJ_obj2nid(X509_EXTENSION_get_object(ext));
272
+ if (nid == NID_freshest_crl) {
273
+ crl->flags |= EXFLAG_FRESHEST;
274
+ }
275
+ if (X509_EXTENSION_get_critical(ext)) {
276
+ // We handle IDP and deltas
277
+ if ((nid == NID_issuing_distribution_point) ||
278
+ (nid == NID_authority_key_identifier) || (nid == NID_delta_crl)) {
279
+ continue;
280
+ }
281
+ crl->flags |= EXFLAG_CRITICAL;
282
+ break;
299
283
  }
284
+ }
300
285
 
301
- if (!crl_set_issuers(crl))
302
- return 0;
286
+ if (!crl_set_issuers(crl)) {
287
+ return 0;
288
+ }
303
289
 
304
- break;
290
+ break;
305
291
  }
306
292
 
307
293
  case ASN1_OP_FREE_POST:
308
- AUTHORITY_KEYID_free(crl->akid);
309
- ISSUING_DIST_POINT_free(crl->idp);
310
- ASN1_INTEGER_free(crl->crl_number);
311
- ASN1_INTEGER_free(crl->base_crl_number);
312
- sk_GENERAL_NAMES_pop_free(crl->issuers, GENERAL_NAMES_free);
313
- break;
314
- }
315
- return 1;
294
+ AUTHORITY_KEYID_free(crl->akid);
295
+ ISSUING_DIST_POINT_free(crl->idp);
296
+ ASN1_INTEGER_free(crl->crl_number);
297
+ ASN1_INTEGER_free(crl->base_crl_number);
298
+ sk_GENERAL_NAMES_pop_free(crl->issuers, GENERAL_NAMES_free);
299
+ break;
300
+ }
301
+ return 1;
316
302
  }
317
303
 
318
- /* Convert IDP into a more convenient form */
319
-
320
- static int setup_idp(X509_CRL *crl, ISSUING_DIST_POINT *idp)
321
- {
322
- int idp_only = 0;
323
- /* Set various flags according to IDP */
324
- crl->idp_flags |= IDP_PRESENT;
325
- if (idp->onlyuser > 0) {
326
- idp_only++;
327
- crl->idp_flags |= IDP_ONLYUSER;
328
- }
329
- if (idp->onlyCA > 0) {
330
- idp_only++;
331
- crl->idp_flags |= IDP_ONLYCA;
304
+ // Convert IDP into a more convenient form
305
+
306
+ static int setup_idp(X509_CRL *crl, ISSUING_DIST_POINT *idp) {
307
+ int idp_only = 0;
308
+ // Set various flags according to IDP
309
+ crl->idp_flags |= IDP_PRESENT;
310
+ if (idp->onlyuser > 0) {
311
+ idp_only++;
312
+ crl->idp_flags |= IDP_ONLYUSER;
313
+ }
314
+ if (idp->onlyCA > 0) {
315
+ idp_only++;
316
+ crl->idp_flags |= IDP_ONLYCA;
317
+ }
318
+ if (idp->onlyattr > 0) {
319
+ idp_only++;
320
+ crl->idp_flags |= IDP_ONLYATTR;
321
+ }
322
+
323
+ if (idp_only > 1) {
324
+ crl->idp_flags |= IDP_INVALID;
325
+ }
326
+
327
+ if (idp->indirectCRL > 0) {
328
+ crl->idp_flags |= IDP_INDIRECT;
329
+ }
330
+
331
+ if (idp->onlysomereasons) {
332
+ crl->idp_flags |= IDP_REASONS;
333
+ if (idp->onlysomereasons->length > 0) {
334
+ crl->idp_reasons = idp->onlysomereasons->data[0];
332
335
  }
333
- if (idp->onlyattr > 0) {
334
- idp_only++;
335
- crl->idp_flags |= IDP_ONLYATTR;
336
+ if (idp->onlysomereasons->length > 1) {
337
+ crl->idp_reasons |= (idp->onlysomereasons->data[1] << 8);
336
338
  }
339
+ crl->idp_reasons &= CRLDP_ALL_REASONS;
340
+ }
337
341
 
338
- if (idp_only > 1)
339
- crl->idp_flags |= IDP_INVALID;
340
-
341
- if (idp->indirectCRL > 0)
342
- crl->idp_flags |= IDP_INDIRECT;
343
-
344
- if (idp->onlysomereasons) {
345
- crl->idp_flags |= IDP_REASONS;
346
- if (idp->onlysomereasons->length > 0)
347
- crl->idp_reasons = idp->onlysomereasons->data[0];
348
- if (idp->onlysomereasons->length > 1)
349
- crl->idp_reasons |= (idp->onlysomereasons->data[1] << 8);
350
- crl->idp_reasons &= CRLDP_ALL_REASONS;
351
- }
352
-
353
- return DIST_POINT_set_dpname(idp->distpoint, X509_CRL_get_issuer(crl));
342
+ return DIST_POINT_set_dpname(idp->distpoint, X509_CRL_get_issuer(crl));
354
343
  }
355
344
 
356
345
  ASN1_SEQUENCE_ref(X509_CRL, crl_cb) = {
357
- ASN1_SIMPLE(X509_CRL, crl, X509_CRL_INFO),
358
- ASN1_SIMPLE(X509_CRL, sig_alg, X509_ALGOR),
359
- ASN1_SIMPLE(X509_CRL, signature, ASN1_BIT_STRING),
346
+ ASN1_SIMPLE(X509_CRL, crl, X509_CRL_INFO),
347
+ ASN1_SIMPLE(X509_CRL, sig_alg, X509_ALGOR),
348
+ ASN1_SIMPLE(X509_CRL, signature, ASN1_BIT_STRING),
360
349
  } ASN1_SEQUENCE_END_ref(X509_CRL, X509_CRL)
361
350
 
362
351
  IMPLEMENT_ASN1_FUNCTIONS(X509_REVOKED)
@@ -367,114 +356,114 @@ IMPLEMENT_ASN1_FUNCTIONS(X509_CRL_INFO)
367
356
  IMPLEMENT_ASN1_FUNCTIONS(X509_CRL)
368
357
  IMPLEMENT_ASN1_DUP_FUNCTION(X509_CRL)
369
358
 
370
- static int X509_REVOKED_cmp(const X509_REVOKED **a, const X509_REVOKED **b)
371
- {
372
- return ASN1_STRING_cmp((*a)->serialNumber, (*b)->serialNumber);
359
+ static int X509_REVOKED_cmp(const X509_REVOKED **a, const X509_REVOKED **b) {
360
+ return ASN1_STRING_cmp((*a)->serialNumber, (*b)->serialNumber);
373
361
  }
374
362
 
375
- int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev)
376
- {
377
- X509_CRL_INFO *inf;
378
- inf = crl->crl;
379
- if (!inf->revoked)
380
- inf->revoked = sk_X509_REVOKED_new(X509_REVOKED_cmp);
381
- if (!inf->revoked || !sk_X509_REVOKED_push(inf->revoked, rev)) {
382
- OPENSSL_PUT_ERROR(X509, ERR_R_MALLOC_FAILURE);
383
- return 0;
384
- }
385
- inf->enc.modified = 1;
386
- return 1;
363
+ int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev) {
364
+ X509_CRL_INFO *inf;
365
+ inf = crl->crl;
366
+ if (!inf->revoked) {
367
+ inf->revoked = sk_X509_REVOKED_new(X509_REVOKED_cmp);
368
+ }
369
+ if (!inf->revoked || !sk_X509_REVOKED_push(inf->revoked, rev)) {
370
+ OPENSSL_PUT_ERROR(X509, ERR_R_MALLOC_FAILURE);
371
+ return 0;
372
+ }
373
+ inf->enc.modified = 1;
374
+ return 1;
387
375
  }
388
376
 
389
- int X509_CRL_verify(X509_CRL *crl, EVP_PKEY *pkey)
390
- {
391
- if (X509_ALGOR_cmp(crl->sig_alg, crl->crl->sig_alg) != 0) {
392
- OPENSSL_PUT_ERROR(X509, X509_R_SIGNATURE_ALGORITHM_MISMATCH);
393
- return 0;
394
- }
377
+ int X509_CRL_verify(X509_CRL *crl, EVP_PKEY *pkey) {
378
+ if (X509_ALGOR_cmp(crl->sig_alg, crl->crl->sig_alg) != 0) {
379
+ OPENSSL_PUT_ERROR(X509, X509_R_SIGNATURE_ALGORITHM_MISMATCH);
380
+ return 0;
381
+ }
395
382
 
396
- return ASN1_item_verify(ASN1_ITEM_rptr(X509_CRL_INFO),
397
- crl->sig_alg, crl->signature, crl->crl, pkey);
383
+ return ASN1_item_verify(ASN1_ITEM_rptr(X509_CRL_INFO), crl->sig_alg,
384
+ crl->signature, crl->crl, pkey);
398
385
  }
399
386
 
400
- int X509_CRL_get0_by_serial(X509_CRL *crl,
401
- X509_REVOKED **ret, ASN1_INTEGER *serial)
402
- {
403
- return crl_lookup(crl, ret, serial, NULL);
387
+ int X509_CRL_get0_by_serial(X509_CRL *crl, X509_REVOKED **ret,
388
+ ASN1_INTEGER *serial) {
389
+ return crl_lookup(crl, ret, serial, NULL);
404
390
  }
405
391
 
406
- int X509_CRL_get0_by_cert(X509_CRL *crl, X509_REVOKED **ret, X509 *x)
407
- {
408
- return crl_lookup(crl, ret, X509_get_serialNumber(x),
409
- X509_get_issuer_name(x));
392
+ int X509_CRL_get0_by_cert(X509_CRL *crl, X509_REVOKED **ret, X509 *x) {
393
+ return crl_lookup(crl, ret, X509_get_serialNumber(x),
394
+ X509_get_issuer_name(x));
410
395
  }
411
396
 
412
397
  static int crl_revoked_issuer_match(X509_CRL *crl, X509_NAME *nm,
413
- X509_REVOKED *rev)
414
- {
415
- size_t i;
416
-
417
- if (!rev->issuer) {
418
- if (!nm)
419
- return 1;
420
- if (!X509_NAME_cmp(nm, X509_CRL_get_issuer(crl)))
421
- return 1;
422
- return 0;
423
- }
424
-
425
- if (!nm)
426
- nm = X509_CRL_get_issuer(crl);
398
+ X509_REVOKED *rev) {
399
+ size_t i;
427
400
 
428
- for (i = 0; i < sk_GENERAL_NAME_num(rev->issuer); i++) {
429
- GENERAL_NAME *gen = sk_GENERAL_NAME_value(rev->issuer, i);
430
- if (gen->type != GEN_DIRNAME)
431
- continue;
432
- if (!X509_NAME_cmp(nm, gen->d.directoryName))
433
- return 1;
401
+ if (!rev->issuer) {
402
+ if (!nm) {
403
+ return 1;
404
+ }
405
+ if (!X509_NAME_cmp(nm, X509_CRL_get_issuer(crl))) {
406
+ return 1;
434
407
  }
435
408
  return 0;
409
+ }
436
410
 
411
+ if (!nm) {
412
+ nm = X509_CRL_get_issuer(crl);
413
+ }
414
+
415
+ for (i = 0; i < sk_GENERAL_NAME_num(rev->issuer); i++) {
416
+ GENERAL_NAME *gen = sk_GENERAL_NAME_value(rev->issuer, i);
417
+ if (gen->type != GEN_DIRNAME) {
418
+ continue;
419
+ }
420
+ if (!X509_NAME_cmp(nm, gen->d.directoryName)) {
421
+ return 1;
422
+ }
423
+ }
424
+ return 0;
437
425
  }
438
426
 
439
427
  static struct CRYPTO_STATIC_MUTEX g_crl_sort_lock = CRYPTO_STATIC_MUTEX_INIT;
440
428
 
441
429
  static int crl_lookup(X509_CRL *crl, X509_REVOKED **ret, ASN1_INTEGER *serial,
442
- X509_NAME *issuer)
443
- {
444
- X509_REVOKED rtmp, *rev;
445
- size_t idx;
446
- rtmp.serialNumber = serial;
447
- /*
448
- * Sort revoked into serial number order if not already sorted. Do this
449
- * under a lock to avoid race condition.
450
- */
451
-
452
- CRYPTO_STATIC_MUTEX_lock_read(&g_crl_sort_lock);
453
- const int is_sorted = sk_X509_REVOKED_is_sorted(crl->crl->revoked);
454
- CRYPTO_STATIC_MUTEX_unlock_read(&g_crl_sort_lock);
455
-
456
- if (!is_sorted) {
457
- CRYPTO_STATIC_MUTEX_lock_write(&g_crl_sort_lock);
458
- if (!sk_X509_REVOKED_is_sorted(crl->crl->revoked)) {
459
- sk_X509_REVOKED_sort(crl->crl->revoked);
460
- }
461
- CRYPTO_STATIC_MUTEX_unlock_write(&g_crl_sort_lock);
430
+ X509_NAME *issuer) {
431
+ X509_REVOKED rtmp, *rev;
432
+ size_t idx;
433
+ rtmp.serialNumber = serial;
434
+ // Sort revoked into serial number order if not already sorted. Do this
435
+ // under a lock to avoid race condition.
436
+
437
+ CRYPTO_STATIC_MUTEX_lock_read(&g_crl_sort_lock);
438
+ const int is_sorted = sk_X509_REVOKED_is_sorted(crl->crl->revoked);
439
+ CRYPTO_STATIC_MUTEX_unlock_read(&g_crl_sort_lock);
440
+
441
+ if (!is_sorted) {
442
+ CRYPTO_STATIC_MUTEX_lock_write(&g_crl_sort_lock);
443
+ if (!sk_X509_REVOKED_is_sorted(crl->crl->revoked)) {
444
+ sk_X509_REVOKED_sort(crl->crl->revoked);
462
445
  }
446
+ CRYPTO_STATIC_MUTEX_unlock_write(&g_crl_sort_lock);
447
+ }
463
448
 
464
- if (!sk_X509_REVOKED_find(crl->crl->revoked, &idx, &rtmp))
465
- return 0;
466
- /* Need to look for matching name */
467
- for (; idx < sk_X509_REVOKED_num(crl->crl->revoked); idx++) {
468
- rev = sk_X509_REVOKED_value(crl->crl->revoked, idx);
469
- if (ASN1_INTEGER_cmp(rev->serialNumber, serial))
470
- return 0;
471
- if (crl_revoked_issuer_match(crl, issuer, rev)) {
472
- if (ret)
473
- *ret = rev;
474
- if (rev->reason == CRL_REASON_REMOVE_FROM_CRL)
475
- return 2;
476
- return 1;
477
- }
478
- }
449
+ if (!sk_X509_REVOKED_find(crl->crl->revoked, &idx, &rtmp)) {
479
450
  return 0;
451
+ }
452
+ // Need to look for matching name
453
+ for (; idx < sk_X509_REVOKED_num(crl->crl->revoked); idx++) {
454
+ rev = sk_X509_REVOKED_value(crl->crl->revoked, idx);
455
+ if (ASN1_INTEGER_cmp(rev->serialNumber, serial)) {
456
+ return 0;
457
+ }
458
+ if (crl_revoked_issuer_match(crl, issuer, rev)) {
459
+ if (ret) {
460
+ *ret = rev;
461
+ }
462
+ if (rev->reason == CRL_REASON_REMOVE_FROM_CRL) {
463
+ return 2;
464
+ }
465
+ return 1;
466
+ }
467
+ }
468
+ return 0;
480
469
  }