@fails-components/webtransport 0.0.1-rc.0 → 0.0.1-rc.1

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 (384) hide show
  1. package/.github/workflows/npm-publish-packages.yml +0 -0
  2. package/CMakeLists.txt +2 -0
  3. package/package.json +1 -1
  4. package/readme.md +0 -0
  5. package/src/http3serversession.h +1 -1
  6. package/src/webtransport.js +4 -2
  7. package/third_party/boringssl/src/CMakeLists.txt +9 -12
  8. package/third_party/boringssl/src/crypto/CMakeLists.txt +2 -3
  9. package/third_party/boringssl/src/crypto/asn1/time_support.c +206 -206
  10. package/third_party/boringssl/src/crypto/bio/socket_helper.c +124 -122
  11. package/third_party/boringssl/src/crypto/evp/digestsign.c +268 -231
  12. package/third_party/boringssl/src/crypto/evp/p_ec.c +286 -286
  13. package/third_party/boringssl/src/crypto/fipsmodule/aes/key_wrap.c +246 -236
  14. package/third_party/boringssl/src/crypto/fipsmodule/aes/mode_wrappers.c +124 -122
  15. package/third_party/boringssl/src/crypto/fipsmodule/bcm.c +3 -0
  16. package/third_party/boringssl/src/crypto/fipsmodule/bn/bytes.c +246 -230
  17. package/third_party/boringssl/src/crypto/fipsmodule/bn/internal.h +734 -715
  18. package/third_party/boringssl/src/crypto/fipsmodule/bn/random.c +349 -341
  19. package/third_party/boringssl/src/crypto/fipsmodule/cipher/cipher.c +670 -648
  20. package/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.c +1504 -1472
  21. package/third_party/boringssl/src/crypto/{cipher_extra → fipsmodule/cipher}/e_aesccm.c +435 -446
  22. package/third_party/boringssl/src/crypto/{cmac → fipsmodule/cmac}/cavp_3des_cmac_tests.txt +0 -0
  23. package/third_party/boringssl/src/crypto/{cmac → fipsmodule/cmac}/cavp_aes128_cmac_tests.txt +0 -0
  24. package/third_party/boringssl/src/crypto/{cmac → fipsmodule/cmac}/cavp_aes192_cmac_tests.txt +0 -0
  25. package/third_party/boringssl/src/crypto/{cmac → fipsmodule/cmac}/cavp_aes256_cmac_tests.txt +0 -0
  26. package/third_party/boringssl/src/crypto/{cmac → fipsmodule/cmac}/cmac.c +318 -278
  27. package/third_party/boringssl/src/crypto/{cmac → fipsmodule/cmac}/cmac_test.cc +268 -267
  28. package/third_party/boringssl/src/crypto/fipsmodule/dh/dh.c +5 -1
  29. package/third_party/boringssl/src/crypto/fipsmodule/ec/ec.c +11 -17
  30. package/third_party/boringssl/src/crypto/fipsmodule/ec/ec_key.c +15 -4
  31. package/third_party/boringssl/src/crypto/fipsmodule/ec/internal.h +2 -6
  32. package/third_party/boringssl/src/crypto/fipsmodule/ec/p224-64.c +1164 -1180
  33. package/third_party/boringssl/src/crypto/fipsmodule/ec/p256-nistz.c +3 -3
  34. package/third_party/boringssl/src/crypto/fipsmodule/ec/p256-nistz_test.cc +2 -2
  35. package/third_party/boringssl/src/crypto/fipsmodule/ec/p256.c +44 -33
  36. package/third_party/boringssl/src/crypto/fipsmodule/ec/scalar.c +169 -175
  37. package/third_party/boringssl/src/crypto/fipsmodule/ec/simple.c +352 -357
  38. package/third_party/boringssl/src/crypto/fipsmodule/ecdh/ecdh.c +4 -0
  39. package/third_party/boringssl/src/crypto/fipsmodule/ecdsa/ecdsa.c +14 -9
  40. package/third_party/boringssl/src/crypto/fipsmodule/hmac/hmac.c +256 -235
  41. package/third_party/boringssl/src/crypto/fipsmodule/rand/ctrdrbg.c +204 -202
  42. package/third_party/boringssl/src/crypto/fipsmodule/rsa/padding.c +702 -695
  43. package/third_party/boringssl/src/crypto/fipsmodule/rsa/rsa_impl.c +7 -2
  44. package/third_party/boringssl/src/crypto/fipsmodule/self_check/self_check.c +7 -0
  45. package/third_party/boringssl/src/crypto/fipsmodule/service_indicator/internal.h +89 -0
  46. package/third_party/boringssl/src/crypto/fipsmodule/service_indicator/service_indicator.c +333 -0
  47. package/third_party/boringssl/src/crypto/fipsmodule/service_indicator/service_indicator_test.cc +2410 -0
  48. package/third_party/boringssl/src/crypto/fipsmodule/sha/sha1.c +359 -357
  49. package/third_party/boringssl/src/crypto/fipsmodule/sha/sha256.c +325 -321
  50. package/third_party/boringssl/src/crypto/fipsmodule/sha/sha512.c +510 -508
  51. package/third_party/boringssl/src/crypto/fipsmodule/tls/kdf.c +177 -165
  52. package/third_party/boringssl/src/crypto/internal.h +13 -0
  53. package/third_party/boringssl/src/crypto/trust_token/trust_token_test.cc +884 -884
  54. package/third_party/boringssl/src/crypto/x509/internal.h +0 -2
  55. package/third_party/boringssl/src/crypto/x509/t_crl.c +148 -148
  56. package/third_party/boringssl/src/crypto/x509/t_req.c +249 -250
  57. package/third_party/boringssl/src/crypto/x509/t_x509.c +2 -3
  58. package/third_party/boringssl/src/crypto/x509/x509_req.c +262 -304
  59. package/third_party/boringssl/src/crypto/x509/x509_set.c +250 -240
  60. package/third_party/boringssl/src/crypto/x509/x509_test.cc +466 -4
  61. package/third_party/boringssl/src/crypto/x509/x509cset.c +292 -279
  62. package/third_party/boringssl/src/crypto/x509/x509rset.c +89 -86
  63. package/third_party/boringssl/src/crypto/x509/x_crl.c +37 -125
  64. package/third_party/boringssl/src/crypto/x509/x_req.c +114 -109
  65. package/third_party/boringssl/src/crypto/x509/x_x509.c +394 -394
  66. package/third_party/boringssl/src/crypto/x509v3/v3_akey.c +11 -16
  67. package/third_party/boringssl/src/crypto/x509v3/v3_alt.c +644 -642
  68. package/third_party/boringssl/src/crypto/x509v3/v3_bcons.c +130 -133
  69. package/third_party/boringssl/src/crypto/x509v3/v3_bitst.c +149 -144
  70. package/third_party/boringssl/src/crypto/x509v3/v3_cpols.c +496 -500
  71. package/third_party/boringssl/src/crypto/x509v3/v3_enum.c +105 -106
  72. package/third_party/boringssl/src/crypto/x509v3/v3_ia5.c +126 -121
  73. package/third_party/boringssl/src/crypto/x509v3/v3_info.c +206 -218
  74. package/third_party/boringssl/src/crypto/x509v3/v3_int.c +97 -91
  75. package/third_party/boringssl/src/crypto/x509v3/v3_pci.c +290 -289
  76. package/third_party/boringssl/src/crypto/x509v3/v3_skey.c +161 -156
  77. package/third_party/boringssl/src/crypto/x509v3/v3_utl.c +5 -3
  78. package/third_party/boringssl/src/include/openssl/aead.h +480 -480
  79. package/third_party/boringssl/src/include/openssl/asn1.h +2 -0
  80. package/third_party/boringssl/src/include/openssl/base.h +1 -1
  81. package/third_party/boringssl/src/include/openssl/service_indicator.h +96 -0
  82. package/third_party/boringssl/src/include/openssl/ssl.h +7 -0
  83. package/third_party/boringssl/src/include/openssl/x509.h +11 -33
  84. package/third_party/boringssl/src/include/openssl/x509v3.h +990 -1018
  85. package/third_party/boringssl/src/sources.cmake +4 -4
  86. package/third_party/boringssl/src/ssl/internal.h +10 -0
  87. package/third_party/boringssl/src/ssl/ssl_lib.cc +3081 -3072
  88. package/third_party/boringssl/src/ssl/ssl_test.cc +46 -0
  89. package/third_party/boringssl/src/ssl/tls13_server.cc +4 -6
  90. package/third_party/boringssl/src/util/bot/DEPS +14 -27
  91. package/third_party/boringssl/src/util/bot/UPDATING +3 -9
  92. package/third_party/boringssl/src/util/bot/update_clang.py +172 -172
  93. package/third_party/boringssl/src/util/bot/vs_toolchain.py +3 -3
  94. package/third_party/quiche/.bazelrc +8 -0
  95. package/third_party/quiche/BUILD.bazel +7 -0
  96. package/third_party/quiche/WHITESPACE +3 -1
  97. package/third_party/quiche/WORKSPACE.bazel +87 -0
  98. package/third_party/quiche/build/BUILD.bazel +7 -0
  99. package/third_party/quiche/build/source_list.bzl +1511 -0
  100. package/third_party/quiche/build/source_list.gni +1511 -0
  101. package/third_party/quiche/build/source_list.json +1511 -0
  102. package/third_party/quiche/build/test.bzl +26 -0
  103. package/third_party/quiche/build/zlib.BUILD +25 -0
  104. package/third_party/quiche/quiche/BUILD.bazel +270 -0
  105. package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_enums.cc +3 -3
  106. package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_enums.h +7 -7
  107. package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_frame.cc +39 -18
  108. package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_frame.h +11 -10
  109. package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_frame_test.cc +67 -63
  110. package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_headers.cc +13 -12
  111. package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_headers.h +16 -8
  112. package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_headers_test.cc +9 -9
  113. package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_visitor_interface.h +4 -4
  114. package/third_party/quiche/quiche/{common/balsa → balsa}/framer_interface.h +3 -3
  115. package/third_party/quiche/quiche/{common/balsa → balsa}/header_api.h +3 -3
  116. package/third_party/quiche/quiche/{common/balsa → balsa}/header_properties.cc +1 -1
  117. package/third_party/quiche/quiche/{common/balsa → balsa}/header_properties.h +3 -3
  118. package/third_party/quiche/quiche/{common/balsa → balsa}/header_properties_test.cc +1 -1
  119. package/third_party/quiche/quiche/{common/balsa → balsa}/http_validation_policy.cc +1 -1
  120. package/third_party/quiche/quiche/{common/balsa → balsa}/http_validation_policy.h +3 -3
  121. package/third_party/quiche/quiche/{common/balsa → balsa}/noop_balsa_visitor.h +4 -4
  122. package/third_party/quiche/quiche/{common/balsa → balsa}/simple_buffer.cc +22 -29
  123. package/third_party/quiche/quiche/{common/balsa → balsa}/simple_buffer.h +18 -16
  124. package/third_party/quiche/quiche/{common/balsa → balsa}/simple_buffer_test.cc +79 -32
  125. package/third_party/quiche/quiche/{common/balsa → balsa}/standard_header_map.cc +1 -1
  126. package/third_party/quiche/quiche/{common/balsa → balsa}/standard_header_map.h +3 -3
  127. package/third_party/quiche/quiche/common/platform/api/quiche_command_line_flags.h +6 -1
  128. package/third_party/quiche/quiche/common/platform/api/quiche_flags.h +8 -0
  129. package/third_party/quiche/quiche/common/platform/api/quiche_logging.h +0 -3
  130. package/third_party/quiche/quiche/common/platform/api/quiche_lower_case_string_test.cc +29 -0
  131. package/third_party/quiche/quiche/common/platform/api/quiche_test.h +5 -7
  132. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quic_flags_impl.h +1 -1
  133. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_bug_tracker_impl.h +3 -2
  134. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_command_line_flags_impl.cc +41 -0
  135. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_command_line_flags_impl.h +33 -0
  136. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_expect_bug_impl.h +15 -0
  137. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_logging_impl.h +84 -50
  138. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_lower_case_string_impl.h +25 -0
  139. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_stack_trace_impl.cc +1 -1
  140. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_test_impl.cc +25 -0
  141. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_test_impl.h +56 -0
  142. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_test_output_impl.h +27 -0
  143. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_thread_impl.h +26 -0
  144. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_url_utils_impl.cc +1 -0
  145. package/third_party/quiche/quiche/common/quiche_buffer_allocator_test.cc +1 -1
  146. package/third_party/quiche/quiche/common/quiche_mem_slice_storage.h +2 -3
  147. package/third_party/quiche/quiche/common/structured_headers.cc +14 -12
  148. package/third_party/quiche/quiche/http2/adapter/event_forwarder.cc +7 -5
  149. package/third_party/quiche/quiche/http2/adapter/event_forwarder.h +4 -2
  150. package/third_party/quiche/quiche/http2/adapter/event_forwarder_test.cc +14 -9
  151. package/third_party/quiche/quiche/http2/adapter/header_validator.cc +43 -19
  152. package/third_party/quiche/quiche/http2/adapter/header_validator.h +11 -40
  153. package/third_party/quiche/quiche/http2/adapter/header_validator_base.h +69 -0
  154. package/third_party/quiche/quiche/http2/adapter/header_validator_test.cc +73 -1
  155. package/third_party/quiche/quiche/http2/adapter/nghttp2_adapter_test.cc +66 -0
  156. package/third_party/quiche/quiche/http2/adapter/nghttp2_session_test.cc +8 -5
  157. package/third_party/quiche/quiche/http2/adapter/nghttp2_test.cc +1 -1
  158. package/third_party/quiche/quiche/http2/adapter/noop_header_validator.cc +22 -0
  159. package/third_party/quiche/quiche/http2/adapter/noop_header_validator.h +25 -0
  160. package/third_party/quiche/quiche/http2/adapter/noop_header_validator_test.cc +523 -0
  161. package/third_party/quiche/quiche/http2/adapter/oghttp2_adapter_test.cc +186 -5
  162. package/third_party/quiche/quiche/http2/adapter/oghttp2_session.cc +37 -43
  163. package/third_party/quiche/quiche/http2/adapter/oghttp2_session.h +22 -23
  164. package/third_party/quiche/quiche/http2/adapter/test_utils.cc +1 -1
  165. package/third_party/quiche/quiche/http2/adapter/window_manager_test.cc +11 -5
  166. package/third_party/quiche/quiche/http2/core/http2_trace_logging.cc +13 -11
  167. package/third_party/quiche/quiche/http2/core/http2_trace_logging.h +5 -4
  168. package/third_party/quiche/quiche/http2/core/priority_write_scheduler.h +42 -36
  169. package/third_party/quiche/quiche/http2/core/priority_write_scheduler_test.cc +2 -2
  170. package/third_party/quiche/quiche/http2/decoder/decode_buffer_test.cc +9 -9
  171. package/third_party/quiche/quiche/http2/decoder/decode_http2_structures_test.cc +1 -1
  172. package/third_party/quiche/quiche/http2/decoder/http2_frame_decoder_test.cc +14 -14
  173. package/third_party/quiche/quiche/http2/decoder/http2_structure_decoder_test.cc +17 -17
  174. package/third_party/quiche/quiche/http2/decoder/payload_decoders/altsvc_payload_decoder_test.cc +1 -1
  175. package/third_party/quiche/quiche/http2/decoder/payload_decoders/continuation_payload_decoder_test.cc +1 -1
  176. package/third_party/quiche/quiche/http2/decoder/payload_decoders/data_payload_decoder_test.cc +2 -2
  177. package/third_party/quiche/quiche/http2/decoder/payload_decoders/goaway_payload_decoder_test.cc +1 -1
  178. package/third_party/quiche/quiche/http2/decoder/payload_decoders/headers_payload_decoder_test.cc +1 -1
  179. package/third_party/quiche/quiche/http2/decoder/payload_decoders/ping_payload_decoder_test.cc +1 -1
  180. package/third_party/quiche/quiche/http2/decoder/payload_decoders/priority_payload_decoder_test.cc +1 -1
  181. package/third_party/quiche/quiche/http2/decoder/payload_decoders/priority_update_payload_decoder_test.cc +1 -1
  182. package/third_party/quiche/quiche/http2/decoder/payload_decoders/push_promise_payload_decoder_test.cc +1 -1
  183. package/third_party/quiche/quiche/http2/decoder/payload_decoders/rst_stream_payload_decoder_test.cc +1 -1
  184. package/third_party/quiche/quiche/http2/decoder/payload_decoders/settings_payload_decoder_test.cc +1 -1
  185. package/third_party/quiche/quiche/http2/decoder/payload_decoders/unknown_payload_decoder_test.cc +1 -1
  186. package/third_party/quiche/quiche/http2/decoder/payload_decoders/window_update_payload_decoder_test.cc +1 -1
  187. package/third_party/quiche/quiche/http2/hpack/decoder/hpack_block_decoder_test.cc +2 -2
  188. package/third_party/quiche/quiche/http2/hpack/decoder/hpack_decoder_state_test.cc +8 -8
  189. package/third_party/quiche/quiche/http2/hpack/decoder/hpack_decoder_string_buffer_test.cc +4 -3
  190. package/third_party/quiche/quiche/http2/hpack/decoder/hpack_decoder_tables_test.cc +17 -17
  191. package/third_party/quiche/quiche/http2/hpack/decoder/hpack_decoder_test.cc +25 -25
  192. package/third_party/quiche/quiche/http2/hpack/decoder/hpack_entry_decoder_test.cc +2 -2
  193. package/third_party/quiche/quiche/http2/hpack/decoder/hpack_entry_type_decoder_test.cc +7 -6
  194. package/third_party/quiche/quiche/http2/hpack/decoder/hpack_string_decoder_test.cc +6 -6
  195. package/third_party/quiche/quiche/http2/hpack/decoder/hpack_whole_entry_buffer_test.cc +1 -1
  196. package/third_party/quiche/quiche/http2/hpack/huffman/hpack_huffman_decoder_test.cc +2 -2
  197. package/third_party/quiche/quiche/http2/hpack/huffman/hpack_huffman_encoder_test.cc +1 -1
  198. package/third_party/quiche/quiche/http2/hpack/huffman/hpack_huffman_transcoder_test.cc +5 -5
  199. package/third_party/quiche/quiche/http2/hpack/varint/hpack_varint_decoder_test.cc +4 -4
  200. package/third_party/quiche/quiche/http2/hpack/varint/hpack_varint_round_trip_test.cc +1 -1
  201. package/third_party/quiche/quiche/http2/http2_constants_test.cc +1 -1
  202. package/third_party/quiche/quiche/http2/http2_structures_test.cc +23 -22
  203. package/third_party/quiche/quiche/http2/test_tools/frame_decoder_state_test_util.cc +1 -1
  204. package/third_party/quiche/quiche/http2/test_tools/frame_decoder_state_test_util.h +1 -1
  205. package/third_party/quiche/quiche/http2/test_tools/frame_parts.cc +38 -38
  206. package/third_party/quiche/quiche/http2/test_tools/hpack_block_collector.cc +15 -15
  207. package/third_party/quiche/quiche/http2/test_tools/hpack_entry_collector.cc +24 -22
  208. package/third_party/quiche/quiche/http2/test_tools/hpack_string_collector.cc +5 -5
  209. package/third_party/quiche/quiche/http2/test_tools/http2_frame_builder_test.cc +70 -89
  210. package/third_party/quiche/quiche/http2/test_tools/payload_decoder_base_test_util.cc +1 -1
  211. package/third_party/quiche/quiche/http2/test_tools/payload_decoder_base_test_util.h +29 -26
  212. package/third_party/quiche/quiche/http2/test_tools/{random_decoder_test.cc → random_decoder_test_base.cc} +13 -10
  213. package/third_party/quiche/quiche/http2/test_tools/{random_decoder_test.h → random_decoder_test_base.h} +15 -17
  214. package/third_party/quiche/quiche/http2/test_tools/{random_decoder_test_test.cc → random_decoder_test_base_test.cc} +1 -1
  215. package/third_party/quiche/quiche/http2/test_tools/verify_macros.h +32 -0
  216. package/third_party/quiche/quiche/quic/core/congestion_control/bbr2_sender.cc +2 -1
  217. package/third_party/quiche/quiche/quic/core/congestion_control/bbr2_simulator_test.cc +3 -2
  218. package/third_party/quiche/quiche/quic/core/congestion_control/bbr_sender_test.cc +3 -2
  219. package/third_party/quiche/quiche/quic/core/congestion_control/rtt_stats.cc +3 -2
  220. package/third_party/quiche/quiche/quic/core/congestion_control/rtt_stats.h +2 -1
  221. package/third_party/quiche/quiche/quic/core/congestion_control/rtt_stats_test.cc +2 -13
  222. package/third_party/quiche/quiche/quic/core/crypto/certificate_view.cc +15 -0
  223. package/third_party/quiche/quiche/quic/core/crypto/certificate_view.h +7 -0
  224. package/third_party/quiche/quiche/quic/core/crypto/certificate_view_test.cc +16 -0
  225. package/third_party/quiche/quiche/quic/core/crypto/crypto_protocol.h +1 -0
  226. package/third_party/quiche/quiche/quic/core/crypto/proof_source.h +2 -2
  227. package/third_party/quiche/quiche/quic/core/crypto/proof_source_x509.cc +3 -5
  228. package/third_party/quiche/quiche/quic/core/crypto/proof_source_x509.h +1 -2
  229. package/third_party/quiche/quiche/quic/core/crypto/quic_crypto_server_config.cc +1 -1
  230. package/third_party/quiche/quiche/quic/core/crypto/quic_crypto_server_config.h +3 -3
  231. package/third_party/quiche/quiche/quic/core/frames/quic_blocked_frame.cc +2 -8
  232. package/third_party/quiche/quiche/quic/core/frames/quic_blocked_frame.h +0 -1
  233. package/third_party/quiche/quiche/quic/core/frames/quic_crypto_frame.h +2 -0
  234. package/third_party/quiche/quiche/quic/core/frames/quic_frames_test.cc +2 -1
  235. package/third_party/quiche/quiche/quic/core/http/capsule.cc +2 -22
  236. package/third_party/quiche/quiche/quic/core/http/capsule.h +0 -2
  237. package/third_party/quiche/quiche/quic/core/http/capsule_test.cc +1 -2
  238. package/third_party/quiche/quiche/quic/core/http/end_to_end_test.cc +148 -57
  239. package/third_party/quiche/quiche/quic/core/http/http_constants.cc +1 -1
  240. package/third_party/quiche/quiche/quic/core/http/http_constants.h +2 -2
  241. package/third_party/quiche/quiche/quic/core/http/quic_header_list_test.cc +2 -2
  242. package/third_party/quiche/quiche/quic/core/http/quic_headers_stream_test.cc +18 -14
  243. package/third_party/quiche/quiche/quic/core/http/quic_send_control_stream.h +2 -1
  244. package/third_party/quiche/quiche/quic/core/http/quic_send_control_stream_test.cc +3 -7
  245. package/third_party/quiche/quiche/quic/core/http/quic_server_session_base.h +4 -0
  246. package/third_party/quiche/quiche/quic/core/http/quic_spdy_session.cc +47 -65
  247. package/third_party/quiche/quiche/quic/core/http/quic_spdy_session.h +5 -17
  248. package/third_party/quiche/quiche/quic/core/http/quic_spdy_session_test.cc +63 -54
  249. package/third_party/quiche/quiche/quic/core/http/quic_spdy_stream.cc +34 -91
  250. package/third_party/quiche/quiche/quic/core/http/quic_spdy_stream.h +1 -9
  251. package/third_party/quiche/quiche/quic/core/http/quic_spdy_stream_test.cc +27 -134
  252. package/third_party/quiche/quiche/quic/core/http/spdy_utils.cc +0 -41
  253. package/third_party/quiche/quiche/quic/core/http/spdy_utils.h +0 -9
  254. package/third_party/quiche/quiche/quic/core/http/spdy_utils_test.cc +0 -32
  255. package/third_party/quiche/quiche/quic/core/http/web_transport_http3.cc +0 -1
  256. package/third_party/quiche/quiche/quic/core/packet_number_indexed_queue_test.cc +2 -2
  257. package/third_party/quiche/quiche/quic/core/qpack/qpack_header_table.cc +2 -1
  258. package/third_party/quiche/quiche/quic/core/qpack/qpack_send_stream.h +2 -1
  259. package/third_party/quiche/quiche/quic/core/quic_arena_scoped_ptr_test.cc +2 -2
  260. package/third_party/quiche/quiche/quic/core/quic_connection.cc +68 -46
  261. package/third_party/quiche/quiche/quic/core/quic_connection.h +7 -6
  262. package/third_party/quiche/quiche/quic/core/quic_connection_context_test.cc +2 -2
  263. package/third_party/quiche/quiche/quic/core/quic_connection_id_manager_test.cc +2 -2
  264. package/third_party/quiche/quiche/quic/core/quic_connection_id_test.cc +2 -2
  265. package/third_party/quiche/quiche/quic/core/quic_connection_test.cc +45 -132
  266. package/third_party/quiche/quiche/quic/core/quic_constants.h +0 -7
  267. package/third_party/quiche/quiche/quic/core/quic_control_frame_manager.cc +11 -3
  268. package/third_party/quiche/quiche/quic/core/quic_control_frame_manager.h +1 -1
  269. package/third_party/quiche/quiche/quic/core/quic_control_frame_manager_test.cc +2 -2
  270. package/third_party/quiche/quiche/quic/core/quic_crypto_client_handshaker.cc +13 -1
  271. package/third_party/quiche/quiche/quic/core/quic_crypto_client_handshaker.h +3 -0
  272. package/third_party/quiche/quiche/quic/core/quic_crypto_client_handshaker_test.cc +2 -2
  273. package/third_party/quiche/quiche/quic/core/quic_crypto_client_stream.cc +6 -0
  274. package/third_party/quiche/quiche/quic/core/quic_crypto_client_stream.h +8 -0
  275. package/third_party/quiche/quiche/quic/core/quic_crypto_server_stream.cc +26 -13
  276. package/third_party/quiche/quiche/quic/core/quic_crypto_server_stream.h +5 -2
  277. package/third_party/quiche/quiche/quic/core/quic_crypto_stream.cc +55 -47
  278. package/third_party/quiche/quiche/quic/core/quic_crypto_stream.h +15 -10
  279. package/third_party/quiche/quiche/quic/core/quic_crypto_stream_test.cc +34 -5
  280. package/third_party/quiche/quiche/quic/core/quic_dispatcher.cc +20 -11
  281. package/third_party/quiche/quiche/quic/core/quic_dispatcher_test.cc +37 -13
  282. package/third_party/quiche/quiche/quic/core/quic_flags_list.h +6 -10
  283. package/third_party/quiche/quiche/quic/core/quic_flow_controller.cc +3 -3
  284. package/third_party/quiche/quiche/quic/core/quic_flow_controller.h +2 -2
  285. package/third_party/quiche/quiche/quic/core/quic_flow_controller_test.cc +15 -10
  286. package/third_party/quiche/quiche/quic/core/quic_framer.cc +1 -1
  287. package/third_party/quiche/quiche/quic/core/quic_one_block_arena.h +3 -2
  288. package/third_party/quiche/quiche/quic/core/quic_one_block_arena_test.cc +2 -2
  289. package/third_party/quiche/quiche/quic/core/quic_packet_creator.cc +3 -11
  290. package/third_party/quiche/quiche/quic/core/quic_packet_creator.h +0 -8
  291. package/third_party/quiche/quiche/quic/core/quic_ping_manager.cc +14 -14
  292. package/third_party/quiche/quiche/quic/core/quic_ping_manager_test.cc +48 -0
  293. package/third_party/quiche/quiche/quic/core/quic_received_packet_manager.cc +3 -18
  294. package/third_party/quiche/quiche/quic/core/quic_received_packet_manager_test.cc +4 -14
  295. package/third_party/quiche/quiche/quic/core/quic_server_id_test.cc +2 -2
  296. package/third_party/quiche/quiche/quic/core/quic_session.cc +4 -4
  297. package/third_party/quiche/quiche/quic/core/quic_session.h +1 -1
  298. package/third_party/quiche/quiche/quic/core/quic_session_test.cc +21 -1
  299. package/third_party/quiche/quiche/quic/core/quic_stream.cc +4 -7
  300. package/third_party/quiche/quiche/quic/core/quic_stream_test.cc +2 -4
  301. package/third_party/quiche/quiche/quic/core/quic_trace_visitor_test.cc +2 -2
  302. package/third_party/quiche/quiche/quic/core/quic_types.h +3 -8
  303. package/third_party/quiche/quiche/quic/core/quic_udp_socket_posix.cc +5 -4
  304. package/third_party/quiche/quiche/quic/core/quic_unacked_packet_map_test.cc +1 -1
  305. package/third_party/quiche/quiche/quic/core/quic_utils.cc +1 -1
  306. package/third_party/quiche/quiche/quic/core/quic_utils.h +2 -2
  307. package/third_party/quiche/quiche/quic/core/quic_versions_test.cc +0 -1
  308. package/third_party/quiche/quiche/quic/core/tls_client_handshaker.cc +13 -0
  309. package/third_party/quiche/quiche/quic/core/tls_client_handshaker.h +2 -0
  310. package/third_party/quiche/quiche/quic/core/tls_server_handshaker.cc +17 -3
  311. package/third_party/quiche/quiche/quic/core/tls_server_handshaker.h +3 -1
  312. package/third_party/quiche/quiche/quic/core/uber_received_packet_manager_test.cc +18 -10
  313. package/third_party/quiche/quiche/quic/masque/masque_client_bin.cc +6 -4
  314. package/third_party/quiche/quiche/quic/masque/masque_client_session.cc +23 -7
  315. package/third_party/quiche/quiche/quic/masque/masque_client_session.h +1 -1
  316. package/third_party/quiche/quiche/quic/masque/masque_server_backend.cc +13 -0
  317. package/third_party/quiche/quiche/quic/masque/masque_server_backend.h +2 -0
  318. package/third_party/quiche/quiche/quic/masque/masque_server_bin.cc +5 -4
  319. package/third_party/quiche/quiche/quic/masque/masque_server_session.cc +30 -40
  320. package/third_party/quiche/quiche/quic/masque/masque_server_session.h +1 -1
  321. package/third_party/quiche/quiche/quic/platform/api/quic_export.h +4 -4
  322. package/third_party/quiche/quiche/quic/platform/api/quic_flags.h +0 -1
  323. package/third_party/quiche/quiche/quic/platform/api/quic_logging.h +0 -6
  324. package/third_party/quiche/quiche/quic/platform/api/quic_test.h +6 -5
  325. package/third_party/quiche/quiche/quic/qbone/bonnet/icmp_reachable_test.cc +2 -2
  326. package/third_party/quiche/quiche/quic/qbone/bonnet/mock_qbone_tunnel.h +2 -0
  327. package/third_party/quiche/quiche/quic/qbone/bonnet/qbone_tunnel_interface.h +2 -0
  328. package/third_party/quiche/quiche/quic/qbone/bonnet/tun_device_controller_test.cc +2 -2
  329. package/third_party/quiche/quiche/quic/qbone/bonnet/tun_device_packet_exchanger_test.cc +2 -2
  330. package/third_party/quiche/quiche/quic/qbone/bonnet/tun_device_test.cc +2 -2
  331. package/third_party/quiche/quiche/quic/qbone/platform/netlink_test.cc +2 -2
  332. package/third_party/quiche/quiche/quic/qbone/platform/tcp_packet.cc +5 -4
  333. package/third_party/quiche/quiche/quic/qbone/qbone_client_session.cc +4 -2
  334. package/third_party/quiche/quiche/quic/qbone/qbone_packet_processor.cc +2 -1
  335. package/third_party/quiche/quiche/quic/qbone/qbone_packet_processor_test.cc +2 -2
  336. package/third_party/quiche/quiche/quic/qbone/qbone_server_session.cc +4 -2
  337. package/third_party/quiche/quiche/quic/qbone/qbone_session_base.cc +3 -2
  338. package/third_party/quiche/quiche/quic/qbone/qbone_stream.cc +4 -4
  339. package/third_party/quiche/quiche/quic/test_tools/quic_connection_peer.cc +1 -1
  340. package/third_party/quiche/quiche/quic/test_tools/quic_http_response_cache_data/test.example.com/index.html +63 -0
  341. package/third_party/quiche/quiche/quic/test_tools/quic_http_response_cache_data/test.example.com/map.html +65 -0
  342. package/third_party/quiche/quiche/quic/test_tools/quic_test_utils.cc +4 -3
  343. package/third_party/quiche/quiche/quic/test_tools/quic_test_utils.h +18 -1
  344. package/third_party/quiche/quiche/quic/test_tools/simulator/quic_endpoint_test.cc +1 -1
  345. package/third_party/quiche/quiche/quic/test_tools/simulator/simulator_test.cc +1 -1
  346. package/third_party/quiche/quiche/quic/test_tools/test_ticket_crypter.cc +1 -1
  347. package/third_party/quiche/quiche/quic/test_tools/test_ticket_crypter.h +2 -2
  348. package/third_party/quiche/quiche/quic/{core/crypto → tools}/crypto_message_printer_bin.cc +0 -0
  349. package/third_party/quiche/quiche/quic/{core/qpack → tools}/qpack_offline_decoder_bin.cc +0 -0
  350. package/third_party/quiche/quiche/quic/tools/quic_client_interop_test_bin.cc +4 -3
  351. package/third_party/quiche/quiche/quic/tools/quic_memory_cache_backend_test.cc +3 -31
  352. package/third_party/quiche/quiche/quic/tools/quic_packet_printer_bin.cc +2 -2
  353. package/third_party/quiche/quiche/quic/tools/quic_simple_server_session.h +1 -1
  354. package/third_party/quiche/quiche/quic/tools/quic_simple_server_session_test.cc +1 -1
  355. package/third_party/quiche/quiche/quic/tools/quic_toy_client.cc +52 -38
  356. package/third_party/quiche/quiche/quic/tools/quic_toy_server.cc +10 -7
  357. package/third_party/quiche/quiche/quic/tools/simple_ticket_crypter.cc +1 -1
  358. package/third_party/quiche/quiche/quic/tools/simple_ticket_crypter.h +1 -1
  359. package/third_party/quiche/quiche/quic/tools/web_transport_test_visitors.h +3 -2
  360. package/third_party/quiche/quiche/spdy/core/array_output_buffer.h +1 -1
  361. package/third_party/quiche/quiche/spdy/core/hpack/hpack_decoder_adapter_test.cc +1 -1
  362. package/third_party/quiche/quiche/spdy/core/hpack/hpack_encoder_test.cc +2 -1
  363. package/third_party/quiche/quiche/spdy/core/hpack/hpack_header_table_test.cc +1 -1
  364. package/third_party/quiche/quiche/spdy/core/hpack/hpack_round_trip_test.cc +2 -1
  365. package/third_party/quiche/quiche/spdy/core/hpack/hpack_static_table_test.cc +1 -1
  366. package/third_party/quiche/quiche/spdy/core/http2_frame_decoder_adapter.cc +8 -6
  367. package/third_party/quiche/quiche/spdy/core/http2_frame_decoder_adapter.h +17 -6
  368. package/third_party/quiche/quiche/spdy/core/metadata_extension.cc +1 -1
  369. package/third_party/quiche/quiche/spdy/core/metadata_extension_test.cc +1 -1
  370. package/third_party/quiche/quiche/spdy/core/spdy_framer_test.cc +21 -17
  371. package/third_party/quiche/quiche/spdy/core/spdy_intrusive_list_test.cc +3 -3
  372. package/third_party/quiche/quiche/spdy/core/spdy_no_op_visitor.h +6 -4
  373. package/third_party/quiche/quiche/spdy/core/spdy_pinnable_buffer_piece_test.cc +1 -1
  374. package/third_party/quiche/quiche/spdy/core/spdy_prefixed_buffer_reader_test.cc +1 -1
  375. package/third_party/quiche/quiche/spdy/core/spdy_protocol_test.cc +1 -1
  376. package/third_party/quiche/quiche/spdy/test_tools/mock_spdy_framer_visitor.h +5 -4
  377. package/third_party/boringssl/src/util/bot/cmake-win32.zip.sha1 +0 -1
  378. package/third_party/quiche/quiche/common/platform/api/quiche_mock_log.h +0 -18
  379. package/third_party/quiche/quiche/common/platform/api/quiche_test_helpers.h +0 -8
  380. package/third_party/quiche/quiche/quic/platform/api/quic_mock_log.h +0 -19
  381. package/third_party/quiche/quiche/quic/tools/quic_transport_simple_server_dispatcher.cc +0 -51
  382. package/third_party/quiche/quiche/quic/tools/quic_transport_simple_server_dispatcher.h +0 -41
  383. package/third_party/quiche/quiche/quic/tools/quic_transport_simple_server_session.cc +0 -168
  384. package/third_party/quiche/quiche/quic/tools/quic_transport_simple_server_session.h +0 -78
@@ -1,289 +1,290 @@
1
- /* v3_pci.c -*- mode:C; c-file-style: "eay" -*- */
2
- /*
3
- * Contributed to the OpenSSL Project 2004 by Richard Levitte
4
- * (richard@levitte.org)
5
- */
6
- /* Copyright (c) 2004 Kungliga Tekniska Högskolan
7
- * (Royal Institute of Technology, Stockholm, Sweden).
8
- * All rights reserved.
9
- *
10
- * Redistribution and use in source and binary forms, with or without
11
- * modification, are permitted provided that the following conditions
12
- * are met:
13
- *
14
- * 1. Redistributions of source code must retain the above copyright
15
- * notice, this list of conditions and the following disclaimer.
16
- *
17
- * 2. Redistributions in binary form must reproduce the above copyright
18
- * notice, this list of conditions and the following disclaimer in the
19
- * documentation and/or other materials provided with the distribution.
20
- *
21
- * 3. Neither the name of the Institute nor the names of its contributors
22
- * may be used to endorse or promote products derived from this software
23
- * without specific prior written permission.
24
- *
25
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
26
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28
- * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
29
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
30
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
31
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
32
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
34
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
35
- * SUCH DAMAGE.
36
- */
37
-
38
- #include <string.h>
39
-
40
- #include <openssl/conf.h>
41
- #include <openssl/err.h>
42
- #include <openssl/mem.h>
43
- #include <openssl/obj.h>
44
- #include <openssl/x509v3.h>
45
-
46
- #include "../internal.h"
47
- #include "internal.h"
48
-
49
-
50
- static int i2r_pci(X509V3_EXT_METHOD *method, PROXY_CERT_INFO_EXTENSION *ext,
51
- BIO *out, int indent);
52
- static PROXY_CERT_INFO_EXTENSION *r2i_pci(X509V3_EXT_METHOD *method,
53
- X509V3_CTX *ctx, char *str);
54
-
55
- const X509V3_EXT_METHOD v3_pci =
56
- { NID_proxyCertInfo, 0, ASN1_ITEM_ref(PROXY_CERT_INFO_EXTENSION),
57
- 0, 0, 0, 0,
58
- 0, 0,
59
- NULL, NULL,
60
- (X509V3_EXT_I2R)i2r_pci,
61
- (X509V3_EXT_R2I)r2i_pci,
62
- NULL,
63
- };
64
-
65
- static int i2r_pci(X509V3_EXT_METHOD *method, PROXY_CERT_INFO_EXTENSION *pci,
66
- BIO *out, int indent)
67
- {
68
- BIO_printf(out, "%*sPath Length Constraint: ", indent, "");
69
- if (pci->pcPathLengthConstraint)
70
- i2a_ASN1_INTEGER(out, pci->pcPathLengthConstraint);
71
- else
72
- BIO_printf(out, "infinite");
73
- BIO_puts(out, "\n");
74
- BIO_printf(out, "%*sPolicy Language: ", indent, "");
75
- i2a_ASN1_OBJECT(out, pci->proxyPolicy->policyLanguage);
76
- BIO_puts(out, "\n");
77
- if (pci->proxyPolicy->policy && pci->proxyPolicy->policy->data)
78
- BIO_printf(out, "%*sPolicy Text: %.*s\n", indent, "",
79
- pci->proxyPolicy->policy->length,
80
- pci->proxyPolicy->policy->data);
81
- return 1;
82
- }
83
-
84
- static int process_pci_value(CONF_VALUE *val,
85
- ASN1_OBJECT **language, ASN1_INTEGER **pathlen,
86
- ASN1_OCTET_STRING **policy)
87
- {
88
- int free_policy = 0;
89
-
90
- if (strcmp(val->name, "language") == 0) {
91
- if (*language) {
92
- OPENSSL_PUT_ERROR(X509V3,
93
- X509V3_R_POLICY_LANGUAGE_ALREADY_DEFINED);
94
- X509V3_conf_err(val);
95
- return 0;
96
- }
97
- if (!(*language = OBJ_txt2obj(val->value, 0))) {
98
- OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_OBJECT_IDENTIFIER);
99
- X509V3_conf_err(val);
100
- return 0;
101
- }
102
- } else if (strcmp(val->name, "pathlen") == 0) {
103
- if (*pathlen) {
104
- OPENSSL_PUT_ERROR(X509V3,
105
- X509V3_R_POLICY_PATH_LENGTH_ALREADY_DEFINED);
106
- X509V3_conf_err(val);
107
- return 0;
108
- }
109
- if (!X509V3_get_value_int(val, pathlen)) {
110
- OPENSSL_PUT_ERROR(X509V3, X509V3_R_POLICY_PATH_LENGTH);
111
- X509V3_conf_err(val);
112
- return 0;
113
- }
114
- } else if (strcmp(val->name, "policy") == 0) {
115
- unsigned char *tmp_data = NULL;
116
- long val_len;
117
- if (!*policy) {
118
- *policy = ASN1_OCTET_STRING_new();
119
- if (!*policy) {
120
- OPENSSL_PUT_ERROR(X509V3, ERR_R_MALLOC_FAILURE);
121
- X509V3_conf_err(val);
122
- return 0;
123
- }
124
- free_policy = 1;
125
- }
126
- if (strncmp(val->value, "hex:", 4) == 0) {
127
- unsigned char *tmp_data2 =
128
- x509v3_hex_to_bytes(val->value + 4, &val_len);
129
-
130
- if (!tmp_data2) {
131
- OPENSSL_PUT_ERROR(X509V3, X509V3_R_ILLEGAL_HEX_DIGIT);
132
- X509V3_conf_err(val);
133
- goto err;
134
- }
135
-
136
- tmp_data = OPENSSL_realloc((*policy)->data,
137
- (*policy)->length + val_len + 1);
138
- if (tmp_data) {
139
- (*policy)->data = tmp_data;
140
- OPENSSL_memcpy(&(*policy)->data[(*policy)->length],
141
- tmp_data2, val_len);
142
- (*policy)->length += val_len;
143
- (*policy)->data[(*policy)->length] = '\0';
144
- } else {
145
- OPENSSL_free(tmp_data2);
146
- /*
147
- * realloc failure implies the original data space is b0rked
148
- * too!
149
- */
150
- (*policy)->data = NULL;
151
- (*policy)->length = 0;
152
- OPENSSL_PUT_ERROR(X509V3, ERR_R_MALLOC_FAILURE);
153
- X509V3_conf_err(val);
154
- goto err;
155
- }
156
- OPENSSL_free(tmp_data2);
157
- } else if (strncmp(val->value, "text:", 5) == 0) {
158
- val_len = strlen(val->value + 5);
159
- tmp_data = OPENSSL_realloc((*policy)->data,
160
- (*policy)->length + val_len + 1);
161
- if (tmp_data) {
162
- (*policy)->data = tmp_data;
163
- OPENSSL_memcpy(&(*policy)->data[(*policy)->length],
164
- val->value + 5, val_len);
165
- (*policy)->length += val_len;
166
- (*policy)->data[(*policy)->length] = '\0';
167
- } else {
168
- /*
169
- * realloc failure implies the original data space is b0rked
170
- * too!
171
- */
172
- (*policy)->data = NULL;
173
- (*policy)->length = 0;
174
- OPENSSL_PUT_ERROR(X509V3, ERR_R_MALLOC_FAILURE);
175
- X509V3_conf_err(val);
176
- goto err;
177
- }
178
- } else {
179
- OPENSSL_PUT_ERROR(X509V3, X509V3_R_INCORRECT_POLICY_SYNTAX_TAG);
180
- X509V3_conf_err(val);
181
- goto err;
182
- }
183
- if (!tmp_data) {
184
- OPENSSL_PUT_ERROR(X509V3, ERR_R_MALLOC_FAILURE);
185
- X509V3_conf_err(val);
186
- goto err;
187
- }
188
- }
189
- return 1;
190
- err:
191
- if (free_policy) {
192
- ASN1_OCTET_STRING_free(*policy);
193
- *policy = NULL;
194
- }
195
- return 0;
196
- }
197
-
198
- static PROXY_CERT_INFO_EXTENSION *r2i_pci(X509V3_EXT_METHOD *method,
199
- X509V3_CTX *ctx, char *value)
200
- {
201
- PROXY_CERT_INFO_EXTENSION *pci = NULL;
202
- STACK_OF(CONF_VALUE) *vals;
203
- ASN1_OBJECT *language = NULL;
204
- ASN1_INTEGER *pathlen = NULL;
205
- ASN1_OCTET_STRING *policy = NULL;
206
- size_t i, j;
207
- int nid;
208
-
209
- vals = X509V3_parse_list(value);
210
- for (i = 0; i < sk_CONF_VALUE_num(vals); i++) {
211
- CONF_VALUE *cnf = sk_CONF_VALUE_value(vals, i);
212
- if (!cnf->name || (*cnf->name != '@' && !cnf->value)) {
213
- OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_PROXY_POLICY_SETTING);
214
- X509V3_conf_err(cnf);
215
- goto err;
216
- }
217
- if (*cnf->name == '@') {
218
- STACK_OF(CONF_VALUE) *sect;
219
- int success_p = 1;
220
-
221
- sect = X509V3_get_section(ctx, cnf->name + 1);
222
- if (!sect) {
223
- OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_SECTION);
224
- X509V3_conf_err(cnf);
225
- goto err;
226
- }
227
- for (j = 0; success_p && j < sk_CONF_VALUE_num(sect); j++) {
228
- success_p =
229
- process_pci_value(sk_CONF_VALUE_value(sect, j),
230
- &language, &pathlen, &policy);
231
- }
232
- X509V3_section_free(ctx, sect);
233
- if (!success_p)
234
- goto err;
235
- } else {
236
- if (!process_pci_value(cnf, &language, &pathlen, &policy)) {
237
- X509V3_conf_err(cnf);
238
- goto err;
239
- }
240
- }
241
- }
242
-
243
- /* Language is mandatory */
244
- if (!language) {
245
- OPENSSL_PUT_ERROR(X509V3,
246
- X509V3_R_NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED);
247
- goto err;
248
- }
249
- nid = OBJ_obj2nid(language);
250
- if ((nid == NID_Independent || nid == NID_id_ppl_inheritAll) && policy) {
251
- OPENSSL_PUT_ERROR(X509V3,
252
- X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY);
253
- goto err;
254
- }
255
-
256
- pci = PROXY_CERT_INFO_EXTENSION_new();
257
- if (!pci) {
258
- OPENSSL_PUT_ERROR(X509V3, ERR_R_MALLOC_FAILURE);
259
- goto err;
260
- }
261
-
262
- pci->proxyPolicy->policyLanguage = language;
263
- language = NULL;
264
- pci->proxyPolicy->policy = policy;
265
- policy = NULL;
266
- pci->pcPathLengthConstraint = pathlen;
267
- pathlen = NULL;
268
- goto end;
269
- err:
270
- if (language) {
271
- ASN1_OBJECT_free(language);
272
- language = NULL;
273
- }
274
- if (pathlen) {
275
- ASN1_INTEGER_free(pathlen);
276
- pathlen = NULL;
277
- }
278
- if (policy) {
279
- ASN1_OCTET_STRING_free(policy);
280
- policy = NULL;
281
- }
282
- if (pci) {
283
- PROXY_CERT_INFO_EXTENSION_free(pci);
284
- pci = NULL;
285
- }
286
- end:
287
- sk_CONF_VALUE_pop_free(vals, X509V3_conf_free);
288
- return pci;
289
- }
1
+ /* v3_pci.c -*- mode:C; c-file-style: "eay" -*- */
2
+ /*
3
+ * Contributed to the OpenSSL Project 2004 by Richard Levitte
4
+ * (richard@levitte.org)
5
+ */
6
+ /* Copyright (c) 2004 Kungliga Tekniska Högskolan
7
+ * (Royal Institute of Technology, Stockholm, Sweden).
8
+ * All rights reserved.
9
+ *
10
+ * Redistribution and use in source and binary forms, with or without
11
+ * modification, are permitted provided that the following conditions
12
+ * are met:
13
+ *
14
+ * 1. Redistributions of source code must retain the above copyright
15
+ * notice, this list of conditions and the following disclaimer.
16
+ *
17
+ * 2. Redistributions in binary form must reproduce the above copyright
18
+ * notice, this list of conditions and the following disclaimer in the
19
+ * documentation and/or other materials provided with the distribution.
20
+ *
21
+ * 3. Neither the name of the Institute nor the names of its contributors
22
+ * may be used to endorse or promote products derived from this software
23
+ * without specific prior written permission.
24
+ *
25
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
26
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
29
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
30
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
31
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
32
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
34
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
35
+ * SUCH DAMAGE.
36
+ */
37
+
38
+ #include <string.h>
39
+
40
+ #include <openssl/conf.h>
41
+ #include <openssl/err.h>
42
+ #include <openssl/mem.h>
43
+ #include <openssl/obj.h>
44
+ #include <openssl/x509v3.h>
45
+
46
+ #include "../internal.h"
47
+ #include "internal.h"
48
+
49
+
50
+ static int i2r_pci(const X509V3_EXT_METHOD *method, void *ext, BIO *out,
51
+ int indent);
52
+ static void *r2i_pci(const X509V3_EXT_METHOD *method, X509V3_CTX *ctx,
53
+ const char *str);
54
+
55
+ const X509V3_EXT_METHOD v3_pci =
56
+ { NID_proxyCertInfo, 0, ASN1_ITEM_ref(PROXY_CERT_INFO_EXTENSION),
57
+ 0, 0, 0, 0,
58
+ 0, 0,
59
+ NULL, NULL,
60
+ i2r_pci,
61
+ r2i_pci,
62
+ NULL,
63
+ };
64
+
65
+ static int i2r_pci(const X509V3_EXT_METHOD *method, void *ext, BIO *out,
66
+ int indent)
67
+ {
68
+ const PROXY_CERT_INFO_EXTENSION *pci = ext;
69
+ BIO_printf(out, "%*sPath Length Constraint: ", indent, "");
70
+ if (pci->pcPathLengthConstraint)
71
+ i2a_ASN1_INTEGER(out, pci->pcPathLengthConstraint);
72
+ else
73
+ BIO_printf(out, "infinite");
74
+ BIO_puts(out, "\n");
75
+ BIO_printf(out, "%*sPolicy Language: ", indent, "");
76
+ i2a_ASN1_OBJECT(out, pci->proxyPolicy->policyLanguage);
77
+ BIO_puts(out, "\n");
78
+ if (pci->proxyPolicy->policy && pci->proxyPolicy->policy->data)
79
+ BIO_printf(out, "%*sPolicy Text: %.*s\n", indent, "",
80
+ pci->proxyPolicy->policy->length,
81
+ pci->proxyPolicy->policy->data);
82
+ return 1;
83
+ }
84
+
85
+ static int process_pci_value(CONF_VALUE *val,
86
+ ASN1_OBJECT **language, ASN1_INTEGER **pathlen,
87
+ ASN1_OCTET_STRING **policy)
88
+ {
89
+ int free_policy = 0;
90
+
91
+ if (strcmp(val->name, "language") == 0) {
92
+ if (*language) {
93
+ OPENSSL_PUT_ERROR(X509V3,
94
+ X509V3_R_POLICY_LANGUAGE_ALREADY_DEFINED);
95
+ X509V3_conf_err(val);
96
+ return 0;
97
+ }
98
+ if (!(*language = OBJ_txt2obj(val->value, 0))) {
99
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_OBJECT_IDENTIFIER);
100
+ X509V3_conf_err(val);
101
+ return 0;
102
+ }
103
+ } else if (strcmp(val->name, "pathlen") == 0) {
104
+ if (*pathlen) {
105
+ OPENSSL_PUT_ERROR(X509V3,
106
+ X509V3_R_POLICY_PATH_LENGTH_ALREADY_DEFINED);
107
+ X509V3_conf_err(val);
108
+ return 0;
109
+ }
110
+ if (!X509V3_get_value_int(val, pathlen)) {
111
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_POLICY_PATH_LENGTH);
112
+ X509V3_conf_err(val);
113
+ return 0;
114
+ }
115
+ } else if (strcmp(val->name, "policy") == 0) {
116
+ unsigned char *tmp_data = NULL;
117
+ long val_len;
118
+ if (!*policy) {
119
+ *policy = ASN1_OCTET_STRING_new();
120
+ if (!*policy) {
121
+ OPENSSL_PUT_ERROR(X509V3, ERR_R_MALLOC_FAILURE);
122
+ X509V3_conf_err(val);
123
+ return 0;
124
+ }
125
+ free_policy = 1;
126
+ }
127
+ if (strncmp(val->value, "hex:", 4) == 0) {
128
+ unsigned char *tmp_data2 =
129
+ x509v3_hex_to_bytes(val->value + 4, &val_len);
130
+
131
+ if (!tmp_data2) {
132
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_ILLEGAL_HEX_DIGIT);
133
+ X509V3_conf_err(val);
134
+ goto err;
135
+ }
136
+
137
+ tmp_data = OPENSSL_realloc((*policy)->data,
138
+ (*policy)->length + val_len + 1);
139
+ if (tmp_data) {
140
+ (*policy)->data = tmp_data;
141
+ OPENSSL_memcpy(&(*policy)->data[(*policy)->length],
142
+ tmp_data2, val_len);
143
+ (*policy)->length += val_len;
144
+ (*policy)->data[(*policy)->length] = '\0';
145
+ } else {
146
+ OPENSSL_free(tmp_data2);
147
+ /*
148
+ * realloc failure implies the original data space is b0rked
149
+ * too!
150
+ */
151
+ (*policy)->data = NULL;
152
+ (*policy)->length = 0;
153
+ OPENSSL_PUT_ERROR(X509V3, ERR_R_MALLOC_FAILURE);
154
+ X509V3_conf_err(val);
155
+ goto err;
156
+ }
157
+ OPENSSL_free(tmp_data2);
158
+ } else if (strncmp(val->value, "text:", 5) == 0) {
159
+ val_len = strlen(val->value + 5);
160
+ tmp_data = OPENSSL_realloc((*policy)->data,
161
+ (*policy)->length + val_len + 1);
162
+ if (tmp_data) {
163
+ (*policy)->data = tmp_data;
164
+ OPENSSL_memcpy(&(*policy)->data[(*policy)->length],
165
+ val->value + 5, val_len);
166
+ (*policy)->length += val_len;
167
+ (*policy)->data[(*policy)->length] = '\0';
168
+ } else {
169
+ /*
170
+ * realloc failure implies the original data space is b0rked
171
+ * too!
172
+ */
173
+ (*policy)->data = NULL;
174
+ (*policy)->length = 0;
175
+ OPENSSL_PUT_ERROR(X509V3, ERR_R_MALLOC_FAILURE);
176
+ X509V3_conf_err(val);
177
+ goto err;
178
+ }
179
+ } else {
180
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_INCORRECT_POLICY_SYNTAX_TAG);
181
+ X509V3_conf_err(val);
182
+ goto err;
183
+ }
184
+ if (!tmp_data) {
185
+ OPENSSL_PUT_ERROR(X509V3, ERR_R_MALLOC_FAILURE);
186
+ X509V3_conf_err(val);
187
+ goto err;
188
+ }
189
+ }
190
+ return 1;
191
+ err:
192
+ if (free_policy) {
193
+ ASN1_OCTET_STRING_free(*policy);
194
+ *policy = NULL;
195
+ }
196
+ return 0;
197
+ }
198
+
199
+ static void *r2i_pci(const X509V3_EXT_METHOD *method, X509V3_CTX *ctx,
200
+ const char *value)
201
+ {
202
+ PROXY_CERT_INFO_EXTENSION *pci = NULL;
203
+ STACK_OF(CONF_VALUE) *vals;
204
+ ASN1_OBJECT *language = NULL;
205
+ ASN1_INTEGER *pathlen = NULL;
206
+ ASN1_OCTET_STRING *policy = NULL;
207
+ size_t i, j;
208
+ int nid;
209
+
210
+ vals = X509V3_parse_list(value);
211
+ for (i = 0; i < sk_CONF_VALUE_num(vals); i++) {
212
+ CONF_VALUE *cnf = sk_CONF_VALUE_value(vals, i);
213
+ if (!cnf->name || (*cnf->name != '@' && !cnf->value)) {
214
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_PROXY_POLICY_SETTING);
215
+ X509V3_conf_err(cnf);
216
+ goto err;
217
+ }
218
+ if (*cnf->name == '@') {
219
+ STACK_OF(CONF_VALUE) *sect;
220
+ int success_p = 1;
221
+
222
+ sect = X509V3_get_section(ctx, cnf->name + 1);
223
+ if (!sect) {
224
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_SECTION);
225
+ X509V3_conf_err(cnf);
226
+ goto err;
227
+ }
228
+ for (j = 0; success_p && j < sk_CONF_VALUE_num(sect); j++) {
229
+ success_p =
230
+ process_pci_value(sk_CONF_VALUE_value(sect, j),
231
+ &language, &pathlen, &policy);
232
+ }
233
+ X509V3_section_free(ctx, sect);
234
+ if (!success_p)
235
+ goto err;
236
+ } else {
237
+ if (!process_pci_value(cnf, &language, &pathlen, &policy)) {
238
+ X509V3_conf_err(cnf);
239
+ goto err;
240
+ }
241
+ }
242
+ }
243
+
244
+ /* Language is mandatory */
245
+ if (!language) {
246
+ OPENSSL_PUT_ERROR(X509V3,
247
+ X509V3_R_NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED);
248
+ goto err;
249
+ }
250
+ nid = OBJ_obj2nid(language);
251
+ if ((nid == NID_Independent || nid == NID_id_ppl_inheritAll) && policy) {
252
+ OPENSSL_PUT_ERROR(X509V3,
253
+ X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY);
254
+ goto err;
255
+ }
256
+
257
+ pci = PROXY_CERT_INFO_EXTENSION_new();
258
+ if (!pci) {
259
+ OPENSSL_PUT_ERROR(X509V3, ERR_R_MALLOC_FAILURE);
260
+ goto err;
261
+ }
262
+
263
+ pci->proxyPolicy->policyLanguage = language;
264
+ language = NULL;
265
+ pci->proxyPolicy->policy = policy;
266
+ policy = NULL;
267
+ pci->pcPathLengthConstraint = pathlen;
268
+ pathlen = NULL;
269
+ goto end;
270
+ err:
271
+ if (language) {
272
+ ASN1_OBJECT_free(language);
273
+ language = NULL;
274
+ }
275
+ if (pathlen) {
276
+ ASN1_INTEGER_free(pathlen);
277
+ pathlen = NULL;
278
+ }
279
+ if (policy) {
280
+ ASN1_OCTET_STRING_free(policy);
281
+ policy = NULL;
282
+ }
283
+ if (pci) {
284
+ PROXY_CERT_INFO_EXTENSION_free(pci);
285
+ pci = NULL;
286
+ }
287
+ end:
288
+ sk_CONF_VALUE_pop_free(vals, X509V3_conf_free);
289
+ return pci;
290
+ }