@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
@@ -63,54 +63,59 @@
63
63
  #include "internal.h"
64
64
 
65
65
 
66
- /* X509_CERT_AUX and string set routines */
66
+ // X509_CERT_AUX and string set routines
67
67
 
68
- int X509_CERT_AUX_print(BIO *out, X509_CERT_AUX *aux, int indent)
69
- {
70
- char oidstr[80], first;
71
- size_t i;
72
- int j;
73
- if (!aux)
74
- return 1;
75
- if (aux->trust) {
76
- first = 1;
77
- BIO_printf(out, "%*sTrusted Uses:\n%*s", indent, "", indent + 2, "");
78
- for (i = 0; i < sk_ASN1_OBJECT_num(aux->trust); i++) {
79
- if (!first)
80
- BIO_puts(out, ", ");
81
- else
82
- first = 0;
83
- OBJ_obj2txt(oidstr, sizeof oidstr,
84
- sk_ASN1_OBJECT_value(aux->trust, i), 0);
85
- BIO_puts(out, oidstr);
86
- }
87
- BIO_puts(out, "\n");
88
- } else
89
- BIO_printf(out, "%*sNo Trusted Uses.\n", indent, "");
90
- if (aux->reject) {
91
- first = 1;
92
- BIO_printf(out, "%*sRejected Uses:\n%*s", indent, "", indent + 2, "");
93
- for (i = 0; i < sk_ASN1_OBJECT_num(aux->reject); i++) {
94
- if (!first)
95
- BIO_puts(out, ", ");
96
- else
97
- first = 0;
98
- OBJ_obj2txt(oidstr, sizeof oidstr,
99
- sk_ASN1_OBJECT_value(aux->reject, i), 0);
100
- BIO_puts(out, oidstr);
101
- }
102
- BIO_puts(out, "\n");
103
- } else
104
- BIO_printf(out, "%*sNo Rejected Uses.\n", indent, "");
105
- if (aux->alias) {
106
- BIO_printf(out, "%*sAlias: %.*s\n", indent, "", aux->alias->length,
107
- aux->alias->data);
68
+ int X509_CERT_AUX_print(BIO *out, X509_CERT_AUX *aux, int indent) {
69
+ char oidstr[80], first;
70
+ size_t i;
71
+ int j;
72
+ if (!aux) {
73
+ return 1;
74
+ }
75
+ if (aux->trust) {
76
+ first = 1;
77
+ BIO_printf(out, "%*sTrusted Uses:\n%*s", indent, "", indent + 2, "");
78
+ for (i = 0; i < sk_ASN1_OBJECT_num(aux->trust); i++) {
79
+ if (!first) {
80
+ BIO_puts(out, ", ");
81
+ } else {
82
+ first = 0;
83
+ }
84
+ OBJ_obj2txt(oidstr, sizeof oidstr, sk_ASN1_OBJECT_value(aux->trust, i),
85
+ 0);
86
+ BIO_puts(out, oidstr);
108
87
  }
109
- if (aux->keyid) {
110
- BIO_printf(out, "%*sKey Id: ", indent, "");
111
- for (j = 0; j < aux->keyid->length; j++)
112
- BIO_printf(out, "%s%02X", j ? ":" : "", aux->keyid->data[j]);
113
- BIO_write(out, "\n", 1);
88
+ BIO_puts(out, "\n");
89
+ } else {
90
+ BIO_printf(out, "%*sNo Trusted Uses.\n", indent, "");
91
+ }
92
+ if (aux->reject) {
93
+ first = 1;
94
+ BIO_printf(out, "%*sRejected Uses:\n%*s", indent, "", indent + 2, "");
95
+ for (i = 0; i < sk_ASN1_OBJECT_num(aux->reject); i++) {
96
+ if (!first) {
97
+ BIO_puts(out, ", ");
98
+ } else {
99
+ first = 0;
100
+ }
101
+ OBJ_obj2txt(oidstr, sizeof oidstr, sk_ASN1_OBJECT_value(aux->reject, i),
102
+ 0);
103
+ BIO_puts(out, oidstr);
114
104
  }
115
- return 1;
105
+ BIO_puts(out, "\n");
106
+ } else {
107
+ BIO_printf(out, "%*sNo Rejected Uses.\n", indent, "");
108
+ }
109
+ if (aux->alias) {
110
+ BIO_printf(out, "%*sAlias: %.*s\n", indent, "", aux->alias->length,
111
+ aux->alias->data);
112
+ }
113
+ if (aux->keyid) {
114
+ BIO_printf(out, "%*sKey Id: ", indent, "");
115
+ for (j = 0; j < aux->keyid->length; j++) {
116
+ BIO_printf(out, "%s%02X", j ? ":" : "", aux->keyid->data[j]);
117
+ }
118
+ BIO_write(out, "\n", 1);
119
+ }
120
+ return 1;
116
121
  }
@@ -61,8 +61,8 @@
61
61
  #include <openssl/mem.h>
62
62
 
63
63
 
64
- /* |X509_R_UNSUPPORTED_ALGORITHM| is no longer emitted, but continue to define
65
- * it to avoid downstream churn. */
64
+ // |X509_R_UNSUPPORTED_ALGORITHM| is no longer emitted, but continue to define
65
+ // it to avoid downstream churn.
66
66
  OPENSSL_DECLARE_ERROR_REASON(X509, UNSUPPORTED_ALGORITHM)
67
67
 
68
68
  int X509_signature_dump(BIO *bp, const ASN1_STRING *sig, int indent) {
@@ -73,8 +73,7 @@ int X509_signature_dump(BIO *bp, const ASN1_STRING *sig, int indent) {
73
73
  s = sig->data;
74
74
  for (i = 0; i < n; i++) {
75
75
  if ((i % 18) == 0) {
76
- if (BIO_write(bp, "\n", 1) <= 0 ||
77
- BIO_indent(bp, indent, indent) <= 0) {
76
+ if (BIO_write(bp, "\n", 1) <= 0 || BIO_indent(bp, indent, indent) <= 0) {
78
77
  return 0;
79
78
  }
80
79
  }
@@ -66,293 +66,304 @@
66
66
  #include "internal.h"
67
67
 
68
68
 
69
- int X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x)
70
- {
71
- return sk_X509_ATTRIBUTE_num(x);
69
+ int X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x) {
70
+ return sk_X509_ATTRIBUTE_num(x);
72
71
  }
73
72
 
74
73
  int X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x, int nid,
75
- int lastpos)
76
- {
77
- const ASN1_OBJECT *obj = OBJ_nid2obj(nid);
78
- if (obj == NULL) {
79
- return -1;
80
- }
81
- return X509at_get_attr_by_OBJ(x, obj, lastpos);
74
+ int lastpos) {
75
+ const ASN1_OBJECT *obj = OBJ_nid2obj(nid);
76
+ if (obj == NULL) {
77
+ return -1;
78
+ }
79
+ return X509at_get_attr_by_OBJ(x, obj, lastpos);
82
80
  }
83
81
 
84
82
  int X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk,
85
- const ASN1_OBJECT *obj, int lastpos)
86
- {
87
- int n;
88
- X509_ATTRIBUTE *ex;
83
+ const ASN1_OBJECT *obj, int lastpos) {
84
+ int n;
85
+ X509_ATTRIBUTE *ex;
89
86
 
90
- if (sk == NULL)
91
- return (-1);
92
- lastpos++;
93
- if (lastpos < 0)
94
- lastpos = 0;
95
- n = sk_X509_ATTRIBUTE_num(sk);
96
- for (; lastpos < n; lastpos++) {
97
- ex = sk_X509_ATTRIBUTE_value(sk, lastpos);
98
- if (OBJ_cmp(ex->object, obj) == 0)
99
- return (lastpos);
87
+ if (sk == NULL) {
88
+ return -1;
89
+ }
90
+ lastpos++;
91
+ if (lastpos < 0) {
92
+ lastpos = 0;
93
+ }
94
+ n = sk_X509_ATTRIBUTE_num(sk);
95
+ for (; lastpos < n; lastpos++) {
96
+ ex = sk_X509_ATTRIBUTE_value(sk, lastpos);
97
+ if (OBJ_cmp(ex->object, obj) == 0) {
98
+ return lastpos;
100
99
  }
101
- return (-1);
100
+ }
101
+ return -1;
102
102
  }
103
103
 
104
- X509_ATTRIBUTE *X509at_get_attr(const STACK_OF(X509_ATTRIBUTE) *x, int loc)
105
- {
106
- if (x == NULL || loc < 0 || sk_X509_ATTRIBUTE_num(x) <= (size_t)loc)
107
- return NULL;
108
- else
109
- return sk_X509_ATTRIBUTE_value(x, loc);
104
+ X509_ATTRIBUTE *X509at_get_attr(const STACK_OF(X509_ATTRIBUTE) *x, int loc) {
105
+ if (x == NULL || loc < 0 || sk_X509_ATTRIBUTE_num(x) <= (size_t)loc) {
106
+ return NULL;
107
+ } else {
108
+ return sk_X509_ATTRIBUTE_value(x, loc);
109
+ }
110
110
  }
111
111
 
112
- X509_ATTRIBUTE *X509at_delete_attr(STACK_OF(X509_ATTRIBUTE) *x, int loc)
113
- {
114
- X509_ATTRIBUTE *ret;
112
+ X509_ATTRIBUTE *X509at_delete_attr(STACK_OF(X509_ATTRIBUTE) *x, int loc) {
113
+ X509_ATTRIBUTE *ret;
115
114
 
116
- if (x == NULL || loc < 0 || sk_X509_ATTRIBUTE_num(x) <= (size_t)loc)
117
- return (NULL);
118
- ret = sk_X509_ATTRIBUTE_delete(x, loc);
119
- return (ret);
115
+ if (x == NULL || loc < 0 || sk_X509_ATTRIBUTE_num(x) <= (size_t)loc) {
116
+ return NULL;
117
+ }
118
+ ret = sk_X509_ATTRIBUTE_delete(x, loc);
119
+ return ret;
120
120
  }
121
121
 
122
122
  STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x,
123
- X509_ATTRIBUTE *attr)
124
- {
125
- X509_ATTRIBUTE *new_attr = NULL;
126
- STACK_OF(X509_ATTRIBUTE) *sk = NULL;
123
+ X509_ATTRIBUTE *attr) {
124
+ X509_ATTRIBUTE *new_attr = NULL;
125
+ STACK_OF(X509_ATTRIBUTE) *sk = NULL;
127
126
 
128
- if (x == NULL) {
129
- OPENSSL_PUT_ERROR(X509, ERR_R_PASSED_NULL_PARAMETER);
130
- goto err2;
131
- }
127
+ if (x == NULL) {
128
+ OPENSSL_PUT_ERROR(X509, ERR_R_PASSED_NULL_PARAMETER);
129
+ goto err2;
130
+ }
132
131
 
133
- if (*x == NULL) {
134
- if ((sk = sk_X509_ATTRIBUTE_new_null()) == NULL)
135
- goto err;
136
- } else
137
- sk = *x;
132
+ if (*x == NULL) {
133
+ if ((sk = sk_X509_ATTRIBUTE_new_null()) == NULL) {
134
+ goto err;
135
+ }
136
+ } else {
137
+ sk = *x;
138
+ }
138
139
 
139
- if ((new_attr = X509_ATTRIBUTE_dup(attr)) == NULL)
140
- goto err2;
141
- if (!sk_X509_ATTRIBUTE_push(sk, new_attr))
142
- goto err;
143
- if (*x == NULL)
144
- *x = sk;
145
- return (sk);
146
- err:
147
- OPENSSL_PUT_ERROR(X509, ERR_R_MALLOC_FAILURE);
148
- err2:
149
- if (new_attr != NULL)
150
- X509_ATTRIBUTE_free(new_attr);
151
- if (sk != NULL)
152
- sk_X509_ATTRIBUTE_free(sk);
153
- return (NULL);
140
+ if ((new_attr = X509_ATTRIBUTE_dup(attr)) == NULL) {
141
+ goto err2;
142
+ }
143
+ if (!sk_X509_ATTRIBUTE_push(sk, new_attr)) {
144
+ goto err;
145
+ }
146
+ if (*x == NULL) {
147
+ *x = sk;
148
+ }
149
+ return sk;
150
+ err:
151
+ OPENSSL_PUT_ERROR(X509, ERR_R_MALLOC_FAILURE);
152
+ err2:
153
+ if (new_attr != NULL) {
154
+ X509_ATTRIBUTE_free(new_attr);
155
+ }
156
+ if (sk != NULL) {
157
+ sk_X509_ATTRIBUTE_free(sk);
158
+ }
159
+ return NULL;
154
160
  }
155
161
 
156
- STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_OBJ(STACK_OF(X509_ATTRIBUTE)
157
- **x, const ASN1_OBJECT *obj,
162
+ STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_OBJ(STACK_OF(X509_ATTRIBUTE) **x,
163
+ const ASN1_OBJECT *obj,
158
164
  int type,
159
165
  const unsigned char *bytes,
160
- int len)
161
- {
162
- X509_ATTRIBUTE *attr;
163
- STACK_OF(X509_ATTRIBUTE) *ret;
164
- attr = X509_ATTRIBUTE_create_by_OBJ(NULL, obj, type, bytes, len);
165
- if (!attr)
166
- return 0;
167
- ret = X509at_add1_attr(x, attr);
168
- X509_ATTRIBUTE_free(attr);
169
- return ret;
166
+ int len) {
167
+ X509_ATTRIBUTE *attr;
168
+ STACK_OF(X509_ATTRIBUTE) *ret;
169
+ attr = X509_ATTRIBUTE_create_by_OBJ(NULL, obj, type, bytes, len);
170
+ if (!attr) {
171
+ return 0;
172
+ }
173
+ ret = X509at_add1_attr(x, attr);
174
+ X509_ATTRIBUTE_free(attr);
175
+ return ret;
170
176
  }
171
177
 
172
- STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_NID(STACK_OF(X509_ATTRIBUTE)
173
- **x, int nid, int type,
178
+ STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_NID(STACK_OF(X509_ATTRIBUTE) **x,
179
+ int nid, int type,
174
180
  const unsigned char *bytes,
175
- int len)
176
- {
177
- X509_ATTRIBUTE *attr;
178
- STACK_OF(X509_ATTRIBUTE) *ret;
179
- attr = X509_ATTRIBUTE_create_by_NID(NULL, nid, type, bytes, len);
180
- if (!attr)
181
- return 0;
182
- ret = X509at_add1_attr(x, attr);
183
- X509_ATTRIBUTE_free(attr);
184
- return ret;
181
+ int len) {
182
+ X509_ATTRIBUTE *attr;
183
+ STACK_OF(X509_ATTRIBUTE) *ret;
184
+ attr = X509_ATTRIBUTE_create_by_NID(NULL, nid, type, bytes, len);
185
+ if (!attr) {
186
+ return 0;
187
+ }
188
+ ret = X509at_add1_attr(x, attr);
189
+ X509_ATTRIBUTE_free(attr);
190
+ return ret;
185
191
  }
186
192
 
187
- STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_txt(STACK_OF(X509_ATTRIBUTE)
188
- **x, const char *attrname,
193
+ STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_txt(STACK_OF(X509_ATTRIBUTE) **x,
194
+ const char *attrname,
189
195
  int type,
190
196
  const unsigned char *bytes,
191
- int len)
192
- {
193
- X509_ATTRIBUTE *attr;
194
- STACK_OF(X509_ATTRIBUTE) *ret;
195
- attr = X509_ATTRIBUTE_create_by_txt(NULL, attrname, type, bytes, len);
196
- if (!attr)
197
- return 0;
198
- ret = X509at_add1_attr(x, attr);
199
- X509_ATTRIBUTE_free(attr);
200
- return ret;
197
+ int len) {
198
+ X509_ATTRIBUTE *attr;
199
+ STACK_OF(X509_ATTRIBUTE) *ret;
200
+ attr = X509_ATTRIBUTE_create_by_txt(NULL, attrname, type, bytes, len);
201
+ if (!attr) {
202
+ return 0;
203
+ }
204
+ ret = X509at_add1_attr(x, attr);
205
+ X509_ATTRIBUTE_free(attr);
206
+ return ret;
201
207
  }
202
208
 
203
209
  X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_NID(X509_ATTRIBUTE **attr, int nid,
204
210
  int attrtype, const void *data,
205
- int len)
206
- {
207
- const ASN1_OBJECT *obj;
211
+ int len) {
212
+ const ASN1_OBJECT *obj;
208
213
 
209
- obj = OBJ_nid2obj(nid);
210
- if (obj == NULL) {
211
- OPENSSL_PUT_ERROR(X509, X509_R_UNKNOWN_NID);
212
- return (NULL);
213
- }
214
- return X509_ATTRIBUTE_create_by_OBJ(attr, obj, attrtype, data, len);
214
+ obj = OBJ_nid2obj(nid);
215
+ if (obj == NULL) {
216
+ OPENSSL_PUT_ERROR(X509, X509_R_UNKNOWN_NID);
217
+ return NULL;
218
+ }
219
+ return X509_ATTRIBUTE_create_by_OBJ(attr, obj, attrtype, data, len);
215
220
  }
216
221
 
217
222
  X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_OBJ(X509_ATTRIBUTE **attr,
218
223
  const ASN1_OBJECT *obj,
219
224
  int attrtype, const void *data,
220
- int len)
221
- {
222
- X509_ATTRIBUTE *ret;
225
+ int len) {
226
+ X509_ATTRIBUTE *ret;
223
227
 
224
- if ((attr == NULL) || (*attr == NULL)) {
225
- if ((ret = X509_ATTRIBUTE_new()) == NULL) {
226
- OPENSSL_PUT_ERROR(X509, ERR_R_MALLOC_FAILURE);
227
- return (NULL);
228
- }
229
- } else
230
- ret = *attr;
228
+ if ((attr == NULL) || (*attr == NULL)) {
229
+ if ((ret = X509_ATTRIBUTE_new()) == NULL) {
230
+ OPENSSL_PUT_ERROR(X509, ERR_R_MALLOC_FAILURE);
231
+ return NULL;
232
+ }
233
+ } else {
234
+ ret = *attr;
235
+ }
231
236
 
232
- if (!X509_ATTRIBUTE_set1_object(ret, obj))
233
- goto err;
234
- if (!X509_ATTRIBUTE_set1_data(ret, attrtype, data, len))
235
- goto err;
237
+ if (!X509_ATTRIBUTE_set1_object(ret, obj)) {
238
+ goto err;
239
+ }
240
+ if (!X509_ATTRIBUTE_set1_data(ret, attrtype, data, len)) {
241
+ goto err;
242
+ }
236
243
 
237
- if ((attr != NULL) && (*attr == NULL))
238
- *attr = ret;
239
- return (ret);
240
- err:
241
- if ((attr == NULL) || (ret != *attr))
242
- X509_ATTRIBUTE_free(ret);
243
- return (NULL);
244
+ if ((attr != NULL) && (*attr == NULL)) {
245
+ *attr = ret;
246
+ }
247
+ return ret;
248
+ err:
249
+ if ((attr == NULL) || (ret != *attr)) {
250
+ X509_ATTRIBUTE_free(ret);
251
+ }
252
+ return NULL;
244
253
  }
245
254
 
246
255
  X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_txt(X509_ATTRIBUTE **attr,
247
256
  const char *attrname, int type,
248
257
  const unsigned char *bytes,
249
- int len)
250
- {
251
- ASN1_OBJECT *obj;
252
- X509_ATTRIBUTE *nattr;
258
+ int len) {
259
+ ASN1_OBJECT *obj;
260
+ X509_ATTRIBUTE *nattr;
253
261
 
254
- obj = OBJ_txt2obj(attrname, 0);
255
- if (obj == NULL) {
256
- OPENSSL_PUT_ERROR(X509, X509_R_INVALID_FIELD_NAME);
257
- ERR_add_error_data(2, "name=", attrname);
258
- return (NULL);
259
- }
260
- nattr = X509_ATTRIBUTE_create_by_OBJ(attr, obj, type, bytes, len);
261
- ASN1_OBJECT_free(obj);
262
- return nattr;
262
+ obj = OBJ_txt2obj(attrname, 0);
263
+ if (obj == NULL) {
264
+ OPENSSL_PUT_ERROR(X509, X509_R_INVALID_FIELD_NAME);
265
+ ERR_add_error_data(2, "name=", attrname);
266
+ return NULL;
267
+ }
268
+ nattr = X509_ATTRIBUTE_create_by_OBJ(attr, obj, type, bytes, len);
269
+ ASN1_OBJECT_free(obj);
270
+ return nattr;
263
271
  }
264
272
 
265
- int X509_ATTRIBUTE_set1_object(X509_ATTRIBUTE *attr, const ASN1_OBJECT *obj)
266
- {
267
- if ((attr == NULL) || (obj == NULL))
268
- return (0);
269
- ASN1_OBJECT_free(attr->object);
270
- attr->object = OBJ_dup(obj);
271
- return attr->object != NULL;
273
+ int X509_ATTRIBUTE_set1_object(X509_ATTRIBUTE *attr, const ASN1_OBJECT *obj) {
274
+ if ((attr == NULL) || (obj == NULL)) {
275
+ return 0;
276
+ }
277
+ ASN1_OBJECT_free(attr->object);
278
+ attr->object = OBJ_dup(obj);
279
+ return attr->object != NULL;
272
280
  }
273
281
 
274
282
  int X509_ATTRIBUTE_set1_data(X509_ATTRIBUTE *attr, int attrtype,
275
- const void *data, int len)
276
- {
277
- ASN1_TYPE *ttmp = NULL;
278
- ASN1_STRING *stmp = NULL;
279
- int atype = 0;
280
- if (!attr)
281
- return 0;
282
- if (attrtype & MBSTRING_FLAG) {
283
- stmp = ASN1_STRING_set_by_NID(NULL, data, len, attrtype,
284
- OBJ_obj2nid(attr->object));
285
- if (!stmp) {
286
- OPENSSL_PUT_ERROR(X509, ERR_R_ASN1_LIB);
287
- return 0;
288
- }
289
- atype = stmp->type;
290
- } else if (len != -1) {
291
- if (!(stmp = ASN1_STRING_type_new(attrtype)))
292
- goto err;
293
- if (!ASN1_STRING_set(stmp, data, len))
294
- goto err;
295
- atype = attrtype;
283
+ const void *data, int len) {
284
+ ASN1_TYPE *ttmp = NULL;
285
+ ASN1_STRING *stmp = NULL;
286
+ int atype = 0;
287
+ if (!attr) {
288
+ return 0;
289
+ }
290
+ if (attrtype & MBSTRING_FLAG) {
291
+ stmp = ASN1_STRING_set_by_NID(NULL, data, len, attrtype,
292
+ OBJ_obj2nid(attr->object));
293
+ if (!stmp) {
294
+ OPENSSL_PUT_ERROR(X509, ERR_R_ASN1_LIB);
295
+ return 0;
296
296
  }
297
- /*
298
- * This is a bit naughty because the attribute should really have at
299
- * least one value but some types use and zero length SET and require
300
- * this.
301
- */
302
- if (attrtype == 0) {
303
- ASN1_STRING_free(stmp);
304
- return 1;
297
+ atype = stmp->type;
298
+ } else if (len != -1) {
299
+ if (!(stmp = ASN1_STRING_type_new(attrtype))) {
300
+ goto err;
305
301
  }
306
- if (!(ttmp = ASN1_TYPE_new()))
307
- goto err;
308
- if ((len == -1) && !(attrtype & MBSTRING_FLAG)) {
309
- if (!ASN1_TYPE_set1(ttmp, attrtype, data))
310
- goto err;
311
- } else {
312
- ASN1_TYPE_set(ttmp, atype, stmp);
313
- stmp = NULL;
302
+ if (!ASN1_STRING_set(stmp, data, len)) {
303
+ goto err;
314
304
  }
315
- if (!sk_ASN1_TYPE_push(attr->set, ttmp))
316
- goto err;
317
- return 1;
318
- err:
319
- OPENSSL_PUT_ERROR(X509, ERR_R_MALLOC_FAILURE);
320
- ASN1_TYPE_free(ttmp);
305
+ atype = attrtype;
306
+ }
307
+ // This is a bit naughty because the attribute should really have at
308
+ // least one value but some types use and zero length SET and require
309
+ // this.
310
+ if (attrtype == 0) {
321
311
  ASN1_STRING_free(stmp);
322
- return 0;
312
+ return 1;
313
+ }
314
+ if (!(ttmp = ASN1_TYPE_new())) {
315
+ goto err;
316
+ }
317
+ if ((len == -1) && !(attrtype & MBSTRING_FLAG)) {
318
+ if (!ASN1_TYPE_set1(ttmp, attrtype, data)) {
319
+ goto err;
320
+ }
321
+ } else {
322
+ ASN1_TYPE_set(ttmp, atype, stmp);
323
+ stmp = NULL;
324
+ }
325
+ if (!sk_ASN1_TYPE_push(attr->set, ttmp)) {
326
+ goto err;
327
+ }
328
+ return 1;
329
+ err:
330
+ OPENSSL_PUT_ERROR(X509, ERR_R_MALLOC_FAILURE);
331
+ ASN1_TYPE_free(ttmp);
332
+ ASN1_STRING_free(stmp);
333
+ return 0;
323
334
  }
324
335
 
325
- int X509_ATTRIBUTE_count(const X509_ATTRIBUTE *attr)
326
- {
327
- return sk_ASN1_TYPE_num(attr->set);
336
+ int X509_ATTRIBUTE_count(const X509_ATTRIBUTE *attr) {
337
+ return sk_ASN1_TYPE_num(attr->set);
328
338
  }
329
339
 
330
- ASN1_OBJECT *X509_ATTRIBUTE_get0_object(X509_ATTRIBUTE *attr)
331
- {
332
- if (attr == NULL)
333
- return (NULL);
334
- return (attr->object);
340
+ ASN1_OBJECT *X509_ATTRIBUTE_get0_object(X509_ATTRIBUTE *attr) {
341
+ if (attr == NULL) {
342
+ return NULL;
343
+ }
344
+ return attr->object;
335
345
  }
336
346
 
337
- void *X509_ATTRIBUTE_get0_data(X509_ATTRIBUTE *attr, int idx,
338
- int attrtype, void *unused)
339
- {
340
- ASN1_TYPE *ttmp;
341
- ttmp = X509_ATTRIBUTE_get0_type(attr, idx);
342
- if (!ttmp)
343
- return NULL;
344
- if (attrtype != ASN1_TYPE_get(ttmp)) {
345
- OPENSSL_PUT_ERROR(X509, X509_R_WRONG_TYPE);
346
- return NULL;
347
- }
348
- return (void *)asn1_type_value_as_pointer(ttmp);
347
+ void *X509_ATTRIBUTE_get0_data(X509_ATTRIBUTE *attr, int idx, int attrtype,
348
+ void *unused) {
349
+ ASN1_TYPE *ttmp;
350
+ ttmp = X509_ATTRIBUTE_get0_type(attr, idx);
351
+ if (!ttmp) {
352
+ return NULL;
353
+ }
354
+ if (attrtype != ASN1_TYPE_get(ttmp)) {
355
+ OPENSSL_PUT_ERROR(X509, X509_R_WRONG_TYPE);
356
+ return NULL;
357
+ }
358
+ return (void *)asn1_type_value_as_pointer(ttmp);
349
359
  }
350
360
 
351
- ASN1_TYPE *X509_ATTRIBUTE_get0_type(X509_ATTRIBUTE *attr, int idx)
352
- {
353
- if (attr == NULL)
354
- return NULL;
355
- if (idx >= X509_ATTRIBUTE_count(attr))
356
- return NULL;
357
- return sk_ASN1_TYPE_value(attr->set, idx);
361
+ ASN1_TYPE *X509_ATTRIBUTE_get0_type(X509_ATTRIBUTE *attr, int idx) {
362
+ if (attr == NULL) {
363
+ return NULL;
364
+ }
365
+ if (idx >= X509_ATTRIBUTE_count(attr)) {
366
+ return NULL;
367
+ }
368
+ return sk_ASN1_TYPE_value(attr->set, idx);
358
369
  }