@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
@@ -68,321 +68,335 @@
68
68
 
69
69
 
70
70
  int X509_NAME_get_text_by_NID(const X509_NAME *name, int nid, char *buf,
71
- int len)
72
- {
73
- const ASN1_OBJECT *obj;
74
-
75
- obj = OBJ_nid2obj(nid);
76
- if (obj == NULL)
77
- return (-1);
78
- return (X509_NAME_get_text_by_OBJ(name, obj, buf, len));
71
+ int len) {
72
+ const ASN1_OBJECT *obj;
73
+
74
+ obj = OBJ_nid2obj(nid);
75
+ if (obj == NULL) {
76
+ return -1;
77
+ }
78
+ return (X509_NAME_get_text_by_OBJ(name, obj, buf, len));
79
79
  }
80
80
 
81
81
  int X509_NAME_get_text_by_OBJ(const X509_NAME *name, const ASN1_OBJECT *obj,
82
- char *buf, int len)
83
- {
84
- int i;
85
- ASN1_STRING *data;
86
-
87
- i = X509_NAME_get_index_by_OBJ(name, obj, -1);
88
- if (i < 0)
89
- return (-1);
90
- data = X509_NAME_ENTRY_get_data(X509_NAME_get_entry(name, i));
91
- i = (data->length > (len - 1)) ? (len - 1) : data->length;
92
- if (buf == NULL)
93
- return (data->length);
94
- OPENSSL_memcpy(buf, data->data, i);
95
- buf[i] = '\0';
96
- return (i);
82
+ char *buf, int len) {
83
+ int i;
84
+ ASN1_STRING *data;
85
+
86
+ i = X509_NAME_get_index_by_OBJ(name, obj, -1);
87
+ if (i < 0) {
88
+ return -1;
89
+ }
90
+ data = X509_NAME_ENTRY_get_data(X509_NAME_get_entry(name, i));
91
+ i = (data->length > (len - 1)) ? (len - 1) : data->length;
92
+ if (buf == NULL) {
93
+ return data->length;
94
+ }
95
+ OPENSSL_memcpy(buf, data->data, i);
96
+ buf[i] = '\0';
97
+ return i;
97
98
  }
98
99
 
99
- int X509_NAME_entry_count(const X509_NAME *name)
100
- {
101
- if (name == NULL)
102
- return (0);
103
- return (sk_X509_NAME_ENTRY_num(name->entries));
100
+ int X509_NAME_entry_count(const X509_NAME *name) {
101
+ if (name == NULL) {
102
+ return 0;
103
+ }
104
+ return (sk_X509_NAME_ENTRY_num(name->entries));
104
105
  }
105
106
 
106
- int X509_NAME_get_index_by_NID(const X509_NAME *name, int nid, int lastpos)
107
- {
108
- const ASN1_OBJECT *obj;
107
+ int X509_NAME_get_index_by_NID(const X509_NAME *name, int nid, int lastpos) {
108
+ const ASN1_OBJECT *obj;
109
109
 
110
- obj = OBJ_nid2obj(nid);
111
- if (obj == NULL)
112
- return (-2);
113
- return (X509_NAME_get_index_by_OBJ(name, obj, lastpos));
110
+ obj = OBJ_nid2obj(nid);
111
+ if (obj == NULL) {
112
+ return -2;
113
+ }
114
+ return (X509_NAME_get_index_by_OBJ(name, obj, lastpos));
114
115
  }
115
116
 
116
- /* NOTE: you should be passsing -1, not 0 as lastpos */
117
+ // NOTE: you should be passsing -1, not 0 as lastpos
117
118
  int X509_NAME_get_index_by_OBJ(const X509_NAME *name, const ASN1_OBJECT *obj,
118
- int lastpos)
119
- {
120
- int n;
121
- X509_NAME_ENTRY *ne;
122
- STACK_OF(X509_NAME_ENTRY) *sk;
123
-
124
- if (name == NULL)
125
- return (-1);
126
- if (lastpos < 0)
127
- lastpos = -1;
128
- sk = name->entries;
129
- n = sk_X509_NAME_ENTRY_num(sk);
130
- for (lastpos++; lastpos < n; lastpos++) {
131
- ne = sk_X509_NAME_ENTRY_value(sk, lastpos);
132
- if (OBJ_cmp(ne->object, obj) == 0)
133
- return (lastpos);
119
+ int lastpos) {
120
+ int n;
121
+ X509_NAME_ENTRY *ne;
122
+ STACK_OF(X509_NAME_ENTRY) *sk;
123
+
124
+ if (name == NULL) {
125
+ return -1;
126
+ }
127
+ if (lastpos < 0) {
128
+ lastpos = -1;
129
+ }
130
+ sk = name->entries;
131
+ n = sk_X509_NAME_ENTRY_num(sk);
132
+ for (lastpos++; lastpos < n; lastpos++) {
133
+ ne = sk_X509_NAME_ENTRY_value(sk, lastpos);
134
+ if (OBJ_cmp(ne->object, obj) == 0) {
135
+ return lastpos;
134
136
  }
135
- return (-1);
137
+ }
138
+ return -1;
136
139
  }
137
140
 
138
- X509_NAME_ENTRY *X509_NAME_get_entry(const X509_NAME *name, int loc)
139
- {
140
- if (name == NULL || loc < 0
141
- || sk_X509_NAME_ENTRY_num(name->entries) <= (size_t)loc)
142
- return (NULL);
143
- else
144
- return (sk_X509_NAME_ENTRY_value(name->entries, loc));
141
+ X509_NAME_ENTRY *X509_NAME_get_entry(const X509_NAME *name, int loc) {
142
+ if (name == NULL || loc < 0 ||
143
+ sk_X509_NAME_ENTRY_num(name->entries) <= (size_t)loc) {
144
+ return NULL;
145
+ } else {
146
+ return (sk_X509_NAME_ENTRY_value(name->entries, loc));
147
+ }
145
148
  }
146
149
 
147
- X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc)
148
- {
149
- X509_NAME_ENTRY *ret;
150
- int i, n, set_prev, set_next;
151
- STACK_OF(X509_NAME_ENTRY) *sk;
152
-
153
- if (name == NULL || loc < 0
154
- || sk_X509_NAME_ENTRY_num(name->entries) <= (size_t)loc)
155
- return (NULL);
156
- sk = name->entries;
157
- ret = sk_X509_NAME_ENTRY_delete(sk, loc);
158
- n = sk_X509_NAME_ENTRY_num(sk);
159
- name->modified = 1;
160
- if (loc == n)
161
- return (ret);
162
-
163
- /* else we need to fixup the set field */
164
- if (loc != 0)
165
- set_prev = (sk_X509_NAME_ENTRY_value(sk, loc - 1))->set;
166
- else
167
- set_prev = ret->set - 1;
168
- set_next = sk_X509_NAME_ENTRY_value(sk, loc)->set;
169
-
170
- /*
171
- * set_prev is the previous set set is the current set set_next is the
172
- * following prev 1 1 1 1 1 1 1 1 set 1 1 2 2 next 1 1 2 2 2 2 3 2 so
173
- * basically only if prev and next differ by 2, then re-number down by 1
174
- */
175
- if (set_prev + 1 < set_next)
176
- for (i = loc; i < n; i++)
177
- sk_X509_NAME_ENTRY_value(sk, i)->set--;
178
- return (ret);
150
+ X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc) {
151
+ X509_NAME_ENTRY *ret;
152
+ int i, n, set_prev, set_next;
153
+ STACK_OF(X509_NAME_ENTRY) *sk;
154
+
155
+ if (name == NULL || loc < 0 ||
156
+ sk_X509_NAME_ENTRY_num(name->entries) <= (size_t)loc) {
157
+ return NULL;
158
+ }
159
+ sk = name->entries;
160
+ ret = sk_X509_NAME_ENTRY_delete(sk, loc);
161
+ n = sk_X509_NAME_ENTRY_num(sk);
162
+ name->modified = 1;
163
+ if (loc == n) {
164
+ return ret;
165
+ }
166
+
167
+ // else we need to fixup the set field
168
+ if (loc != 0) {
169
+ set_prev = (sk_X509_NAME_ENTRY_value(sk, loc - 1))->set;
170
+ } else {
171
+ set_prev = ret->set - 1;
172
+ }
173
+ set_next = sk_X509_NAME_ENTRY_value(sk, loc)->set;
174
+
175
+ // set_prev is the previous set set is the current set set_next is the
176
+ // following prev 1 1 1 1 1 1 1 1 set 1 1 2 2 next 1 1 2 2 2 2 3 2 so
177
+ // basically only if prev and next differ by 2, then re-number down by 1
178
+ if (set_prev + 1 < set_next) {
179
+ for (i = loc; i < n; i++) {
180
+ sk_X509_NAME_ENTRY_value(sk, i)->set--;
181
+ }
182
+ }
183
+ return ret;
179
184
  }
180
185
 
181
186
  int X509_NAME_add_entry_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, int type,
182
187
  const unsigned char *bytes, int len, int loc,
183
- int set)
184
- {
185
- X509_NAME_ENTRY *ne;
186
- int ret;
187
- ne = X509_NAME_ENTRY_create_by_OBJ(NULL, obj, type, bytes, len);
188
- if (!ne)
189
- return 0;
190
- ret = X509_NAME_add_entry(name, ne, loc, set);
191
- X509_NAME_ENTRY_free(ne);
192
- return ret;
188
+ int set) {
189
+ X509_NAME_ENTRY *ne;
190
+ int ret;
191
+ ne = X509_NAME_ENTRY_create_by_OBJ(NULL, obj, type, bytes, len);
192
+ if (!ne) {
193
+ return 0;
194
+ }
195
+ ret = X509_NAME_add_entry(name, ne, loc, set);
196
+ X509_NAME_ENTRY_free(ne);
197
+ return ret;
193
198
  }
194
199
 
195
200
  int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type,
196
201
  const unsigned char *bytes, int len, int loc,
197
- int set)
198
- {
199
- X509_NAME_ENTRY *ne;
200
- int ret;
201
- ne = X509_NAME_ENTRY_create_by_NID(NULL, nid, type, bytes, len);
202
- if (!ne)
203
- return 0;
204
- ret = X509_NAME_add_entry(name, ne, loc, set);
205
- X509_NAME_ENTRY_free(ne);
206
- return ret;
202
+ int set) {
203
+ X509_NAME_ENTRY *ne;
204
+ int ret;
205
+ ne = X509_NAME_ENTRY_create_by_NID(NULL, nid, type, bytes, len);
206
+ if (!ne) {
207
+ return 0;
208
+ }
209
+ ret = X509_NAME_add_entry(name, ne, loc, set);
210
+ X509_NAME_ENTRY_free(ne);
211
+ return ret;
207
212
  }
208
213
 
209
214
  int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type,
210
215
  const unsigned char *bytes, int len, int loc,
211
- int set)
212
- {
213
- X509_NAME_ENTRY *ne;
214
- int ret;
215
- ne = X509_NAME_ENTRY_create_by_txt(NULL, field, type, bytes, len);
216
- if (!ne)
217
- return 0;
218
- ret = X509_NAME_add_entry(name, ne, loc, set);
219
- X509_NAME_ENTRY_free(ne);
220
- return ret;
216
+ int set) {
217
+ X509_NAME_ENTRY *ne;
218
+ int ret;
219
+ ne = X509_NAME_ENTRY_create_by_txt(NULL, field, type, bytes, len);
220
+ if (!ne) {
221
+ return 0;
222
+ }
223
+ ret = X509_NAME_add_entry(name, ne, loc, set);
224
+ X509_NAME_ENTRY_free(ne);
225
+ return ret;
221
226
  }
222
227
 
223
- /*
224
- * if set is -1, append to previous set, 0 'a new one', and 1, prepend to the
225
- * guy we are about to stomp on.
226
- */
228
+ // if set is -1, append to previous set, 0 'a new one', and 1, prepend to the
229
+ // guy we are about to stomp on.
227
230
  int X509_NAME_add_entry(X509_NAME *name, X509_NAME_ENTRY *ne, int loc,
228
- int set)
229
- {
230
- X509_NAME_ENTRY *new_name = NULL;
231
- int n, i, inc;
232
- STACK_OF(X509_NAME_ENTRY) *sk;
233
-
234
- if (name == NULL)
235
- return (0);
236
- sk = name->entries;
237
- n = sk_X509_NAME_ENTRY_num(sk);
238
- if (loc > n)
239
- loc = n;
240
- else if (loc < 0)
241
- loc = n;
242
-
243
- inc = (set == 0);
244
- name->modified = 1;
245
-
246
- if (set == -1) {
247
- if (loc == 0) {
248
- set = 0;
249
- inc = 1;
250
- } else {
251
- set = sk_X509_NAME_ENTRY_value(sk, loc - 1)->set;
252
- }
253
- } else { /* if (set >= 0) */
254
-
255
- if (loc >= n) {
256
- if (loc != 0)
257
- set = sk_X509_NAME_ENTRY_value(sk, loc - 1)->set + 1;
258
- else
259
- set = 0;
260
- } else
261
- set = sk_X509_NAME_ENTRY_value(sk, loc)->set;
231
+ int set) {
232
+ X509_NAME_ENTRY *new_name = NULL;
233
+ int n, i, inc;
234
+ STACK_OF(X509_NAME_ENTRY) *sk;
235
+
236
+ if (name == NULL) {
237
+ return 0;
238
+ }
239
+ sk = name->entries;
240
+ n = sk_X509_NAME_ENTRY_num(sk);
241
+ if (loc > n) {
242
+ loc = n;
243
+ } else if (loc < 0) {
244
+ loc = n;
245
+ }
246
+
247
+ inc = (set == 0);
248
+ name->modified = 1;
249
+
250
+ if (set == -1) {
251
+ if (loc == 0) {
252
+ set = 0;
253
+ inc = 1;
254
+ } else {
255
+ set = sk_X509_NAME_ENTRY_value(sk, loc - 1)->set;
262
256
  }
263
-
264
- if ((new_name = X509_NAME_ENTRY_dup(ne)) == NULL)
265
- goto err;
266
- new_name->set = set;
267
- if (!sk_X509_NAME_ENTRY_insert(sk, new_name, loc)) {
268
- OPENSSL_PUT_ERROR(X509, ERR_R_MALLOC_FAILURE);
269
- goto err;
257
+ } else { // if (set >= 0)
258
+
259
+ if (loc >= n) {
260
+ if (loc != 0) {
261
+ set = sk_X509_NAME_ENTRY_value(sk, loc - 1)->set + 1;
262
+ } else {
263
+ set = 0;
264
+ }
265
+ } else {
266
+ set = sk_X509_NAME_ENTRY_value(sk, loc)->set;
270
267
  }
271
- if (inc) {
272
- n = sk_X509_NAME_ENTRY_num(sk);
273
- for (i = loc + 1; i < n; i++)
274
- sk_X509_NAME_ENTRY_value(sk, i)->set += 1;
268
+ }
269
+
270
+ if ((new_name = X509_NAME_ENTRY_dup(ne)) == NULL) {
271
+ goto err;
272
+ }
273
+ new_name->set = set;
274
+ if (!sk_X509_NAME_ENTRY_insert(sk, new_name, loc)) {
275
+ OPENSSL_PUT_ERROR(X509, ERR_R_MALLOC_FAILURE);
276
+ goto err;
277
+ }
278
+ if (inc) {
279
+ n = sk_X509_NAME_ENTRY_num(sk);
280
+ for (i = loc + 1; i < n; i++) {
281
+ sk_X509_NAME_ENTRY_value(sk, i)->set += 1;
275
282
  }
276
- return (1);
277
- err:
278
- if (new_name != NULL)
279
- X509_NAME_ENTRY_free(new_name);
280
- return (0);
283
+ }
284
+ return 1;
285
+ err:
286
+ if (new_name != NULL) {
287
+ X509_NAME_ENTRY_free(new_name);
288
+ }
289
+ return 0;
281
290
  }
282
291
 
283
292
  X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne,
284
293
  const char *field, int type,
285
294
  const unsigned char *bytes,
286
- int len)
287
- {
288
- ASN1_OBJECT *obj;
289
- X509_NAME_ENTRY *nentry;
290
-
291
- obj = OBJ_txt2obj(field, 0);
292
- if (obj == NULL) {
293
- OPENSSL_PUT_ERROR(X509, X509_R_INVALID_FIELD_NAME);
294
- ERR_add_error_data(2, "name=", field);
295
- return (NULL);
296
- }
297
- nentry = X509_NAME_ENTRY_create_by_OBJ(ne, obj, type, bytes, len);
298
- ASN1_OBJECT_free(obj);
299
- return nentry;
295
+ int len) {
296
+ ASN1_OBJECT *obj;
297
+ X509_NAME_ENTRY *nentry;
298
+
299
+ obj = OBJ_txt2obj(field, 0);
300
+ if (obj == NULL) {
301
+ OPENSSL_PUT_ERROR(X509, X509_R_INVALID_FIELD_NAME);
302
+ ERR_add_error_data(2, "name=", field);
303
+ return NULL;
304
+ }
305
+ nentry = X509_NAME_ENTRY_create_by_OBJ(ne, obj, type, bytes, len);
306
+ ASN1_OBJECT_free(obj);
307
+ return nentry;
300
308
  }
301
309
 
302
310
  X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid,
303
311
  int type,
304
312
  const unsigned char *bytes,
305
- int len)
306
- {
307
- const ASN1_OBJECT *obj = OBJ_nid2obj(nid);
308
- if (obj == NULL) {
309
- OPENSSL_PUT_ERROR(X509, X509_R_UNKNOWN_NID);
310
- return NULL;
311
- }
312
- return X509_NAME_ENTRY_create_by_OBJ(ne, obj, type, bytes, len);
313
+ int len) {
314
+ const ASN1_OBJECT *obj = OBJ_nid2obj(nid);
315
+ if (obj == NULL) {
316
+ OPENSSL_PUT_ERROR(X509, X509_R_UNKNOWN_NID);
317
+ return NULL;
318
+ }
319
+ return X509_NAME_ENTRY_create_by_OBJ(ne, obj, type, bytes, len);
313
320
  }
314
321
 
315
322
  X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne,
316
- const ASN1_OBJECT *obj,
317
- int type,
323
+ const ASN1_OBJECT *obj, int type,
318
324
  const unsigned char *bytes,
319
- int len)
320
- {
321
- X509_NAME_ENTRY *ret;
322
-
323
- if ((ne == NULL) || (*ne == NULL)) {
324
- if ((ret = X509_NAME_ENTRY_new()) == NULL)
325
- return (NULL);
326
- } else
327
- ret = *ne;
328
-
329
- if (!X509_NAME_ENTRY_set_object(ret, obj))
330
- goto err;
331
- if (!X509_NAME_ENTRY_set_data(ret, type, bytes, len))
332
- goto err;
333
-
334
- if ((ne != NULL) && (*ne == NULL))
335
- *ne = ret;
336
- return (ret);
337
- err:
338
- if ((ne == NULL) || (ret != *ne))
339
- X509_NAME_ENTRY_free(ret);
340
- return (NULL);
341
- }
325
+ int len) {
326
+ X509_NAME_ENTRY *ret;
342
327
 
343
- int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, const ASN1_OBJECT *obj)
344
- {
345
- if ((ne == NULL) || (obj == NULL)) {
346
- OPENSSL_PUT_ERROR(X509, ERR_R_PASSED_NULL_PARAMETER);
347
- return (0);
328
+ if ((ne == NULL) || (*ne == NULL)) {
329
+ if ((ret = X509_NAME_ENTRY_new()) == NULL) {
330
+ return NULL;
348
331
  }
349
- ASN1_OBJECT_free(ne->object);
350
- ne->object = OBJ_dup(obj);
351
- return ((ne->object == NULL) ? 0 : 1);
332
+ } else {
333
+ ret = *ne;
334
+ }
335
+
336
+ if (!X509_NAME_ENTRY_set_object(ret, obj)) {
337
+ goto err;
338
+ }
339
+ if (!X509_NAME_ENTRY_set_data(ret, type, bytes, len)) {
340
+ goto err;
341
+ }
342
+
343
+ if ((ne != NULL) && (*ne == NULL)) {
344
+ *ne = ret;
345
+ }
346
+ return ret;
347
+ err:
348
+ if ((ne == NULL) || (ret != *ne)) {
349
+ X509_NAME_ENTRY_free(ret);
350
+ }
351
+ return NULL;
352
+ }
353
+
354
+ int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, const ASN1_OBJECT *obj) {
355
+ if ((ne == NULL) || (obj == NULL)) {
356
+ OPENSSL_PUT_ERROR(X509, ERR_R_PASSED_NULL_PARAMETER);
357
+ return 0;
358
+ }
359
+ ASN1_OBJECT_free(ne->object);
360
+ ne->object = OBJ_dup(obj);
361
+ return ((ne->object == NULL) ? 0 : 1);
352
362
  }
353
363
 
354
364
  int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type,
355
- const unsigned char *bytes, int len)
356
- {
357
- int i;
358
-
359
- if ((ne == NULL) || ((bytes == NULL) && (len != 0)))
360
- return (0);
361
- if ((type > 0) && (type & MBSTRING_FLAG))
362
- return ASN1_STRING_set_by_NID(&ne->value, bytes,
363
- len, type,
364
- OBJ_obj2nid(ne->object)) ? 1 : 0;
365
- if (len < 0)
366
- len = strlen((const char *)bytes);
367
- i = ASN1_STRING_set(ne->value, bytes, len);
368
- if (!i)
369
- return (0);
370
- if (type != V_ASN1_UNDEF) {
371
- ne->value->type = type;
372
- }
373
- return (1);
365
+ const unsigned char *bytes, int len) {
366
+ int i;
367
+
368
+ if ((ne == NULL) || ((bytes == NULL) && (len != 0))) {
369
+ return 0;
370
+ }
371
+ if ((type > 0) && (type & MBSTRING_FLAG)) {
372
+ return ASN1_STRING_set_by_NID(&ne->value, bytes, len, type,
373
+ OBJ_obj2nid(ne->object))
374
+ ? 1
375
+ : 0;
376
+ }
377
+ if (len < 0) {
378
+ len = strlen((const char *)bytes);
379
+ }
380
+ i = ASN1_STRING_set(ne->value, bytes, len);
381
+ if (!i) {
382
+ return 0;
383
+ }
384
+ if (type != V_ASN1_UNDEF) {
385
+ ne->value->type = type;
386
+ }
387
+ return 1;
374
388
  }
375
389
 
376
- ASN1_OBJECT *X509_NAME_ENTRY_get_object(const X509_NAME_ENTRY *ne)
377
- {
378
- if (ne == NULL)
379
- return (NULL);
380
- return (ne->object);
390
+ ASN1_OBJECT *X509_NAME_ENTRY_get_object(const X509_NAME_ENTRY *ne) {
391
+ if (ne == NULL) {
392
+ return NULL;
393
+ }
394
+ return ne->object;
381
395
  }
382
396
 
383
- ASN1_STRING *X509_NAME_ENTRY_get_data(const X509_NAME_ENTRY *ne)
384
- {
385
- if (ne == NULL)
386
- return (NULL);
387
- return (ne->value);
397
+ ASN1_STRING *X509_NAME_ENTRY_get_data(const X509_NAME_ENTRY *ne) {
398
+ if (ne == NULL) {
399
+ return NULL;
400
+ }
401
+ return ne->value;
388
402
  }
@@ -62,28 +62,51 @@
62
62
  #include "internal.h"
63
63
 
64
64
 
65
- int X509_REQ_set_version(X509_REQ *x, long version)
66
- {
67
- if (x == NULL) {
68
- return 0;
69
- }
70
- if (version != X509_REQ_VERSION_1) {
71
- OPENSSL_PUT_ERROR(X509, X509_R_INVALID_VERSION);
72
- return 0;
73
- }
74
- return ASN1_INTEGER_set(x->req_info->version, version);
65
+ int X509_REQ_set_version(X509_REQ *x, long version) {
66
+ if (x == NULL) {
67
+ return 0;
68
+ }
69
+ if (version != X509_REQ_VERSION_1) {
70
+ OPENSSL_PUT_ERROR(X509, X509_R_INVALID_VERSION);
71
+ return 0;
72
+ }
73
+ return ASN1_INTEGER_set(x->req_info->version, version);
75
74
  }
76
75
 
77
- int X509_REQ_set_subject_name(X509_REQ *x, X509_NAME *name)
78
- {
79
- if ((x == NULL) || (x->req_info == NULL))
80
- return (0);
81
- return (X509_NAME_set(&x->req_info->subject, name));
76
+ int X509_REQ_set_subject_name(X509_REQ *x, X509_NAME *name) {
77
+ if ((x == NULL) || (x->req_info == NULL)) {
78
+ return 0;
79
+ }
80
+ return (X509_NAME_set(&x->req_info->subject, name));
82
81
  }
83
82
 
84
- int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey)
85
- {
86
- if ((x == NULL) || (x->req_info == NULL))
87
- return (0);
88
- return (X509_PUBKEY_set(&x->req_info->pubkey, pkey));
83
+ int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey) {
84
+ if ((x == NULL) || (x->req_info == NULL)) {
85
+ return 0;
86
+ }
87
+ return (X509_PUBKEY_set(&x->req_info->pubkey, pkey));
88
+ }
89
+
90
+ int X509_REQ_set1_signature_algo(X509_REQ *req, const X509_ALGOR *algo) {
91
+ // TODO(https://crbug.com/boringssl/407): Generated ASN.1 dup functions
92
+ // should be const. Alternatively, when we can embed required fields
93
+ // directly in structs, import |X509_ALGOR_copy| from upstream.
94
+ X509_ALGOR *copy = X509_ALGOR_dup((X509_ALGOR *)algo);
95
+ if (copy == NULL) {
96
+ return 0;
97
+ }
98
+
99
+ X509_ALGOR_free(req->sig_alg);
100
+ req->sig_alg = copy;
101
+ return 1;
102
+ }
103
+
104
+ int X509_REQ_set1_signature_value(X509_REQ *req, const uint8_t *sig,
105
+ size_t sig_len) {
106
+ if (!ASN1_STRING_set(req->signature, sig, sig_len)) {
107
+ return 0;
108
+ }
109
+ req->signature->flags &= ~(ASN1_STRING_FLAG_BITS_LEFT | 0x07);
110
+ req->signature->flags |= ASN1_STRING_FLAG_BITS_LEFT;
111
+ return 1;
89
112
  }