@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
@@ -201,7 +201,7 @@ static void ecp_nistz256_windowed_mul(const EC_GROUP *group, P256_POINT *r,
201
201
  // ~1599 ((96 * 16) + 63) bytes of stack space.
202
202
  alignas(64) P256_POINT table[16];
203
203
  uint8_t p_str[33];
204
- OPENSSL_memcpy(p_str, p_scalar->bytes, 32);
204
+ OPENSSL_memcpy(p_str, p_scalar->words, 32);
205
205
  p_str[32] = 0;
206
206
 
207
207
  // table[0] is implicitly (0,0,0) (the point at infinity), therefore it is
@@ -321,7 +321,7 @@ static void ecp_nistz256_point_mul_base(const EC_GROUP *group, EC_RAW_POINT *r,
321
321
  alignas(32) p256_point_union_t t, p;
322
322
 
323
323
  uint8_t p_str[33];
324
- OPENSSL_memcpy(p_str, scalar->bytes, 32);
324
+ OPENSSL_memcpy(p_str, scalar->words, 32);
325
325
  p_str[32] = 0;
326
326
 
327
327
  // First window
@@ -366,7 +366,7 @@ static void ecp_nistz256_points_mul_public(const EC_GROUP *group,
366
366
 
367
367
  alignas(32) p256_point_union_t t, p;
368
368
  uint8_t p_str[33];
369
- OPENSSL_memcpy(p_str, g_scalar->bytes, 32);
369
+ OPENSSL_memcpy(p_str, g_scalar->words, 32);
370
370
  p_str[32] = 0;
371
371
 
372
372
  // First window
@@ -149,8 +149,8 @@ TEST(P256_NistzTest, BEEU) {
149
149
  EXPECT_TRUE(bn_less_than_words(out, order_words, P256_LIMBS));
150
150
 
151
151
  // Calculate out*in and confirm that it equals one, modulo the order.
152
- OPENSSL_memcpy(in_scalar.bytes, in, sizeof(in));
153
- OPENSSL_memcpy(out_scalar.bytes, out, sizeof(out));
152
+ OPENSSL_memcpy(in_scalar.words, in, sizeof(in));
153
+ OPENSSL_memcpy(out_scalar.words, out, sizeof(out));
154
154
  ec_scalar_to_montgomery(group.get(), &in_scalar, &in_scalar);
155
155
  ec_scalar_to_montgomery(group.get(), &out_scalar, &out_scalar);
156
156
  ec_scalar_mul_montgomery(group.get(), &result, &in_scalar, &out_scalar);
@@ -81,17 +81,22 @@ static void fiat_p256_cmovznz(fiat_p256_limb_t out[FIAT_P256_NLIMBS],
81
81
  fiat_p256_selectznz(out, !!t, z, nz);
82
82
  }
83
83
 
84
+ static void fiat_p256_from_words(fiat_p256_felem out,
85
+ const BN_ULONG in[32 / sizeof(BN_ULONG)]) {
86
+ // Typically, |BN_ULONG| and |fiat_p256_limb_t| will be the same type, but on
87
+ // 64-bit platforms without |uint128_t|, they are different. However, on
88
+ // little-endian systems, |uint64_t[4]| and |uint32_t[8]| have the same
89
+ // layout.
90
+ OPENSSL_memcpy(out, in, 32);
91
+ }
92
+
84
93
  static void fiat_p256_from_generic(fiat_p256_felem out, const EC_FELEM *in) {
85
- fiat_p256_from_bytes(out, in->bytes);
94
+ fiat_p256_from_words(out, in->words);
86
95
  }
87
96
 
88
97
  static void fiat_p256_to_generic(EC_FELEM *out, const fiat_p256_felem in) {
89
- // This works because 256 is a multiple of 64, so there are no excess bytes to
90
- // zero when rounding up to |BN_ULONG|s.
91
- OPENSSL_STATIC_ASSERT(
92
- 256 / 8 == sizeof(BN_ULONG) * ((256 + BN_BITS2 - 1) / BN_BITS2),
93
- "fiat_p256_to_bytes leaves bytes uninitialized");
94
- fiat_p256_to_bytes(out->bytes, in);
98
+ // See |fiat_p256_from_words|.
99
+ OPENSSL_memcpy(out->words, in, 32);
95
100
  }
96
101
 
97
102
  // fiat_p256_inv_square calculates |out| = |in|^{-2}
@@ -394,12 +399,18 @@ static void fiat_p256_select_point(const fiat_p256_limb_t idx, size_t size,
394
399
  }
395
400
  }
396
401
 
397
- // fiat_p256_get_bit returns the |i|th bit in |in|
398
- static crypto_word_t fiat_p256_get_bit(const uint8_t *in, int i) {
402
+ // fiat_p256_get_bit returns the |i|th bit in |in|.
403
+ static crypto_word_t fiat_p256_get_bit(const EC_SCALAR *in, int i) {
399
404
  if (i < 0 || i >= 256) {
400
405
  return 0;
401
406
  }
402
- return (in[i >> 3] >> (i & 7)) & 1;
407
+ #if defined(OPENSSL_64_BIT)
408
+ static_assert(sizeof(BN_ULONG) == 8, "BN_ULONG was not 64-bit");
409
+ return (in->words[i >> 6] >> (i & 63)) & 1;
410
+ #else
411
+ static_assert(sizeof(BN_ULONG) == 4, "BN_ULONG was not 32-bit");
412
+ return (in->words[i >> 5] >> (i & 31)) & 1;
413
+ #endif
403
414
  }
404
415
 
405
416
  // OPENSSL EC_METHOD FUNCTIONS
@@ -500,12 +511,12 @@ static void ec_GFp_nistp256_point_mul(const EC_GROUP *group, EC_RAW_POINT *r,
500
511
 
501
512
  // do other additions every 5 doublings
502
513
  if (i % 5 == 0) {
503
- crypto_word_t bits = fiat_p256_get_bit(scalar->bytes, i + 4) << 5;
504
- bits |= fiat_p256_get_bit(scalar->bytes, i + 3) << 4;
505
- bits |= fiat_p256_get_bit(scalar->bytes, i + 2) << 3;
506
- bits |= fiat_p256_get_bit(scalar->bytes, i + 1) << 2;
507
- bits |= fiat_p256_get_bit(scalar->bytes, i) << 1;
508
- bits |= fiat_p256_get_bit(scalar->bytes, i - 1);
514
+ crypto_word_t bits = fiat_p256_get_bit(scalar, i + 4) << 5;
515
+ bits |= fiat_p256_get_bit(scalar, i + 3) << 4;
516
+ bits |= fiat_p256_get_bit(scalar, i + 2) << 3;
517
+ bits |= fiat_p256_get_bit(scalar, i + 1) << 2;
518
+ bits |= fiat_p256_get_bit(scalar, i) << 1;
519
+ bits |= fiat_p256_get_bit(scalar, i - 1);
509
520
  crypto_word_t sign, digit;
510
521
  ec_GFp_nistp_recode_scalar_bits(&sign, &digit, bits);
511
522
 
@@ -545,10 +556,10 @@ static void ec_GFp_nistp256_point_mul_base(const EC_GROUP *group,
545
556
  }
546
557
 
547
558
  // First, look 32 bits upwards.
548
- crypto_word_t bits = fiat_p256_get_bit(scalar->bytes, i + 224) << 3;
549
- bits |= fiat_p256_get_bit(scalar->bytes, i + 160) << 2;
550
- bits |= fiat_p256_get_bit(scalar->bytes, i + 96) << 1;
551
- bits |= fiat_p256_get_bit(scalar->bytes, i + 32);
559
+ crypto_word_t bits = fiat_p256_get_bit(scalar, i + 224) << 3;
560
+ bits |= fiat_p256_get_bit(scalar, i + 160) << 2;
561
+ bits |= fiat_p256_get_bit(scalar, i + 96) << 1;
562
+ bits |= fiat_p256_get_bit(scalar, i + 32);
552
563
  // Select the point to add, in constant time.
553
564
  fiat_p256_select_point_affine((fiat_p256_limb_t)bits, 15,
554
565
  fiat_p256_g_pre_comp[1], tmp);
@@ -564,10 +575,10 @@ static void ec_GFp_nistp256_point_mul_base(const EC_GROUP *group,
564
575
  }
565
576
 
566
577
  // Second, look at the current position.
567
- bits = fiat_p256_get_bit(scalar->bytes, i + 192) << 3;
568
- bits |= fiat_p256_get_bit(scalar->bytes, i + 128) << 2;
569
- bits |= fiat_p256_get_bit(scalar->bytes, i + 64) << 1;
570
- bits |= fiat_p256_get_bit(scalar->bytes, i);
578
+ bits = fiat_p256_get_bit(scalar, i + 192) << 3;
579
+ bits |= fiat_p256_get_bit(scalar, i + 128) << 2;
580
+ bits |= fiat_p256_get_bit(scalar, i + 64) << 1;
581
+ bits |= fiat_p256_get_bit(scalar, i);
571
582
  // Select the point to add, in constant time.
572
583
  fiat_p256_select_point_affine((fiat_p256_limb_t)bits, 15,
573
584
  fiat_p256_g_pre_comp[0], tmp);
@@ -617,10 +628,10 @@ static void ec_GFp_nistp256_point_mul_public(const EC_GROUP *group,
617
628
  // constant-time lookup.
618
629
  if (i <= 31) {
619
630
  // First, look 32 bits upwards.
620
- crypto_word_t bits = fiat_p256_get_bit(g_scalar->bytes, i + 224) << 3;
621
- bits |= fiat_p256_get_bit(g_scalar->bytes, i + 160) << 2;
622
- bits |= fiat_p256_get_bit(g_scalar->bytes, i + 96) << 1;
623
- bits |= fiat_p256_get_bit(g_scalar->bytes, i + 32);
631
+ crypto_word_t bits = fiat_p256_get_bit(g_scalar, i + 224) << 3;
632
+ bits |= fiat_p256_get_bit(g_scalar, i + 160) << 2;
633
+ bits |= fiat_p256_get_bit(g_scalar, i + 96) << 1;
634
+ bits |= fiat_p256_get_bit(g_scalar, i + 32);
624
635
  if (bits != 0) {
625
636
  size_t index = (size_t)(bits - 1);
626
637
  fiat_p256_point_add(ret[0], ret[1], ret[2], ret[0], ret[1], ret[2],
@@ -631,10 +642,10 @@ static void ec_GFp_nistp256_point_mul_public(const EC_GROUP *group,
631
642
  }
632
643
 
633
644
  // Second, look at the current position.
634
- bits = fiat_p256_get_bit(g_scalar->bytes, i + 192) << 3;
635
- bits |= fiat_p256_get_bit(g_scalar->bytes, i + 128) << 2;
636
- bits |= fiat_p256_get_bit(g_scalar->bytes, i + 64) << 1;
637
- bits |= fiat_p256_get_bit(g_scalar->bytes, i);
645
+ bits = fiat_p256_get_bit(g_scalar, i + 192) << 3;
646
+ bits |= fiat_p256_get_bit(g_scalar, i + 128) << 2;
647
+ bits |= fiat_p256_get_bit(g_scalar, i + 64) << 1;
648
+ bits |= fiat_p256_get_bit(g_scalar, i);
638
649
  if (bits != 0) {
639
650
  size_t index = (size_t)(bits - 1);
640
651
  fiat_p256_point_add(ret[0], ret[1], ret[2], ret[0], ret[1], ret[2],
@@ -687,7 +698,7 @@ static int ec_GFp_nistp256_cmp_x_coordinate(const EC_GROUP *group,
687
698
  fiat_p256_mul(Z2_mont, Z2_mont, Z2_mont);
688
699
 
689
700
  fiat_p256_felem r_Z2;
690
- fiat_p256_from_bytes(r_Z2, r->bytes); // r < order < p, so this is valid.
701
+ fiat_p256_from_words(r_Z2, r->words); // r < order < p, so this is valid.
691
702
  fiat_p256_mul(r_Z2, r_Z2, Z2_mont);
692
703
 
693
704
  fiat_p256_felem X;
@@ -1,175 +1,169 @@
1
- /* Copyright (c) 2018, Google Inc.
2
- *
3
- * Permission to use, copy, modify, and/or distribute this software for any
4
- * purpose with or without fee is hereby granted, provided that the above
5
- * copyright notice and this permission notice appear in all copies.
6
- *
7
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
10
- * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
12
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
13
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
14
-
15
- #include <openssl/ec.h>
16
- #include <openssl/err.h>
17
- #include <openssl/mem.h>
18
-
19
- #include "internal.h"
20
- #include "../bn/internal.h"
21
- #include "../../internal.h"
22
-
23
-
24
- int ec_bignum_to_scalar(const EC_GROUP *group, EC_SCALAR *out,
25
- const BIGNUM *in) {
26
- if (!bn_copy_words(out->words, group->order.width, in) ||
27
- !bn_less_than_words(out->words, group->order.d, group->order.width)) {
28
- OPENSSL_PUT_ERROR(EC, EC_R_INVALID_SCALAR);
29
- return 0;
30
- }
31
- return 1;
32
- }
33
-
34
- int ec_scalar_equal_vartime(const EC_GROUP *group, const EC_SCALAR *a,
35
- const EC_SCALAR *b) {
36
- return OPENSSL_memcmp(a->words, b->words,
37
- group->order.width * sizeof(BN_ULONG)) == 0;
38
- }
39
-
40
- int ec_scalar_is_zero(const EC_GROUP *group, const EC_SCALAR *a) {
41
- BN_ULONG mask = 0;
42
- for (int i = 0; i < group->order.width; i++) {
43
- mask |= a->words[i];
44
- }
45
- return mask == 0;
46
- }
47
-
48
- int ec_random_nonzero_scalar(const EC_GROUP *group, EC_SCALAR *out,
49
- const uint8_t additional_data[32]) {
50
- return bn_rand_range_words(out->words, 1, group->order.d, group->order.width,
51
- additional_data);
52
- }
53
-
54
- void ec_scalar_to_bytes(const EC_GROUP *group, uint8_t *out, size_t *out_len,
55
- const EC_SCALAR *in) {
56
- size_t len = BN_num_bytes(&group->order);
57
- for (size_t i = 0; i < len; i++) {
58
- out[len - i - 1] = in->bytes[i];
59
- }
60
- *out_len = len;
61
- }
62
-
63
- int ec_scalar_from_bytes(const EC_GROUP *group, EC_SCALAR *out,
64
- const uint8_t *in, size_t len) {
65
- if (len != BN_num_bytes(&group->order)) {
66
- OPENSSL_PUT_ERROR(EC, EC_R_INVALID_SCALAR);
67
- return 0;
68
- }
69
-
70
- OPENSSL_memset(out, 0, sizeof(EC_SCALAR));
71
-
72
- for (size_t i = 0; i < len; i++) {
73
- out->bytes[i] = in[len - i - 1];
74
- }
75
-
76
- if (!bn_less_than_words(out->words, group->order.d, group->order.width)) {
77
- OPENSSL_PUT_ERROR(EC, EC_R_INVALID_SCALAR);
78
- return 0;
79
- }
80
-
81
- return 1;
82
- }
83
-
84
- void ec_scalar_reduce(const EC_GROUP *group, EC_SCALAR *out,
85
- const BN_ULONG *words, size_t num) {
86
- // Convert "from" Montgomery form so the value is reduced modulo the order.
87
- bn_from_montgomery_small(out->words, group->order.width, words, num,
88
- group->order_mont);
89
- // Convert "to" Montgomery form to remove the R^-1 factor added.
90
- ec_scalar_to_montgomery(group, out, out);
91
- }
92
-
93
- void ec_scalar_add(const EC_GROUP *group, EC_SCALAR *r, const EC_SCALAR *a,
94
- const EC_SCALAR *b) {
95
- const BIGNUM *order = &group->order;
96
- BN_ULONG tmp[EC_MAX_WORDS];
97
- bn_mod_add_words(r->words, a->words, b->words, order->d, tmp, order->width);
98
- OPENSSL_cleanse(tmp, sizeof(tmp));
99
- }
100
-
101
- void ec_scalar_sub(const EC_GROUP *group, EC_SCALAR *r, const EC_SCALAR *a,
102
- const EC_SCALAR *b) {
103
- const BIGNUM *order = &group->order;
104
- BN_ULONG tmp[EC_MAX_WORDS];
105
- bn_mod_sub_words(r->words, a->words, b->words, order->d, tmp, order->width);
106
- OPENSSL_cleanse(tmp, sizeof(tmp));
107
- }
108
-
109
- void ec_scalar_neg(const EC_GROUP *group, EC_SCALAR *r, const EC_SCALAR *a) {
110
- EC_SCALAR zero;
111
- OPENSSL_memset(&zero, 0, sizeof(EC_SCALAR));
112
- ec_scalar_sub(group, r, &zero, a);
113
- }
114
-
115
- void ec_scalar_select(const EC_GROUP *group, EC_SCALAR *out, BN_ULONG mask,
116
- const EC_SCALAR *a, const EC_SCALAR *b) {
117
- const BIGNUM *order = &group->order;
118
- bn_select_words(out->words, mask, a->words, b->words, order->width);
119
- }
120
-
121
- void ec_scalar_to_montgomery(const EC_GROUP *group, EC_SCALAR *r,
122
- const EC_SCALAR *a) {
123
- const BIGNUM *order = &group->order;
124
- bn_to_montgomery_small(r->words, a->words, order->width, group->order_mont);
125
- }
126
-
127
- void ec_scalar_from_montgomery(const EC_GROUP *group, EC_SCALAR *r,
128
- const EC_SCALAR *a) {
129
- const BIGNUM *order = &group->order;
130
- bn_from_montgomery_small(r->words, order->width, a->words, order->width,
131
- group->order_mont);
132
- }
133
-
134
- void ec_scalar_mul_montgomery(const EC_GROUP *group, EC_SCALAR *r,
135
- const EC_SCALAR *a, const EC_SCALAR *b) {
136
- const BIGNUM *order = &group->order;
137
- bn_mod_mul_montgomery_small(r->words, a->words, b->words, order->width,
138
- group->order_mont);
139
- }
140
-
141
- void ec_simple_scalar_inv0_montgomery(const EC_GROUP *group, EC_SCALAR *r,
142
- const EC_SCALAR *a) {
143
- const BIGNUM *order = &group->order;
144
- bn_mod_inverse0_prime_mont_small(r->words, a->words, order->width,
145
- group->order_mont);
146
- }
147
-
148
- int ec_simple_scalar_to_montgomery_inv_vartime(const EC_GROUP *group,
149
- EC_SCALAR *r,
150
- const EC_SCALAR *a) {
151
- if (ec_scalar_is_zero(group, a)) {
152
- return 0;
153
- }
154
-
155
- // This implementation (in fact) runs in constant time,
156
- // even though for this interface it is not mandatory.
157
-
158
- // r = a^-1 in the Montgomery domain. This is
159
- // |ec_scalar_to_montgomery| followed by |ec_scalar_inv0_montgomery|, but
160
- // |ec_scalar_inv0_montgomery| followed by |ec_scalar_from_montgomery| is
161
- // equivalent and slightly more efficient.
162
- ec_scalar_inv0_montgomery(group, r, a);
163
- ec_scalar_from_montgomery(group, r, r);
164
- return 1;
165
- }
166
-
167
- void ec_scalar_inv0_montgomery(const EC_GROUP *group, EC_SCALAR *r,
168
- const EC_SCALAR *a) {
169
- group->meth->scalar_inv0_montgomery(group, r, a);
170
- }
171
-
172
- int ec_scalar_to_montgomery_inv_vartime(const EC_GROUP *group, EC_SCALAR *r,
173
- const EC_SCALAR *a) {
174
- return group->meth->scalar_to_montgomery_inv_vartime(group, r, a);
175
- }
1
+ /* Copyright (c) 2018, Google Inc.
2
+ *
3
+ * Permission to use, copy, modify, and/or distribute this software for any
4
+ * purpose with or without fee is hereby granted, provided that the above
5
+ * copyright notice and this permission notice appear in all copies.
6
+ *
7
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
10
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
12
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
13
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
14
+
15
+ #include <openssl/ec.h>
16
+ #include <openssl/err.h>
17
+ #include <openssl/mem.h>
18
+
19
+ #include "internal.h"
20
+ #include "../bn/internal.h"
21
+ #include "../../internal.h"
22
+
23
+
24
+ int ec_bignum_to_scalar(const EC_GROUP *group, EC_SCALAR *out,
25
+ const BIGNUM *in) {
26
+ if (!bn_copy_words(out->words, group->order.width, in) ||
27
+ !bn_less_than_words(out->words, group->order.d, group->order.width)) {
28
+ OPENSSL_PUT_ERROR(EC, EC_R_INVALID_SCALAR);
29
+ return 0;
30
+ }
31
+ return 1;
32
+ }
33
+
34
+ int ec_scalar_equal_vartime(const EC_GROUP *group, const EC_SCALAR *a,
35
+ const EC_SCALAR *b) {
36
+ return OPENSSL_memcmp(a->words, b->words,
37
+ group->order.width * sizeof(BN_ULONG)) == 0;
38
+ }
39
+
40
+ int ec_scalar_is_zero(const EC_GROUP *group, const EC_SCALAR *a) {
41
+ BN_ULONG mask = 0;
42
+ for (int i = 0; i < group->order.width; i++) {
43
+ mask |= a->words[i];
44
+ }
45
+ return mask == 0;
46
+ }
47
+
48
+ int ec_random_nonzero_scalar(const EC_GROUP *group, EC_SCALAR *out,
49
+ const uint8_t additional_data[32]) {
50
+ return bn_rand_range_words(out->words, 1, group->order.d, group->order.width,
51
+ additional_data);
52
+ }
53
+
54
+ void ec_scalar_to_bytes(const EC_GROUP *group, uint8_t *out, size_t *out_len,
55
+ const EC_SCALAR *in) {
56
+ size_t len = BN_num_bytes(&group->order);
57
+ bn_words_to_big_endian(out, len, in->words, group->order.width);
58
+ *out_len = len;
59
+ }
60
+
61
+ int ec_scalar_from_bytes(const EC_GROUP *group, EC_SCALAR *out,
62
+ const uint8_t *in, size_t len) {
63
+ if (len != BN_num_bytes(&group->order)) {
64
+ OPENSSL_PUT_ERROR(EC, EC_R_INVALID_SCALAR);
65
+ return 0;
66
+ }
67
+
68
+ bn_big_endian_to_words(out->words, group->order.width, in, len);
69
+
70
+ if (!bn_less_than_words(out->words, group->order.d, group->order.width)) {
71
+ OPENSSL_PUT_ERROR(EC, EC_R_INVALID_SCALAR);
72
+ return 0;
73
+ }
74
+
75
+ return 1;
76
+ }
77
+
78
+ void ec_scalar_reduce(const EC_GROUP *group, EC_SCALAR *out,
79
+ const BN_ULONG *words, size_t num) {
80
+ // Convert "from" Montgomery form so the value is reduced modulo the order.
81
+ bn_from_montgomery_small(out->words, group->order.width, words, num,
82
+ group->order_mont);
83
+ // Convert "to" Montgomery form to remove the R^-1 factor added.
84
+ ec_scalar_to_montgomery(group, out, out);
85
+ }
86
+
87
+ void ec_scalar_add(const EC_GROUP *group, EC_SCALAR *r, const EC_SCALAR *a,
88
+ const EC_SCALAR *b) {
89
+ const BIGNUM *order = &group->order;
90
+ BN_ULONG tmp[EC_MAX_WORDS];
91
+ bn_mod_add_words(r->words, a->words, b->words, order->d, tmp, order->width);
92
+ OPENSSL_cleanse(tmp, sizeof(tmp));
93
+ }
94
+
95
+ void ec_scalar_sub(const EC_GROUP *group, EC_SCALAR *r, const EC_SCALAR *a,
96
+ const EC_SCALAR *b) {
97
+ const BIGNUM *order = &group->order;
98
+ BN_ULONG tmp[EC_MAX_WORDS];
99
+ bn_mod_sub_words(r->words, a->words, b->words, order->d, tmp, order->width);
100
+ OPENSSL_cleanse(tmp, sizeof(tmp));
101
+ }
102
+
103
+ void ec_scalar_neg(const EC_GROUP *group, EC_SCALAR *r, const EC_SCALAR *a) {
104
+ EC_SCALAR zero;
105
+ OPENSSL_memset(&zero, 0, sizeof(EC_SCALAR));
106
+ ec_scalar_sub(group, r, &zero, a);
107
+ }
108
+
109
+ void ec_scalar_select(const EC_GROUP *group, EC_SCALAR *out, BN_ULONG mask,
110
+ const EC_SCALAR *a, const EC_SCALAR *b) {
111
+ const BIGNUM *order = &group->order;
112
+ bn_select_words(out->words, mask, a->words, b->words, order->width);
113
+ }
114
+
115
+ void ec_scalar_to_montgomery(const EC_GROUP *group, EC_SCALAR *r,
116
+ const EC_SCALAR *a) {
117
+ const BIGNUM *order = &group->order;
118
+ bn_to_montgomery_small(r->words, a->words, order->width, group->order_mont);
119
+ }
120
+
121
+ void ec_scalar_from_montgomery(const EC_GROUP *group, EC_SCALAR *r,
122
+ const EC_SCALAR *a) {
123
+ const BIGNUM *order = &group->order;
124
+ bn_from_montgomery_small(r->words, order->width, a->words, order->width,
125
+ group->order_mont);
126
+ }
127
+
128
+ void ec_scalar_mul_montgomery(const EC_GROUP *group, EC_SCALAR *r,
129
+ const EC_SCALAR *a, const EC_SCALAR *b) {
130
+ const BIGNUM *order = &group->order;
131
+ bn_mod_mul_montgomery_small(r->words, a->words, b->words, order->width,
132
+ group->order_mont);
133
+ }
134
+
135
+ void ec_simple_scalar_inv0_montgomery(const EC_GROUP *group, EC_SCALAR *r,
136
+ const EC_SCALAR *a) {
137
+ const BIGNUM *order = &group->order;
138
+ bn_mod_inverse0_prime_mont_small(r->words, a->words, order->width,
139
+ group->order_mont);
140
+ }
141
+
142
+ int ec_simple_scalar_to_montgomery_inv_vartime(const EC_GROUP *group,
143
+ EC_SCALAR *r,
144
+ const EC_SCALAR *a) {
145
+ if (ec_scalar_is_zero(group, a)) {
146
+ return 0;
147
+ }
148
+
149
+ // This implementation (in fact) runs in constant time,
150
+ // even though for this interface it is not mandatory.
151
+
152
+ // r = a^-1 in the Montgomery domain. This is
153
+ // |ec_scalar_to_montgomery| followed by |ec_scalar_inv0_montgomery|, but
154
+ // |ec_scalar_inv0_montgomery| followed by |ec_scalar_from_montgomery| is
155
+ // equivalent and slightly more efficient.
156
+ ec_scalar_inv0_montgomery(group, r, a);
157
+ ec_scalar_from_montgomery(group, r, r);
158
+ return 1;
159
+ }
160
+
161
+ void ec_scalar_inv0_montgomery(const EC_GROUP *group, EC_SCALAR *r,
162
+ const EC_SCALAR *a) {
163
+ group->meth->scalar_inv0_montgomery(group, r, a);
164
+ }
165
+
166
+ int ec_scalar_to_montgomery_inv_vartime(const EC_GROUP *group, EC_SCALAR *r,
167
+ const EC_SCALAR *a) {
168
+ return group->meth->scalar_to_montgomery_inv_vartime(group, r, a);
169
+ }