visaljs 0.0.2 → 0.0.4

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 (1243) hide show
  1. package/README.md +3 -1
  2. package/cli.js +545 -86
  3. package/node/include/js_node.h +30 -5
  4. package/node/include/js_uv.h +36 -0
  5. package/node/prelude/async_hooks.js +0 -0
  6. package/node/prelude/buffer.js +0 -0
  7. package/node/prelude/crypto.js +7 -10
  8. package/node/prelude/dns.js +99 -0
  9. package/node/prelude/dns_promises.js +10 -0
  10. package/node/prelude/events.js +0 -0
  11. package/node/prelude/fs.js +0 -0
  12. package/node/prelude/http.js +1039 -195
  13. package/node/prelude/http2.js +0 -0
  14. package/node/prelude/internal/crypto/asym.js +39 -12
  15. package/node/prelude/internal/crypto/cipher.js +0 -0
  16. package/node/prelude/internal/crypto/dh_groups.js +12 -0
  17. package/node/prelude/internal/crypto/diffiehellman.js +354 -0
  18. package/node/prelude/internal/crypto/hash.js +1 -1
  19. package/node/prelude/internal/crypto/kdf.js +0 -0
  20. package/node/prelude/internal/crypto/key_type.js +3 -0
  21. package/node/prelude/internal/crypto/keys.js +39 -9
  22. package/node/prelude/internal/crypto/random.js +0 -0
  23. package/node/prelude/internal/crypto/util.js +0 -0
  24. package/node/prelude/internal/errors.js +0 -0
  25. package/node/prelude/internal/http_agent.js +249 -0
  26. package/node/prelude/internal/net.js +33 -0
  27. package/node/prelude/internal/querystring.js +0 -0
  28. package/node/prelude/internal/socketaddress.js +249 -0
  29. package/node/prelude/internal/tls/common.js +306 -0
  30. package/node/prelude/internal/tls/wrap.js +1220 -0
  31. package/node/prelude/internal/tls/x509.js +394 -0
  32. package/node/prelude/module.js +0 -0
  33. package/node/prelude/net.js +1082 -50
  34. package/node/prelude/os.js +2 -2
  35. package/node/prelude/path.js +0 -0
  36. package/node/prelude/process.js +0 -0
  37. package/node/prelude/querystring.js +0 -0
  38. package/node/prelude/stream.js +6 -0
  39. package/node/prelude/stream_promises.js +0 -0
  40. package/node/prelude/stream_web.js +0 -0
  41. package/node/prelude/string_decoder.js +0 -0
  42. package/node/prelude/tls.js +141 -0
  43. package/node/prelude/tty.js +0 -0
  44. package/node/prelude/url.js +0 -0
  45. package/node/prelude/util.js +5 -2
  46. package/node/prelude/util_types.js +85 -0
  47. package/node/prelude/zlib.js +0 -0
  48. package/node/src/host_fs.c +10 -2
  49. package/node/src/host_http.c +268 -270
  50. package/node/src/host_loop.c +84 -0
  51. package/node/src/host_net.c +495 -0
  52. package/node/src/host_os.c +0 -0
  53. package/node/src/host_sys.c +54 -26
  54. package/node/third_party/libuv/LICENSE +0 -0
  55. package/node/third_party/libuv/include/uv/aix.h +0 -0
  56. package/node/third_party/libuv/include/uv/bsd.h +0 -0
  57. package/node/third_party/libuv/include/uv/darwin.h +0 -0
  58. package/node/third_party/libuv/include/uv/errno.h +0 -0
  59. package/node/third_party/libuv/include/uv/linux.h +0 -0
  60. package/node/third_party/libuv/include/uv/os390.h +0 -0
  61. package/node/third_party/libuv/include/uv/posix.h +0 -0
  62. package/node/third_party/libuv/include/uv/sunos.h +0 -0
  63. package/node/third_party/libuv/include/uv/threadpool.h +0 -0
  64. package/node/third_party/libuv/include/uv/tree.h +0 -0
  65. package/node/third_party/libuv/include/uv/unix.h +0 -0
  66. package/node/third_party/libuv/include/uv/version.h +0 -0
  67. package/node/third_party/libuv/include/uv/win.h +0 -0
  68. package/node/third_party/libuv/include/uv.h +0 -0
  69. package/node/third_party/libuv/src/fs-poll.c +0 -0
  70. package/node/third_party/libuv/src/heap-inl.h +0 -0
  71. package/node/third_party/libuv/src/idna.c +0 -0
  72. package/node/third_party/libuv/src/idna.h +0 -0
  73. package/node/third_party/libuv/src/inet.c +0 -0
  74. package/node/third_party/libuv/src/queue.h +0 -0
  75. package/node/third_party/libuv/src/random.c +0 -0
  76. package/node/third_party/libuv/src/strscpy.c +0 -0
  77. package/node/third_party/libuv/src/strscpy.h +0 -0
  78. package/node/third_party/libuv/src/strtok.c +0 -0
  79. package/node/third_party/libuv/src/strtok.h +0 -0
  80. package/node/third_party/libuv/src/thread-common.c +0 -0
  81. package/node/third_party/libuv/src/threadpool.c +0 -0
  82. package/node/third_party/libuv/src/timer.c +0 -0
  83. package/node/third_party/libuv/src/unix/async.c +0 -0
  84. package/node/third_party/libuv/src/unix/bsd-ifaddrs.c +0 -0
  85. package/node/third_party/libuv/src/unix/core.c +0 -0
  86. package/node/third_party/libuv/src/unix/darwin-proctitle.c +0 -0
  87. package/node/third_party/libuv/src/unix/darwin-stub.h +0 -0
  88. package/node/third_party/libuv/src/unix/darwin-syscalls.h +0 -0
  89. package/node/third_party/libuv/src/unix/darwin.c +0 -0
  90. package/node/third_party/libuv/src/unix/dl.c +0 -0
  91. package/node/third_party/libuv/src/unix/fs.c +0 -0
  92. package/node/third_party/libuv/src/unix/fsevents.c +0 -0
  93. package/node/third_party/libuv/src/unix/getaddrinfo.c +0 -0
  94. package/node/third_party/libuv/src/unix/getnameinfo.c +0 -0
  95. package/node/third_party/libuv/src/unix/internal.h +0 -0
  96. package/node/third_party/libuv/src/unix/kqueue.c +0 -0
  97. package/node/third_party/libuv/src/unix/linux.c +0 -0
  98. package/node/third_party/libuv/src/unix/loop-watcher.c +0 -0
  99. package/node/third_party/libuv/src/unix/loop.c +0 -0
  100. package/node/third_party/libuv/src/unix/pipe.c +0 -0
  101. package/node/third_party/libuv/src/unix/poll.c +0 -0
  102. package/node/third_party/libuv/src/unix/process.c +0 -0
  103. package/node/third_party/libuv/src/unix/procfs-exepath.c +0 -0
  104. package/node/third_party/libuv/src/unix/proctitle.c +0 -0
  105. package/node/third_party/libuv/src/unix/random-devurandom.c +0 -0
  106. package/node/third_party/libuv/src/unix/random-getentropy.c +0 -0
  107. package/node/third_party/libuv/src/unix/random-getrandom.c +0 -0
  108. package/node/third_party/libuv/src/unix/random-sysctl-linux.c +0 -0
  109. package/node/third_party/libuv/src/unix/signal.c +0 -0
  110. package/node/third_party/libuv/src/unix/stream.c +0 -0
  111. package/node/third_party/libuv/src/unix/tcp.c +0 -0
  112. package/node/third_party/libuv/src/unix/thread.c +0 -0
  113. package/node/third_party/libuv/src/unix/tty.c +0 -0
  114. package/node/third_party/libuv/src/unix/udp.c +0 -0
  115. package/node/third_party/libuv/src/uv-common.c +0 -0
  116. package/node/third_party/libuv/src/uv-common.h +0 -0
  117. package/node/third_party/libuv/src/uv-data-getter-setters.c +0 -0
  118. package/node/third_party/libuv/src/version.c +0 -0
  119. package/node/third_party/libuv/src/win/async.c +98 -0
  120. package/node/third_party/libuv/src/win/atomicops-inl.h +61 -0
  121. package/node/third_party/libuv/src/win/core.c +683 -0
  122. package/node/third_party/libuv/src/win/detect-wakeup.c +56 -0
  123. package/node/third_party/libuv/src/win/dl.c +135 -0
  124. package/node/third_party/libuv/src/win/error.c +183 -0
  125. package/node/third_party/libuv/src/win/fs-event.c +620 -0
  126. package/node/third_party/libuv/src/win/fs-fd-hash-inl.h +200 -0
  127. package/node/third_party/libuv/src/win/fs.c +3774 -0
  128. package/node/third_party/libuv/src/win/getaddrinfo.c +388 -0
  129. package/node/third_party/libuv/src/win/getnameinfo.c +146 -0
  130. package/node/third_party/libuv/src/win/handle-inl.h +180 -0
  131. package/node/third_party/libuv/src/win/handle.c +162 -0
  132. package/node/third_party/libuv/src/win/internal.h +335 -0
  133. package/node/third_party/libuv/src/win/loop-watcher.c +122 -0
  134. package/node/third_party/libuv/src/win/pipe.c +2725 -0
  135. package/node/third_party/libuv/src/win/poll.c +586 -0
  136. package/node/third_party/libuv/src/win/process-stdio.c +419 -0
  137. package/node/third_party/libuv/src/win/process.c +1407 -0
  138. package/node/third_party/libuv/src/win/req-inl.h +214 -0
  139. package/node/third_party/libuv/src/win/signal.c +282 -0
  140. package/node/third_party/libuv/src/win/snprintf.c +42 -0
  141. package/node/third_party/libuv/src/win/stream-inl.h +54 -0
  142. package/node/third_party/libuv/src/win/stream.c +252 -0
  143. package/node/third_party/libuv/src/win/tcp.c +1674 -0
  144. package/node/third_party/libuv/src/win/thread.c +568 -0
  145. package/node/third_party/libuv/src/win/tty.c +2460 -0
  146. package/node/third_party/libuv/src/win/udp.c +1162 -0
  147. package/node/third_party/libuv/src/win/util.c +1750 -0
  148. package/node/third_party/libuv/src/win/winapi.c +144 -0
  149. package/node/third_party/libuv/src/win/winapi.h +4831 -0
  150. package/node/third_party/libuv/src/win/winsock.c +575 -0
  151. package/node/third_party/libuv/src/win/winsock.h +160 -0
  152. package/node/third_party/llhttp/LICENSE +0 -0
  153. package/node/third_party/llhttp/api.c +0 -0
  154. package/node/third_party/llhttp/http.c +0 -0
  155. package/node/third_party/llhttp/llhttp.c +0 -0
  156. package/node/third_party/llhttp/llhttp.h +0 -0
  157. package/package.json +1 -1
  158. package/runtime/include/js_atoms.gen.h +0 -0
  159. package/runtime/include/js_atoms.h +0 -0
  160. package/runtime/include/js_bigint.h +0 -0
  161. package/runtime/include/js_buffer.h +0 -0
  162. package/runtime/include/js_builtins.h +16 -0
  163. package/runtime/include/js_console.h +2 -0
  164. package/runtime/include/js_convert.h +0 -0
  165. package/runtime/include/js_core.def +23 -0
  166. package/runtime/include/js_crypto.h +23 -0
  167. package/runtime/include/js_error.h +0 -0
  168. package/runtime/include/js_exception.h +0 -0
  169. package/runtime/include/js_function.h +0 -0
  170. package/runtime/include/js_gc.h +0 -0
  171. package/runtime/include/js_generator.h +2 -3
  172. package/runtime/include/js_host.h +0 -0
  173. package/runtime/include/js_jobs.h +0 -0
  174. package/runtime/include/js_module.h +0 -0
  175. package/runtime/include/js_object.h +0 -0
  176. package/runtime/include/js_ops.h +0 -0
  177. package/runtime/include/js_promise.h +0 -2
  178. package/runtime/include/js_regexp.h +0 -0
  179. package/runtime/include/js_runtime.h +0 -0
  180. package/runtime/include/js_symbol.h +0 -0
  181. package/runtime/include/js_web.h +0 -0
  182. package/runtime/include/jscell.h +0 -0
  183. package/runtime/include/jscontext.h +0 -0
  184. package/runtime/include/jsnum.h +0 -0
  185. package/runtime/include/jsstring.h +0 -0
  186. package/runtime/include/jsvalue.h +0 -0
  187. package/runtime/src/arguments.c +0 -0
  188. package/runtime/src/array.c +0 -0
  189. package/runtime/src/arraybuffer.c +0 -0
  190. package/runtime/src/async_iter.c +4 -1
  191. package/runtime/src/atoms.c +0 -0
  192. package/runtime/src/base64.c +0 -0
  193. package/runtime/src/bigint.c +0 -0
  194. package/runtime/src/blob.c +0 -0
  195. package/runtime/src/boringssl_support.cc +37 -0
  196. package/runtime/src/buffer.c +0 -0
  197. package/runtime/src/builtin_table.c +8 -0
  198. package/runtime/src/builtins.c +0 -0
  199. package/runtime/src/builtins_util.h +0 -0
  200. package/runtime/src/collections.c +0 -0
  201. package/runtime/src/components.c +10 -0
  202. package/runtime/src/console.c +6 -18
  203. package/runtime/src/convert.c +0 -0
  204. package/runtime/src/core_all.c +1 -0
  205. package/runtime/src/crypto.c +0 -0
  206. package/runtime/src/crypto_asym.c +450 -241
  207. package/runtime/src/crypto_bn.c +91 -0
  208. package/runtime/src/crypto_cipher.c +153 -75
  209. package/runtime/src/crypto_hash.c +68 -53
  210. package/runtime/src/crypto_host.c +0 -0
  211. package/runtime/src/crypto_internal.h +55 -26
  212. package/runtime/src/crypto_kdf.c +0 -0
  213. package/runtime/src/crypto_key.c +0 -0
  214. package/runtime/src/crypto_pkey.c +198 -61
  215. package/runtime/src/crypto_subtle.c +42 -16
  216. package/runtime/src/crypto_tls.c +678 -0
  217. package/runtime/src/date.c +0 -0
  218. package/runtime/src/domexception.c +0 -0
  219. package/runtime/src/elements.c +0 -0
  220. package/runtime/src/elements.h +0 -0
  221. package/runtime/src/encoding.c +0 -0
  222. package/runtime/src/error.c +0 -0
  223. package/runtime/src/events.c +0 -0
  224. package/runtime/src/exception.c +0 -0
  225. package/runtime/src/fetch.c +0 -0
  226. package/runtime/src/function.c +0 -0
  227. package/runtime/src/gc.c +0 -0
  228. package/runtime/src/generator.c +8 -1
  229. package/runtime/src/global.c +2 -4
  230. package/runtime/src/headers.c +0 -0
  231. package/runtime/src/inspect.c +0 -0
  232. package/runtime/src/internal.h +0 -1
  233. package/runtime/src/iterate.c +0 -0
  234. package/runtime/src/iterator.c +0 -0
  235. package/runtime/src/jobs.c +2 -1
  236. package/runtime/src/jsnum.c +0 -0
  237. package/runtime/src/json.c +0 -0
  238. package/runtime/src/math.c +0 -0
  239. package/runtime/src/module.c +0 -0
  240. package/runtime/src/number.c +0 -0
  241. package/runtime/src/object.c +0 -0
  242. package/runtime/src/ops.c +0 -0
  243. package/runtime/src/os.c +0 -0
  244. package/runtime/src/os.h +0 -0
  245. package/runtime/src/process.c +7 -0
  246. package/runtime/src/promise.c +4 -1
  247. package/runtime/src/proxy.c +0 -0
  248. package/runtime/src/reflect.c +0 -0
  249. package/runtime/src/regexp.c +0 -0
  250. package/runtime/src/regexp_anchor.h +0 -0
  251. package/runtime/src/regexp_message.h +0 -0
  252. package/runtime/src/shape.c +0 -0
  253. package/runtime/src/shape.h +0 -0
  254. package/runtime/src/streams.c +0 -0
  255. package/runtime/src/streams.h +0 -0
  256. package/runtime/src/string.c +0 -0
  257. package/runtime/src/string_builtins.c +0 -0
  258. package/runtime/src/symbol.c +0 -0
  259. package/runtime/src/test_host.c +0 -0
  260. package/runtime/src/tls_roots.gen.h +3215 -0
  261. package/runtime/src/typedarray.c +0 -0
  262. package/runtime/src/tznames.gen.h +0 -0
  263. package/runtime/src/uri.c +0 -0
  264. package/runtime/src/url.c +0 -0
  265. package/runtime/src/util_types.c +52 -0
  266. package/runtime/src/weak.c +2 -1
  267. package/runtime/src/web.c +0 -0
  268. package/runtime/src/wrapper.c +0 -0
  269. package/runtime/src/writable.c +0 -0
  270. package/runtime/third_party/ada-idna/LICENSE-MIT +0 -0
  271. package/runtime/third_party/ada-idna/README.md +0 -0
  272. package/runtime/third_party/ada-idna/convert.mjs +0 -0
  273. package/runtime/third_party/ada-idna/idna.c +0 -0
  274. package/runtime/third_party/ada-idna/idna.h +0 -0
  275. package/runtime/third_party/ada-idna/idna_tables.h +0 -0
  276. package/runtime/third_party/boringssl/LICENSE +238 -0
  277. package/runtime/third_party/boringssl/README.md +46 -0
  278. package/runtime/third_party/boringssl/VERSION +1 -0
  279. package/runtime/third_party/boringssl/crypto/aes/aes.cc +44 -0
  280. package/runtime/third_party/boringssl/crypto/armv8_feature_parsing.h +67 -0
  281. package/runtime/third_party/boringssl/crypto/asn1/a_bitstr.cc +297 -0
  282. package/runtime/third_party/boringssl/crypto/asn1/a_bool.cc +50 -0
  283. package/runtime/third_party/boringssl/crypto/asn1/a_d2i_fp.cc +47 -0
  284. package/runtime/third_party/boringssl/crypto/asn1/a_dup.cc +42 -0
  285. package/runtime/third_party/boringssl/crypto/asn1/a_gentm.cc +130 -0
  286. package/runtime/third_party/boringssl/crypto/asn1/a_i2d_fp.cc +44 -0
  287. package/runtime/third_party/boringssl/crypto/asn1/a_int.cc +467 -0
  288. package/runtime/third_party/boringssl/crypto/asn1/a_mbstr.cc +242 -0
  289. package/runtime/third_party/boringssl/crypto/asn1/a_object.cc +191 -0
  290. package/runtime/third_party/boringssl/crypto/asn1/a_octet.cc +32 -0
  291. package/runtime/third_party/boringssl/crypto/asn1/a_strex.cc +411 -0
  292. package/runtime/third_party/boringssl/crypto/asn1/a_strnid.cc +208 -0
  293. package/runtime/third_party/boringssl/crypto/asn1/a_time.cc +248 -0
  294. package/runtime/third_party/boringssl/crypto/asn1/a_type.cc +467 -0
  295. package/runtime/third_party/boringssl/crypto/asn1/a_utctm.cc +128 -0
  296. package/runtime/third_party/boringssl/crypto/asn1/asn1_lib.cc +453 -0
  297. package/runtime/third_party/boringssl/crypto/asn1/asn1_par.cc +61 -0
  298. package/runtime/third_party/boringssl/crypto/asn1/asn_pack.cc +56 -0
  299. package/runtime/third_party/boringssl/crypto/asn1/f_int.cc +63 -0
  300. package/runtime/third_party/boringssl/crypto/asn1/f_string.cc +52 -0
  301. package/runtime/third_party/boringssl/crypto/asn1/internal.h +430 -0
  302. package/runtime/third_party/boringssl/crypto/asn1/posix_time.cc +244 -0
  303. package/runtime/third_party/boringssl/crypto/asn1/tasn_dec.cc +611 -0
  304. package/runtime/third_party/boringssl/crypto/asn1/tasn_enc.cc +348 -0
  305. package/runtime/third_party/boringssl/crypto/asn1/tasn_fre.cc +163 -0
  306. package/runtime/third_party/boringssl/crypto/asn1/tasn_new.cc +274 -0
  307. package/runtime/third_party/boringssl/crypto/asn1/tasn_typ.cc +92 -0
  308. package/runtime/third_party/boringssl/crypto/asn1/tasn_utl.cc +218 -0
  309. package/runtime/third_party/boringssl/crypto/base64/base64.cc +433 -0
  310. package/runtime/third_party/boringssl/crypto/bcm_support.h +62 -0
  311. package/runtime/third_party/boringssl/crypto/bio/bio.cc +715 -0
  312. package/runtime/third_party/boringssl/crypto/bio/bio_mem.cc +260 -0
  313. package/runtime/third_party/boringssl/crypto/bio/connect.cc +463 -0
  314. package/runtime/third_party/boringssl/crypto/bio/errno.cc +52 -0
  315. package/runtime/third_party/boringssl/crypto/bio/fd.cc +193 -0
  316. package/runtime/third_party/boringssl/crypto/bio/file.cc +283 -0
  317. package/runtime/third_party/boringssl/crypto/bio/hexdump.cc +154 -0
  318. package/runtime/third_party/boringssl/crypto/bio/internal.h +128 -0
  319. package/runtime/third_party/boringssl/crypto/bio/pair.cc +426 -0
  320. package/runtime/third_party/boringssl/crypto/bio/printf.cc +59 -0
  321. package/runtime/third_party/boringssl/crypto/bio/socket.cc +210 -0
  322. package/runtime/third_party/boringssl/crypto/bio/socket_helper.cc +179 -0
  323. package/runtime/third_party/boringssl/crypto/blake2/blake2.cc +173 -0
  324. package/runtime/third_party/boringssl/crypto/bn/bn_asn1.cc +57 -0
  325. package/runtime/third_party/boringssl/crypto/bn/convert.cc +409 -0
  326. package/runtime/third_party/boringssl/crypto/bn/div.cc +102 -0
  327. package/runtime/third_party/boringssl/crypto/bn/exponentiation.cc +168 -0
  328. package/runtime/third_party/boringssl/crypto/bn/sqrt.cc +93 -0
  329. package/runtime/third_party/boringssl/crypto/buf/buf.cc +119 -0
  330. package/runtime/third_party/boringssl/crypto/bytestring/asn1_compat.cc +54 -0
  331. package/runtime/third_party/boringssl/crypto/bytestring/ber.cc +268 -0
  332. package/runtime/third_party/boringssl/crypto/bytestring/cbb.cc +787 -0
  333. package/runtime/third_party/boringssl/crypto/bytestring/cbs.cc +977 -0
  334. package/runtime/third_party/boringssl/crypto/bytestring/internal.h +134 -0
  335. package/runtime/third_party/boringssl/crypto/bytestring/unicode.cc +156 -0
  336. package/runtime/third_party/boringssl/crypto/chacha/chacha.cc +226 -0
  337. package/runtime/third_party/boringssl/crypto/chacha/internal.h +103 -0
  338. package/runtime/third_party/boringssl/crypto/cipher/derive_key.cc +106 -0
  339. package/runtime/third_party/boringssl/crypto/cipher/e_aesctrhmac.cc +294 -0
  340. package/runtime/third_party/boringssl/crypto/cipher/e_aeseax.cc +351 -0
  341. package/runtime/third_party/boringssl/crypto/cipher/e_aesgcmsiv.cc +918 -0
  342. package/runtime/third_party/boringssl/crypto/cipher/e_chacha20poly1305.cc +404 -0
  343. package/runtime/third_party/boringssl/crypto/cipher/e_des.cc +214 -0
  344. package/runtime/third_party/boringssl/crypto/cipher/e_null.cc +55 -0
  345. package/runtime/third_party/boringssl/crypto/cipher/e_rc2.cc +432 -0
  346. package/runtime/third_party/boringssl/crypto/cipher/e_rc4.cc +56 -0
  347. package/runtime/third_party/boringssl/crypto/cipher/e_tls.cc +615 -0
  348. package/runtime/third_party/boringssl/crypto/cipher/get_cipher.cc +85 -0
  349. package/runtime/third_party/boringssl/crypto/cipher/internal.h +399 -0
  350. package/runtime/third_party/boringssl/crypto/cipher/tls_cbc.cc +476 -0
  351. package/runtime/third_party/boringssl/crypto/cms/cms.cc +178 -0
  352. package/runtime/third_party/boringssl/crypto/conf/conf.cc +637 -0
  353. package/runtime/third_party/boringssl/crypto/conf/internal.h +54 -0
  354. package/runtime/third_party/boringssl/crypto/cpu_aarch64_apple.cc +76 -0
  355. package/runtime/third_party/boringssl/crypto/cpu_aarch64_fuchsia.cc +58 -0
  356. package/runtime/third_party/boringssl/crypto/cpu_aarch64_linux.cc +66 -0
  357. package/runtime/third_party/boringssl/crypto/cpu_aarch64_openbsd.cc +45 -0
  358. package/runtime/third_party/boringssl/crypto/cpu_aarch64_sysreg.cc +66 -0
  359. package/runtime/third_party/boringssl/crypto/cpu_aarch64_win.cc +52 -0
  360. package/runtime/third_party/boringssl/crypto/cpu_arm_freebsd.cc +55 -0
  361. package/runtime/third_party/boringssl/crypto/cpu_arm_linux.cc +173 -0
  362. package/runtime/third_party/boringssl/crypto/cpu_arm_linux.h +141 -0
  363. package/runtime/third_party/boringssl/crypto/cpu_intel.cc +287 -0
  364. package/runtime/third_party/boringssl/crypto/crypto.cc +152 -0
  365. package/runtime/third_party/boringssl/crypto/curve25519/asm/x25519-asm-arm.S +2124 -0
  366. package/runtime/third_party/boringssl/crypto/curve25519/cpace.cc +227 -0
  367. package/runtime/third_party/boringssl/crypto/curve25519/curve25519.cc +2436 -0
  368. package/runtime/third_party/boringssl/crypto/curve25519/curve25519_64_adx.cc +18 -0
  369. package/runtime/third_party/boringssl/crypto/curve25519/curve25519_tables.h +3264 -0
  370. package/runtime/third_party/boringssl/crypto/curve25519/internal.h +202 -0
  371. package/runtime/third_party/boringssl/crypto/curve25519/spake25519.cc +532 -0
  372. package/runtime/third_party/boringssl/crypto/des/des.cc +837 -0
  373. package/runtime/third_party/boringssl/crypto/des/internal.h +144 -0
  374. package/runtime/third_party/boringssl/crypto/dh/dh_asn1.cc +109 -0
  375. package/runtime/third_party/boringssl/crypto/dh/params.cc +411 -0
  376. package/runtime/third_party/boringssl/crypto/digest/digest_extra.cc +361 -0
  377. package/runtime/third_party/boringssl/crypto/dsa/dsa.cc +922 -0
  378. package/runtime/third_party/boringssl/crypto/dsa/dsa_asn1.cc +306 -0
  379. package/runtime/third_party/boringssl/crypto/dsa/internal.h +56 -0
  380. package/runtime/third_party/boringssl/crypto/ec/ec_asn1.cc +542 -0
  381. package/runtime/third_party/boringssl/crypto/ec/ec_derive.cc +94 -0
  382. package/runtime/third_party/boringssl/crypto/ec/hash_to_curve.cc +773 -0
  383. package/runtime/third_party/boringssl/crypto/ec/internal.h +114 -0
  384. package/runtime/third_party/boringssl/crypto/ecdh/ecdh.cc +75 -0
  385. package/runtime/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.cc +337 -0
  386. package/runtime/third_party/boringssl/crypto/ecdsa/ecdsa_p1363.cc +54 -0
  387. package/runtime/third_party/boringssl/crypto/engine/engine.cc +95 -0
  388. package/runtime/third_party/boringssl/crypto/err/err.cc +820 -0
  389. package/runtime/third_party/boringssl/crypto/err/internal.h +45 -0
  390. package/runtime/third_party/boringssl/crypto/evp/evp.cc +454 -0
  391. package/runtime/third_party/boringssl/crypto/evp/evp_asn1.cc +439 -0
  392. package/runtime/third_party/boringssl/crypto/evp/evp_ctx.cc +541 -0
  393. package/runtime/third_party/boringssl/crypto/evp/evp_kem.cc +101 -0
  394. package/runtime/third_party/boringssl/crypto/evp/internal.h +427 -0
  395. package/runtime/third_party/boringssl/crypto/evp/p_dh.cc +326 -0
  396. package/runtime/third_party/boringssl/crypto/evp/p_dsa.cc +333 -0
  397. package/runtime/third_party/boringssl/crypto/evp/p_ec.cc +736 -0
  398. package/runtime/third_party/boringssl/crypto/evp/p_ed25519.cc +359 -0
  399. package/runtime/third_party/boringssl/crypto/evp/p_hkdf.cc +204 -0
  400. package/runtime/third_party/boringssl/crypto/evp/p_mldsa.cc +549 -0
  401. package/runtime/third_party/boringssl/crypto/evp/p_mlkem.cc +510 -0
  402. package/runtime/third_party/boringssl/crypto/evp/p_rsa.cc +1185 -0
  403. package/runtime/third_party/boringssl/crypto/evp/p_x25519.cc +371 -0
  404. package/runtime/third_party/boringssl/crypto/evp/p_xwing.cc +300 -0
  405. package/runtime/third_party/boringssl/crypto/evp/pbkdf.cc +105 -0
  406. package/runtime/third_party/boringssl/crypto/evp/print.cc +287 -0
  407. package/runtime/third_party/boringssl/crypto/evp/scrypt.cc +218 -0
  408. package/runtime/third_party/boringssl/crypto/evp/sign.cc +95 -0
  409. package/runtime/third_party/boringssl/crypto/ex_data.cc +140 -0
  410. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/aes.cc.inc +208 -0
  411. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/aes_nohw.cc.inc +1279 -0
  412. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/cbc.cc.inc +132 -0
  413. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/cfb.cc.inc +168 -0
  414. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/ctr.cc.inc +102 -0
  415. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/gcm.cc.inc +614 -0
  416. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/gcm_nohw.cc.inc +304 -0
  417. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/internal.h +590 -0
  418. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/key_wrap.cc.inc +211 -0
  419. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/mode_wrappers.cc.inc +97 -0
  420. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/ofb.cc.inc +55 -0
  421. package/runtime/third_party/boringssl/crypto/fipsmodule/bcm.cc +288 -0
  422. package/runtime/third_party/boringssl/crypto/fipsmodule/bcm_interface.h +953 -0
  423. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/add.cc.inc +276 -0
  424. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/asm/x86_64-gcc.cc.inc +573 -0
  425. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/bn.cc.inc +377 -0
  426. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/bytes.cc.inc +230 -0
  427. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/cmp.cc.inc +161 -0
  428. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/ctx.cc.inc +127 -0
  429. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/div.cc.inc +738 -0
  430. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/div_extra.cc.inc +90 -0
  431. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.cc.inc +743 -0
  432. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/gcd.cc.inc +281 -0
  433. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/gcd_extra.cc.inc +327 -0
  434. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/generic.cc.inc +579 -0
  435. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/internal.h +810 -0
  436. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/jacobi.cc.inc +101 -0
  437. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/montgomery.cc.inc +408 -0
  438. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/montgomery_inv.cc.inc +179 -0
  439. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/mul.cc.inc +347 -0
  440. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/prime.cc.inc +931 -0
  441. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/random.cc.inc +261 -0
  442. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.cc.inc +144 -0
  443. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.h +109 -0
  444. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/shift.cc.inc +317 -0
  445. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/sqrt.cc.inc +370 -0
  446. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/aead.cc.inc +619 -0
  447. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/cipher.cc.inc +837 -0
  448. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.cc.inc +1240 -0
  449. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/e_aesccm.cc.inc +440 -0
  450. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/internal.h +461 -0
  451. package/runtime/third_party/boringssl/crypto/fipsmodule/cmac/cmac.cc.inc +293 -0
  452. package/runtime/third_party/boringssl/crypto/fipsmodule/delocate.h +95 -0
  453. package/runtime/third_party/boringssl/crypto/fipsmodule/dh/check.cc.inc +198 -0
  454. package/runtime/third_party/boringssl/crypto/fipsmodule/dh/dh.cc.inc +401 -0
  455. package/runtime/third_party/boringssl/crypto/fipsmodule/dh/internal.h +63 -0
  456. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/digest.cc.inc +221 -0
  457. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/digests.cc.inc +184 -0
  458. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/internal.h +72 -0
  459. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/md32_common.h +166 -0
  460. package/runtime/third_party/boringssl/crypto/fipsmodule/digestsign/digestsign.cc.inc +230 -0
  461. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/builtin_curves.h +277 -0
  462. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/ec.cc.inc +1024 -0
  463. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/ec_key.cc.inc +536 -0
  464. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.cc.inc +379 -0
  465. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/felem.cc.inc +250 -0
  466. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/internal.h +752 -0
  467. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/oct.cc.inc +174 -0
  468. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256-nistz-table.h +9502 -0
  469. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256-nistz.cc.inc +740 -0
  470. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256-nistz.h +207 -0
  471. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256.cc.inc +578 -0
  472. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256_table.h +297 -0
  473. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/scalar.cc.inc +184 -0
  474. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/simple.cc.inc +246 -0
  475. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/simple_mul.cc.inc +274 -0
  476. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/util.cc.inc +258 -0
  477. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/wnaf.cc.inc +224 -0
  478. package/runtime/third_party/boringssl/crypto/fipsmodule/ecdh/ecdh.cc.inc +91 -0
  479. package/runtime/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.cc.inc +288 -0
  480. package/runtime/third_party/boringssl/crypto/fipsmodule/ecdsa/internal.h +57 -0
  481. package/runtime/third_party/boringssl/crypto/fipsmodule/entropy/internal.h +38 -0
  482. package/runtime/third_party/boringssl/crypto/fipsmodule/entropy/jitter.cc.inc +487 -0
  483. package/runtime/third_party/boringssl/crypto/fipsmodule/entropy/sha512.cc.inc +329 -0
  484. package/runtime/third_party/boringssl/crypto/fipsmodule/fips_shared_support.cc +28 -0
  485. package/runtime/third_party/boringssl/crypto/fipsmodule/hkdf/hkdf.cc.inc +114 -0
  486. package/runtime/third_party/boringssl/crypto/fipsmodule/hmac/hmac.cc.inc +218 -0
  487. package/runtime/third_party/boringssl/crypto/fipsmodule/keccak/internal.h +165 -0
  488. package/runtime/third_party/boringssl/crypto/fipsmodule/keccak/keccak.cc.inc +647 -0
  489. package/runtime/third_party/boringssl/crypto/fipsmodule/mldsa/fips_known_values.inc +1345 -0
  490. package/runtime/third_party/boringssl/crypto/fipsmodule/mldsa/mldsa.cc.inc +3323 -0
  491. package/runtime/third_party/boringssl/crypto/fipsmodule/mlkem/fips_known_values.inc +411 -0
  492. package/runtime/third_party/boringssl/crypto/fipsmodule/mlkem/mlkem.cc.inc +1856 -0
  493. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/android_entropy_client.cc.inc +82 -0
  494. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/ctrdrbg.cc.inc +401 -0
  495. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/internal.h +99 -0
  496. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/rand.cc.inc +486 -0
  497. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/internal.h +167 -0
  498. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/padding.cc.inc +371 -0
  499. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/rsa.cc.inc +996 -0
  500. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.cc.inc +1000 -0
  501. package/runtime/third_party/boringssl/crypto/fipsmodule/self_check/fips.cc.inc +129 -0
  502. package/runtime/third_party/boringssl/crypto/fipsmodule/self_check/self_check.cc.inc +1093 -0
  503. package/runtime/third_party/boringssl/crypto/fipsmodule/service_indicator/internal.h +112 -0
  504. package/runtime/third_party/boringssl/crypto/fipsmodule/service_indicator/service_indicator.cc.inc +330 -0
  505. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/internal.h +205 -0
  506. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/sha1.cc.inc +404 -0
  507. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/sha256.cc.inc +315 -0
  508. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/sha512.cc.inc +473 -0
  509. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/address.h +144 -0
  510. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/fips_known_values.inc +674 -0
  511. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/fors.cc.inc +179 -0
  512. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/fors.h +48 -0
  513. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/merkle.cc.inc +164 -0
  514. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/merkle.h +58 -0
  515. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/params.h +178 -0
  516. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +690 -0
  517. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/thash.cc.inc +326 -0
  518. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/thash.h +71 -0
  519. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/wots.cc.inc +172 -0
  520. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/wots.h +40 -0
  521. package/runtime/third_party/boringssl/crypto/fipsmodule/tls/internal.h +33 -0
  522. package/runtime/third_party/boringssl/crypto/fipsmodule/tls/kdf.cc.inc +180 -0
  523. package/runtime/third_party/boringssl/crypto/fuzzer_mode.cc +30 -0
  524. package/runtime/third_party/boringssl/crypto/hpke/hpke.cc +1514 -0
  525. package/runtime/third_party/boringssl/crypto/hrss/asm/poly_rq_mul.S +8489 -0
  526. package/runtime/third_party/boringssl/crypto/hrss/hrss.cc +2189 -0
  527. package/runtime/third_party/boringssl/crypto/hrss/internal.h +64 -0
  528. package/runtime/third_party/boringssl/crypto/internal.h +1767 -0
  529. package/runtime/third_party/boringssl/crypto/lhash/internal.h +222 -0
  530. package/runtime/third_party/boringssl/crypto/lhash/lhash.cc +312 -0
  531. package/runtime/third_party/boringssl/crypto/md4/md4.cc +207 -0
  532. package/runtime/third_party/boringssl/crypto/md5/internal.h +34 -0
  533. package/runtime/third_party/boringssl/crypto/md5/md5.cc +255 -0
  534. package/runtime/third_party/boringssl/crypto/mem.cc +577 -0
  535. package/runtime/third_party/boringssl/crypto/mem_internal.h +706 -0
  536. package/runtime/third_party/boringssl/crypto/mldsa/mldsa.cc +296 -0
  537. package/runtime/third_party/boringssl/crypto/mlkem/mlkem.cc +108 -0
  538. package/runtime/third_party/boringssl/crypto/obj/obj.cc +494 -0
  539. package/runtime/third_party/boringssl/crypto/obj/obj_dat.h +11722 -0
  540. package/runtime/third_party/boringssl/crypto/obj/obj_xref.cc +83 -0
  541. package/runtime/third_party/boringssl/crypto/params_internal.h +30 -0
  542. package/runtime/third_party/boringssl/crypto/pem/internal.h +135 -0
  543. package/runtime/third_party/boringssl/crypto/pem/pem_all.cc +153 -0
  544. package/runtime/third_party/boringssl/crypto/pem/pem_info.cc +250 -0
  545. package/runtime/third_party/boringssl/crypto/pem/pem_lib.cc +707 -0
  546. package/runtime/third_party/boringssl/crypto/pem/pem_oth.cc +45 -0
  547. package/runtime/third_party/boringssl/crypto/pem/pem_pk8.cc +211 -0
  548. package/runtime/third_party/boringssl/crypto/pem/pem_pkey.cc +147 -0
  549. package/runtime/third_party/boringssl/crypto/pem/pem_x509.cc +25 -0
  550. package/runtime/third_party/boringssl/crypto/pem/pem_xaux.cc +25 -0
  551. package/runtime/third_party/boringssl/crypto/pkcs7/internal.h +67 -0
  552. package/runtime/third_party/boringssl/crypto/pkcs7/pkcs7.cc +198 -0
  553. package/runtime/third_party/boringssl/crypto/pkcs7/pkcs7_x509.cc +527 -0
  554. package/runtime/third_party/boringssl/crypto/pkcs8/internal.h +98 -0
  555. package/runtime/third_party/boringssl/crypto/pkcs8/p5_pbev2.cc +286 -0
  556. package/runtime/third_party/boringssl/crypto/pkcs8/pkcs8.cc +473 -0
  557. package/runtime/third_party/boringssl/crypto/pkcs8/pkcs8_x509.cc +1328 -0
  558. package/runtime/third_party/boringssl/crypto/poly1305/internal.h +54 -0
  559. package/runtime/third_party/boringssl/crypto/poly1305/poly1305.cc +315 -0
  560. package/runtime/third_party/boringssl/crypto/poly1305/poly1305_arm.cc +294 -0
  561. package/runtime/third_party/boringssl/crypto/poly1305/poly1305_arm_asm.S +2017 -0
  562. package/runtime/third_party/boringssl/crypto/poly1305/poly1305_vec.cc +853 -0
  563. package/runtime/third_party/boringssl/crypto/pool/internal.h +95 -0
  564. package/runtime/third_party/boringssl/crypto/pool/pool.cc +282 -0
  565. package/runtime/third_party/boringssl/crypto/rand/deterministic.cc +58 -0
  566. package/runtime/third_party/boringssl/crypto/rand/fork_detect.cc +222 -0
  567. package/runtime/third_party/boringssl/crypto/rand/forkunsafe.cc +44 -0
  568. package/runtime/third_party/boringssl/crypto/rand/getentropy.cc +53 -0
  569. package/runtime/third_party/boringssl/crypto/rand/internal.h +67 -0
  570. package/runtime/third_party/boringssl/crypto/rand/ios.cc +35 -0
  571. package/runtime/third_party/boringssl/crypto/rand/rand.cc +79 -0
  572. package/runtime/third_party/boringssl/crypto/rand/trusty.cc +39 -0
  573. package/runtime/third_party/boringssl/crypto/rand/urandom.cc +149 -0
  574. package/runtime/third_party/boringssl/crypto/rand/windows.cc +91 -0
  575. package/runtime/third_party/boringssl/crypto/rc4/rc4.cc +56 -0
  576. package/runtime/third_party/boringssl/crypto/refcount.cc +49 -0
  577. package/runtime/third_party/boringssl/crypto/rsa/internal.h +51 -0
  578. package/runtime/third_party/boringssl/crypto/rsa/rsa_asn1.cc +404 -0
  579. package/runtime/third_party/boringssl/crypto/rsa/rsa_crypt.cc +530 -0
  580. package/runtime/third_party/boringssl/crypto/rsa/rsa_extra.cc +30 -0
  581. package/runtime/third_party/boringssl/crypto/rsa/rsa_print.cc +25 -0
  582. package/runtime/third_party/boringssl/crypto/sha/sha1.cc +55 -0
  583. package/runtime/third_party/boringssl/crypto/sha/sha256.cc +89 -0
  584. package/runtime/third_party/boringssl/crypto/sha/sha512.cc +106 -0
  585. package/runtime/third_party/boringssl/crypto/siphash/siphash.cc +81 -0
  586. package/runtime/third_party/boringssl/crypto/slhdsa/slhdsa.cc +167 -0
  587. package/runtime/third_party/boringssl/crypto/spake2plus/internal.h +204 -0
  588. package/runtime/third_party/boringssl/crypto/spake2plus/spake2plus.cc +501 -0
  589. package/runtime/third_party/boringssl/crypto/stack/stack.cc +462 -0
  590. package/runtime/third_party/boringssl/crypto/thread.cc +68 -0
  591. package/runtime/third_party/boringssl/crypto/thread_none.cc +48 -0
  592. package/runtime/third_party/boringssl/crypto/thread_pthread.cc +138 -0
  593. package/runtime/third_party/boringssl/crypto/thread_win.cc +227 -0
  594. package/runtime/third_party/boringssl/crypto/trust_token/internal.h +405 -0
  595. package/runtime/third_party/boringssl/crypto/trust_token/pmbtoken.cc +1672 -0
  596. package/runtime/third_party/boringssl/crypto/trust_token/trust_token.cc +701 -0
  597. package/runtime/third_party/boringssl/crypto/trust_token/voprf.cc +1266 -0
  598. package/runtime/third_party/boringssl/crypto/x509/a_digest.cc +52 -0
  599. package/runtime/third_party/boringssl/crypto/x509/a_sign.cc +100 -0
  600. package/runtime/third_party/boringssl/crypto/x509/a_verify.cc +77 -0
  601. package/runtime/third_party/boringssl/crypto/x509/algorithm.cc +167 -0
  602. package/runtime/third_party/boringssl/crypto/x509/asn1_gen.cc +540 -0
  603. package/runtime/third_party/boringssl/crypto/x509/by_dir.cc +301 -0
  604. package/runtime/third_party/boringssl/crypto/x509/by_file.cc +226 -0
  605. package/runtime/third_party/boringssl/crypto/x509/i2d_pr.cc +37 -0
  606. package/runtime/third_party/boringssl/crypto/x509/internal.h +697 -0
  607. package/runtime/third_party/boringssl/crypto/x509/name_print.cc +187 -0
  608. package/runtime/third_party/boringssl/crypto/x509/policy.cc +686 -0
  609. package/runtime/third_party/boringssl/crypto/x509/rsa_pss.cc +187 -0
  610. package/runtime/third_party/boringssl/crypto/x509/t_crl.cc +106 -0
  611. package/runtime/third_party/boringssl/crypto/x509/t_req.cc +206 -0
  612. package/runtime/third_party/boringssl/crypto/x509/t_x509.cc +292 -0
  613. package/runtime/third_party/boringssl/crypto/x509/t_x509a.cc +81 -0
  614. package/runtime/third_party/boringssl/crypto/x509/v3_akey.cc +174 -0
  615. package/runtime/third_party/boringssl/crypto/x509/v3_akeya.cc +31 -0
  616. package/runtime/third_party/boringssl/crypto/x509/v3_alt.cc +636 -0
  617. package/runtime/third_party/boringssl/crypto/x509/v3_bcons.cc +96 -0
  618. package/runtime/third_party/boringssl/crypto/x509/v3_bitst.cc +100 -0
  619. package/runtime/third_party/boringssl/crypto/x509/v3_conf.cc +369 -0
  620. package/runtime/third_party/boringssl/crypto/x509/v3_cpols.cc +417 -0
  621. package/runtime/third_party/boringssl/crypto/x509/v3_crld.cc +471 -0
  622. package/runtime/third_party/boringssl/crypto/x509/v3_enum.cc +74 -0
  623. package/runtime/third_party/boringssl/crypto/x509/v3_extku.cc +97 -0
  624. package/runtime/third_party/boringssl/crypto/x509/v3_genn.cc +238 -0
  625. package/runtime/third_party/boringssl/crypto/x509/v3_ia5.cc +83 -0
  626. package/runtime/third_party/boringssl/crypto/x509/v3_info.cc +162 -0
  627. package/runtime/third_party/boringssl/crypto/x509/v3_int.cc +83 -0
  628. package/runtime/third_party/boringssl/crypto/x509/v3_lib.cc +349 -0
  629. package/runtime/third_party/boringssl/crypto/x509/v3_ncons.cc +798 -0
  630. package/runtime/third_party/boringssl/crypto/x509/v3_ocsp.cc +92 -0
  631. package/runtime/third_party/boringssl/crypto/x509/v3_pcons.cc +102 -0
  632. package/runtime/third_party/boringssl/crypto/x509/v3_pmaps.cc +110 -0
  633. package/runtime/third_party/boringssl/crypto/x509/v3_prn.cc +183 -0
  634. package/runtime/third_party/boringssl/crypto/x509/v3_purp.cc +580 -0
  635. package/runtime/third_party/boringssl/crypto/x509/v3_skey.cc +128 -0
  636. package/runtime/third_party/boringssl/crypto/x509/v3_utl.cc +1311 -0
  637. package/runtime/third_party/boringssl/crypto/x509/x509.cc +47 -0
  638. package/runtime/third_party/boringssl/crypto/x509/x509_att.cc +188 -0
  639. package/runtime/third_party/boringssl/crypto/x509/x509_cmp.cc +243 -0
  640. package/runtime/third_party/boringssl/crypto/x509/x509_d2.cc +66 -0
  641. package/runtime/third_party/boringssl/crypto/x509/x509_def.cc +42 -0
  642. package/runtime/third_party/boringssl/crypto/x509/x509_ext.cc +161 -0
  643. package/runtime/third_party/boringssl/crypto/x509/x509_lu.cc +570 -0
  644. package/runtime/third_party/boringssl/crypto/x509/x509_mtc.cc +598 -0
  645. package/runtime/third_party/boringssl/crypto/x509/x509_obj.cc +169 -0
  646. package/runtime/third_party/boringssl/crypto/x509/x509_req.cc +248 -0
  647. package/runtime/third_party/boringssl/crypto/x509/x509_set.cc +166 -0
  648. package/runtime/third_party/boringssl/crypto/x509/x509_trs.cc +123 -0
  649. package/runtime/third_party/boringssl/crypto/x509/x509_txt.cc +147 -0
  650. package/runtime/third_party/boringssl/crypto/x509/x509_v3.cc +249 -0
  651. package/runtime/third_party/boringssl/crypto/x509/x509_vfy.cc +1531 -0
  652. package/runtime/third_party/boringssl/crypto/x509/x509_vpm.cc +449 -0
  653. package/runtime/third_party/boringssl/crypto/x509/x509cset.cc +222 -0
  654. package/runtime/third_party/boringssl/crypto/x509/x509name.cc +377 -0
  655. package/runtime/third_party/boringssl/crypto/x509/x509rset.cc +55 -0
  656. package/runtime/third_party/boringssl/crypto/x509/x509spki.cc +91 -0
  657. package/runtime/third_party/boringssl/crypto/x509/x_algor.cc +223 -0
  658. package/runtime/third_party/boringssl/crypto/x509/x_all.cc +352 -0
  659. package/runtime/third_party/boringssl/crypto/x509/x_attrib.cc +61 -0
  660. package/runtime/third_party/boringssl/crypto/x509/x_crl.cc +325 -0
  661. package/runtime/third_party/boringssl/crypto/x509/x_exten.cc +42 -0
  662. package/runtime/third_party/boringssl/crypto/x509/x_name.cc +407 -0
  663. package/runtime/third_party/boringssl/crypto/x509/x_pubkey.cc +199 -0
  664. package/runtime/third_party/boringssl/crypto/x509/x_req.cc +80 -0
  665. package/runtime/third_party/boringssl/crypto/x509/x_sig.cc +51 -0
  666. package/runtime/third_party/boringssl/crypto/x509/x_spki.cc +44 -0
  667. package/runtime/third_party/boringssl/crypto/x509/x_x509.cc +495 -0
  668. package/runtime/third_party/boringssl/crypto/x509/x_x509a.cc +169 -0
  669. package/runtime/third_party/boringssl/crypto/xwing/xwing.cc +257 -0
  670. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx2-x86_64-apple.S +1326 -0
  671. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx2-x86_64-linux.S +1327 -0
  672. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx512-x86_64-apple.S +1252 -0
  673. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx512-x86_64-linux.S +1253 -0
  674. package/runtime/third_party/boringssl/gen/bcm/aesni-gcm-x86_64-apple.S +873 -0
  675. package/runtime/third_party/boringssl/gen/bcm/aesni-gcm-x86_64-linux.S +885 -0
  676. package/runtime/third_party/boringssl/gen/bcm/aesni-x86-apple.S +2490 -0
  677. package/runtime/third_party/boringssl/gen/bcm/aesni-x86-linux.S +2530 -0
  678. package/runtime/third_party/boringssl/gen/bcm/aesni-x86_64-apple.S +2413 -0
  679. package/runtime/third_party/boringssl/gen/bcm/aesni-x86_64-linux.S +2397 -0
  680. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv7-linux.S +784 -0
  681. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv8-apple.S +792 -0
  682. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv8-linux.S +786 -0
  683. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv8-win.S +798 -0
  684. package/runtime/third_party/boringssl/gen/bcm/aesv8-gcm-armv8-apple.S +2912 -0
  685. package/runtime/third_party/boringssl/gen/bcm/aesv8-gcm-armv8-linux.S +2907 -0
  686. package/runtime/third_party/boringssl/gen/bcm/aesv8-gcm-armv8-win.S +2915 -0
  687. package/runtime/third_party/boringssl/gen/bcm/armv4-mont-linux.S +932 -0
  688. package/runtime/third_party/boringssl/gen/bcm/armv8-mont-apple.S +1440 -0
  689. package/runtime/third_party/boringssl/gen/bcm/armv8-mont-linux.S +1440 -0
  690. package/runtime/third_party/boringssl/gen/bcm/armv8-mont-win.S +1446 -0
  691. package/runtime/third_party/boringssl/gen/bcm/bn-586-apple.S +530 -0
  692. package/runtime/third_party/boringssl/gen/bcm/bn-586-linux.S +540 -0
  693. package/runtime/third_party/boringssl/gen/bcm/bn-armv8-apple.S +88 -0
  694. package/runtime/third_party/boringssl/gen/bcm/bn-armv8-linux.S +87 -0
  695. package/runtime/third_party/boringssl/gen/bcm/bn-armv8-win.S +87 -0
  696. package/runtime/third_party/boringssl/gen/bcm/bsaes-armv7-linux.S +1520 -0
  697. package/runtime/third_party/boringssl/gen/bcm/co-586-apple.S +1256 -0
  698. package/runtime/third_party/boringssl/gen/bcm/co-586-linux.S +1264 -0
  699. package/runtime/third_party/boringssl/gen/bcm/ghash-armv4-linux.S +242 -0
  700. package/runtime/third_party/boringssl/gen/bcm/ghash-neon-armv8-apple.S +337 -0
  701. package/runtime/third_party/boringssl/gen/bcm/ghash-neon-armv8-linux.S +335 -0
  702. package/runtime/third_party/boringssl/gen/bcm/ghash-neon-armv8-win.S +341 -0
  703. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86-apple.S +288 -0
  704. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86-linux.S +292 -0
  705. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86_64-apple.S +426 -0
  706. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86_64-linux.S +425 -0
  707. package/runtime/third_party/boringssl/gen/bcm/ghash-x86-apple.S +322 -0
  708. package/runtime/third_party/boringssl/gen/bcm/ghash-x86-linux.S +328 -0
  709. package/runtime/third_party/boringssl/gen/bcm/ghash-x86_64-apple.S +1134 -0
  710. package/runtime/third_party/boringssl/gen/bcm/ghash-x86_64-linux.S +1129 -0
  711. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv7-linux.S +244 -0
  712. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv8-apple.S +567 -0
  713. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv8-linux.S +563 -0
  714. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv8-win.S +571 -0
  715. package/runtime/third_party/boringssl/gen/bcm/p256-armv8-asm-apple.S +1744 -0
  716. package/runtime/third_party/boringssl/gen/bcm/p256-armv8-asm-linux.S +1725 -0
  717. package/runtime/third_party/boringssl/gen/bcm/p256-armv8-asm-win.S +1765 -0
  718. package/runtime/third_party/boringssl/gen/bcm/p256-x86_64-asm-apple.S +4544 -0
  719. package/runtime/third_party/boringssl/gen/bcm/p256-x86_64-asm-linux.S +4600 -0
  720. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-armv8-asm-apple.S +310 -0
  721. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-armv8-asm-linux.S +310 -0
  722. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-armv8-asm-win.S +310 -0
  723. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-x86_64-asm-apple.S +321 -0
  724. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-x86_64-asm-linux.S +335 -0
  725. package/runtime/third_party/boringssl/gen/bcm/rdrand-x86_64-apple.S +58 -0
  726. package/runtime/third_party/boringssl/gen/bcm/rdrand-x86_64-linux.S +57 -0
  727. package/runtime/third_party/boringssl/gen/bcm/rsaz-avx2-apple.S +1756 -0
  728. package/runtime/third_party/boringssl/gen/bcm/rsaz-avx2-linux.S +1751 -0
  729. package/runtime/third_party/boringssl/gen/bcm/sha1-586-apple.S +3782 -0
  730. package/runtime/third_party/boringssl/gen/bcm/sha1-586-linux.S +3788 -0
  731. package/runtime/third_party/boringssl/gen/bcm/sha1-armv4-large-linux.S +1479 -0
  732. package/runtime/third_party/boringssl/gen/bcm/sha1-armv8-apple.S +1219 -0
  733. package/runtime/third_party/boringssl/gen/bcm/sha1-armv8-linux.S +1218 -0
  734. package/runtime/third_party/boringssl/gen/bcm/sha1-armv8-win.S +1222 -0
  735. package/runtime/third_party/boringssl/gen/bcm/sha1-x86_64-apple.S +5454 -0
  736. package/runtime/third_party/boringssl/gen/bcm/sha1-x86_64-linux.S +5450 -0
  737. package/runtime/third_party/boringssl/gen/bcm/sha256-586-apple.S +5593 -0
  738. package/runtime/third_party/boringssl/gen/bcm/sha256-586-linux.S +5599 -0
  739. package/runtime/third_party/boringssl/gen/bcm/sha256-armv4-linux.S +2840 -0
  740. package/runtime/third_party/boringssl/gen/bcm/sha256-armv8-apple.S +1195 -0
  741. package/runtime/third_party/boringssl/gen/bcm/sha256-armv8-linux.S +1194 -0
  742. package/runtime/third_party/boringssl/gen/bcm/sha256-armv8-win.S +1198 -0
  743. package/runtime/third_party/boringssl/gen/bcm/sha256-x86_64-apple.S +4173 -0
  744. package/runtime/third_party/boringssl/gen/bcm/sha256-x86_64-linux.S +4170 -0
  745. package/runtime/third_party/boringssl/gen/bcm/sha512-586-apple.S +2406 -0
  746. package/runtime/third_party/boringssl/gen/bcm/sha512-586-linux.S +2410 -0
  747. package/runtime/third_party/boringssl/gen/bcm/sha512-armv4-linux.S +1857 -0
  748. package/runtime/third_party/boringssl/gen/bcm/sha512-armv8-apple.S +1598 -0
  749. package/runtime/third_party/boringssl/gen/bcm/sha512-armv8-linux.S +1597 -0
  750. package/runtime/third_party/boringssl/gen/bcm/sha512-armv8-win.S +1601 -0
  751. package/runtime/third_party/boringssl/gen/bcm/sha512-x86_64-apple.S +2979 -0
  752. package/runtime/third_party/boringssl/gen/bcm/sha512-x86_64-linux.S +2978 -0
  753. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv7-linux.S +1225 -0
  754. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv8-apple.S +1238 -0
  755. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv8-linux.S +1220 -0
  756. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv8-win.S +1256 -0
  757. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86-apple.S +680 -0
  758. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86-linux.S +706 -0
  759. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86_64-apple.S +1146 -0
  760. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86_64-linux.S +1133 -0
  761. package/runtime/third_party/boringssl/gen/bcm/x86-mont-apple.S +216 -0
  762. package/runtime/third_party/boringssl/gen/bcm/x86-mont-linux.S +218 -0
  763. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont-apple.S +1238 -0
  764. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont-linux.S +1237 -0
  765. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont5-apple.S +3644 -0
  766. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont5-linux.S +3628 -0
  767. package/runtime/third_party/boringssl/gen/boringssl_prefix_symbols_internal_x86_64_win_asm.inc +325 -0
  768. package/runtime/third_party/boringssl/gen/boringssl_prefix_symbols_internal_x86_win_asm.inc +325 -0
  769. package/runtime/third_party/boringssl/gen/crypto/aes128gcmsiv-x86_64-apple.S +3113 -0
  770. package/runtime/third_party/boringssl/gen/crypto/aes128gcmsiv-x86_64-linux.S +3091 -0
  771. package/runtime/third_party/boringssl/gen/crypto/chacha-armv4-linux.S +1450 -0
  772. package/runtime/third_party/boringssl/gen/crypto/chacha-armv8-apple.S +1969 -0
  773. package/runtime/third_party/boringssl/gen/crypto/chacha-armv8-linux.S +1967 -0
  774. package/runtime/third_party/boringssl/gen/crypto/chacha-armv8-win.S +1973 -0
  775. package/runtime/third_party/boringssl/gen/crypto/chacha-x86-apple.S +957 -0
  776. package/runtime/third_party/boringssl/gen/crypto/chacha-x86-linux.S +961 -0
  777. package/runtime/third_party/boringssl/gen/crypto/chacha-x86_64-apple.S +1608 -0
  778. package/runtime/third_party/boringssl/gen/crypto/chacha-x86_64-linux.S +1611 -0
  779. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_armv8-apple.S +3010 -0
  780. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_armv8-linux.S +3008 -0
  781. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_armv8-win.S +3014 -0
  782. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_x86_64-apple.S +8903 -0
  783. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_x86_64-linux.S +8940 -0
  784. package/runtime/third_party/boringssl/gen/crypto/err_data.cc +1578 -0
  785. package/runtime/third_party/boringssl/gen/crypto/md5-586-apple.S +684 -0
  786. package/runtime/third_party/boringssl/gen/crypto/md5-586-linux.S +686 -0
  787. package/runtime/third_party/boringssl/gen/crypto/md5-x86_64-apple.S +690 -0
  788. package/runtime/third_party/boringssl/gen/crypto/md5-x86_64-linux.S +695 -0
  789. package/runtime/third_party/boringssl/include/openssl/aead.h +650 -0
  790. package/runtime/third_party/boringssl/include/openssl/aes.h +173 -0
  791. package/runtime/third_party/boringssl/include/openssl/arm_arch.h +24 -0
  792. package/runtime/third_party/boringssl/include/openssl/asm_base.h +219 -0
  793. package/runtime/third_party/boringssl/include/openssl/asn1.h +2002 -0
  794. package/runtime/third_party/boringssl/include/openssl/asn1_mac.h +18 -0
  795. package/runtime/third_party/boringssl/include/openssl/asn1t.h +584 -0
  796. package/runtime/third_party/boringssl/include/openssl/base.h +548 -0
  797. package/runtime/third_party/boringssl/include/openssl/base64.h +156 -0
  798. package/runtime/third_party/boringssl/include/openssl/bio.h +1061 -0
  799. package/runtime/third_party/boringssl/include/openssl/blake2.h +63 -0
  800. package/runtime/third_party/boringssl/include/openssl/blowfish.h +58 -0
  801. package/runtime/third_party/boringssl/include/openssl/bn.h +986 -0
  802. package/runtime/third_party/boringssl/include/openssl/buf.h +95 -0
  803. package/runtime/third_party/boringssl/include/openssl/buffer.h +18 -0
  804. package/runtime/third_party/boringssl/include/openssl/bytestring.h +798 -0
  805. package/runtime/third_party/boringssl/include/openssl/cast.h +91 -0
  806. package/runtime/third_party/boringssl/include/openssl/chacha.h +47 -0
  807. package/runtime/third_party/boringssl/include/openssl/cipher.h +819 -0
  808. package/runtime/third_party/boringssl/include/openssl/cmac.h +91 -0
  809. package/runtime/third_party/boringssl/include/openssl/cms.h +147 -0
  810. package/runtime/third_party/boringssl/include/openssl/conf.h +136 -0
  811. package/runtime/third_party/boringssl/include/openssl/configuration.h +18 -0
  812. package/runtime/third_party/boringssl/include/openssl/cpu.h +18 -0
  813. package/runtime/third_party/boringssl/include/openssl/crypto.h +235 -0
  814. package/runtime/third_party/boringssl/include/openssl/ctrdrbg.h +116 -0
  815. package/runtime/third_party/boringssl/include/openssl/curve25519.h +309 -0
  816. package/runtime/third_party/boringssl/include/openssl/des.h +134 -0
  817. package/runtime/third_party/boringssl/include/openssl/dh.h +336 -0
  818. package/runtime/third_party/boringssl/include/openssl/digest.h +399 -0
  819. package/runtime/third_party/boringssl/include/openssl/dsa.h +392 -0
  820. package/runtime/third_party/boringssl/include/openssl/dtls1.h +16 -0
  821. package/runtime/third_party/boringssl/include/openssl/e_os2.h +18 -0
  822. package/runtime/third_party/boringssl/include/openssl/ec.h +530 -0
  823. package/runtime/third_party/boringssl/include/openssl/ec_key.h +358 -0
  824. package/runtime/third_party/boringssl/include/openssl/ecdh.h +67 -0
  825. package/runtime/third_party/boringssl/include/openssl/ecdsa.h +242 -0
  826. package/runtime/third_party/boringssl/include/openssl/engine.h +109 -0
  827. package/runtime/third_party/boringssl/include/openssl/err.h +416 -0
  828. package/runtime/third_party/boringssl/include/openssl/evp.h +1645 -0
  829. package/runtime/third_party/boringssl/include/openssl/evp_errors.h +66 -0
  830. package/runtime/third_party/boringssl/include/openssl/ex_data.h +117 -0
  831. package/runtime/third_party/boringssl/include/openssl/hkdf.h +68 -0
  832. package/runtime/third_party/boringssl/include/openssl/hmac.h +151 -0
  833. package/runtime/third_party/boringssl/include/openssl/hpke.h +456 -0
  834. package/runtime/third_party/boringssl/include/openssl/hrss.h +108 -0
  835. package/runtime/third_party/boringssl/include/openssl/is_boringssl.h +16 -0
  836. package/runtime/third_party/boringssl/include/openssl/kdf.h +92 -0
  837. package/runtime/third_party/boringssl/include/openssl/lhash.h +18 -0
  838. package/runtime/third_party/boringssl/include/openssl/md4.h +73 -0
  839. package/runtime/third_party/boringssl/include/openssl/md5.h +67 -0
  840. package/runtime/third_party/boringssl/include/openssl/mem.h +215 -0
  841. package/runtime/third_party/boringssl/include/openssl/mldsa.h +486 -0
  842. package/runtime/third_party/boringssl/include/openssl/mlkem.h +222 -0
  843. package/runtime/third_party/boringssl/include/openssl/nid.h +5561 -0
  844. package/runtime/third_party/boringssl/include/openssl/obj.h +225 -0
  845. package/runtime/third_party/boringssl/include/openssl/obj_mac.h +18 -0
  846. package/runtime/third_party/boringssl/include/openssl/objects.h +18 -0
  847. package/runtime/third_party/boringssl/include/openssl/opensslconf.h +108 -0
  848. package/runtime/third_party/boringssl/include/openssl/opensslv.h +18 -0
  849. package/runtime/third_party/boringssl/include/openssl/ossl_typ.h +18 -0
  850. package/runtime/third_party/boringssl/include/openssl/params.h +42 -0
  851. package/runtime/third_party/boringssl/include/openssl/pem.h +769 -0
  852. package/runtime/third_party/boringssl/include/openssl/pkcs12.h +18 -0
  853. package/runtime/third_party/boringssl/include/openssl/pkcs7.h +239 -0
  854. package/runtime/third_party/boringssl/include/openssl/pkcs8.h +267 -0
  855. package/runtime/third_party/boringssl/include/openssl/poly1305.h +52 -0
  856. package/runtime/third_party/boringssl/include/openssl/pool.h +137 -0
  857. package/runtime/third_party/boringssl/include/openssl/posix_time.h +51 -0
  858. package/runtime/third_party/boringssl/include/openssl/prefix_symbols.h +8000 -0
  859. package/runtime/third_party/boringssl/include/openssl/prefix_symbols_internal_S.h +633 -0
  860. package/runtime/third_party/boringssl/include/openssl/prefix_symbols_internal_c.h +329 -0
  861. package/runtime/third_party/boringssl/include/openssl/rand.h +138 -0
  862. package/runtime/third_party/boringssl/include/openssl/rc4.h +54 -0
  863. package/runtime/third_party/boringssl/include/openssl/ripemd.h +71 -0
  864. package/runtime/third_party/boringssl/include/openssl/rsa.h +893 -0
  865. package/runtime/third_party/boringssl/include/openssl/safestack.h +16 -0
  866. package/runtime/third_party/boringssl/include/openssl/service_indicator.h +19 -0
  867. package/runtime/third_party/boringssl/include/openssl/sha.h +108 -0
  868. package/runtime/third_party/boringssl/include/openssl/sha2.h +201 -0
  869. package/runtime/third_party/boringssl/include/openssl/siphash.h +37 -0
  870. package/runtime/third_party/boringssl/include/openssl/slhdsa.h +250 -0
  871. package/runtime/third_party/boringssl/include/openssl/span.h +376 -0
  872. package/runtime/third_party/boringssl/include/openssl/srtp.h +18 -0
  873. package/runtime/third_party/boringssl/include/openssl/ssl.h +7211 -0
  874. package/runtime/third_party/boringssl/include/openssl/ssl3.h +171 -0
  875. package/runtime/third_party/boringssl/include/openssl/stack.h +688 -0
  876. package/runtime/third_party/boringssl/include/openssl/target.h +246 -0
  877. package/runtime/third_party/boringssl/include/openssl/thread.h +114 -0
  878. package/runtime/third_party/boringssl/include/openssl/time.h +22 -0
  879. package/runtime/third_party/boringssl/include/openssl/tls1.h +263 -0
  880. package/runtime/third_party/boringssl/include/openssl/tls_prf.h +47 -0
  881. package/runtime/third_party/boringssl/include/openssl/trust_token.h +349 -0
  882. package/runtime/third_party/boringssl/include/openssl/type_check.h +37 -0
  883. package/runtime/third_party/boringssl/include/openssl/types.h +18 -0
  884. package/runtime/third_party/boringssl/include/openssl/x509.h +5404 -0
  885. package/runtime/third_party/boringssl/include/openssl/x509_vfy.h +18 -0
  886. package/runtime/third_party/boringssl/include/openssl/x509v3.h +63 -0
  887. package/runtime/third_party/boringssl/include/openssl/x509v3_errors.h +84 -0
  888. package/runtime/third_party/boringssl/include/openssl/xwing.h +115 -0
  889. package/runtime/third_party/boringssl/sources.json +696 -0
  890. package/runtime/third_party/boringssl/ssl/bio_ssl.cc +196 -0
  891. package/runtime/third_party/boringssl/ssl/d1_both.cc +1137 -0
  892. package/runtime/third_party/boringssl/ssl/d1_lib.cc +245 -0
  893. package/runtime/third_party/boringssl/ssl/d1_pkt.cc +322 -0
  894. package/runtime/third_party/boringssl/ssl/d1_srtp.cc +128 -0
  895. package/runtime/third_party/boringssl/ssl/dtls_method.cc +216 -0
  896. package/runtime/third_party/boringssl/ssl/dtls_record.cc +586 -0
  897. package/runtime/third_party/boringssl/ssl/encrypted_client_hello.cc +1110 -0
  898. package/runtime/third_party/boringssl/ssl/extensions.cc +5368 -0
  899. package/runtime/third_party/boringssl/ssl/handoff.cc +625 -0
  900. package/runtime/third_party/boringssl/ssl/handshake.cc +694 -0
  901. package/runtime/third_party/boringssl/ssl/handshake_client.cc +1958 -0
  902. package/runtime/third_party/boringssl/ssl/handshake_server.cc +1875 -0
  903. package/runtime/third_party/boringssl/ssl/internal.h +4506 -0
  904. package/runtime/third_party/boringssl/ssl/s3_both.cc +555 -0
  905. package/runtime/third_party/boringssl/ssl/s3_lib.cc +88 -0
  906. package/runtime/third_party/boringssl/ssl/s3_pkt.cc +396 -0
  907. package/runtime/third_party/boringssl/ssl/ssl_aead_ctx.cc +416 -0
  908. package/runtime/third_party/boringssl/ssl/ssl_asn1.cc +851 -0
  909. package/runtime/third_party/boringssl/ssl/ssl_buffer.cc +304 -0
  910. package/runtime/third_party/boringssl/ssl/ssl_cert.cc +723 -0
  911. package/runtime/third_party/boringssl/ssl/ssl_cipher.cc +1762 -0
  912. package/runtime/third_party/boringssl/ssl/ssl_credential.cc +913 -0
  913. package/runtime/third_party/boringssl/ssl/ssl_file.cc +375 -0
  914. package/runtime/third_party/boringssl/ssl/ssl_key_share.cc +445 -0
  915. package/runtime/third_party/boringssl/ssl/ssl_lib.cc +4132 -0
  916. package/runtime/third_party/boringssl/ssl/ssl_privkey.cc +973 -0
  917. package/runtime/third_party/boringssl/ssl/ssl_session.cc +1273 -0
  918. package/runtime/third_party/boringssl/ssl/ssl_stat.cc +162 -0
  919. package/runtime/third_party/boringssl/ssl/ssl_transcript.cc +224 -0
  920. package/runtime/third_party/boringssl/ssl/ssl_versions.cc +436 -0
  921. package/runtime/third_party/boringssl/ssl/ssl_x509.cc +1229 -0
  922. package/runtime/third_party/boringssl/ssl/t1_enc.cc +266 -0
  923. package/runtime/third_party/boringssl/ssl/tls13_both.cc +764 -0
  924. package/runtime/third_party/boringssl/ssl/tls13_client.cc +1325 -0
  925. package/runtime/third_party/boringssl/ssl/tls13_enc.cc +746 -0
  926. package/runtime/third_party/boringssl/ssl/tls13_server.cc +1623 -0
  927. package/runtime/third_party/boringssl/ssl/tls_method.cc +266 -0
  928. package/runtime/third_party/boringssl/ssl/tls_record.cc +524 -0
  929. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_curve25519_adx_mul.S +178 -0
  930. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_curve25519_adx_square.S +146 -0
  931. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_p256_adx_mul.S +177 -0
  932. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_p256_adx_sqr.S +166 -0
  933. package/runtime/third_party/boringssl/third_party/fiat/bedrock_unverified_bareminimum.c.inc +47 -0
  934. package/runtime/third_party/boringssl/third_party/fiat/bedrock_unverified_platform.c.inc +137 -0
  935. package/runtime/third_party/boringssl/third_party/fiat/curve25519_32.h +1571 -0
  936. package/runtime/third_party/boringssl/third_party/fiat/curve25519_64.h +978 -0
  937. package/runtime/third_party/boringssl/third_party/fiat/curve25519_64_adx.h +700 -0
  938. package/runtime/third_party/boringssl/third_party/fiat/curve25519_64_msvc.h +1281 -0
  939. package/runtime/third_party/boringssl/third_party/fiat/p256_32.h +4760 -0
  940. package/runtime/third_party/boringssl/third_party/fiat/p256_64.h +1984 -0
  941. package/runtime/third_party/boringssl/third_party/fiat/p256_64_msvc.h +1939 -0
  942. package/runtime/third_party/boringssl/third_party/fiat/p256_field.c.inc +26 -0
  943. package/runtime/third_party/boringssl/third_party/fiat/p256_field_32.br.c.inc +71 -0
  944. package/runtime/third_party/boringssl/third_party/fiat/p256_field_64.br.c.inc +84 -0
  945. package/runtime/third_party/boringssl/third_party/fiat/p256_point.br.c.inc +112 -0
  946. package/runtime/third_party/quickjs-dtoa/LICENSE +0 -0
  947. package/runtime/third_party/quickjs-dtoa/README.md +0 -0
  948. package/runtime/third_party/quickjs-dtoa/dtoa.c +0 -0
  949. package/runtime/third_party/quickjs-dtoa/dtoa.h +0 -0
  950. package/runtime/third_party/quickjs-dtoa/dtoa_compat.h +0 -0
  951. package/runtime/third_party/quickjs-regexp/LICENSE +0 -0
  952. package/runtime/third_party/quickjs-regexp/README.md +0 -0
  953. package/runtime/third_party/quickjs-regexp/cutils.c +0 -0
  954. package/runtime/third_party/quickjs-regexp/cutils.h +0 -0
  955. package/runtime/third_party/quickjs-regexp/libregexp-opcode.h +0 -0
  956. package/runtime/third_party/quickjs-regexp/libregexp.c +0 -0
  957. package/runtime/third_party/quickjs-regexp/libregexp.h +0 -0
  958. package/runtime/third_party/quickjs-regexp/libunicode-table.h +0 -0
  959. package/runtime/third_party/quickjs-regexp/libunicode.c +0 -0
  960. package/runtime/third_party/quickjs-regexp/libunicode.h +0 -0
  961. package/runtime/third_party/v8-ieee754/LICENSE +0 -0
  962. package/runtime/third_party/v8-ieee754/README.md +2 -1
  963. package/runtime/third_party/v8-ieee754/convert.py +4 -0
  964. package/runtime/third_party/v8-ieee754/ieee754.c +1 -1
  965. package/runtime/third_party/v8-ieee754/ieee754.h +0 -0
  966. package/runtime/tools/regexp_compile.c +0 -0
  967. package/runtime/third_party/bearssl/LICENSE.txt +0 -21
  968. package/runtime/third_party/bearssl/README.txt +0 -136
  969. package/runtime/third_party/bearssl/VERSION +0 -1
  970. package/runtime/third_party/bearssl/inc/bearssl.h +0 -183
  971. package/runtime/third_party/bearssl/inc/bearssl_aead.h +0 -1059
  972. package/runtime/third_party/bearssl/inc/bearssl_block.h +0 -2618
  973. package/runtime/third_party/bearssl/inc/bearssl_ec.h +0 -967
  974. package/runtime/third_party/bearssl/inc/bearssl_hash.h +0 -1346
  975. package/runtime/third_party/bearssl/inc/bearssl_hmac.h +0 -241
  976. package/runtime/third_party/bearssl/inc/bearssl_kdf.h +0 -284
  977. package/runtime/third_party/bearssl/inc/bearssl_pem.h +0 -294
  978. package/runtime/third_party/bearssl/inc/bearssl_prf.h +0 -150
  979. package/runtime/third_party/bearssl/inc/bearssl_rand.h +0 -397
  980. package/runtime/third_party/bearssl/inc/bearssl_rsa.h +0 -1655
  981. package/runtime/third_party/bearssl/inc/bearssl_ssl.h +0 -4296
  982. package/runtime/third_party/bearssl/inc/bearssl_x509.h +0 -1474
  983. package/runtime/third_party/bearssl/src/aead/ccm.c +0 -346
  984. package/runtime/third_party/bearssl/src/aead/eax.c +0 -525
  985. package/runtime/third_party/bearssl/src/aead/gcm.c +0 -318
  986. package/runtime/third_party/bearssl/src/codec/ccopy.c +0 -44
  987. package/runtime/third_party/bearssl/src/codec/dec16be.c +0 -38
  988. package/runtime/third_party/bearssl/src/codec/dec16le.c +0 -38
  989. package/runtime/third_party/bearssl/src/codec/dec32be.c +0 -38
  990. package/runtime/third_party/bearssl/src/codec/dec32le.c +0 -38
  991. package/runtime/third_party/bearssl/src/codec/dec64be.c +0 -38
  992. package/runtime/third_party/bearssl/src/codec/dec64le.c +0 -38
  993. package/runtime/third_party/bearssl/src/codec/enc16be.c +0 -38
  994. package/runtime/third_party/bearssl/src/codec/enc16le.c +0 -38
  995. package/runtime/third_party/bearssl/src/codec/enc32be.c +0 -38
  996. package/runtime/third_party/bearssl/src/codec/enc32le.c +0 -38
  997. package/runtime/third_party/bearssl/src/codec/enc64be.c +0 -38
  998. package/runtime/third_party/bearssl/src/codec/enc64le.c +0 -38
  999. package/runtime/third_party/bearssl/src/codec/pemdec.c +0 -526
  1000. package/runtime/third_party/bearssl/src/codec/pemdec.t0 +0 -314
  1001. package/runtime/third_party/bearssl/src/codec/pemenc.c +0 -173
  1002. package/runtime/third_party/bearssl/src/config.h +0 -247
  1003. package/runtime/third_party/bearssl/src/ec/ec_all_m15.c +0 -121
  1004. package/runtime/third_party/bearssl/src/ec/ec_all_m31.c +0 -171
  1005. package/runtime/third_party/bearssl/src/ec/ec_c25519_i15.c +0 -398
  1006. package/runtime/third_party/bearssl/src/ec/ec_c25519_i31.c +0 -390
  1007. package/runtime/third_party/bearssl/src/ec/ec_c25519_m15.c +0 -1478
  1008. package/runtime/third_party/bearssl/src/ec/ec_c25519_m31.c +0 -800
  1009. package/runtime/third_party/bearssl/src/ec/ec_c25519_m62.c +0 -605
  1010. package/runtime/third_party/bearssl/src/ec/ec_c25519_m64.c +0 -831
  1011. package/runtime/third_party/bearssl/src/ec/ec_curve25519.c +0 -46
  1012. package/runtime/third_party/bearssl/src/ec/ec_default.c +0 -36
  1013. package/runtime/third_party/bearssl/src/ec/ec_keygen.c +0 -86
  1014. package/runtime/third_party/bearssl/src/ec/ec_p256_m15.c +0 -2124
  1015. package/runtime/third_party/bearssl/src/ec/ec_p256_m31.c +0 -1469
  1016. package/runtime/third_party/bearssl/src/ec/ec_p256_m62.c +0 -1765
  1017. package/runtime/third_party/bearssl/src/ec/ec_p256_m64.c +0 -1781
  1018. package/runtime/third_party/bearssl/src/ec/ec_prime_i15.c +0 -824
  1019. package/runtime/third_party/bearssl/src/ec/ec_prime_i31.c +0 -826
  1020. package/runtime/third_party/bearssl/src/ec/ec_pubkey.c +0 -85
  1021. package/runtime/third_party/bearssl/src/ec/ec_secp256r1.c +0 -51
  1022. package/runtime/third_party/bearssl/src/ec/ec_secp384r1.c +0 -57
  1023. package/runtime/third_party/bearssl/src/ec/ec_secp521r1.c +0 -64
  1024. package/runtime/third_party/bearssl/src/ec/ecdsa_atr.c +0 -134
  1025. package/runtime/third_party/bearssl/src/ec/ecdsa_default_sign_asn1.c +0 -36
  1026. package/runtime/third_party/bearssl/src/ec/ecdsa_default_sign_raw.c +0 -36
  1027. package/runtime/third_party/bearssl/src/ec/ecdsa_default_vrfy_asn1.c +0 -36
  1028. package/runtime/third_party/bearssl/src/ec/ecdsa_default_vrfy_raw.c +0 -36
  1029. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_bits.c +0 -47
  1030. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_sign_asn1.c +0 -45
  1031. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_sign_raw.c +0 -174
  1032. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_vrfy_asn1.c +0 -48
  1033. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_vrfy_raw.c +0 -166
  1034. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_bits.c +0 -47
  1035. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_sign_asn1.c +0 -45
  1036. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_sign_raw.c +0 -173
  1037. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_vrfy_asn1.c +0 -48
  1038. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_vrfy_raw.c +0 -165
  1039. package/runtime/third_party/bearssl/src/ec/ecdsa_rta.c +0 -121
  1040. package/runtime/third_party/bearssl/src/hash/dig_oid.c +0 -84
  1041. package/runtime/third_party/bearssl/src/hash/dig_size.c +0 -50
  1042. package/runtime/third_party/bearssl/src/hash/ghash_ctmul.c +0 -345
  1043. package/runtime/third_party/bearssl/src/hash/ghash_ctmul32.c +0 -251
  1044. package/runtime/third_party/bearssl/src/hash/ghash_ctmul64.c +0 -154
  1045. package/runtime/third_party/bearssl/src/hash/ghash_pclmul.c +0 -389
  1046. package/runtime/third_party/bearssl/src/hash/ghash_pwr8.c +0 -411
  1047. package/runtime/third_party/bearssl/src/hash/md5.c +0 -208
  1048. package/runtime/third_party/bearssl/src/hash/md5sha1.c +0 -141
  1049. package/runtime/third_party/bearssl/src/hash/mgf1.c +0 -56
  1050. package/runtime/third_party/bearssl/src/hash/multihash.c +0 -166
  1051. package/runtime/third_party/bearssl/src/hash/sha1.c +0 -191
  1052. package/runtime/third_party/bearssl/src/hash/sha2big.c +0 -285
  1053. package/runtime/third_party/bearssl/src/hash/sha2small.c +0 -341
  1054. package/runtime/third_party/bearssl/src/inner.h +0 -2577
  1055. package/runtime/third_party/bearssl/src/int/i15_add.c +0 -46
  1056. package/runtime/third_party/bearssl/src/int/i15_bitlen.c +0 -44
  1057. package/runtime/third_party/bearssl/src/int/i15_decmod.c +0 -124
  1058. package/runtime/third_party/bearssl/src/int/i15_decode.c +0 -56
  1059. package/runtime/third_party/bearssl/src/int/i15_decred.c +0 -100
  1060. package/runtime/third_party/bearssl/src/int/i15_encode.c +0 -56
  1061. package/runtime/third_party/bearssl/src/int/i15_fmont.c +0 -59
  1062. package/runtime/third_party/bearssl/src/int/i15_iszero.c +0 -39
  1063. package/runtime/third_party/bearssl/src/int/i15_moddiv.c +0 -465
  1064. package/runtime/third_party/bearssl/src/int/i15_modpow.c +0 -50
  1065. package/runtime/third_party/bearssl/src/int/i15_modpow2.c +0 -160
  1066. package/runtime/third_party/bearssl/src/int/i15_montmul.c +0 -184
  1067. package/runtime/third_party/bearssl/src/int/i15_mulacc.c +0 -61
  1068. package/runtime/third_party/bearssl/src/int/i15_muladd.c +0 -173
  1069. package/runtime/third_party/bearssl/src/int/i15_ninv15.c +0 -38
  1070. package/runtime/third_party/bearssl/src/int/i15_reduce.c +0 -66
  1071. package/runtime/third_party/bearssl/src/int/i15_rshift.c +0 -47
  1072. package/runtime/third_party/bearssl/src/int/i15_sub.c +0 -46
  1073. package/runtime/third_party/bearssl/src/int/i15_tmont.c +0 -36
  1074. package/runtime/third_party/bearssl/src/int/i31_add.c +0 -46
  1075. package/runtime/third_party/bearssl/src/int/i31_bitlen.c +0 -44
  1076. package/runtime/third_party/bearssl/src/int/i31_decmod.c +0 -124
  1077. package/runtime/third_party/bearssl/src/int/i31_decode.c +0 -57
  1078. package/runtime/third_party/bearssl/src/int/i31_decred.c +0 -103
  1079. package/runtime/third_party/bearssl/src/int/i31_encode.c +0 -79
  1080. package/runtime/third_party/bearssl/src/int/i31_fmont.c +0 -60
  1081. package/runtime/third_party/bearssl/src/int/i31_iszero.c +0 -39
  1082. package/runtime/third_party/bearssl/src/int/i31_moddiv.c +0 -488
  1083. package/runtime/third_party/bearssl/src/int/i31_modpow.c +0 -65
  1084. package/runtime/third_party/bearssl/src/int/i31_modpow2.c +0 -160
  1085. package/runtime/third_party/bearssl/src/int/i31_montmul.c +0 -127
  1086. package/runtime/third_party/bearssl/src/int/i31_mulacc.c +0 -74
  1087. package/runtime/third_party/bearssl/src/int/i31_muladd.c +0 -157
  1088. package/runtime/third_party/bearssl/src/int/i31_ninv31.c +0 -39
  1089. package/runtime/third_party/bearssl/src/int/i31_reduce.c +0 -66
  1090. package/runtime/third_party/bearssl/src/int/i31_rshift.c +0 -47
  1091. package/runtime/third_party/bearssl/src/int/i31_sub.c +0 -46
  1092. package/runtime/third_party/bearssl/src/int/i31_tmont.c +0 -36
  1093. package/runtime/third_party/bearssl/src/int/i32_add.c +0 -51
  1094. package/runtime/third_party/bearssl/src/int/i32_bitlen.c +0 -44
  1095. package/runtime/third_party/bearssl/src/int/i32_decmod.c +0 -77
  1096. package/runtime/third_party/bearssl/src/int/i32_decode.c +0 -63
  1097. package/runtime/third_party/bearssl/src/int/i32_decred.c +0 -107
  1098. package/runtime/third_party/bearssl/src/int/i32_div32.c +0 -56
  1099. package/runtime/third_party/bearssl/src/int/i32_encode.c +0 -72
  1100. package/runtime/third_party/bearssl/src/int/i32_fmont.c +0 -60
  1101. package/runtime/third_party/bearssl/src/int/i32_iszero.c +0 -39
  1102. package/runtime/third_party/bearssl/src/int/i32_modpow.c +0 -65
  1103. package/runtime/third_party/bearssl/src/int/i32_montmul.c +0 -69
  1104. package/runtime/third_party/bearssl/src/int/i32_mulacc.c +0 -56
  1105. package/runtime/third_party/bearssl/src/int/i32_muladd.c +0 -138
  1106. package/runtime/third_party/bearssl/src/int/i32_ninv32.c +0 -39
  1107. package/runtime/third_party/bearssl/src/int/i32_reduce.c +0 -66
  1108. package/runtime/third_party/bearssl/src/int/i32_sub.c +0 -51
  1109. package/runtime/third_party/bearssl/src/int/i32_tmont.c +0 -36
  1110. package/runtime/third_party/bearssl/src/int/i62_modpow2.c +0 -493
  1111. package/runtime/third_party/bearssl/src/kdf/hkdf.c +0 -107
  1112. package/runtime/third_party/bearssl/src/kdf/shake.c +0 -590
  1113. package/runtime/third_party/bearssl/src/mac/hmac.c +0 -122
  1114. package/runtime/third_party/bearssl/src/mac/hmac_ct.c +0 -193
  1115. package/runtime/third_party/bearssl/src/rand/aesctr_drbg.c +0 -206
  1116. package/runtime/third_party/bearssl/src/rand/hmac_drbg.c +0 -157
  1117. package/runtime/third_party/bearssl/src/rand/sysrng.c +0 -252
  1118. package/runtime/third_party/bearssl/src/rsa/rsa_default_keygen.c +0 -38
  1119. package/runtime/third_party/bearssl/src/rsa/rsa_default_modulus.c +0 -36
  1120. package/runtime/third_party/bearssl/src/rsa/rsa_default_oaep_decrypt.c +0 -38
  1121. package/runtime/third_party/bearssl/src/rsa/rsa_default_oaep_encrypt.c +0 -38
  1122. package/runtime/third_party/bearssl/src/rsa/rsa_default_pkcs1_sign.c +0 -38
  1123. package/runtime/third_party/bearssl/src/rsa/rsa_default_pkcs1_vrfy.c +0 -38
  1124. package/runtime/third_party/bearssl/src/rsa/rsa_default_priv.c +0 -38
  1125. package/runtime/third_party/bearssl/src/rsa/rsa_default_privexp.c +0 -36
  1126. package/runtime/third_party/bearssl/src/rsa/rsa_default_pss_sign.c +0 -38
  1127. package/runtime/third_party/bearssl/src/rsa/rsa_default_pss_vrfy.c +0 -38
  1128. package/runtime/third_party/bearssl/src/rsa/rsa_default_pub.c +0 -38
  1129. package/runtime/third_party/bearssl/src/rsa/rsa_default_pubexp.c +0 -36
  1130. package/runtime/third_party/bearssl/src/rsa/rsa_i15_keygen.c +0 -583
  1131. package/runtime/third_party/bearssl/src/rsa/rsa_i15_modulus.c +0 -99
  1132. package/runtime/third_party/bearssl/src/rsa/rsa_i15_oaep_decrypt.c +0 -41
  1133. package/runtime/third_party/bearssl/src/rsa/rsa_i15_oaep_encrypt.c +0 -44
  1134. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pkcs1_sign.c +0 -37
  1135. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pkcs1_vrfy.c +0 -43
  1136. package/runtime/third_party/bearssl/src/rsa/rsa_i15_priv.c +0 -209
  1137. package/runtime/third_party/bearssl/src/rsa/rsa_i15_privexp.c +0 -320
  1138. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pss_sign.c +0 -40
  1139. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pss_vrfy.c +0 -44
  1140. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pub.c +0 -113
  1141. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pubexp.c +0 -152
  1142. package/runtime/third_party/bearssl/src/rsa/rsa_i31_keygen.c +0 -37
  1143. package/runtime/third_party/bearssl/src/rsa/rsa_i31_keygen_inner.c +0 -608
  1144. package/runtime/third_party/bearssl/src/rsa/rsa_i31_modulus.c +0 -99
  1145. package/runtime/third_party/bearssl/src/rsa/rsa_i31_oaep_decrypt.c +0 -41
  1146. package/runtime/third_party/bearssl/src/rsa/rsa_i31_oaep_encrypt.c +0 -44
  1147. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pkcs1_sign.c +0 -37
  1148. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pkcs1_vrfy.c +0 -43
  1149. package/runtime/third_party/bearssl/src/rsa/rsa_i31_priv.c +0 -203
  1150. package/runtime/third_party/bearssl/src/rsa/rsa_i31_privexp.c +0 -318
  1151. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pss_sign.c +0 -40
  1152. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pss_vrfy.c +0 -44
  1153. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pub.c +0 -106
  1154. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pubexp.c +0 -152
  1155. package/runtime/third_party/bearssl/src/rsa/rsa_i32_oaep_decrypt.c +0 -41
  1156. package/runtime/third_party/bearssl/src/rsa/rsa_i32_oaep_encrypt.c +0 -44
  1157. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pkcs1_sign.c +0 -37
  1158. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pkcs1_vrfy.c +0 -43
  1159. package/runtime/third_party/bearssl/src/rsa/rsa_i32_priv.c +0 -160
  1160. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pss_sign.c +0 -40
  1161. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pss_vrfy.c +0 -44
  1162. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pub.c +0 -77
  1163. package/runtime/third_party/bearssl/src/rsa/rsa_i62_keygen.c +0 -57
  1164. package/runtime/third_party/bearssl/src/rsa/rsa_i62_oaep_decrypt.c +0 -61
  1165. package/runtime/third_party/bearssl/src/rsa/rsa_i62_oaep_encrypt.c +0 -64
  1166. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pkcs1_sign.c +0 -57
  1167. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pkcs1_vrfy.c +0 -63
  1168. package/runtime/third_party/bearssl/src/rsa/rsa_i62_priv.c +0 -223
  1169. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pss_sign.c +0 -60
  1170. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pss_vrfy.c +0 -64
  1171. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pub.c +0 -125
  1172. package/runtime/third_party/bearssl/src/rsa/rsa_oaep_pad.c +0 -112
  1173. package/runtime/third_party/bearssl/src/rsa/rsa_oaep_unpad.c +0 -145
  1174. package/runtime/third_party/bearssl/src/rsa/rsa_pkcs1_sig_pad.c +0 -100
  1175. package/runtime/third_party/bearssl/src/rsa/rsa_pkcs1_sig_unpad.c +0 -121
  1176. package/runtime/third_party/bearssl/src/rsa/rsa_pss_sig_pad.c +0 -106
  1177. package/runtime/third_party/bearssl/src/rsa/rsa_pss_sig_unpad.c +0 -121
  1178. package/runtime/third_party/bearssl/src/rsa/rsa_ssl_decrypt.c +0 -52
  1179. package/runtime/third_party/bearssl/src/settings.c +0 -306
  1180. package/runtime/third_party/bearssl/src/symcipher/aes_big_cbcdec.c +0 -69
  1181. package/runtime/third_party/bearssl/src/symcipher/aes_big_cbcenc.c +0 -67
  1182. package/runtime/third_party/bearssl/src/symcipher/aes_big_ctr.c +0 -84
  1183. package/runtime/third_party/bearssl/src/symcipher/aes_big_ctrcbc.c +0 -142
  1184. package/runtime/third_party/bearssl/src/symcipher/aes_big_dec.c +0 -254
  1185. package/runtime/third_party/bearssl/src/symcipher/aes_big_enc.c +0 -157
  1186. package/runtime/third_party/bearssl/src/symcipher/aes_common.c +0 -112
  1187. package/runtime/third_party/bearssl/src/symcipher/aes_ct.c +0 -328
  1188. package/runtime/third_party/bearssl/src/symcipher/aes_ct64.c +0 -398
  1189. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_cbcdec.c +0 -104
  1190. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_cbcenc.c +0 -81
  1191. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_ctr.c +0 -114
  1192. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_ctrcbc.c +0 -433
  1193. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_dec.c +0 -159
  1194. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_enc.c +0 -115
  1195. package/runtime/third_party/bearssl/src/symcipher/aes_ct_cbcdec.c +0 -111
  1196. package/runtime/third_party/bearssl/src/symcipher/aes_ct_cbcenc.c +0 -91
  1197. package/runtime/third_party/bearssl/src/symcipher/aes_ct_ctr.c +0 -116
  1198. package/runtime/third_party/bearssl/src/symcipher/aes_ct_ctrcbc.c +0 -422
  1199. package/runtime/third_party/bearssl/src/symcipher/aes_ct_dec.c +0 -170
  1200. package/runtime/third_party/bearssl/src/symcipher/aes_ct_enc.c +0 -112
  1201. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8.c +0 -445
  1202. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_cbcdec.c +0 -670
  1203. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_cbcenc.c +0 -417
  1204. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_ctr.c +0 -717
  1205. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_ctrcbc.c +0 -946
  1206. package/runtime/third_party/bearssl/src/symcipher/aes_small_cbcdec.c +0 -69
  1207. package/runtime/third_party/bearssl/src/symcipher/aes_small_cbcenc.c +0 -67
  1208. package/runtime/third_party/bearssl/src/symcipher/aes_small_ctr.c +0 -84
  1209. package/runtime/third_party/bearssl/src/symcipher/aes_small_ctrcbc.c +0 -142
  1210. package/runtime/third_party/bearssl/src/symcipher/aes_small_dec.c +0 -176
  1211. package/runtime/third_party/bearssl/src/symcipher/aes_small_enc.c +0 -129
  1212. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni.c +0 -240
  1213. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_cbcdec.c +0 -223
  1214. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_cbcenc.c +0 -122
  1215. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_ctr.c +0 -211
  1216. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_ctrcbc.c +0 -596
  1217. package/runtime/third_party/bearssl/src/symcipher/chacha20_ct.c +0 -106
  1218. package/runtime/third_party/bearssl/src/symcipher/chacha20_sse2.c +0 -237
  1219. package/runtime/third_party/bearssl/src/symcipher/des_ct.c +0 -411
  1220. package/runtime/third_party/bearssl/src/symcipher/des_ct_cbcdec.c +0 -87
  1221. package/runtime/third_party/bearssl/src/symcipher/des_ct_cbcenc.c +0 -69
  1222. package/runtime/third_party/bearssl/src/symcipher/des_support.c +0 -166
  1223. package/runtime/third_party/bearssl/src/symcipher/des_tab.c +0 -310
  1224. package/runtime/third_party/bearssl/src/symcipher/des_tab_cbcdec.c +0 -85
  1225. package/runtime/third_party/bearssl/src/symcipher/des_tab_cbcenc.c +0 -67
  1226. package/runtime/third_party/bearssl/src/symcipher/poly1305_ctmul.c +0 -260
  1227. package/runtime/third_party/bearssl/src/symcipher/poly1305_ctmul32.c +0 -297
  1228. package/runtime/third_party/bearssl/src/symcipher/poly1305_ctmulq.c +0 -475
  1229. package/runtime/third_party/bearssl/src/symcipher/poly1305_i15.c +0 -221
  1230. package/runtime/third_party/bearssl/src/x509/asn1.t0 +0 -757
  1231. package/runtime/third_party/bearssl/src/x509/asn1enc.c +0 -93
  1232. package/runtime/third_party/bearssl/src/x509/encode_ec_pk8der.c +0 -110
  1233. package/runtime/third_party/bearssl/src/x509/encode_ec_rawder.c +0 -161
  1234. package/runtime/third_party/bearssl/src/x509/encode_rsa_pk8der.c +0 -97
  1235. package/runtime/third_party/bearssl/src/x509/encode_rsa_rawder.c +0 -96
  1236. package/runtime/third_party/bearssl/src/x509/skey_decoder.c +0 -653
  1237. package/runtime/third_party/bearssl/src/x509/skey_decoder.t0 +0 -376
  1238. package/runtime/third_party/bearssl/src/x509/x509_decoder.c +0 -776
  1239. package/runtime/third_party/bearssl/src/x509/x509_decoder.t0 +0 -324
  1240. package/runtime/third_party/bearssl/src/x509/x509_knownkey.c +0 -105
  1241. package/runtime/third_party/bearssl/src/x509/x509_minimal.c +0 -1722
  1242. package/runtime/third_party/bearssl/src/x509/x509_minimal.t0 +0 -1526
  1243. package/runtime/third_party/bearssl/src/x509/x509_minimal_full.c +0 -59
@@ -0,0 +1,1623 @@
1
+ // Copyright 2016 The BoringSSL Authors
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // https://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ #include <openssl/ssl.h>
16
+
17
+ #include <assert.h>
18
+ #include <string.h>
19
+
20
+ #include <algorithm>
21
+ #include <tuple>
22
+
23
+ #include <openssl/aead.h>
24
+ #include <openssl/bytestring.h>
25
+ #include <openssl/digest.h>
26
+ #include <openssl/err.h>
27
+ #include <openssl/hpke.h>
28
+ #include <openssl/mem.h>
29
+ #include <openssl/rand.h>
30
+ #include <openssl/stack.h>
31
+
32
+ #include "../crypto/bytestring/internal.h"
33
+ #include "../crypto/internal.h"
34
+ #include "internal.h"
35
+
36
+
37
+ BSSL_NAMESPACE_BEGIN
38
+
39
+ enum tls13_server_hs_state_t {
40
+ state13_select_parameters = 0,
41
+ state13_select_session,
42
+ state13_send_hello_retry_request,
43
+ state13_read_second_client_hello,
44
+ state13_send_server_hello,
45
+ state13_send_server_certificate_verify,
46
+ state13_send_server_finished,
47
+ state13_send_half_rtt_ticket,
48
+ state13_read_second_client_flight,
49
+ state13_process_end_of_early_data,
50
+ state13_read_client_encrypted_extensions,
51
+ state13_read_client_certificate,
52
+ state13_read_client_certificate_verify,
53
+ state13_read_channel_id,
54
+ state13_read_client_finished,
55
+ state13_send_new_session_ticket,
56
+ state13_done,
57
+ };
58
+
59
+ static const uint8_t kZeroes[EVP_MAX_MD_SIZE] = {0};
60
+
61
+ // Allow a minute of ticket age skew in either direction. This covers
62
+ // transmission delays in ClientHello and NewSessionTicket, as well as
63
+ // drift between client and server clock rate since the ticket was issued.
64
+ // See RFC 8446, section 8.3.
65
+ static const int32_t kMaxTicketAgeSkewSeconds = 60;
66
+
67
+ static bool resolve_pake_secret(SSL_HANDSHAKE *hs) {
68
+ uint8_t verifier_share[spake2plus::kShareSize];
69
+ uint8_t verifier_confirm[spake2plus::kConfirmSize];
70
+ uint8_t shared_secret[spake2plus::kSecretSize];
71
+ if (!hs->pake_verifier->ProcessProverShare(verifier_share, verifier_confirm,
72
+ shared_secret,
73
+ hs->pake_share->pake_message)) {
74
+ OPENSSL_PUT_ERROR(SSL, SSL_R_DECODE_ERROR);
75
+ ssl_send_alert(hs->ssl, SSL3_AL_FATAL, SSL_AD_ILLEGAL_PARAMETER);
76
+ return false;
77
+ }
78
+
79
+ bssl::ScopedCBB cbb;
80
+ if (!CBB_init(cbb.get(), sizeof(verifier_share) + sizeof(verifier_confirm)) ||
81
+ !CBB_add_bytes(cbb.get(), verifier_share, sizeof(verifier_share)) ||
82
+ !CBB_add_bytes(cbb.get(), verifier_confirm, sizeof(verifier_confirm)) ||
83
+ !CBBFinishArray(cbb.get(), &hs->pake_share_bytes)) {
84
+ return false;
85
+ }
86
+
87
+ return tls13_advance_key_schedule(
88
+ hs, MakeConstSpan(shared_secret, sizeof(shared_secret)));
89
+ }
90
+
91
+ static bool resolve_ecdhe_secret(SSL_HANDSHAKE *hs,
92
+ const SSL_CLIENT_HELLO *client_hello) {
93
+ SSLImpl *const ssl = hs->ssl;
94
+ const uint16_t group_id = hs->new_session->group_id;
95
+
96
+ bool found_key_share;
97
+ Span<const uint8_t> peer_key;
98
+ uint8_t alert = SSL_AD_DECODE_ERROR;
99
+ if (!ssl_ext_key_share_parse_clienthello(hs, &found_key_share, &peer_key,
100
+ &alert, client_hello)) {
101
+ ssl_send_alert(ssl, SSL3_AL_FATAL, alert);
102
+ return false;
103
+ }
104
+
105
+ if (!found_key_share) {
106
+ ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_ILLEGAL_PARAMETER);
107
+ OPENSSL_PUT_ERROR(SSL, SSL_R_WRONG_CURVE);
108
+ return false;
109
+ }
110
+
111
+ Array<uint8_t> secret;
112
+ if (hs->provided_hints != nullptr &&
113
+ hs->provided_hints->key_share_group_id == group_id &&
114
+ !hs->provided_hints->key_share_secret.empty()) {
115
+ // Copy the key_share secret from hints.
116
+ if (!hs->key_share_ciphertext.CopyFrom(
117
+ hs->provided_hints->key_share_ciphertext) ||
118
+ !secret.CopyFrom(hs->provided_hints->key_share_secret)) {
119
+ ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_INTERNAL_ERROR);
120
+ return false;
121
+ }
122
+ } else {
123
+ ScopedCBB ciphertext;
124
+ UniquePtr<SSLKeyShare> key_share = SSLKeyShare::Create(group_id);
125
+ if (!key_share || //
126
+ !CBB_init(ciphertext.get(), 32) ||
127
+ !key_share->Encap(ciphertext.get(), &secret, &alert, peer_key) ||
128
+ !CBBFinishArray(ciphertext.get(), &hs->key_share_ciphertext)) {
129
+ ssl_send_alert(ssl, SSL3_AL_FATAL, alert);
130
+ return false;
131
+ }
132
+ }
133
+ if (hs->pending_hints != nullptr) {
134
+ hs->pending_hints->key_share_group_id = group_id;
135
+ if (!hs->pending_hints->key_share_ciphertext.CopyFrom(
136
+ hs->key_share_ciphertext) ||
137
+ !hs->pending_hints->key_share_secret.CopyFrom(secret)) {
138
+ ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_INTERNAL_ERROR);
139
+ return false;
140
+ }
141
+ }
142
+
143
+ return tls13_advance_key_schedule(hs, secret);
144
+ }
145
+
146
+ static int ssl_ext_supported_versions_add_serverhello(SSL_HANDSHAKE *hs,
147
+ CBB *out) {
148
+ CBB contents;
149
+ if (!CBB_add_u16(out, TLSEXT_TYPE_supported_versions) || //
150
+ !CBB_add_u16_length_prefixed(out, &contents) || //
151
+ !CBB_add_u16(&contents, hs->ssl->s3->version) || //
152
+ !CBB_flush(out)) {
153
+ return 0;
154
+ }
155
+
156
+ return 1;
157
+ }
158
+
159
+ static bool add_new_session_tickets(SSL_HANDSHAKE *hs, bool *out_sent_tickets) {
160
+ SSLImpl *const ssl = hs->ssl;
161
+ if ( // If the client doesn't accept resumption with PSK_DHE_KE, don't send a
162
+ // session ticket.
163
+ !hs->accept_psk_mode ||
164
+ // We only implement stateless resumption in TLS 1.3, so skip sending
165
+ // tickets if disabled.
166
+ (SSL_get_options(ssl) & SSL_OP_NO_TICKET) ||
167
+ // Don't send tickets for PAKE connections. We don't support resumption
168
+ // with PAKEs.
169
+ hs->pake_verifier != nullptr) {
170
+ *out_sent_tickets = false;
171
+ return true;
172
+ }
173
+
174
+ // Rebase the session timestamp so that it is measured from ticket
175
+ // issuance.
176
+ ssl_session_rebase_time(ssl, hs->new_session.get());
177
+
178
+ assert(ssl->session_ctx->num_tickets <= kMaxTickets);
179
+ bool sent_tickets = false;
180
+ for (size_t i = 0; i < ssl->session_ctx->num_tickets; i++) {
181
+ UniquePtr<SSLSession> session(
182
+ SSL_SESSION_dup(hs->new_session.get(), SSL_SESSION_INCLUDE_NONAUTH));
183
+ if (!session) {
184
+ return false;
185
+ }
186
+
187
+ if (!RAND_bytes((uint8_t *)&session->ticket_age_add, 4)) {
188
+ return false;
189
+ }
190
+ session->ticket_age_add_valid = true;
191
+ // TODO(crbug.com/381113363): Remove the SSL_is_dtls check once we support
192
+ // 0-RTT for DTLS 1.3.
193
+ bool enable_early_data =
194
+ ssl->enable_early_data &&
195
+ (!SSL_is_quic(ssl) || !ssl->config->quic_early_data_context.empty()) &&
196
+ !SSL_is_dtls(ssl);
197
+ if (enable_early_data) {
198
+ // QUIC does not use the max_early_data_size parameter and always sets it
199
+ // to a fixed value. See RFC 9001, section 4.6.1.
200
+ session->ticket_max_early_data =
201
+ SSL_is_quic(ssl) ? 0xffffffff : kMaxEarlyDataAccepted;
202
+ }
203
+ session->is_resumable_across_names = ssl->resumption_across_names_enabled;
204
+
205
+ static_assert(kMaxTickets < 256, "Too many tickets");
206
+ assert(i < 256);
207
+ uint8_t nonce[] = {static_cast<uint8_t>(i)};
208
+
209
+ ScopedCBB cbb;
210
+ CBB body, nonce_cbb, ticket, extensions;
211
+ if (!ssl->method->init_message(ssl, cbb.get(), &body,
212
+ SSL3_MT_NEW_SESSION_TICKET) ||
213
+ !CBB_add_u32(&body, session->timeout) ||
214
+ !CBB_add_u32(&body, session->ticket_age_add) ||
215
+ !CBB_add_u8_length_prefixed(&body, &nonce_cbb) ||
216
+ !CBB_add_bytes(&nonce_cbb, nonce, sizeof(nonce)) ||
217
+ !tls13_derive_session_psk(session.get(), nonce, SSL_is_dtls(ssl)) ||
218
+ !CBB_add_u16_length_prefixed(&body, &ticket) ||
219
+ !ssl_encrypt_ticket(hs, &ticket, session.get())) {
220
+ return false;
221
+ }
222
+
223
+ if (CBB_len(&ticket) == 0) {
224
+ // The caller decided not to encrypt a ticket. Skip the message.
225
+ continue;
226
+ }
227
+
228
+ if (!CBB_add_u16_length_prefixed(&body, &extensions)) {
229
+ return false;
230
+ }
231
+
232
+ if (enable_early_data) {
233
+ CBB early_data;
234
+ if (!CBB_add_u16(&extensions, TLSEXT_TYPE_early_data) ||
235
+ !CBB_add_u16_length_prefixed(&extensions, &early_data) ||
236
+ !CBB_add_u32(&early_data, session->ticket_max_early_data) ||
237
+ !CBB_flush(&extensions)) {
238
+ return false;
239
+ }
240
+ }
241
+
242
+ SSLFlags flags = 0;
243
+ if (session->is_resumable_across_names) {
244
+ flags |= kSSLFlagResumptionAcrossNames;
245
+ }
246
+ if (!ssl_add_flags_extension(&extensions, flags)) {
247
+ return false;
248
+ }
249
+
250
+ // Add a fake extension. See RFC 8701.
251
+ if (!CBB_add_u16(&extensions,
252
+ ssl_get_grease_value(hs, ssl_grease_ticket_extension)) ||
253
+ !CBB_add_u16(&extensions, 0 /* empty */)) {
254
+ return false;
255
+ }
256
+
257
+ if (!ssl_add_message_cbb(ssl, cbb.get())) {
258
+ return false;
259
+ }
260
+ sent_tickets = true;
261
+ }
262
+
263
+ *out_sent_tickets = sent_tickets;
264
+ return true;
265
+ }
266
+
267
+ bool ssl_check_tls13_credential_ignoring_issuer(
268
+ SSL_HANDSHAKE *hs, Span<const uint8_t> allowed_cert_types,
269
+ const SSLCredential *cred, uint16_t *out_sigalg) {
270
+ assert(!allowed_cert_types.empty());
271
+ const auto is_cert_type_allowed = [&](uint8_t cert_type) {
272
+ return std::find(allowed_cert_types.begin(), allowed_cert_types.end(),
273
+ cert_type) != allowed_cert_types.end();
274
+ };
275
+ switch (cred->type) {
276
+ case SSLCredentialType::kDelegated:
277
+ // Check that the peer supports the signature over the delegated
278
+ // credential.
279
+ if (std::find(hs->peer_sigalgs.begin(), hs->peer_sigalgs.end(),
280
+ cred->dc_algorithm) == hs->peer_sigalgs.end()) {
281
+ OPENSSL_PUT_ERROR(SSL, SSL_R_NO_COMMON_SIGNATURE_ALGORITHMS);
282
+ return false;
283
+ }
284
+ [[fallthrough]];
285
+ case SSLCredentialType::kX509:
286
+ case SSLCredentialType::kRawPublicKey:
287
+ if (!is_cert_type_allowed(
288
+ *ssl_credential_type_to_cert_type(cred->type))) {
289
+ OPENSSL_PUT_ERROR(SSL, SSL_R_UNKNOWN_CERTIFICATE_TYPE);
290
+ return false;
291
+ }
292
+ break;
293
+ default:
294
+ OPENSSL_PUT_ERROR(SSL, SSL_R_UNKNOWN_CERTIFICATE_TYPE);
295
+ return false;
296
+ }
297
+
298
+ // If we reach here then the credential requires a signature. If `cred` is a
299
+ // delegated credential, this also checks that the peer supports delegated
300
+ // credentials and matched `dc_cert_verify_algorithm`.
301
+ return tls1_choose_signature_algorithm(hs, cred, out_sigalg);
302
+ }
303
+
304
+ static bool check_signature_credential(SSL_HANDSHAKE *hs,
305
+ Span<const uint8_t> allowed_cert_types,
306
+ const SSLCredential *cred,
307
+ uint16_t *out_sigalg) {
308
+ return ssl_check_tls13_credential_ignoring_issuer(hs, allowed_cert_types,
309
+ cred, out_sigalg) &&
310
+ // Use this credential if it either matches a requested issuer,
311
+ // or does not require issuer matching.
312
+ ssl_credential_matches_requested_issuers(hs, cred);
313
+ }
314
+
315
+ static bool check_pake_credential(SSL_HANDSHAKE *hs,
316
+ const SSLCredential *cred) {
317
+ assert(cred->type == SSLCredentialType::kSPAKE2PlusV1Server);
318
+ // Look for a client PAKE share that matches `cred`.
319
+ if (hs->pake_share == nullptr ||
320
+ hs->pake_share->named_pake != SSL_PAKE_SPAKE2PLUSV1 ||
321
+ hs->pake_share->client_identity != Span(cred->client_identity) ||
322
+ hs->pake_share->server_identity != Span(cred->server_identity)) {
323
+ OPENSSL_PUT_ERROR(SSL, SSL_R_PEER_PAKE_MISMATCH);
324
+ return false;
325
+ }
326
+
327
+ return true;
328
+ }
329
+
330
+ static bool check_psk_credential(SSL_HANDSHAKE *hs, const SSLCredential *cred,
331
+ const std::optional<SSLOfferedPSKs> &psks) {
332
+ assert(cred->type == SSLCredentialType::kPreSharedKey);
333
+ SSLImpl *const ssl = hs->ssl;
334
+ if (!psks) {
335
+ OPENSSL_PUT_ERROR(SSL, SSL_R_MISSING_EXTENSION);
336
+ return false;
337
+ }
338
+ if (!hs->accept_psk_mode) {
339
+ OPENSSL_PUT_ERROR(SSL, SSL_R_NO_SUPPORTED_PSK_MODE);
340
+ return false;
341
+ }
342
+
343
+ // Look for a matching PSK.
344
+ const EVP_MD *md =
345
+ ssl_get_handshake_digest(ssl_protocol_version(ssl), hs->new_cipher);
346
+ SSLOfferedPSKs copy = *psks;
347
+ for (;;) {
348
+ std::optional<SSLOfferedPSK> psk = copy.Next();
349
+ if (!psk) {
350
+ OPENSSL_PUT_ERROR(SSL, SSL_R_PSK_IDENTITY_NOT_FOUND);
351
+ return false;
352
+ }
353
+ if (tls13_compare_imported_psk_identity(psk->identity, cred,
354
+ ssl->s3->version, md)) {
355
+ return true;
356
+ }
357
+ }
358
+ }
359
+
360
+ static enum ssl_hs_wait_t do_select_parameters(SSL_HANDSHAKE *hs) {
361
+ // At this point, most ClientHello extensions have already been processed by
362
+ // the common handshake logic. Resolve the remaining non-resumption
363
+ // parameters. First, parse out another copy of the ClientHello and important
364
+ // extensions.
365
+ SSLImpl *const ssl = hs->ssl;
366
+ SSLMessage msg;
367
+ SSL_CLIENT_HELLO client_hello;
368
+ if (!hs->GetClientHello(&msg, &client_hello)) {
369
+ return ssl_hs_error;
370
+ }
371
+ std::optional<SSLOfferedPSKs> psks;
372
+ CBS psk_ext;
373
+ uint8_t alert = SSL_AD_DECODE_ERROR;
374
+ if (ssl_client_hello_get_extension(&client_hello, &psk_ext,
375
+ TLSEXT_TYPE_pre_shared_key)) {
376
+ psks = ssl_ext_pre_shared_key_parse_clienthello(hs, &alert, &client_hello,
377
+ &psk_ext);
378
+ if (!psks) {
379
+ ssl_send_alert(ssl, SSL3_AL_FATAL, alert);
380
+ return ssl_hs_error;
381
+ }
382
+ }
383
+
384
+ if (SSL_is_quic(ssl) && client_hello.session_id_len > 0) {
385
+ OPENSSL_PUT_ERROR(SSL, SSL_R_UNEXPECTED_COMPATIBILITY_MODE);
386
+ ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_ILLEGAL_PARAMETER);
387
+ return ssl_hs_error;
388
+ }
389
+ // DTLS 1.3 disables compatibility mode, and even if the client advertised a
390
+ // session ID (for resumption in DTLS 1.2), the server "MUST NOT echo the
391
+ // 'legacy_session_id' value from the client" (RFC 9147, section 5) as it
392
+ // would in a TLS 1.3 handshake.
393
+ if (!SSL_is_dtls(ssl)) {
394
+ hs->session_id.CopyFrom(
395
+ Span(client_hello.session_id, client_hello.session_id_len));
396
+ }
397
+
398
+ // Negotiate the cipher suite. This must happen before negotiating PSKs.
399
+ CBS client_cipher_list;
400
+ CBS_init(&client_cipher_list, client_hello.cipher_suites,
401
+ client_hello.cipher_suites_len);
402
+ hs->new_cipher = ssl->config->tls13_cipher_list.ChooseCipher(
403
+ &client_cipher_list, /*prioritize_client_pref=*/false,
404
+ ssl_protocol_version(ssl), SSL_kGENERIC, SSL_aGENERIC);
405
+ if (hs->new_cipher == nullptr) {
406
+ OPENSSL_PUT_ERROR(SSL, SSL_R_NO_SHARED_CIPHER);
407
+ ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_HANDSHAKE_FAILURE);
408
+ return ssl_hs_error;
409
+ }
410
+
411
+ // Select the credential to use.
412
+ Array<SSLCredential *> creds;
413
+ if (!ssl_get_full_credential_list(hs, &creds)) {
414
+ return ssl_hs_error;
415
+ }
416
+ if (creds.empty()) {
417
+ OPENSSL_PUT_ERROR(SSL, SSL_R_NO_CERTIFICATE_SET);
418
+ ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_INTERNAL_ERROR);
419
+ return ssl_hs_error;
420
+ }
421
+ std::optional<Span<const uint8_t>> allowed_cert_types =
422
+ ssl_get_allowed_server_cert_types(hs, &client_hello, &alert);
423
+ if (!allowed_cert_types.has_value()) {
424
+ ssl_send_alert(ssl, SSL3_AL_FATAL, alert);
425
+ return ssl_hs_error;
426
+ }
427
+ for (SSLCredential *cred : creds) {
428
+ ERR_clear_error();
429
+ if (cred->type == SSLCredentialType::kSPAKE2PlusV1Server) {
430
+ if (check_pake_credential(hs, cred)) {
431
+ hs->credential = UpRef(cred);
432
+ hs->pake_verifier = MakeUnique<spake2plus::Verifier>();
433
+ if (hs->pake_verifier == nullptr ||
434
+ !hs->pake_verifier->Init(cred->pake_context, cred->client_identity,
435
+ cred->server_identity,
436
+ cred->password_verifier_w0,
437
+ cred->registration_record)) {
438
+ ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_INTERNAL_ERROR);
439
+ return ssl_hs_error;
440
+ }
441
+ break;
442
+ }
443
+ } else if (cred->type == SSLCredentialType::kPreSharedKey) {
444
+ if (check_psk_credential(hs, cred, psks)) {
445
+ const EVP_MD *md =
446
+ ssl_get_handshake_digest(ssl_protocol_version(ssl), hs->new_cipher);
447
+ std::optional<SSLImportedPSK> imported =
448
+ tls13_derive_imported_psk(hs, cred, ssl->s3->version, md);
449
+ if (!imported) {
450
+ return ssl_hs_error;
451
+ }
452
+ hs->credential = UpRef(cred);
453
+ hs->pre_shared_key = MakeUnique<SSLPreSharedKey>(*std::move(imported));
454
+ if (hs->pre_shared_key == nullptr) {
455
+ return ssl_hs_error;
456
+ }
457
+ break;
458
+ }
459
+ } else {
460
+ uint16_t sigalg;
461
+ if (check_signature_credential(hs, *allowed_cert_types, cred, &sigalg)) {
462
+ hs->credential = UpRef(cred);
463
+ hs->signature_algorithm = sigalg;
464
+ break;
465
+ }
466
+ }
467
+ }
468
+ if (hs->credential == nullptr) {
469
+ // The error from the last attempt is in the error queue.
470
+ assert(ERR_peek_error() != 0);
471
+ ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_HANDSHAKE_FAILURE);
472
+ return ssl_hs_error;
473
+ }
474
+
475
+ // HTTP/2 negotiation depends on the cipher suite, so ALPN negotiation was
476
+ // deferred. Complete it now.
477
+ if (!ssl_negotiate_alpn(hs, &alert, &client_hello)) {
478
+ ssl_send_alert(ssl, SSL3_AL_FATAL, alert);
479
+ return ssl_hs_error;
480
+ }
481
+
482
+ // The PRF hash is now known.
483
+ if (!hs->transcript.InitHash(ssl_protocol_version(ssl), hs->new_cipher)) {
484
+ return ssl_hs_error;
485
+ }
486
+
487
+ hs->tls13_state = state13_select_session;
488
+ return ssl_hs_ok;
489
+ }
490
+
491
+ static enum ssl_ticket_aead_result_t select_session(
492
+ SSL_HANDSHAKE *hs, uint8_t *out_alert, UniquePtr<SSLSession> *out_session,
493
+ int32_t *out_ticket_age_skew, bool *out_offered_ticket,
494
+ const SSLMessage &msg, const SSL_CLIENT_HELLO *client_hello) {
495
+ SSLImpl *const ssl = hs->ssl;
496
+ *out_session = nullptr;
497
+
498
+ CBS pre_shared_key;
499
+ *out_offered_ticket = ssl_client_hello_get_extension(
500
+ client_hello, &pre_shared_key, TLSEXT_TYPE_pre_shared_key);
501
+ if (!*out_offered_ticket) {
502
+ return ssl_ticket_aead_ignore_ticket;
503
+ }
504
+
505
+ // Per RFC 8446, section 4.2.9, servers MUST abort the handshake if the client
506
+ // sends pre_shared_key without psk_key_exchange_modes.
507
+ CBS unused;
508
+ if (!ssl_client_hello_get_extension(client_hello, &unused,
509
+ TLSEXT_TYPE_psk_key_exchange_modes)) {
510
+ *out_alert = SSL_AD_MISSING_EXTENSION;
511
+ OPENSSL_PUT_ERROR(SSL, SSL_R_MISSING_EXTENSION);
512
+ return ssl_ticket_aead_error;
513
+ }
514
+
515
+ std::optional<SSLOfferedPSKs> psks = ssl_ext_pre_shared_key_parse_clienthello(
516
+ hs, out_alert, client_hello, &pre_shared_key);
517
+ if (!psks) {
518
+ return ssl_ticket_aead_error;
519
+ }
520
+
521
+ // If the peer did not offer psk_dhe, ignore the resumption.
522
+ if (!hs->accept_psk_mode) {
523
+ return ssl_ticket_aead_ignore_ticket;
524
+ }
525
+
526
+ // We do not currently support resumption with PAKEs.
527
+ if (hs->credential != nullptr &&
528
+ hs->credential->type == SSLCredentialType::kSPAKE2PlusV1Server) {
529
+ return ssl_ticket_aead_ignore_ticket;
530
+ }
531
+
532
+ // We only consider the first PSK for session resumption.
533
+ std::optional<SSLOfferedPSK> psk = psks->Next();
534
+ if (!psk) {
535
+ OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR);
536
+ return ssl_ticket_aead_error;
537
+ }
538
+
539
+ // Ignore whether the caller asked for TLS 1.2 ticket renewal. TLS 1.3 session
540
+ // tickets are renewed separately as part of the NewSessionTicket. Also save
541
+ // the ticket so we can find the PSK again on the second ClientHello.
542
+ bool unused_renew;
543
+ UniquePtr<SSLSession> session;
544
+ enum ssl_ticket_aead_result_t ret =
545
+ ssl_process_ticket(hs, &session, &unused_renew, psk->identity,
546
+ /*session_id=*/{}, /*save_ticket=*/true);
547
+ switch (ret) {
548
+ case ssl_ticket_aead_success:
549
+ break;
550
+ case ssl_ticket_aead_error:
551
+ *out_alert = SSL_AD_INTERNAL_ERROR;
552
+ return ret;
553
+ default:
554
+ return ret;
555
+ }
556
+
557
+ if (!ssl_session_is_resumable(hs, session.get()) ||
558
+ // Historically, some TLS 1.3 tickets were missing ticket_age_add.
559
+ !session->ticket_age_add_valid) {
560
+ return ssl_ticket_aead_ignore_ticket;
561
+ }
562
+
563
+ // Recover the client ticket age and convert to seconds.
564
+ uint32_t client_ticket_age =
565
+ psk->obfuscated_ticket_age - session->ticket_age_add;
566
+ client_ticket_age /= 1000;
567
+
568
+ OPENSSL_timeval now = ssl_ctx_get_current_time(ssl->ctx.get());
569
+
570
+ // Compute the server ticket age in seconds.
571
+ assert(now.tv_sec >= session->time);
572
+ uint64_t server_ticket_age = now.tv_sec - session->time;
573
+
574
+ // To avoid overflowing `hs->ticket_age_skew`, we will not resume
575
+ // 68-year-old sessions.
576
+ if (server_ticket_age > INT32_MAX) {
577
+ return ssl_ticket_aead_ignore_ticket;
578
+ }
579
+
580
+ *out_ticket_age_skew = static_cast<int32_t>(client_ticket_age) -
581
+ static_cast<int32_t>(server_ticket_age);
582
+ *out_session = std::move(session);
583
+ return ssl_ticket_aead_success;
584
+ }
585
+
586
+ static bool quic_ticket_compatible(const SSLSession *session,
587
+ const SSL_CONFIG *config) {
588
+ if (!session->is_quic) {
589
+ return true;
590
+ }
591
+
592
+ if (session->quic_early_data_context.empty() ||
593
+ config->quic_early_data_context.size() !=
594
+ session->quic_early_data_context.size() ||
595
+ CRYPTO_memcmp(config->quic_early_data_context.data(),
596
+ session->quic_early_data_context.data(),
597
+ session->quic_early_data_context.size()) != 0) {
598
+ return false;
599
+ }
600
+ return true;
601
+ }
602
+
603
+ static bool using_certificate(const SSL_HANDSHAKE *hs) {
604
+ return !hs->pre_shared_key && !hs->pake_verifier;
605
+ }
606
+
607
+ static enum ssl_hs_wait_t do_select_session(SSL_HANDSHAKE *hs) {
608
+ SSLImpl *const ssl = hs->ssl;
609
+ SSLMessage msg;
610
+ SSL_CLIENT_HELLO client_hello;
611
+ if (!hs->GetClientHello(&msg, &client_hello)) {
612
+ return ssl_hs_error;
613
+ }
614
+
615
+ uint8_t alert = SSL_AD_DECODE_ERROR;
616
+ UniquePtr<SSLSession> session;
617
+ bool offered_ticket = false;
618
+ switch (select_session(hs, &alert, &session, &ssl->s3->ticket_age_skew,
619
+ &offered_ticket, msg, &client_hello)) {
620
+ case ssl_ticket_aead_ignore_ticket:
621
+ assert(!session);
622
+ if (!ssl_get_new_session(hs)) {
623
+ ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_INTERNAL_ERROR);
624
+ return ssl_hs_error;
625
+ }
626
+ break;
627
+
628
+ case ssl_ticket_aead_success:
629
+ // Carry over authentication information from the previous handshake into
630
+ // a fresh session.
631
+ hs->new_session =
632
+ SSL_SESSION_dup(session.get(), SSL_SESSION_DUP_AUTH_ONLY);
633
+ if (hs->new_session == nullptr) {
634
+ ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_INTERNAL_ERROR);
635
+ return ssl_hs_error;
636
+ }
637
+
638
+ // Resumption incorporates fresh key material, so refresh the timeout.
639
+ ssl_session_renew_timeout(ssl, hs->new_session.get(),
640
+ ssl->session_ctx->session_psk_dhe_timeout);
641
+
642
+ ssl->s3->session_reused = true;
643
+ hs->pre_shared_key = MakeUnique<SSLPreSharedKey>(UpRef(session));
644
+ if (hs->pre_shared_key == nullptr) {
645
+ return ssl_hs_error;
646
+ }
647
+ break;
648
+
649
+ case ssl_ticket_aead_error:
650
+ ssl_send_alert(ssl, SSL3_AL_FATAL, alert);
651
+ return ssl_hs_error;
652
+
653
+ case ssl_ticket_aead_retry:
654
+ hs->tls13_state = state13_select_session;
655
+ return ssl_hs_pending_ticket;
656
+ }
657
+
658
+ hs->can_release_private_key = !using_certificate(hs);
659
+
660
+ // Negotiate ALPS now, after ALPN is negotiated and `hs->new_session` is
661
+ // initialized.
662
+ if (!ssl_negotiate_alps(hs, &alert, &client_hello)) {
663
+ ssl_send_alert(ssl, SSL3_AL_FATAL, alert);
664
+ return ssl_hs_error;
665
+ }
666
+
667
+ if (using_certificate(hs)) {
668
+ // Determine whether to request a client certificate.
669
+ hs->cert_request = !!(hs->config->verify_mode & SSL_VERIFY_PEER);
670
+ if (!ssl_negotiate_client_certificate_type(hs, &alert, &client_hello)) {
671
+ ssl_send_alert(ssl, SSL3_AL_FATAL, alert);
672
+ return ssl_hs_error;
673
+ }
674
+ }
675
+
676
+ // Record connection properties in the new session.
677
+ hs->new_session->cipher = hs->new_cipher;
678
+
679
+ // If using key shares, resolve the supported group and determine if we need
680
+ // HelloRetryRequest.
681
+ bool need_hrr = false;
682
+ if (hs->pake_verifier == nullptr) {
683
+ if (!tls1_get_shared_group(hs, &hs->new_session->group_id)) {
684
+ OPENSSL_PUT_ERROR(SSL, SSL_R_NO_SHARED_GROUP);
685
+ // RFC 8446, section 9.2 specifies that the "missing extension" alert
686
+ // should be sent if the ClientHello does not have both or neither of
687
+ // "key_share" and "supported_groups".
688
+ ssl_send_alert(ssl, SSL3_AL_FATAL,
689
+ hs->peer_supported_group_list.empty()
690
+ ? SSL_AD_MISSING_EXTENSION
691
+ : SSL_AD_HANDSHAKE_FAILURE);
692
+ return ssl_hs_error;
693
+ }
694
+ bool found_key_share;
695
+ if (!ssl_ext_key_share_parse_clienthello(hs, &found_key_share,
696
+ /*out_key_share=*/nullptr, &alert,
697
+ &client_hello)) {
698
+ ssl_send_alert(ssl, SSL3_AL_FATAL, alert);
699
+ return ssl_hs_error;
700
+ }
701
+ need_hrr = !found_key_share;
702
+ }
703
+
704
+ // Determine if we're negotiating 0-RTT.
705
+ if (!ssl->enable_early_data) {
706
+ ssl->s3->early_data_reason = ssl_early_data_disabled;
707
+ } else if (!offered_ticket) {
708
+ ssl->s3->early_data_reason = ssl_early_data_no_session_offered;
709
+ } else if (!session) {
710
+ ssl->s3->early_data_reason = ssl_early_data_session_not_resumed;
711
+ } else if (session->ticket_max_early_data == 0) {
712
+ ssl->s3->early_data_reason = ssl_early_data_unsupported_for_session;
713
+ } else if (!hs->early_data_offered) {
714
+ ssl->s3->early_data_reason = ssl_early_data_peer_declined;
715
+ } else if (hs->channel_id_negotiated) {
716
+ // Channel ID is incompatible with 0-RTT.
717
+ ssl->s3->early_data_reason = ssl_early_data_channel_id;
718
+ } else if (Span(ssl->s3->alpn_selected) != session->early_alpn) {
719
+ // The negotiated ALPN must match the one in the ticket.
720
+ ssl->s3->early_data_reason = ssl_early_data_alpn_mismatch;
721
+ } else if (hs->new_session->has_application_settings !=
722
+ session->has_application_settings ||
723
+ Span(hs->new_session->local_application_settings) !=
724
+ session->local_application_settings) {
725
+ ssl->s3->early_data_reason = ssl_early_data_alps_mismatch;
726
+ } else if (ssl->s3->ticket_age_skew < -kMaxTicketAgeSkewSeconds ||
727
+ kMaxTicketAgeSkewSeconds < ssl->s3->ticket_age_skew) {
728
+ ssl->s3->early_data_reason = ssl_early_data_ticket_age_skew;
729
+ } else if (!quic_ticket_compatible(session.get(), hs->config)) {
730
+ ssl->s3->early_data_reason = ssl_early_data_quic_parameter_mismatch;
731
+ } else if (need_hrr) {
732
+ ssl->s3->early_data_reason = ssl_early_data_hello_retry_request;
733
+ } else {
734
+ // `ssl_session_is_resumable` forbids cross-cipher resumptions even if the
735
+ // PRF hashes match.
736
+ assert(hs->new_cipher == session->cipher);
737
+
738
+ ssl->s3->early_data_reason = ssl_early_data_accepted;
739
+ ssl->s3->early_data_accepted = true;
740
+ }
741
+
742
+ // Store the ALPN and ALPS values in the session for 0-RTT. Note the peer
743
+ // applications settings are not generally known until client
744
+ // EncryptedExtensions.
745
+ if (!hs->new_session->early_alpn.CopyFrom(ssl->s3->alpn_selected)) {
746
+ ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_INTERNAL_ERROR);
747
+ return ssl_hs_error;
748
+ }
749
+
750
+ // The peer applications settings are usually received later, in
751
+ // EncryptedExtensions. But, in 0-RTT handshakes, we carry over the
752
+ // values from `session`. Do this now, before `session` is discarded.
753
+ if (ssl->s3->early_data_accepted &&
754
+ hs->new_session->has_application_settings &&
755
+ !hs->new_session->peer_application_settings.CopyFrom(
756
+ session->peer_application_settings)) {
757
+ ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_INTERNAL_ERROR);
758
+ return ssl_hs_error;
759
+ }
760
+
761
+ // Copy the QUIC early data context to the session.
762
+ if (ssl->enable_early_data && SSL_is_quic(ssl)) {
763
+ if (!hs->new_session->quic_early_data_context.CopyFrom(
764
+ hs->config->quic_early_data_context)) {
765
+ ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_INTERNAL_ERROR);
766
+ return ssl_hs_error;
767
+ }
768
+ }
769
+
770
+ if (ssl->ctx->dos_protection_cb != nullptr &&
771
+ ssl->ctx->dos_protection_cb(&client_hello) == 0) {
772
+ // Connection rejected for DOS reasons.
773
+ OPENSSL_PUT_ERROR(SSL, SSL_R_CONNECTION_REJECTED);
774
+ ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_INTERNAL_ERROR);
775
+ return ssl_hs_error;
776
+ }
777
+
778
+ if (hs->pre_shared_key &&
779
+ !ssl_verify_psk_binder(hs, &alert, *hs->pre_shared_key, client_hello)) {
780
+ ssl_send_alert(ssl, SSL3_AL_FATAL, alert);
781
+ return ssl_hs_error;
782
+ }
783
+
784
+ size_t hash_len = EVP_MD_size(
785
+ ssl_get_handshake_digest(ssl_protocol_version(ssl), hs->new_cipher));
786
+
787
+ // Set up the key schedule and incorporate the PSK into the running secret.
788
+ Span<const uint8_t> psk = hs->pre_shared_key
789
+ ? ssl_pre_shared_key_secret(*hs->pre_shared_key)
790
+ : Span(kZeroes, hash_len);
791
+ if (!tls13_init_key_schedule(hs, psk) || //
792
+ !ssl_hash_message(hs, msg)) {
793
+ return ssl_hs_error;
794
+ }
795
+
796
+ if (ssl->s3->early_data_accepted) {
797
+ if (!tls13_derive_early_secret(hs)) {
798
+ return ssl_hs_error;
799
+ }
800
+ } else if (hs->early_data_offered) {
801
+ ssl->s3->skip_early_data = true;
802
+ }
803
+
804
+ if (need_hrr) {
805
+ ssl->method->next_message(ssl);
806
+ if (!hs->transcript.UpdateForHelloRetryRequest()) {
807
+ return ssl_hs_error;
808
+ }
809
+ hs->tls13_state = state13_send_hello_retry_request;
810
+ return ssl_hs_ok;
811
+ }
812
+
813
+ if (hs->pake_verifier) {
814
+ assert(!ssl->s3->session_reused);
815
+ // Revealing the PAKE share (notably confirmV) allows the client to confirm
816
+ // one PAKE guess, so we must deduct from the brute force limit.
817
+ if (!hs->credential->ClaimPAKEAttempt()) {
818
+ OPENSSL_PUT_ERROR(SSL, SSL_R_PAKE_EXHAUSTED);
819
+ ssl_send_alert(hs->ssl, SSL3_AL_FATAL, SSL_AD_INTERNAL_ERROR);
820
+ return ssl_hs_error;
821
+ }
822
+ if (!resolve_pake_secret(hs)) {
823
+ return ssl_hs_error;
824
+ }
825
+ } else {
826
+ if (!resolve_ecdhe_secret(hs, &client_hello)) {
827
+ return ssl_hs_error;
828
+ }
829
+ }
830
+
831
+ ssl->method->next_message(ssl);
832
+ hs->ech_client_hello_buf.Reset();
833
+ hs->tls13_state = state13_send_server_hello;
834
+ return ssl_hs_ok;
835
+ }
836
+
837
+ static enum ssl_hs_wait_t do_send_hello_retry_request(SSL_HANDSHAKE *hs) {
838
+ SSLImpl *const ssl = hs->ssl;
839
+ if (hs->pending_hints != nullptr) {
840
+ return ssl_hs_hints_ready;
841
+ }
842
+
843
+ // Although a server could HelloRetryRequest with PAKEs to request a cookie,
844
+ // we never do so.
845
+ assert(hs->pake_verifier == nullptr);
846
+ ScopedCBB cbb;
847
+ CBB body, session_id, extensions;
848
+ if (!ssl->method->init_message(ssl, cbb.get(), &body, SSL3_MT_SERVER_HELLO) ||
849
+ !CBB_add_u16(&body,
850
+ SSL_is_dtls(ssl) ? DTLS1_2_VERSION : TLS1_2_VERSION) ||
851
+ !CBB_add_bytes(&body, kHelloRetryRequest, SSL3_RANDOM_SIZE) ||
852
+ !CBB_add_u8_length_prefixed(&body, &session_id) ||
853
+ !CBB_add_bytes(&session_id, hs->session_id.data(),
854
+ hs->session_id.size()) ||
855
+ !CBB_add_u16(&body, SSL_CIPHER_get_protocol_id(hs->new_cipher)) ||
856
+ !CBB_add_u8(&body, 0 /* no compression */) ||
857
+ !CBB_add_u16_length_prefixed(&body, &extensions) ||
858
+ !CBB_add_u16(&extensions, TLSEXT_TYPE_supported_versions) ||
859
+ !CBB_add_u16(&extensions, 2 /* length */) ||
860
+ !CBB_add_u16(&extensions, ssl->s3->version) ||
861
+ !CBB_add_u16(&extensions, TLSEXT_TYPE_key_share) ||
862
+ !CBB_add_u16(&extensions, 2 /* length */) ||
863
+ !CBB_add_u16(&extensions, hs->new_session->group_id)) {
864
+ return ssl_hs_error;
865
+ }
866
+ if (hs->ech_is_inner) {
867
+ // Fill a placeholder for the ECH confirmation value.
868
+ if (!CBB_add_u16(&extensions, TLSEXT_TYPE_encrypted_client_hello) ||
869
+ !CBB_add_u16(&extensions, ECH_CONFIRMATION_SIGNAL_LEN) ||
870
+ !CBB_add_zeros(&extensions, ECH_CONFIRMATION_SIGNAL_LEN)) {
871
+ return ssl_hs_error;
872
+ }
873
+ }
874
+ Array<uint8_t> hrr;
875
+ if (!ssl->method->finish_message(ssl, cbb.get(), &hrr)) {
876
+ return ssl_hs_error;
877
+ }
878
+ if (hs->ech_is_inner) {
879
+ // Now that the message is encoded, fill in the whole value.
880
+ size_t offset = hrr.size() - ECH_CONFIRMATION_SIGNAL_LEN;
881
+ if (!ssl_ech_accept_confirmation(
882
+ hs, Span(hrr).last<ECH_CONFIRMATION_SIGNAL_LEN>(),
883
+ ssl->s3->client_random, hs->transcript, /*is_hrr=*/true, hrr,
884
+ offset)) {
885
+ return ssl_hs_error;
886
+ }
887
+ }
888
+
889
+ if (!ssl->method->add_message(ssl, std::move(hrr)) ||
890
+ !ssl->method->add_change_cipher_spec(ssl)) {
891
+ return ssl_hs_error;
892
+ }
893
+
894
+ ssl->s3->used_hello_retry_request = true;
895
+ hs->tls13_state = state13_read_second_client_hello;
896
+ return ssl_hs_flush;
897
+ }
898
+
899
+ static enum ssl_hs_wait_t do_read_second_client_hello(SSL_HANDSHAKE *hs) {
900
+ SSLImpl *const ssl = hs->ssl;
901
+ SSLMessage msg;
902
+ if (!ssl->method->get_message(ssl, &msg)) {
903
+ return ssl_hs_read_message;
904
+ }
905
+ if (!ssl_check_message_type(ssl, msg, SSL3_MT_CLIENT_HELLO)) {
906
+ return ssl_hs_error;
907
+ }
908
+ SSL_CLIENT_HELLO client_hello;
909
+ if (!SSL_parse_client_hello(ssl, &client_hello, CBS_data(&msg.body),
910
+ CBS_len(&msg.body))) {
911
+ ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_DECODE_ERROR);
912
+ return ssl_hs_error;
913
+ }
914
+
915
+ if (ssl->s3->ech_status == ssl_ech_accepted) {
916
+ // If we previously accepted the ClientHelloInner, the second ClientHello
917
+ // must contain an outer encrypted_client_hello extension.
918
+ CBS ech_body;
919
+ if (!ssl_client_hello_get_extension(&client_hello, &ech_body,
920
+ TLSEXT_TYPE_encrypted_client_hello)) {
921
+ OPENSSL_PUT_ERROR(SSL, SSL_R_MISSING_EXTENSION);
922
+ ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_MISSING_EXTENSION);
923
+ return ssl_hs_error;
924
+ }
925
+ uint16_t kdf_id, aead_id;
926
+ uint8_t type, config_id;
927
+ CBS enc, payload;
928
+ if (!CBS_get_u8(&ech_body, &type) || //
929
+ type != ECH_CLIENT_OUTER || //
930
+ !CBS_get_u16(&ech_body, &kdf_id) || //
931
+ !CBS_get_u16(&ech_body, &aead_id) ||
932
+ !CBS_get_u8(&ech_body, &config_id) ||
933
+ !CBS_get_u16_length_prefixed(&ech_body, &enc) ||
934
+ !CBS_get_u16_length_prefixed(&ech_body, &payload) ||
935
+ CBS_len(&ech_body) != 0) {
936
+ OPENSSL_PUT_ERROR(SSL, SSL_R_DECODE_ERROR);
937
+ ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_DECODE_ERROR);
938
+ return ssl_hs_error;
939
+ }
940
+
941
+ if (kdf_id != EVP_HPKE_KDF_id(EVP_HPKE_CTX_kdf(hs->ech_hpke_ctx.get())) ||
942
+ aead_id !=
943
+ EVP_HPKE_AEAD_id(EVP_HPKE_CTX_aead(hs->ech_hpke_ctx.get())) ||
944
+ config_id != hs->ech_config_id || CBS_len(&enc) > 0) {
945
+ OPENSSL_PUT_ERROR(SSL, SSL_R_DECODE_ERROR);
946
+ ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_ILLEGAL_PARAMETER);
947
+ return ssl_hs_error;
948
+ }
949
+
950
+ // Decrypt the payload with the HPKE context from the first ClientHello.
951
+ uint8_t alert = SSL_AD_DECODE_ERROR;
952
+ bool unused;
953
+ if (!ssl_client_hello_decrypt(hs, &alert, &unused,
954
+ &hs->ech_client_hello_buf, &client_hello,
955
+ payload)) {
956
+ // Decryption failure is fatal in the second ClientHello.
957
+ OPENSSL_PUT_ERROR(SSL, SSL_R_DECRYPTION_FAILED);
958
+ ssl_send_alert(ssl, SSL3_AL_FATAL, alert);
959
+ return ssl_hs_error;
960
+ }
961
+
962
+ // Reparse `client_hello` from the buffer owned by `hs`.
963
+ if (!hs->GetClientHello(&msg, &client_hello)) {
964
+ OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR);
965
+ return ssl_hs_error;
966
+ }
967
+ }
968
+
969
+ // We perform all our negotiation based on the first ClientHello (for
970
+ // consistency with what `select_certificate_cb` observed), which is in the
971
+ // transcript, so we can ignore most of this second one.
972
+ //
973
+ // We do, however, check the second PSK binder. This covers the client key
974
+ // share, in case we ever send half-RTT data (we currently do not). It is also
975
+ // a tricky computation, so we enforce the peer handled it correctly. It is
976
+ // also necessary to search the PSK list from the second ClientHello because
977
+ // PSK indices may have changed (RFC 8446 section 4.1.4).
978
+ if (hs->pre_shared_key) {
979
+ uint8_t alert = SSL_AD_DECODE_ERROR;
980
+ if (!ssl_verify_psk_binder(hs, &alert, *hs->pre_shared_key, client_hello)) {
981
+ ssl_send_alert(ssl, SSL3_AL_FATAL, alert);
982
+ return ssl_hs_error;
983
+ }
984
+ }
985
+
986
+ // Although a server could HelloRetryRequest with PAKEs to request a cookie,
987
+ // we never do so.
988
+ assert(hs->pake_verifier == nullptr);
989
+ if (!resolve_ecdhe_secret(hs, &client_hello)) {
990
+ return ssl_hs_error;
991
+ }
992
+
993
+ if (!ssl_hash_message(hs, msg)) {
994
+ return ssl_hs_error;
995
+ }
996
+
997
+ // ClientHello should be the end of the flight.
998
+ if (ssl->method->has_unprocessed_handshake_data(ssl)) {
999
+ ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_UNEXPECTED_MESSAGE);
1000
+ OPENSSL_PUT_ERROR(SSL, SSL_R_EXCESS_HANDSHAKE_DATA);
1001
+ return ssl_hs_error;
1002
+ }
1003
+
1004
+ ssl->method->next_message(ssl);
1005
+ hs->ech_client_hello_buf.Reset();
1006
+ hs->tls13_state = state13_send_server_hello;
1007
+ return ssl_hs_ok;
1008
+ }
1009
+
1010
+ static enum ssl_hs_wait_t do_send_server_hello(SSL_HANDSHAKE *hs) {
1011
+ SSLImpl *const ssl = hs->ssl;
1012
+
1013
+ Span<uint8_t> random(ssl->s3->server_random);
1014
+
1015
+ if (hs->provided_hints != nullptr &&
1016
+ hs->provided_hints->server_random_tls13.size() == random.size()) {
1017
+ OPENSSL_memcpy(random.data(),
1018
+ hs->provided_hints->server_random_tls13.data(),
1019
+ random.size());
1020
+ } else {
1021
+ RAND_bytes(random.data(), random.size());
1022
+ }
1023
+ if (hs->pending_hints != nullptr &&
1024
+ !hs->pending_hints->server_random_tls13.CopyFrom(random)) {
1025
+ return ssl_hs_error;
1026
+ }
1027
+
1028
+ Array<uint8_t> server_hello;
1029
+ ScopedCBB cbb;
1030
+ CBB body, extensions, session_id;
1031
+ if (!ssl->method->init_message(ssl, cbb.get(), &body, SSL3_MT_SERVER_HELLO) ||
1032
+ !CBB_add_u16(&body,
1033
+ SSL_is_dtls(ssl) ? DTLS1_2_VERSION : TLS1_2_VERSION) ||
1034
+ !CBB_add_bytes(&body, ssl->s3->server_random,
1035
+ sizeof(ssl->s3->server_random)) ||
1036
+ !CBB_add_u8_length_prefixed(&body, &session_id) ||
1037
+ !CBB_add_bytes(&session_id, hs->session_id.data(),
1038
+ hs->session_id.size()) ||
1039
+ !CBB_add_u16(&body, SSL_CIPHER_get_protocol_id(hs->new_cipher)) ||
1040
+ !CBB_add_u8(&body, 0) ||
1041
+ !CBB_add_u16_length_prefixed(&body, &extensions) ||
1042
+ !ssl_ext_pre_shared_key_add_serverhello(hs, &extensions) ||
1043
+ !ssl_ext_pake_add_serverhello(hs, &extensions) ||
1044
+ !ssl_ext_key_share_add_serverhello(hs, &extensions) ||
1045
+ !ssl_ext_supported_versions_add_serverhello(hs, &extensions) ||
1046
+ !ssl->method->finish_message(ssl, cbb.get(), &server_hello)) {
1047
+ return ssl_hs_error;
1048
+ }
1049
+
1050
+ assert(ssl->s3->ech_status != ssl_ech_accepted || hs->ech_is_inner);
1051
+ if (hs->ech_is_inner) {
1052
+ // Fill in the ECH confirmation signal.
1053
+ const size_t offset = ssl_ech_confirmation_signal_hello_offset(ssl);
1054
+ auto random_suffix = random.last<ECH_CONFIRMATION_SIGNAL_LEN>();
1055
+ if (!ssl_ech_accept_confirmation(hs, random_suffix, ssl->s3->client_random,
1056
+ hs->transcript,
1057
+ /*is_hrr=*/false, server_hello, offset)) {
1058
+ return ssl_hs_error;
1059
+ }
1060
+
1061
+ // Update `server_hello`.
1062
+ auto server_hello_out =
1063
+ Span(server_hello).subspan(offset).first<ECH_CONFIRMATION_SIGNAL_LEN>();
1064
+ OPENSSL_memcpy(server_hello_out.data(), random_suffix.data(),
1065
+ ECH_CONFIRMATION_SIGNAL_LEN);
1066
+ }
1067
+
1068
+ if (!ssl->method->add_message(ssl, std::move(server_hello))) {
1069
+ return ssl_hs_error;
1070
+ }
1071
+
1072
+ hs->key_share_ciphertext.Reset(); // No longer needed.
1073
+ if (!ssl->s3->used_hello_retry_request &&
1074
+ !ssl->method->add_change_cipher_spec(ssl)) {
1075
+ return ssl_hs_error;
1076
+ }
1077
+
1078
+ // Derive and enable the handshake traffic secrets.
1079
+ if (!tls13_derive_handshake_secrets(hs) ||
1080
+ !tls13_set_traffic_key(ssl, ssl_encryption_handshake, evp_aead_seal,
1081
+ hs->new_session.get(),
1082
+ hs->server_handshake_secret)) {
1083
+ return ssl_hs_error;
1084
+ }
1085
+
1086
+ // Send EncryptedExtensions.
1087
+ if (!ssl->method->init_message(ssl, cbb.get(), &body,
1088
+ SSL3_MT_ENCRYPTED_EXTENSIONS) ||
1089
+ !ssl_add_serverhello_tlsext(hs, &body) ||
1090
+ !ssl_add_message_cbb(ssl, cbb.get())) {
1091
+ return ssl_hs_error;
1092
+ }
1093
+
1094
+ // Send a CertificateRequest, if necessary.
1095
+ if (hs->cert_request) {
1096
+ CBB cert_request_extensions, sigalg_contents, sigalgs_cbb;
1097
+ if (!ssl->method->init_message(ssl, cbb.get(), &body,
1098
+ SSL3_MT_CERTIFICATE_REQUEST) ||
1099
+ !CBB_add_u8(&body, 0 /* no certificate_request_context. */) ||
1100
+ !CBB_add_u16_length_prefixed(&body, &cert_request_extensions) ||
1101
+ !CBB_add_u16(&cert_request_extensions,
1102
+ TLSEXT_TYPE_signature_algorithms) ||
1103
+ !CBB_add_u16_length_prefixed(&cert_request_extensions,
1104
+ &sigalg_contents) ||
1105
+ !CBB_add_u16_length_prefixed(&sigalg_contents, &sigalgs_cbb) ||
1106
+ !tls12_add_verify_sigalgs(hs, &sigalgs_cbb)) {
1107
+ return ssl_hs_error;
1108
+ }
1109
+
1110
+ if (ssl_has_client_CAs(hs->config)) {
1111
+ CBB ca_contents;
1112
+ if (!CBB_add_u16(&cert_request_extensions,
1113
+ TLSEXT_TYPE_certificate_authorities) ||
1114
+ !CBB_add_u16_length_prefixed(&cert_request_extensions,
1115
+ &ca_contents) ||
1116
+ !ssl_add_client_CA_list(hs, &ca_contents) ||
1117
+ !CBB_flush(&cert_request_extensions)) {
1118
+ return ssl_hs_error;
1119
+ }
1120
+ }
1121
+
1122
+ if (!ssl_add_message_cbb(ssl, cbb.get())) {
1123
+ return ssl_hs_error;
1124
+ }
1125
+ }
1126
+
1127
+ // Send the server Certificate message, if necessary.
1128
+ if (using_certificate(hs)) {
1129
+ if (!tls13_add_certificate(hs)) {
1130
+ return ssl_hs_error;
1131
+ }
1132
+
1133
+ hs->tls13_state = state13_send_server_certificate_verify;
1134
+ return ssl_hs_ok;
1135
+ }
1136
+
1137
+ hs->tls13_state = state13_send_server_finished;
1138
+ return ssl_hs_ok;
1139
+ }
1140
+
1141
+ static enum ssl_hs_wait_t do_send_server_certificate_verify(SSL_HANDSHAKE *hs) {
1142
+ switch (tls13_add_certificate_verify(hs)) {
1143
+ case ssl_private_key_success:
1144
+ hs->tls13_state = state13_send_server_finished;
1145
+ return ssl_hs_ok;
1146
+
1147
+ case ssl_private_key_retry:
1148
+ hs->tls13_state = state13_send_server_certificate_verify;
1149
+ return ssl_hs_private_key_operation;
1150
+
1151
+ case ssl_private_key_failure:
1152
+ return ssl_hs_error;
1153
+ }
1154
+
1155
+ assert(0);
1156
+ return ssl_hs_error;
1157
+ }
1158
+
1159
+ static enum ssl_hs_wait_t do_send_server_finished(SSL_HANDSHAKE *hs) {
1160
+ SSLImpl *const ssl = hs->ssl;
1161
+ if (hs->pending_hints != nullptr) {
1162
+ return ssl_hs_hints_ready;
1163
+ }
1164
+
1165
+ hs->can_release_private_key = true;
1166
+ if (!tls13_add_finished(hs) ||
1167
+ // Update the secret to the master secret and derive traffic keys.
1168
+ !tls13_advance_key_schedule(hs,
1169
+ Span(kZeroes, hs->transcript.DigestLen())) ||
1170
+ !tls13_derive_application_secrets(hs) ||
1171
+ !tls13_set_traffic_key(ssl, ssl_encryption_application, evp_aead_seal,
1172
+ hs->new_session.get(),
1173
+ hs->server_traffic_secret_0)) {
1174
+ return ssl_hs_error;
1175
+ }
1176
+
1177
+ hs->tls13_state = state13_send_half_rtt_ticket;
1178
+ return ssl_hs_ok;
1179
+ }
1180
+
1181
+ static enum ssl_hs_wait_t do_send_half_rtt_ticket(SSL_HANDSHAKE *hs) {
1182
+ SSLImpl *const ssl = hs->ssl;
1183
+
1184
+ if (ssl->s3->early_data_accepted) {
1185
+ // If accepting 0-RTT, we send tickets half-RTT. This gets the tickets on
1186
+ // the wire sooner and also avoids triggering a write on `SSL_read` when
1187
+ // processing the client Finished. This requires computing the client
1188
+ // Finished early. See RFC 8446, section 4.6.1.
1189
+ static const uint8_t kEndOfEarlyData[4] = {SSL3_MT_END_OF_EARLY_DATA, 0, 0,
1190
+ 0};
1191
+ if (!SSL_is_quic(ssl) && !hs->transcript.Update(kEndOfEarlyData)) {
1192
+ OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR);
1193
+ return ssl_hs_error;
1194
+ }
1195
+
1196
+ size_t finished_len;
1197
+ hs->expected_client_finished.Resize(hs->transcript.DigestLen());
1198
+ if (!tls13_finished_mac(hs, hs->expected_client_finished.data(),
1199
+ &finished_len, false /* client */)) {
1200
+ return ssl_hs_error;
1201
+ }
1202
+
1203
+ if (finished_len != hs->expected_client_finished.size()) {
1204
+ OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR);
1205
+ return ssl_hs_error;
1206
+ }
1207
+
1208
+ // Feed the predicted Finished into the transcript. This allows us to derive
1209
+ // the resumption secret early and send half-RTT tickets.
1210
+ //
1211
+ // TODO(crbug.com/381113363): Don't use half-RTT tickets with DTLS 1.3.
1212
+ // TODO(crbug.com/376939532): Perhaps don't use half-RTT tickets at all.
1213
+ assert(!SSL_is_dtls(hs->ssl));
1214
+ assert(hs->expected_client_finished.size() <= 0xff);
1215
+ uint8_t header[4] = {
1216
+ SSL3_MT_FINISHED, 0, 0,
1217
+ static_cast<uint8_t>(hs->expected_client_finished.size())};
1218
+ bool unused_sent_tickets;
1219
+ if (!hs->transcript.Update(header) ||
1220
+ !hs->transcript.Update(hs->expected_client_finished) ||
1221
+ !tls13_derive_resumption_secret(hs) ||
1222
+ !add_new_session_tickets(hs, &unused_sent_tickets)) {
1223
+ return ssl_hs_error;
1224
+ }
1225
+ }
1226
+
1227
+ hs->tls13_state = state13_read_second_client_flight;
1228
+ return ssl_hs_flush;
1229
+ }
1230
+
1231
+ static bool uses_end_of_early_data(const SSLImpl *ssl) {
1232
+ // DTLS and QUIC omit the EndOfEarlyData message. See RFC 9001, section 8.3,
1233
+ // and RFC 9147, section 5.6.
1234
+ return !SSL_is_quic(ssl) && !SSL_is_dtls(ssl);
1235
+ }
1236
+
1237
+ static enum ssl_hs_wait_t do_read_second_client_flight(SSL_HANDSHAKE *hs) {
1238
+ SSLImpl *const ssl = hs->ssl;
1239
+ if (ssl->s3->early_data_accepted) {
1240
+ if (!tls13_set_traffic_key(ssl, ssl_encryption_early_data, evp_aead_open,
1241
+ hs->new_session.get(),
1242
+ hs->early_traffic_secret)) {
1243
+ return ssl_hs_error;
1244
+ }
1245
+ hs->can_early_write = true;
1246
+ hs->can_early_read = true;
1247
+ hs->in_early_data = true;
1248
+ }
1249
+
1250
+ // If the EndOfEarlyData message is not used, switch to
1251
+ // client_handshake_secret before the early return.
1252
+ if (!uses_end_of_early_data(ssl)) {
1253
+ if (!tls13_set_traffic_key(ssl, ssl_encryption_handshake, evp_aead_open,
1254
+ hs->new_session.get(),
1255
+ hs->client_handshake_secret)) {
1256
+ return ssl_hs_error;
1257
+ }
1258
+ hs->tls13_state = state13_process_end_of_early_data;
1259
+ return ssl->s3->early_data_accepted ? ssl_hs_early_return : ssl_hs_ok;
1260
+ }
1261
+
1262
+ hs->tls13_state = state13_process_end_of_early_data;
1263
+ return ssl->s3->early_data_accepted ? ssl_hs_read_end_of_early_data
1264
+ : ssl_hs_ok;
1265
+ }
1266
+
1267
+ static enum ssl_hs_wait_t do_process_end_of_early_data(SSL_HANDSHAKE *hs) {
1268
+ SSLImpl *const ssl = hs->ssl;
1269
+ // In protocols that use EndOfEarlyData, we must consume the extra message and
1270
+ // switch to client_handshake_secret after the early return.
1271
+ if (uses_end_of_early_data(ssl)) {
1272
+ // If early data was not accepted, the EndOfEarlyData will be in the
1273
+ // discarded early data.
1274
+ if (hs->ssl->s3->early_data_accepted) {
1275
+ SSLMessage msg;
1276
+ if (!ssl->method->get_message(ssl, &msg)) {
1277
+ return ssl_hs_read_message;
1278
+ }
1279
+ if (!ssl_check_message_type(ssl, msg, SSL3_MT_END_OF_EARLY_DATA)) {
1280
+ return ssl_hs_error;
1281
+ }
1282
+ if (CBS_len(&msg.body) != 0) {
1283
+ ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_DECODE_ERROR);
1284
+ OPENSSL_PUT_ERROR(SSL, SSL_R_DECODE_ERROR);
1285
+ return ssl_hs_error;
1286
+ }
1287
+ ssl->method->next_message(ssl);
1288
+ }
1289
+ if (!tls13_set_traffic_key(ssl, ssl_encryption_handshake, evp_aead_open,
1290
+ hs->new_session.get(),
1291
+ hs->client_handshake_secret)) {
1292
+ return ssl_hs_error;
1293
+ }
1294
+ }
1295
+ hs->tls13_state = state13_read_client_encrypted_extensions;
1296
+ return ssl_hs_ok;
1297
+ }
1298
+
1299
+ static enum ssl_hs_wait_t do_read_client_encrypted_extensions(
1300
+ SSL_HANDSHAKE *hs) {
1301
+ SSLImpl *const ssl = hs->ssl;
1302
+ // For now, only one extension uses client EncryptedExtensions. This function
1303
+ // may be generalized if others use it in the future.
1304
+ if (hs->new_session->has_application_settings &&
1305
+ !ssl->s3->early_data_accepted) {
1306
+ SSLMessage msg;
1307
+ if (!ssl->method->get_message(ssl, &msg)) {
1308
+ return ssl_hs_read_message;
1309
+ }
1310
+ if (!ssl_check_message_type(ssl, msg, SSL3_MT_ENCRYPTED_EXTENSIONS)) {
1311
+ return ssl_hs_error;
1312
+ }
1313
+
1314
+ CBS body = msg.body, extensions;
1315
+ if (!CBS_get_u16_length_prefixed(&body, &extensions) ||
1316
+ CBS_len(&body) != 0) {
1317
+ OPENSSL_PUT_ERROR(SSL, SSL_R_DECODE_ERROR);
1318
+ ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_DECODE_ERROR);
1319
+ return ssl_hs_error;
1320
+ }
1321
+
1322
+ uint16_t extension_type = TLSEXT_TYPE_application_settings_old;
1323
+ if (hs->config->alps_use_new_codepoint) {
1324
+ extension_type = TLSEXT_TYPE_application_settings;
1325
+ }
1326
+ SSLExtension application_settings(extension_type);
1327
+ uint8_t alert = SSL_AD_DECODE_ERROR;
1328
+ if (!ssl_parse_extensions(&extensions, &alert, {&application_settings},
1329
+ /*ignore_unknown=*/false)) {
1330
+ ssl_send_alert(ssl, SSL3_AL_FATAL, alert);
1331
+ return ssl_hs_error;
1332
+ }
1333
+
1334
+ if (!application_settings.present) {
1335
+ OPENSSL_PUT_ERROR(SSL, SSL_R_MISSING_EXTENSION);
1336
+ ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_MISSING_EXTENSION);
1337
+ return ssl_hs_error;
1338
+ }
1339
+
1340
+ // Note that, if 0-RTT was accepted, these values will already have been
1341
+ // initialized earlier.
1342
+ if (!hs->new_session->peer_application_settings.CopyFrom(
1343
+ application_settings.data) ||
1344
+ !ssl_hash_message(hs, msg)) {
1345
+ ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_INTERNAL_ERROR);
1346
+ return ssl_hs_error;
1347
+ }
1348
+
1349
+ ssl->method->next_message(ssl);
1350
+ }
1351
+
1352
+ hs->tls13_state = state13_read_client_certificate;
1353
+ return ssl_hs_ok;
1354
+ }
1355
+
1356
+ static enum ssl_hs_wait_t do_read_client_certificate(SSL_HANDSHAKE *hs) {
1357
+ SSLImpl *const ssl = hs->ssl;
1358
+ if (!hs->cert_request) {
1359
+ if (!ssl->s3->session_reused) {
1360
+ // OpenSSL returns X509_V_OK when no certificates are requested. This is
1361
+ // classed by them as a bug, but it's assumed by at least NGINX. (Only do
1362
+ // this in full handshakes as resumptions should carry over the previous
1363
+ // `verify_result`, though this is a no-op because servers do not
1364
+ // implement the client's odd soft-fail mode.)
1365
+ hs->new_session->verify_result = X509_V_OK;
1366
+ }
1367
+
1368
+ // Skip this state.
1369
+ hs->tls13_state = state13_read_channel_id;
1370
+ return ssl_hs_ok;
1371
+ }
1372
+
1373
+ const bool allow_anonymous =
1374
+ (hs->config->verify_mode & SSL_VERIFY_FAIL_IF_NO_PEER_CERT) == 0;
1375
+ SSLMessage msg;
1376
+ if (!ssl->method->get_message(ssl, &msg)) {
1377
+ return ssl_hs_read_message;
1378
+ }
1379
+ if (!ssl_check_message_type(ssl, msg, SSL3_MT_CERTIFICATE) ||
1380
+ !tls13_process_certificate(hs, msg, allow_anonymous) ||
1381
+ !ssl_hash_message(hs, msg)) {
1382
+ return ssl_hs_error;
1383
+ }
1384
+
1385
+ ssl->method->next_message(ssl);
1386
+ hs->tls13_state = state13_read_client_certificate_verify;
1387
+ return ssl_hs_ok;
1388
+ }
1389
+
1390
+ static enum ssl_hs_wait_t do_read_client_certificate_verify(SSL_HANDSHAKE *hs) {
1391
+ SSLImpl *const ssl = hs->ssl;
1392
+ if (!ssl_session_has_peer_cred(hs->new_session.get())) {
1393
+ // Skip this state.
1394
+ hs->tls13_state = state13_read_channel_id;
1395
+ return ssl_hs_ok;
1396
+ }
1397
+
1398
+ SSLMessage msg;
1399
+ if (!ssl->method->get_message(ssl, &msg)) {
1400
+ return ssl_hs_read_message;
1401
+ }
1402
+
1403
+ switch (ssl_verify_peer_cert(hs)) {
1404
+ case ssl_verify_ok:
1405
+ break;
1406
+ case ssl_verify_invalid:
1407
+ return ssl_hs_error;
1408
+ case ssl_verify_retry:
1409
+ hs->tls13_state = state13_read_client_certificate_verify;
1410
+ return ssl_hs_certificate_verify;
1411
+ }
1412
+
1413
+ if (!ssl_check_message_type(ssl, msg, SSL3_MT_CERTIFICATE_VERIFY) ||
1414
+ !tls13_process_certificate_verify(hs, msg) ||
1415
+ !ssl_hash_message(hs, msg)) {
1416
+ return ssl_hs_error;
1417
+ }
1418
+
1419
+ ssl->method->next_message(ssl);
1420
+ hs->tls13_state = state13_read_channel_id;
1421
+ return ssl_hs_ok;
1422
+ }
1423
+
1424
+ static enum ssl_hs_wait_t do_read_channel_id(SSL_HANDSHAKE *hs) {
1425
+ SSLImpl *const ssl = hs->ssl;
1426
+ if (!hs->channel_id_negotiated) {
1427
+ hs->tls13_state = state13_read_client_finished;
1428
+ return ssl_hs_ok;
1429
+ }
1430
+
1431
+ SSLMessage msg;
1432
+ if (!ssl->method->get_message(ssl, &msg)) {
1433
+ return ssl_hs_read_message;
1434
+ }
1435
+ if (!ssl_check_message_type(ssl, msg, SSL3_MT_CHANNEL_ID) || //
1436
+ !tls1_verify_channel_id(hs, msg) || //
1437
+ !ssl_hash_message(hs, msg)) {
1438
+ return ssl_hs_error;
1439
+ }
1440
+
1441
+ ssl->method->next_message(ssl);
1442
+ hs->tls13_state = state13_read_client_finished;
1443
+ return ssl_hs_ok;
1444
+ }
1445
+
1446
+ static enum ssl_hs_wait_t do_read_client_finished(SSL_HANDSHAKE *hs) {
1447
+ SSLImpl *const ssl = hs->ssl;
1448
+ SSLMessage msg;
1449
+ if (!ssl->method->get_message(ssl, &msg)) {
1450
+ return ssl_hs_read_message;
1451
+ }
1452
+ if (!ssl_check_message_type(ssl, msg, SSL3_MT_FINISHED) ||
1453
+ // If early data was accepted, we've already computed the client Finished
1454
+ // and derived the resumption secret.
1455
+ !tls13_process_finished(hs, msg, ssl->s3->early_data_accepted) ||
1456
+ // evp_aead_seal keys have already been switched.
1457
+ !tls13_set_traffic_key(ssl, ssl_encryption_application, evp_aead_open,
1458
+ hs->new_session.get(),
1459
+ hs->client_traffic_secret_0)) {
1460
+ return ssl_hs_error;
1461
+ }
1462
+
1463
+ if (!ssl->s3->early_data_accepted) {
1464
+ if (!ssl_hash_message(hs, msg) || //
1465
+ !tls13_derive_resumption_secret(hs)) {
1466
+ return ssl_hs_error;
1467
+ }
1468
+
1469
+ // We send post-handshake tickets as part of the handshake in 1-RTT.
1470
+ hs->tls13_state = state13_send_new_session_ticket;
1471
+ } else {
1472
+ // We already sent half-RTT tickets.
1473
+ hs->tls13_state = state13_done;
1474
+ }
1475
+
1476
+ if (hs->credential != nullptr &&
1477
+ hs->credential->type == SSLCredentialType::kSPAKE2PlusV1Server) {
1478
+ // The client has now confirmed that it does know the correct password, so
1479
+ // this connection no longer counts towards the brute force limit.
1480
+ hs->credential->RestorePAKEAttempt();
1481
+ }
1482
+
1483
+ ssl->method->next_message(ssl);
1484
+ if (SSL_is_dtls(ssl)) {
1485
+ ssl->method->schedule_ack(ssl);
1486
+ return ssl_hs_flush;
1487
+ }
1488
+ return ssl_hs_ok;
1489
+ }
1490
+
1491
+ static enum ssl_hs_wait_t do_send_new_session_ticket(SSL_HANDSHAKE *hs) {
1492
+ SSLImpl *const ssl = hs->ssl;
1493
+ bool sent_tickets;
1494
+ if (!add_new_session_tickets(hs, &sent_tickets)) {
1495
+ return ssl_hs_error;
1496
+ }
1497
+
1498
+ hs->tls13_state = state13_done;
1499
+ // In QUIC and DTLS, we can flush the ticket to the transport immediately. In
1500
+ // TLS over TCP-like transports, we defer until the server performs a write.
1501
+ // This prevents a non-reading client from causing the server to hang in the
1502
+ // case of a small server write buffer. Consumers which don't write data to
1503
+ // the client will need to do a zero-byte write if they wish to flush the
1504
+ // tickets.
1505
+ bool should_flush = sent_tickets && (SSL_is_dtls(ssl) || SSL_is_quic(ssl));
1506
+ return should_flush ? ssl_hs_flush : ssl_hs_ok;
1507
+ }
1508
+
1509
+ enum ssl_hs_wait_t tls13_server_handshake(SSL_HANDSHAKE *hs) {
1510
+ while (hs->tls13_state != state13_done) {
1511
+ enum ssl_hs_wait_t ret = ssl_hs_error;
1512
+ enum tls13_server_hs_state_t state =
1513
+ static_cast<enum tls13_server_hs_state_t>(hs->tls13_state);
1514
+ switch (state) {
1515
+ case state13_select_parameters:
1516
+ ret = do_select_parameters(hs);
1517
+ break;
1518
+ case state13_select_session:
1519
+ ret = do_select_session(hs);
1520
+ break;
1521
+ case state13_send_hello_retry_request:
1522
+ ret = do_send_hello_retry_request(hs);
1523
+ break;
1524
+ case state13_read_second_client_hello:
1525
+ ret = do_read_second_client_hello(hs);
1526
+ break;
1527
+ case state13_send_server_hello:
1528
+ ret = do_send_server_hello(hs);
1529
+ break;
1530
+ case state13_send_server_certificate_verify:
1531
+ ret = do_send_server_certificate_verify(hs);
1532
+ break;
1533
+ case state13_send_server_finished:
1534
+ ret = do_send_server_finished(hs);
1535
+ break;
1536
+ case state13_send_half_rtt_ticket:
1537
+ ret = do_send_half_rtt_ticket(hs);
1538
+ break;
1539
+ case state13_read_second_client_flight:
1540
+ ret = do_read_second_client_flight(hs);
1541
+ break;
1542
+ case state13_process_end_of_early_data:
1543
+ ret = do_process_end_of_early_data(hs);
1544
+ break;
1545
+ case state13_read_client_encrypted_extensions:
1546
+ ret = do_read_client_encrypted_extensions(hs);
1547
+ break;
1548
+ case state13_read_client_certificate:
1549
+ ret = do_read_client_certificate(hs);
1550
+ break;
1551
+ case state13_read_client_certificate_verify:
1552
+ ret = do_read_client_certificate_verify(hs);
1553
+ break;
1554
+ case state13_read_channel_id:
1555
+ ret = do_read_channel_id(hs);
1556
+ break;
1557
+ case state13_read_client_finished:
1558
+ ret = do_read_client_finished(hs);
1559
+ break;
1560
+ case state13_send_new_session_ticket:
1561
+ ret = do_send_new_session_ticket(hs);
1562
+ break;
1563
+ case state13_done:
1564
+ ret = ssl_hs_ok;
1565
+ break;
1566
+ }
1567
+
1568
+ if (hs->tls13_state != state) {
1569
+ ssl_do_info_callback(hs->ssl, SSL_CB_ACCEPT_LOOP, 1);
1570
+ }
1571
+
1572
+ if (ret != ssl_hs_ok) {
1573
+ return ret;
1574
+ }
1575
+ }
1576
+
1577
+ return ssl_hs_ok;
1578
+ }
1579
+
1580
+ const char *tls13_server_handshake_state(SSL_HANDSHAKE *hs) {
1581
+ enum tls13_server_hs_state_t state =
1582
+ static_cast<enum tls13_server_hs_state_t>(hs->tls13_state);
1583
+ switch (state) {
1584
+ case state13_select_parameters:
1585
+ return "TLS 1.3 server select_parameters";
1586
+ case state13_select_session:
1587
+ return "TLS 1.3 server select_session";
1588
+ case state13_send_hello_retry_request:
1589
+ return "TLS 1.3 server send_hello_retry_request";
1590
+ case state13_read_second_client_hello:
1591
+ return "TLS 1.3 server read_second_client_hello";
1592
+ case state13_send_server_hello:
1593
+ return "TLS 1.3 server send_server_hello";
1594
+ case state13_send_server_certificate_verify:
1595
+ return "TLS 1.3 server send_server_certificate_verify";
1596
+ case state13_send_half_rtt_ticket:
1597
+ return "TLS 1.3 server send_half_rtt_ticket";
1598
+ case state13_send_server_finished:
1599
+ return "TLS 1.3 server send_server_finished";
1600
+ case state13_read_second_client_flight:
1601
+ return "TLS 1.3 server read_second_client_flight";
1602
+ case state13_process_end_of_early_data:
1603
+ return "TLS 1.3 server process_end_of_early_data";
1604
+ case state13_read_client_encrypted_extensions:
1605
+ return "TLS 1.3 server read_client_encrypted_extensions";
1606
+ case state13_read_client_certificate:
1607
+ return "TLS 1.3 server read_client_certificate";
1608
+ case state13_read_client_certificate_verify:
1609
+ return "TLS 1.3 server read_client_certificate_verify";
1610
+ case state13_read_channel_id:
1611
+ return "TLS 1.3 server read_channel_id";
1612
+ case state13_read_client_finished:
1613
+ return "TLS 1.3 server read_client_finished";
1614
+ case state13_send_new_session_ticket:
1615
+ return "TLS 1.3 server send_new_session_ticket";
1616
+ case state13_done:
1617
+ return "TLS 1.3 server done";
1618
+ }
1619
+
1620
+ return "TLS 1.3 server unknown";
1621
+ }
1622
+
1623
+ BSSL_NAMESPACE_END