@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
@@ -71,7 +71,7 @@
71
71
 
72
72
  #include "internal.h"
73
73
 
74
- /* Certificate policies extension support: this one is a bit complex... */
74
+ // Certificate policies extension support: this one is a bit complex...
75
75
 
76
76
  static int i2r_certpol(const X509V3_EXT_METHOD *method, void *ext, BIO *out,
77
77
  int indent);
@@ -87,410 +87,435 @@ static POLICYQUALINFO *notice_section(X509V3_CTX *ctx,
87
87
  static int nref_nos(STACK_OF(ASN1_INTEGER) *nnums, STACK_OF(CONF_VALUE) *nos);
88
88
 
89
89
  const X509V3_EXT_METHOD v3_cpols = {
90
- NID_certificate_policies, 0, ASN1_ITEM_ref(CERTIFICATEPOLICIES),
91
- 0, 0, 0, 0,
92
- 0, 0,
93
- 0, 0,
90
+ NID_certificate_policies,
91
+ 0,
92
+ ASN1_ITEM_ref(CERTIFICATEPOLICIES),
93
+ 0,
94
+ 0,
95
+ 0,
96
+ 0,
97
+ 0,
98
+ 0,
99
+ 0,
100
+ 0,
94
101
  i2r_certpol,
95
102
  r2i_certpol,
96
103
  NULL,
97
104
  };
98
105
 
99
- ASN1_ITEM_TEMPLATE(CERTIFICATEPOLICIES) =
100
- ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, CERTIFICATEPOLICIES, POLICYINFO)
106
+ ASN1_ITEM_TEMPLATE(CERTIFICATEPOLICIES) = ASN1_EX_TEMPLATE_TYPE(
107
+ ASN1_TFLG_SEQUENCE_OF, 0, CERTIFICATEPOLICIES, POLICYINFO)
101
108
  ASN1_ITEM_TEMPLATE_END(CERTIFICATEPOLICIES)
102
109
 
103
110
  IMPLEMENT_ASN1_FUNCTIONS(CERTIFICATEPOLICIES)
104
111
 
105
112
  ASN1_SEQUENCE(POLICYINFO) = {
106
- ASN1_SIMPLE(POLICYINFO, policyid, ASN1_OBJECT),
107
- ASN1_SEQUENCE_OF_OPT(POLICYINFO, qualifiers, POLICYQUALINFO),
113
+ ASN1_SIMPLE(POLICYINFO, policyid, ASN1_OBJECT),
114
+ ASN1_SEQUENCE_OF_OPT(POLICYINFO, qualifiers, POLICYQUALINFO),
108
115
  } ASN1_SEQUENCE_END(POLICYINFO)
109
116
 
110
117
  IMPLEMENT_ASN1_FUNCTIONS(POLICYINFO)
111
118
 
112
- ASN1_ADB_TEMPLATE(policydefault) = ASN1_SIMPLE(POLICYQUALINFO, d.other, ASN1_ANY);
119
+ ASN1_ADB_TEMPLATE(policydefault) = ASN1_SIMPLE(POLICYQUALINFO, d.other,
120
+ ASN1_ANY);
113
121
 
114
122
  ASN1_ADB(POLICYQUALINFO) = {
115
- ADB_ENTRY(NID_id_qt_cps, ASN1_SIMPLE(POLICYQUALINFO, d.cpsuri, ASN1_IA5STRING)),
116
- ADB_ENTRY(NID_id_qt_unotice, ASN1_SIMPLE(POLICYQUALINFO, d.usernotice, USERNOTICE)),
123
+ ADB_ENTRY(NID_id_qt_cps,
124
+ ASN1_SIMPLE(POLICYQUALINFO, d.cpsuri, ASN1_IA5STRING)),
125
+ ADB_ENTRY(NID_id_qt_unotice,
126
+ ASN1_SIMPLE(POLICYQUALINFO, d.usernotice, USERNOTICE)),
117
127
  } ASN1_ADB_END(POLICYQUALINFO, 0, pqualid, 0, &policydefault_tt, NULL);
118
128
 
119
129
  ASN1_SEQUENCE(POLICYQUALINFO) = {
120
- ASN1_SIMPLE(POLICYQUALINFO, pqualid, ASN1_OBJECT),
121
- ASN1_ADB_OBJECT(POLICYQUALINFO),
130
+ ASN1_SIMPLE(POLICYQUALINFO, pqualid, ASN1_OBJECT),
131
+ ASN1_ADB_OBJECT(POLICYQUALINFO),
122
132
  } ASN1_SEQUENCE_END(POLICYQUALINFO)
123
133
 
124
134
  IMPLEMENT_ASN1_FUNCTIONS(POLICYQUALINFO)
125
135
 
126
136
  ASN1_SEQUENCE(USERNOTICE) = {
127
- ASN1_OPT(USERNOTICE, noticeref, NOTICEREF),
128
- ASN1_OPT(USERNOTICE, exptext, DISPLAYTEXT),
137
+ ASN1_OPT(USERNOTICE, noticeref, NOTICEREF),
138
+ ASN1_OPT(USERNOTICE, exptext, DISPLAYTEXT),
129
139
  } ASN1_SEQUENCE_END(USERNOTICE)
130
140
 
131
141
  IMPLEMENT_ASN1_FUNCTIONS(USERNOTICE)
132
142
 
133
143
  ASN1_SEQUENCE(NOTICEREF) = {
134
- ASN1_SIMPLE(NOTICEREF, organization, DISPLAYTEXT),
135
- ASN1_SEQUENCE_OF(NOTICEREF, noticenos, ASN1_INTEGER),
144
+ ASN1_SIMPLE(NOTICEREF, organization, DISPLAYTEXT),
145
+ ASN1_SEQUENCE_OF(NOTICEREF, noticenos, ASN1_INTEGER),
136
146
  } ASN1_SEQUENCE_END(NOTICEREF)
137
147
 
138
148
  IMPLEMENT_ASN1_FUNCTIONS(NOTICEREF)
139
149
 
140
150
  static void *r2i_certpol(const X509V3_EXT_METHOD *method, X509V3_CTX *ctx,
141
- const char *value)
142
- {
143
- STACK_OF(POLICYINFO) *pols = NULL;
144
- char *pstr;
145
- POLICYINFO *pol;
146
- ASN1_OBJECT *pobj;
147
- STACK_OF(CONF_VALUE) *vals;
148
- CONF_VALUE *cnf;
149
- size_t i;
150
- int ia5org;
151
- pols = sk_POLICYINFO_new_null();
152
- if (pols == NULL) {
153
- OPENSSL_PUT_ERROR(X509V3, ERR_R_MALLOC_FAILURE);
154
- return NULL;
151
+ const char *value) {
152
+ STACK_OF(POLICYINFO) *pols = NULL;
153
+ char *pstr;
154
+ POLICYINFO *pol;
155
+ ASN1_OBJECT *pobj;
156
+ STACK_OF(CONF_VALUE) *vals;
157
+ CONF_VALUE *cnf;
158
+ size_t i;
159
+ int ia5org;
160
+ pols = sk_POLICYINFO_new_null();
161
+ if (pols == NULL) {
162
+ OPENSSL_PUT_ERROR(X509V3, ERR_R_MALLOC_FAILURE);
163
+ return NULL;
164
+ }
165
+ vals = X509V3_parse_list(value);
166
+ if (vals == NULL) {
167
+ OPENSSL_PUT_ERROR(X509V3, ERR_R_X509V3_LIB);
168
+ goto err;
169
+ }
170
+ ia5org = 0;
171
+ for (i = 0; i < sk_CONF_VALUE_num(vals); i++) {
172
+ cnf = sk_CONF_VALUE_value(vals, i);
173
+ if (cnf->value || !cnf->name) {
174
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_POLICY_IDENTIFIER);
175
+ X509V3_conf_err(cnf);
176
+ goto err;
155
177
  }
156
- vals = X509V3_parse_list(value);
157
- if (vals == NULL) {
158
- OPENSSL_PUT_ERROR(X509V3, ERR_R_X509V3_LIB);
178
+ pstr = cnf->name;
179
+ if (!strcmp(pstr, "ia5org")) {
180
+ ia5org = 1;
181
+ continue;
182
+ } else if (*pstr == '@') {
183
+ STACK_OF(CONF_VALUE) *polsect;
184
+ polsect = X509V3_get_section(ctx, pstr + 1);
185
+ if (!polsect) {
186
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_SECTION);
187
+
188
+ X509V3_conf_err(cnf);
189
+ goto err;
190
+ }
191
+ pol = policy_section(ctx, polsect, ia5org);
192
+ X509V3_section_free(ctx, polsect);
193
+ if (!pol) {
194
+ goto err;
195
+ }
196
+ } else {
197
+ if (!(pobj = OBJ_txt2obj(cnf->name, 0))) {
198
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_OBJECT_IDENTIFIER);
199
+ X509V3_conf_err(cnf);
200
+ goto err;
201
+ }
202
+ pol = POLICYINFO_new();
203
+ if (pol == NULL) {
204
+ OPENSSL_PUT_ERROR(X509V3, ERR_R_MALLOC_FAILURE);
205
+ ASN1_OBJECT_free(pobj);
159
206
  goto err;
207
+ }
208
+ pol->policyid = pobj;
160
209
  }
161
- ia5org = 0;
162
- for (i = 0; i < sk_CONF_VALUE_num(vals); i++) {
163
- cnf = sk_CONF_VALUE_value(vals, i);
164
- if (cnf->value || !cnf->name) {
165
- OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_POLICY_IDENTIFIER);
166
- X509V3_conf_err(cnf);
167
- goto err;
168
- }
169
- pstr = cnf->name;
170
- if (!strcmp(pstr, "ia5org")) {
171
- ia5org = 1;
172
- continue;
173
- } else if (*pstr == '@') {
174
- STACK_OF(CONF_VALUE) *polsect;
175
- polsect = X509V3_get_section(ctx, pstr + 1);
176
- if (!polsect) {
177
- OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_SECTION);
178
-
179
- X509V3_conf_err(cnf);
180
- goto err;
181
- }
182
- pol = policy_section(ctx, polsect, ia5org);
183
- X509V3_section_free(ctx, polsect);
184
- if (!pol)
185
- goto err;
186
- } else {
187
- if (!(pobj = OBJ_txt2obj(cnf->name, 0))) {
188
- OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_OBJECT_IDENTIFIER);
189
- X509V3_conf_err(cnf);
190
- goto err;
191
- }
192
- pol = POLICYINFO_new();
193
- if (pol == NULL) {
194
- OPENSSL_PUT_ERROR(X509V3, ERR_R_MALLOC_FAILURE);
195
- ASN1_OBJECT_free(pobj);
196
- goto err;
197
- }
198
- pol->policyid = pobj;
199
- }
200
- if (!sk_POLICYINFO_push(pols, pol)) {
201
- POLICYINFO_free(pol);
202
- OPENSSL_PUT_ERROR(X509V3, ERR_R_MALLOC_FAILURE);
203
- goto err;
204
- }
210
+ if (!sk_POLICYINFO_push(pols, pol)) {
211
+ POLICYINFO_free(pol);
212
+ OPENSSL_PUT_ERROR(X509V3, ERR_R_MALLOC_FAILURE);
213
+ goto err;
205
214
  }
206
- sk_CONF_VALUE_pop_free(vals, X509V3_conf_free);
207
- return pols;
208
- err:
209
- sk_CONF_VALUE_pop_free(vals, X509V3_conf_free);
210
- sk_POLICYINFO_pop_free(pols, POLICYINFO_free);
211
- return NULL;
215
+ }
216
+ sk_CONF_VALUE_pop_free(vals, X509V3_conf_free);
217
+ return pols;
218
+ err:
219
+ sk_CONF_VALUE_pop_free(vals, X509V3_conf_free);
220
+ sk_POLICYINFO_pop_free(pols, POLICYINFO_free);
221
+ return NULL;
212
222
  }
213
223
 
214
224
  static POLICYINFO *policy_section(X509V3_CTX *ctx,
215
- STACK_OF(CONF_VALUE) *polstrs, int ia5org)
216
- {
217
- size_t i;
218
- CONF_VALUE *cnf;
219
- POLICYINFO *pol;
220
- POLICYQUALINFO *qual;
221
- if (!(pol = POLICYINFO_new()))
225
+ STACK_OF(CONF_VALUE) *polstrs, int ia5org) {
226
+ size_t i;
227
+ CONF_VALUE *cnf;
228
+ POLICYINFO *pol;
229
+ POLICYQUALINFO *qual;
230
+ if (!(pol = POLICYINFO_new())) {
231
+ goto merr;
232
+ }
233
+ for (i = 0; i < sk_CONF_VALUE_num(polstrs); i++) {
234
+ cnf = sk_CONF_VALUE_value(polstrs, i);
235
+ if (!strcmp(cnf->name, "policyIdentifier")) {
236
+ ASN1_OBJECT *pobj;
237
+ if (!(pobj = OBJ_txt2obj(cnf->value, 0))) {
238
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_OBJECT_IDENTIFIER);
239
+ X509V3_conf_err(cnf);
240
+ goto err;
241
+ }
242
+ pol->policyid = pobj;
243
+
244
+ } else if (!x509v3_name_cmp(cnf->name, "CPS")) {
245
+ if (!pol->qualifiers) {
246
+ pol->qualifiers = sk_POLICYQUALINFO_new_null();
247
+ }
248
+ if (!(qual = POLICYQUALINFO_new())) {
222
249
  goto merr;
223
- for (i = 0; i < sk_CONF_VALUE_num(polstrs); i++) {
224
- cnf = sk_CONF_VALUE_value(polstrs, i);
225
- if (!strcmp(cnf->name, "policyIdentifier")) {
226
- ASN1_OBJECT *pobj;
227
- if (!(pobj = OBJ_txt2obj(cnf->value, 0))) {
228
- OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_OBJECT_IDENTIFIER);
229
- X509V3_conf_err(cnf);
230
- goto err;
231
- }
232
- pol->policyid = pobj;
233
-
234
- } else if (!x509v3_name_cmp(cnf->name, "CPS")) {
235
- if (!pol->qualifiers)
236
- pol->qualifiers = sk_POLICYQUALINFO_new_null();
237
- if (!(qual = POLICYQUALINFO_new()))
238
- goto merr;
239
- if (!sk_POLICYQUALINFO_push(pol->qualifiers, qual))
240
- goto merr;
241
- qual->pqualid = OBJ_nid2obj(NID_id_qt_cps);
242
- if (qual->pqualid == NULL) {
243
- OPENSSL_PUT_ERROR(X509V3, ERR_R_INTERNAL_ERROR);
244
- goto err;
245
- }
246
- qual->d.cpsuri = ASN1_IA5STRING_new();
247
- if (qual->d.cpsuri == NULL) {
248
- goto err;
249
- }
250
- if (!ASN1_STRING_set(qual->d.cpsuri, cnf->value,
251
- strlen(cnf->value)))
252
- goto merr;
253
- } else if (!x509v3_name_cmp(cnf->name, "userNotice")) {
254
- STACK_OF(CONF_VALUE) *unot;
255
- if (*cnf->value != '@') {
256
- OPENSSL_PUT_ERROR(X509V3, X509V3_R_EXPECTED_A_SECTION_NAME);
257
- X509V3_conf_err(cnf);
258
- goto err;
259
- }
260
- unot = X509V3_get_section(ctx, cnf->value + 1);
261
- if (!unot) {
262
- OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_SECTION);
263
-
264
- X509V3_conf_err(cnf);
265
- goto err;
266
- }
267
- qual = notice_section(ctx, unot, ia5org);
268
- X509V3_section_free(ctx, unot);
269
- if (!qual)
270
- goto err;
271
- if (!pol->qualifiers)
272
- pol->qualifiers = sk_POLICYQUALINFO_new_null();
273
- if (!sk_POLICYQUALINFO_push(pol->qualifiers, qual))
274
- goto merr;
275
- } else {
276
- OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_OPTION);
277
-
278
- X509V3_conf_err(cnf);
279
- goto err;
280
- }
281
- }
282
- if (!pol->policyid) {
283
- OPENSSL_PUT_ERROR(X509V3, X509V3_R_NO_POLICY_IDENTIFIER);
250
+ }
251
+ if (!sk_POLICYQUALINFO_push(pol->qualifiers, qual)) {
252
+ goto merr;
253
+ }
254
+ qual->pqualid = OBJ_nid2obj(NID_id_qt_cps);
255
+ if (qual->pqualid == NULL) {
256
+ OPENSSL_PUT_ERROR(X509V3, ERR_R_INTERNAL_ERROR);
284
257
  goto err;
285
- }
258
+ }
259
+ qual->d.cpsuri = ASN1_IA5STRING_new();
260
+ if (qual->d.cpsuri == NULL) {
261
+ goto err;
262
+ }
263
+ if (!ASN1_STRING_set(qual->d.cpsuri, cnf->value, strlen(cnf->value))) {
264
+ goto merr;
265
+ }
266
+ } else if (!x509v3_name_cmp(cnf->name, "userNotice")) {
267
+ STACK_OF(CONF_VALUE) *unot;
268
+ if (*cnf->value != '@') {
269
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_EXPECTED_A_SECTION_NAME);
270
+ X509V3_conf_err(cnf);
271
+ goto err;
272
+ }
273
+ unot = X509V3_get_section(ctx, cnf->value + 1);
274
+ if (!unot) {
275
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_SECTION);
286
276
 
287
- return pol;
277
+ X509V3_conf_err(cnf);
278
+ goto err;
279
+ }
280
+ qual = notice_section(ctx, unot, ia5org);
281
+ X509V3_section_free(ctx, unot);
282
+ if (!qual) {
283
+ goto err;
284
+ }
285
+ if (!pol->qualifiers) {
286
+ pol->qualifiers = sk_POLICYQUALINFO_new_null();
287
+ }
288
+ if (!sk_POLICYQUALINFO_push(pol->qualifiers, qual)) {
289
+ goto merr;
290
+ }
291
+ } else {
292
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_OPTION);
288
293
 
289
- merr:
290
- OPENSSL_PUT_ERROR(X509V3, ERR_R_MALLOC_FAILURE);
294
+ X509V3_conf_err(cnf);
295
+ goto err;
296
+ }
297
+ }
298
+ if (!pol->policyid) {
299
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_NO_POLICY_IDENTIFIER);
300
+ goto err;
301
+ }
291
302
 
292
- err:
293
- POLICYINFO_free(pol);
294
- return NULL;
303
+ return pol;
295
304
 
305
+ merr:
306
+ OPENSSL_PUT_ERROR(X509V3, ERR_R_MALLOC_FAILURE);
307
+
308
+ err:
309
+ POLICYINFO_free(pol);
310
+ return NULL;
296
311
  }
297
312
 
298
313
  static POLICYQUALINFO *notice_section(X509V3_CTX *ctx,
299
- STACK_OF(CONF_VALUE) *unot, int ia5org)
300
- {
301
- size_t i;
302
- int ret;
303
- CONF_VALUE *cnf;
304
- USERNOTICE *not;
305
- POLICYQUALINFO *qual;
306
- if (!(qual = POLICYQUALINFO_new()))
314
+ STACK_OF(CONF_VALUE) *unot, int ia5org) {
315
+ size_t i;
316
+ int ret;
317
+ CONF_VALUE *cnf;
318
+ USERNOTICE * not ;
319
+ POLICYQUALINFO *qual;
320
+ if (!(qual = POLICYQUALINFO_new())) {
321
+ goto merr;
322
+ }
323
+ qual->pqualid = OBJ_nid2obj(NID_id_qt_unotice);
324
+ if (qual->pqualid == NULL) {
325
+ OPENSSL_PUT_ERROR(X509V3, ERR_R_INTERNAL_ERROR);
326
+ goto err;
327
+ }
328
+ if (!(not = USERNOTICE_new())) {
329
+ goto merr;
330
+ }
331
+ qual->d.usernotice = not ;
332
+ for (i = 0; i < sk_CONF_VALUE_num(unot); i++) {
333
+ cnf = sk_CONF_VALUE_value(unot, i);
334
+ if (!strcmp(cnf->name, "explicitText")) {
335
+ not ->exptext = ASN1_VISIBLESTRING_new();
336
+ if (not ->exptext == NULL) {
307
337
  goto merr;
308
- qual->pqualid = OBJ_nid2obj(NID_id_qt_unotice);
309
- if (qual->pqualid == NULL) {
310
- OPENSSL_PUT_ERROR(X509V3, ERR_R_INTERNAL_ERROR);
311
- goto err;
312
- }
313
- if (!(not = USERNOTICE_new()))
338
+ }
339
+ if (!ASN1_STRING_set(not ->exptext, cnf->value, strlen(cnf->value))) {
314
340
  goto merr;
315
- qual->d.usernotice = not;
316
- for (i = 0; i < sk_CONF_VALUE_num(unot); i++) {
317
- cnf = sk_CONF_VALUE_value(unot, i);
318
- if (!strcmp(cnf->name, "explicitText")) {
319
- not->exptext = ASN1_VISIBLESTRING_new();
320
- if (not->exptext == NULL)
321
- goto merr;
322
- if (!ASN1_STRING_set(not->exptext, cnf->value,
323
- strlen(cnf->value)))
324
- goto merr;
325
- } else if (!strcmp(cnf->name, "organization")) {
326
- NOTICEREF *nref;
327
- if (!not->noticeref) {
328
- if (!(nref = NOTICEREF_new()))
329
- goto merr;
330
- not->noticeref = nref;
331
- } else
332
- nref = not->noticeref;
333
- if (ia5org)
334
- nref->organization->type = V_ASN1_IA5STRING;
335
- else
336
- nref->organization->type = V_ASN1_VISIBLESTRING;
337
- if (!ASN1_STRING_set(nref->organization, cnf->value,
338
- strlen(cnf->value)))
339
- goto merr;
340
- } else if (!strcmp(cnf->name, "noticeNumbers")) {
341
- NOTICEREF *nref;
342
- STACK_OF(CONF_VALUE) *nos;
343
- if (!not->noticeref) {
344
- if (!(nref = NOTICEREF_new()))
345
- goto merr;
346
- not->noticeref = nref;
347
- } else
348
- nref = not->noticeref;
349
- nos = X509V3_parse_list(cnf->value);
350
- if (!nos || !sk_CONF_VALUE_num(nos)) {
351
- OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_NUMBERS);
352
- X509V3_conf_err(cnf);
353
- goto err;
354
- }
355
- ret = nref_nos(nref->noticenos, nos);
356
- sk_CONF_VALUE_pop_free(nos, X509V3_conf_free);
357
- if (!ret)
358
- goto err;
359
- } else {
360
- OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_OPTION);
361
- X509V3_conf_err(cnf);
362
- goto err;
341
+ }
342
+ } else if (!strcmp(cnf->name, "organization")) {
343
+ NOTICEREF *nref;
344
+ if (!not ->noticeref) {
345
+ if (!(nref = NOTICEREF_new())) {
346
+ goto merr;
363
347
  }
364
- }
365
-
366
- if (not->noticeref &&
367
- (!not->noticeref->noticenos || !not->noticeref->organization)) {
368
- OPENSSL_PUT_ERROR(X509V3, X509V3_R_NEED_ORGANIZATION_AND_NUMBERS);
348
+ not ->noticeref = nref;
349
+ } else {
350
+ nref = not ->noticeref;
351
+ }
352
+ if (ia5org) {
353
+ nref->organization->type = V_ASN1_IA5STRING;
354
+ } else {
355
+ nref->organization->type = V_ASN1_VISIBLESTRING;
356
+ }
357
+ if (!ASN1_STRING_set(nref->organization, cnf->value,
358
+ strlen(cnf->value))) {
359
+ goto merr;
360
+ }
361
+ } else if (!strcmp(cnf->name, "noticeNumbers")) {
362
+ NOTICEREF *nref;
363
+ STACK_OF(CONF_VALUE) *nos;
364
+ if (!not ->noticeref) {
365
+ if (!(nref = NOTICEREF_new())) {
366
+ goto merr;
367
+ }
368
+ not ->noticeref = nref;
369
+ } else {
370
+ nref = not ->noticeref;
371
+ }
372
+ nos = X509V3_parse_list(cnf->value);
373
+ if (!nos || !sk_CONF_VALUE_num(nos)) {
374
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_NUMBERS);
375
+ X509V3_conf_err(cnf);
376
+ goto err;
377
+ }
378
+ ret = nref_nos(nref->noticenos, nos);
379
+ sk_CONF_VALUE_pop_free(nos, X509V3_conf_free);
380
+ if (!ret) {
369
381
  goto err;
382
+ }
383
+ } else {
384
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_OPTION);
385
+ X509V3_conf_err(cnf);
386
+ goto err;
370
387
  }
388
+ }
371
389
 
372
- return qual;
390
+ if (not ->noticeref &&
391
+ (!not ->noticeref->noticenos || !not ->noticeref->organization)) {
392
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_NEED_ORGANIZATION_AND_NUMBERS);
393
+ goto err;
394
+ }
373
395
 
374
- merr:
375
- OPENSSL_PUT_ERROR(X509V3, ERR_R_MALLOC_FAILURE);
396
+ return qual;
376
397
 
377
- err:
378
- POLICYQUALINFO_free(qual);
379
- return NULL;
398
+ merr:
399
+ OPENSSL_PUT_ERROR(X509V3, ERR_R_MALLOC_FAILURE);
400
+
401
+ err:
402
+ POLICYQUALINFO_free(qual);
403
+ return NULL;
380
404
  }
381
405
 
382
- static int nref_nos(STACK_OF(ASN1_INTEGER) *nnums, STACK_OF(CONF_VALUE) *nos)
383
- {
384
- CONF_VALUE *cnf;
385
- ASN1_INTEGER *aint;
406
+ static int nref_nos(STACK_OF(ASN1_INTEGER) *nnums, STACK_OF(CONF_VALUE) *nos) {
407
+ CONF_VALUE *cnf;
408
+ ASN1_INTEGER *aint;
386
409
 
387
- size_t i;
410
+ size_t i;
388
411
 
389
- for (i = 0; i < sk_CONF_VALUE_num(nos); i++) {
390
- cnf = sk_CONF_VALUE_value(nos, i);
391
- if (!(aint = s2i_ASN1_INTEGER(NULL, cnf->name))) {
392
- OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_NUMBER);
393
- goto err;
394
- }
395
- if (!sk_ASN1_INTEGER_push(nnums, aint))
396
- goto merr;
412
+ for (i = 0; i < sk_CONF_VALUE_num(nos); i++) {
413
+ cnf = sk_CONF_VALUE_value(nos, i);
414
+ if (!(aint = s2i_ASN1_INTEGER(NULL, cnf->name))) {
415
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_NUMBER);
416
+ goto err;
397
417
  }
398
- return 1;
418
+ if (!sk_ASN1_INTEGER_push(nnums, aint)) {
419
+ goto merr;
420
+ }
421
+ }
422
+ return 1;
399
423
 
400
- merr:
401
- ASN1_INTEGER_free(aint);
402
- OPENSSL_PUT_ERROR(X509V3, ERR_R_MALLOC_FAILURE);
424
+ merr:
425
+ ASN1_INTEGER_free(aint);
426
+ OPENSSL_PUT_ERROR(X509V3, ERR_R_MALLOC_FAILURE);
403
427
 
404
- err:
405
- return 0;
428
+ err:
429
+ return 0;
406
430
  }
407
431
 
408
- static int i2r_certpol(const X509V3_EXT_METHOD *method, void *ext,
409
- BIO *out, int indent)
410
- {
411
- const STACK_OF(POLICYINFO) *pol = ext;
412
- /* First print out the policy OIDs */
413
- for (size_t i = 0; i < sk_POLICYINFO_num(pol); i++) {
414
- const POLICYINFO *pinfo = sk_POLICYINFO_value(pol, i);
415
- BIO_printf(out, "%*sPolicy: ", indent, "");
416
- i2a_ASN1_OBJECT(out, pinfo->policyid);
417
- BIO_puts(out, "\n");
418
- if (pinfo->qualifiers)
419
- print_qualifiers(out, pinfo->qualifiers, indent + 2);
432
+ static int i2r_certpol(const X509V3_EXT_METHOD *method, void *ext, BIO *out,
433
+ int indent) {
434
+ const STACK_OF(POLICYINFO) *pol = ext;
435
+ // First print out the policy OIDs
436
+ for (size_t i = 0; i < sk_POLICYINFO_num(pol); i++) {
437
+ const POLICYINFO *pinfo = sk_POLICYINFO_value(pol, i);
438
+ BIO_printf(out, "%*sPolicy: ", indent, "");
439
+ i2a_ASN1_OBJECT(out, pinfo->policyid);
440
+ BIO_puts(out, "\n");
441
+ if (pinfo->qualifiers) {
442
+ print_qualifiers(out, pinfo->qualifiers, indent + 2);
420
443
  }
421
- return 1;
444
+ }
445
+ return 1;
422
446
  }
423
447
 
424
448
  static void print_qualifiers(BIO *out, const STACK_OF(POLICYQUALINFO) *quals,
425
- int indent)
426
- {
427
- for (size_t i = 0; i < sk_POLICYQUALINFO_num(quals); i++) {
428
- const POLICYQUALINFO *qualinfo = sk_POLICYQUALINFO_value(quals, i);
429
- switch (OBJ_obj2nid(qualinfo->pqualid)) {
430
- case NID_id_qt_cps:
431
- BIO_printf(out, "%*sCPS: %.*s\n", indent, "",
432
- qualinfo->d.cpsuri->length, qualinfo->d.cpsuri->data);
433
- break;
434
-
435
- case NID_id_qt_unotice:
436
- BIO_printf(out, "%*sUser Notice:\n", indent, "");
437
- print_notice(out, qualinfo->d.usernotice, indent + 2);
438
- break;
439
-
440
- default:
441
- BIO_printf(out, "%*sUnknown Qualifier: ", indent + 2, "");
442
-
443
- i2a_ASN1_OBJECT(out, qualinfo->pqualid);
444
- BIO_puts(out, "\n");
445
- break;
446
- }
449
+ int indent) {
450
+ for (size_t i = 0; i < sk_POLICYQUALINFO_num(quals); i++) {
451
+ const POLICYQUALINFO *qualinfo = sk_POLICYQUALINFO_value(quals, i);
452
+ switch (OBJ_obj2nid(qualinfo->pqualid)) {
453
+ case NID_id_qt_cps:
454
+ BIO_printf(out, "%*sCPS: %.*s\n", indent, "",
455
+ qualinfo->d.cpsuri->length, qualinfo->d.cpsuri->data);
456
+ break;
457
+
458
+ case NID_id_qt_unotice:
459
+ BIO_printf(out, "%*sUser Notice:\n", indent, "");
460
+ print_notice(out, qualinfo->d.usernotice, indent + 2);
461
+ break;
462
+
463
+ default:
464
+ BIO_printf(out, "%*sUnknown Qualifier: ", indent + 2, "");
465
+
466
+ i2a_ASN1_OBJECT(out, qualinfo->pqualid);
467
+ BIO_puts(out, "\n");
468
+ break;
447
469
  }
470
+ }
448
471
  }
449
472
 
450
- static void print_notice(BIO *out, const USERNOTICE *notice, int indent)
451
- {
452
- if (notice->noticeref) {
453
- NOTICEREF *ref;
454
- ref = notice->noticeref;
455
- BIO_printf(out, "%*sOrganization: %.*s\n", indent, "",
456
- ref->organization->length, ref->organization->data);
457
- BIO_printf(out, "%*sNumber%s: ", indent, "",
458
- sk_ASN1_INTEGER_num(ref->noticenos) > 1 ? "s" : "");
459
- for (size_t i = 0; i < sk_ASN1_INTEGER_num(ref->noticenos); i++) {
460
- ASN1_INTEGER *num;
461
- char *tmp;
462
- num = sk_ASN1_INTEGER_value(ref->noticenos, i);
463
- if (i)
464
- BIO_puts(out, ", ");
465
- if (num == NULL)
466
- BIO_puts(out, "(null)");
467
- else {
468
- tmp = i2s_ASN1_INTEGER(NULL, num);
469
- if (tmp == NULL)
470
- return;
471
- BIO_puts(out, tmp);
472
- OPENSSL_free(tmp);
473
- }
473
+ static void print_notice(BIO *out, const USERNOTICE *notice, int indent) {
474
+ if (notice->noticeref) {
475
+ NOTICEREF *ref;
476
+ ref = notice->noticeref;
477
+ BIO_printf(out, "%*sOrganization: %.*s\n", indent, "",
478
+ ref->organization->length, ref->organization->data);
479
+ BIO_printf(out, "%*sNumber%s: ", indent, "",
480
+ sk_ASN1_INTEGER_num(ref->noticenos) > 1 ? "s" : "");
481
+ for (size_t i = 0; i < sk_ASN1_INTEGER_num(ref->noticenos); i++) {
482
+ ASN1_INTEGER *num;
483
+ char *tmp;
484
+ num = sk_ASN1_INTEGER_value(ref->noticenos, i);
485
+ if (i) {
486
+ BIO_puts(out, ", ");
487
+ }
488
+ if (num == NULL) {
489
+ BIO_puts(out, "(null)");
490
+ } else {
491
+ tmp = i2s_ASN1_INTEGER(NULL, num);
492
+ if (tmp == NULL) {
493
+ return;
474
494
  }
475
- BIO_puts(out, "\n");
495
+ BIO_puts(out, tmp);
496
+ OPENSSL_free(tmp);
497
+ }
476
498
  }
477
- if (notice->exptext)
478
- BIO_printf(out, "%*sExplicit Text: %.*s\n", indent, "",
479
- notice->exptext->length, notice->exptext->data);
499
+ BIO_puts(out, "\n");
500
+ }
501
+ if (notice->exptext) {
502
+ BIO_printf(out, "%*sExplicit Text: %.*s\n", indent, "",
503
+ notice->exptext->length, notice->exptext->data);
504
+ }
480
505
  }
481
506
 
482
- void X509_POLICY_NODE_print(BIO *out, X509_POLICY_NODE *node, int indent)
483
- {
484
- const X509_POLICY_DATA *dat = node->data;
507
+ void X509_POLICY_NODE_print(BIO *out, X509_POLICY_NODE *node, int indent) {
508
+ const X509_POLICY_DATA *dat = node->data;
485
509
 
486
- BIO_printf(out, "%*sPolicy: ", indent, "");
510
+ BIO_printf(out, "%*sPolicy: ", indent, "");
487
511
 
488
- i2a_ASN1_OBJECT(out, dat->valid_policy);
489
- BIO_puts(out, "\n");
490
- BIO_printf(out, "%*s%s\n", indent + 2, "",
491
- node_data_critical(dat) ? "Critical" : "Non Critical");
492
- if (dat->qualifier_set)
493
- print_qualifiers(out, dat->qualifier_set, indent + 2);
494
- else
495
- BIO_printf(out, "%*sNo Qualifiers\n", indent + 2, "");
512
+ i2a_ASN1_OBJECT(out, dat->valid_policy);
513
+ BIO_puts(out, "\n");
514
+ BIO_printf(out, "%*s%s\n", indent + 2, "",
515
+ node_data_critical(dat) ? "Critical" : "Non Critical");
516
+ if (dat->qualifier_set) {
517
+ print_qualifiers(out, dat->qualifier_set, indent + 2);
518
+ } else {
519
+ BIO_printf(out, "%*sNo Qualifiers\n", indent + 2, "");
520
+ }
496
521
  }