visaljs 0.0.2 → 0.0.3

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 (1007) hide show
  1. package/cli.js +393 -62
  2. package/node/include/js_node.h +28 -5
  3. package/node/include/js_uv.h +36 -0
  4. package/node/prelude/crypto.js +7 -10
  5. package/node/prelude/dns.js +99 -0
  6. package/node/prelude/dns_promises.js +10 -0
  7. package/node/prelude/http.js +1039 -195
  8. package/node/prelude/internal/crypto/asym.js +39 -12
  9. package/node/prelude/internal/crypto/dh_groups.js +12 -0
  10. package/node/prelude/internal/crypto/diffiehellman.js +354 -0
  11. package/node/prelude/internal/crypto/hash.js +1 -1
  12. package/node/prelude/internal/crypto/key_type.js +3 -0
  13. package/node/prelude/internal/crypto/keys.js +39 -9
  14. package/node/prelude/internal/http_agent.js +249 -0
  15. package/node/prelude/internal/net.js +33 -0
  16. package/node/prelude/internal/socketaddress.js +249 -0
  17. package/node/prelude/internal/tls/common.js +306 -0
  18. package/node/prelude/internal/tls/wrap.js +1217 -0
  19. package/node/prelude/internal/tls/x509.js +394 -0
  20. package/node/prelude/net.js +1083 -50
  21. package/node/prelude/stream.js +6 -0
  22. package/node/prelude/tls.js +141 -0
  23. package/node/prelude/util.js +5 -2
  24. package/node/prelude/util_types.js +85 -0
  25. package/node/src/host_http.c +268 -270
  26. package/node/src/host_loop.c +84 -0
  27. package/node/src/host_net.c +495 -0
  28. package/node/src/host_sys.c +16 -0
  29. package/package.json +1 -1
  30. package/runtime/include/js_builtins.h +16 -0
  31. package/runtime/include/js_console.h +2 -0
  32. package/runtime/include/js_core.def +23 -0
  33. package/runtime/include/js_crypto.h +23 -0
  34. package/runtime/include/js_generator.h +2 -3
  35. package/runtime/include/js_promise.h +0 -2
  36. package/runtime/src/async_iter.c +4 -1
  37. package/runtime/src/boringssl_support.cc +34 -0
  38. package/runtime/src/builtin_table.c +8 -0
  39. package/runtime/src/components.c +10 -0
  40. package/runtime/src/console.c +6 -18
  41. package/runtime/src/core_all.c +1 -0
  42. package/runtime/src/crypto_asym.c +450 -241
  43. package/runtime/src/crypto_bn.c +91 -0
  44. package/runtime/src/crypto_cipher.c +153 -75
  45. package/runtime/src/crypto_hash.c +68 -53
  46. package/runtime/src/crypto_internal.h +55 -26
  47. package/runtime/src/crypto_pkey.c +198 -61
  48. package/runtime/src/crypto_subtle.c +42 -16
  49. package/runtime/src/crypto_tls.c +678 -0
  50. package/runtime/src/generator.c +8 -1
  51. package/runtime/src/global.c +2 -4
  52. package/runtime/src/internal.h +0 -1
  53. package/runtime/src/jobs.c +2 -1
  54. package/runtime/src/promise.c +4 -1
  55. package/runtime/src/tls_roots.gen.h +3215 -0
  56. package/runtime/src/util_types.c +52 -0
  57. package/runtime/src/weak.c +2 -1
  58. package/runtime/third_party/boringssl/LICENSE +238 -0
  59. package/runtime/third_party/boringssl/README.md +46 -0
  60. package/runtime/third_party/boringssl/VERSION +1 -0
  61. package/runtime/third_party/boringssl/crypto/aes/aes.cc +44 -0
  62. package/runtime/third_party/boringssl/crypto/armv8_feature_parsing.h +67 -0
  63. package/runtime/third_party/boringssl/crypto/asn1/a_bitstr.cc +297 -0
  64. package/runtime/third_party/boringssl/crypto/asn1/a_bool.cc +50 -0
  65. package/runtime/third_party/boringssl/crypto/asn1/a_d2i_fp.cc +47 -0
  66. package/runtime/third_party/boringssl/crypto/asn1/a_dup.cc +42 -0
  67. package/runtime/third_party/boringssl/crypto/asn1/a_gentm.cc +130 -0
  68. package/runtime/third_party/boringssl/crypto/asn1/a_i2d_fp.cc +44 -0
  69. package/runtime/third_party/boringssl/crypto/asn1/a_int.cc +467 -0
  70. package/runtime/third_party/boringssl/crypto/asn1/a_mbstr.cc +242 -0
  71. package/runtime/third_party/boringssl/crypto/asn1/a_object.cc +191 -0
  72. package/runtime/third_party/boringssl/crypto/asn1/a_octet.cc +32 -0
  73. package/runtime/third_party/boringssl/crypto/asn1/a_strex.cc +411 -0
  74. package/runtime/third_party/boringssl/crypto/asn1/a_strnid.cc +208 -0
  75. package/runtime/third_party/boringssl/crypto/asn1/a_time.cc +248 -0
  76. package/runtime/third_party/boringssl/crypto/asn1/a_type.cc +467 -0
  77. package/runtime/third_party/boringssl/crypto/asn1/a_utctm.cc +128 -0
  78. package/runtime/third_party/boringssl/crypto/asn1/asn1_lib.cc +453 -0
  79. package/runtime/third_party/boringssl/crypto/asn1/asn1_par.cc +61 -0
  80. package/runtime/third_party/boringssl/crypto/asn1/asn_pack.cc +56 -0
  81. package/runtime/third_party/boringssl/crypto/asn1/f_int.cc +63 -0
  82. package/runtime/third_party/boringssl/crypto/asn1/f_string.cc +52 -0
  83. package/runtime/third_party/boringssl/crypto/asn1/internal.h +430 -0
  84. package/runtime/third_party/boringssl/crypto/asn1/posix_time.cc +244 -0
  85. package/runtime/third_party/boringssl/crypto/asn1/tasn_dec.cc +611 -0
  86. package/runtime/third_party/boringssl/crypto/asn1/tasn_enc.cc +348 -0
  87. package/runtime/third_party/boringssl/crypto/asn1/tasn_fre.cc +163 -0
  88. package/runtime/third_party/boringssl/crypto/asn1/tasn_new.cc +274 -0
  89. package/runtime/third_party/boringssl/crypto/asn1/tasn_typ.cc +92 -0
  90. package/runtime/third_party/boringssl/crypto/asn1/tasn_utl.cc +218 -0
  91. package/runtime/third_party/boringssl/crypto/base64/base64.cc +433 -0
  92. package/runtime/third_party/boringssl/crypto/bcm_support.h +62 -0
  93. package/runtime/third_party/boringssl/crypto/bio/bio.cc +715 -0
  94. package/runtime/third_party/boringssl/crypto/bio/bio_mem.cc +260 -0
  95. package/runtime/third_party/boringssl/crypto/bio/connect.cc +463 -0
  96. package/runtime/third_party/boringssl/crypto/bio/errno.cc +52 -0
  97. package/runtime/third_party/boringssl/crypto/bio/fd.cc +193 -0
  98. package/runtime/third_party/boringssl/crypto/bio/file.cc +283 -0
  99. package/runtime/third_party/boringssl/crypto/bio/hexdump.cc +154 -0
  100. package/runtime/third_party/boringssl/crypto/bio/internal.h +128 -0
  101. package/runtime/third_party/boringssl/crypto/bio/pair.cc +426 -0
  102. package/runtime/third_party/boringssl/crypto/bio/printf.cc +59 -0
  103. package/runtime/third_party/boringssl/crypto/bio/socket.cc +210 -0
  104. package/runtime/third_party/boringssl/crypto/bio/socket_helper.cc +179 -0
  105. package/runtime/third_party/boringssl/crypto/blake2/blake2.cc +173 -0
  106. package/runtime/third_party/boringssl/crypto/bn/bn_asn1.cc +57 -0
  107. package/runtime/third_party/boringssl/crypto/bn/convert.cc +409 -0
  108. package/runtime/third_party/boringssl/crypto/bn/div.cc +102 -0
  109. package/runtime/third_party/boringssl/crypto/bn/exponentiation.cc +168 -0
  110. package/runtime/third_party/boringssl/crypto/bn/sqrt.cc +93 -0
  111. package/runtime/third_party/boringssl/crypto/buf/buf.cc +119 -0
  112. package/runtime/third_party/boringssl/crypto/bytestring/asn1_compat.cc +54 -0
  113. package/runtime/third_party/boringssl/crypto/bytestring/ber.cc +268 -0
  114. package/runtime/third_party/boringssl/crypto/bytestring/cbb.cc +787 -0
  115. package/runtime/third_party/boringssl/crypto/bytestring/cbs.cc +977 -0
  116. package/runtime/third_party/boringssl/crypto/bytestring/internal.h +134 -0
  117. package/runtime/third_party/boringssl/crypto/bytestring/unicode.cc +156 -0
  118. package/runtime/third_party/boringssl/crypto/chacha/chacha.cc +226 -0
  119. package/runtime/third_party/boringssl/crypto/chacha/internal.h +103 -0
  120. package/runtime/third_party/boringssl/crypto/cipher/derive_key.cc +106 -0
  121. package/runtime/third_party/boringssl/crypto/cipher/e_aesctrhmac.cc +294 -0
  122. package/runtime/third_party/boringssl/crypto/cipher/e_aeseax.cc +351 -0
  123. package/runtime/third_party/boringssl/crypto/cipher/e_aesgcmsiv.cc +918 -0
  124. package/runtime/third_party/boringssl/crypto/cipher/e_chacha20poly1305.cc +404 -0
  125. package/runtime/third_party/boringssl/crypto/cipher/e_des.cc +214 -0
  126. package/runtime/third_party/boringssl/crypto/cipher/e_null.cc +55 -0
  127. package/runtime/third_party/boringssl/crypto/cipher/e_rc2.cc +432 -0
  128. package/runtime/third_party/boringssl/crypto/cipher/e_rc4.cc +56 -0
  129. package/runtime/third_party/boringssl/crypto/cipher/e_tls.cc +615 -0
  130. package/runtime/third_party/boringssl/crypto/cipher/get_cipher.cc +85 -0
  131. package/runtime/third_party/boringssl/crypto/cipher/internal.h +399 -0
  132. package/runtime/third_party/boringssl/crypto/cipher/tls_cbc.cc +476 -0
  133. package/runtime/third_party/boringssl/crypto/cms/cms.cc +178 -0
  134. package/runtime/third_party/boringssl/crypto/conf/conf.cc +637 -0
  135. package/runtime/third_party/boringssl/crypto/conf/internal.h +54 -0
  136. package/runtime/third_party/boringssl/crypto/cpu_aarch64_apple.cc +76 -0
  137. package/runtime/third_party/boringssl/crypto/cpu_aarch64_fuchsia.cc +58 -0
  138. package/runtime/third_party/boringssl/crypto/cpu_aarch64_linux.cc +66 -0
  139. package/runtime/third_party/boringssl/crypto/cpu_aarch64_openbsd.cc +45 -0
  140. package/runtime/third_party/boringssl/crypto/cpu_aarch64_sysreg.cc +66 -0
  141. package/runtime/third_party/boringssl/crypto/cpu_aarch64_win.cc +52 -0
  142. package/runtime/third_party/boringssl/crypto/cpu_arm_freebsd.cc +55 -0
  143. package/runtime/third_party/boringssl/crypto/cpu_arm_linux.cc +173 -0
  144. package/runtime/third_party/boringssl/crypto/cpu_arm_linux.h +141 -0
  145. package/runtime/third_party/boringssl/crypto/cpu_intel.cc +287 -0
  146. package/runtime/third_party/boringssl/crypto/crypto.cc +152 -0
  147. package/runtime/third_party/boringssl/crypto/curve25519/asm/x25519-asm-arm.S +2124 -0
  148. package/runtime/third_party/boringssl/crypto/curve25519/cpace.cc +227 -0
  149. package/runtime/third_party/boringssl/crypto/curve25519/curve25519.cc +2436 -0
  150. package/runtime/third_party/boringssl/crypto/curve25519/curve25519_64_adx.cc +18 -0
  151. package/runtime/third_party/boringssl/crypto/curve25519/curve25519_tables.h +3264 -0
  152. package/runtime/third_party/boringssl/crypto/curve25519/internal.h +202 -0
  153. package/runtime/third_party/boringssl/crypto/curve25519/spake25519.cc +532 -0
  154. package/runtime/third_party/boringssl/crypto/des/des.cc +837 -0
  155. package/runtime/third_party/boringssl/crypto/des/internal.h +144 -0
  156. package/runtime/third_party/boringssl/crypto/dh/dh_asn1.cc +109 -0
  157. package/runtime/third_party/boringssl/crypto/dh/params.cc +411 -0
  158. package/runtime/third_party/boringssl/crypto/digest/digest_extra.cc +361 -0
  159. package/runtime/third_party/boringssl/crypto/dsa/dsa.cc +922 -0
  160. package/runtime/third_party/boringssl/crypto/dsa/dsa_asn1.cc +306 -0
  161. package/runtime/third_party/boringssl/crypto/dsa/internal.h +56 -0
  162. package/runtime/third_party/boringssl/crypto/ec/ec_asn1.cc +542 -0
  163. package/runtime/third_party/boringssl/crypto/ec/ec_derive.cc +94 -0
  164. package/runtime/third_party/boringssl/crypto/ec/hash_to_curve.cc +773 -0
  165. package/runtime/third_party/boringssl/crypto/ec/internal.h +114 -0
  166. package/runtime/third_party/boringssl/crypto/ecdh/ecdh.cc +75 -0
  167. package/runtime/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.cc +337 -0
  168. package/runtime/third_party/boringssl/crypto/ecdsa/ecdsa_p1363.cc +54 -0
  169. package/runtime/third_party/boringssl/crypto/engine/engine.cc +95 -0
  170. package/runtime/third_party/boringssl/crypto/err/err.cc +820 -0
  171. package/runtime/third_party/boringssl/crypto/err/internal.h +45 -0
  172. package/runtime/third_party/boringssl/crypto/evp/evp.cc +454 -0
  173. package/runtime/third_party/boringssl/crypto/evp/evp_asn1.cc +439 -0
  174. package/runtime/third_party/boringssl/crypto/evp/evp_ctx.cc +541 -0
  175. package/runtime/third_party/boringssl/crypto/evp/evp_kem.cc +101 -0
  176. package/runtime/third_party/boringssl/crypto/evp/internal.h +427 -0
  177. package/runtime/third_party/boringssl/crypto/evp/p_dh.cc +326 -0
  178. package/runtime/third_party/boringssl/crypto/evp/p_dsa.cc +333 -0
  179. package/runtime/third_party/boringssl/crypto/evp/p_ec.cc +736 -0
  180. package/runtime/third_party/boringssl/crypto/evp/p_ed25519.cc +359 -0
  181. package/runtime/third_party/boringssl/crypto/evp/p_hkdf.cc +204 -0
  182. package/runtime/third_party/boringssl/crypto/evp/p_mldsa.cc +549 -0
  183. package/runtime/third_party/boringssl/crypto/evp/p_mlkem.cc +510 -0
  184. package/runtime/third_party/boringssl/crypto/evp/p_rsa.cc +1185 -0
  185. package/runtime/third_party/boringssl/crypto/evp/p_x25519.cc +371 -0
  186. package/runtime/third_party/boringssl/crypto/evp/p_xwing.cc +300 -0
  187. package/runtime/third_party/boringssl/crypto/evp/pbkdf.cc +105 -0
  188. package/runtime/third_party/boringssl/crypto/evp/print.cc +287 -0
  189. package/runtime/third_party/boringssl/crypto/evp/scrypt.cc +218 -0
  190. package/runtime/third_party/boringssl/crypto/evp/sign.cc +95 -0
  191. package/runtime/third_party/boringssl/crypto/ex_data.cc +140 -0
  192. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/aes.cc.inc +208 -0
  193. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/aes_nohw.cc.inc +1279 -0
  194. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/cbc.cc.inc +132 -0
  195. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/cfb.cc.inc +168 -0
  196. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/ctr.cc.inc +102 -0
  197. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/gcm.cc.inc +614 -0
  198. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/gcm_nohw.cc.inc +304 -0
  199. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/internal.h +590 -0
  200. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/key_wrap.cc.inc +211 -0
  201. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/mode_wrappers.cc.inc +97 -0
  202. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/ofb.cc.inc +55 -0
  203. package/runtime/third_party/boringssl/crypto/fipsmodule/bcm.cc +288 -0
  204. package/runtime/third_party/boringssl/crypto/fipsmodule/bcm_interface.h +953 -0
  205. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/add.cc.inc +276 -0
  206. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/asm/x86_64-gcc.cc.inc +573 -0
  207. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/bn.cc.inc +377 -0
  208. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/bytes.cc.inc +230 -0
  209. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/cmp.cc.inc +161 -0
  210. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/ctx.cc.inc +127 -0
  211. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/div.cc.inc +738 -0
  212. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/div_extra.cc.inc +90 -0
  213. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.cc.inc +743 -0
  214. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/gcd.cc.inc +281 -0
  215. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/gcd_extra.cc.inc +327 -0
  216. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/generic.cc.inc +579 -0
  217. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/internal.h +810 -0
  218. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/jacobi.cc.inc +101 -0
  219. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/montgomery.cc.inc +408 -0
  220. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/montgomery_inv.cc.inc +179 -0
  221. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/mul.cc.inc +347 -0
  222. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/prime.cc.inc +931 -0
  223. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/random.cc.inc +261 -0
  224. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.cc.inc +144 -0
  225. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.h +109 -0
  226. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/shift.cc.inc +317 -0
  227. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/sqrt.cc.inc +370 -0
  228. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/aead.cc.inc +619 -0
  229. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/cipher.cc.inc +837 -0
  230. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.cc.inc +1240 -0
  231. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/e_aesccm.cc.inc +440 -0
  232. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/internal.h +461 -0
  233. package/runtime/third_party/boringssl/crypto/fipsmodule/cmac/cmac.cc.inc +293 -0
  234. package/runtime/third_party/boringssl/crypto/fipsmodule/delocate.h +95 -0
  235. package/runtime/third_party/boringssl/crypto/fipsmodule/dh/check.cc.inc +198 -0
  236. package/runtime/third_party/boringssl/crypto/fipsmodule/dh/dh.cc.inc +401 -0
  237. package/runtime/third_party/boringssl/crypto/fipsmodule/dh/internal.h +63 -0
  238. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/digest.cc.inc +221 -0
  239. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/digests.cc.inc +184 -0
  240. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/internal.h +72 -0
  241. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/md32_common.h +166 -0
  242. package/runtime/third_party/boringssl/crypto/fipsmodule/digestsign/digestsign.cc.inc +230 -0
  243. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/builtin_curves.h +277 -0
  244. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/ec.cc.inc +1024 -0
  245. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/ec_key.cc.inc +536 -0
  246. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.cc.inc +379 -0
  247. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/felem.cc.inc +250 -0
  248. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/internal.h +752 -0
  249. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/oct.cc.inc +174 -0
  250. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256-nistz-table.h +9502 -0
  251. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256-nistz.cc.inc +740 -0
  252. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256-nistz.h +207 -0
  253. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256.cc.inc +578 -0
  254. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256_table.h +297 -0
  255. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/scalar.cc.inc +184 -0
  256. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/simple.cc.inc +246 -0
  257. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/simple_mul.cc.inc +274 -0
  258. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/util.cc.inc +258 -0
  259. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/wnaf.cc.inc +224 -0
  260. package/runtime/third_party/boringssl/crypto/fipsmodule/ecdh/ecdh.cc.inc +91 -0
  261. package/runtime/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.cc.inc +288 -0
  262. package/runtime/third_party/boringssl/crypto/fipsmodule/ecdsa/internal.h +57 -0
  263. package/runtime/third_party/boringssl/crypto/fipsmodule/entropy/internal.h +38 -0
  264. package/runtime/third_party/boringssl/crypto/fipsmodule/entropy/jitter.cc.inc +487 -0
  265. package/runtime/third_party/boringssl/crypto/fipsmodule/entropy/sha512.cc.inc +329 -0
  266. package/runtime/third_party/boringssl/crypto/fipsmodule/fips_shared_support.cc +28 -0
  267. package/runtime/third_party/boringssl/crypto/fipsmodule/hkdf/hkdf.cc.inc +114 -0
  268. package/runtime/third_party/boringssl/crypto/fipsmodule/hmac/hmac.cc.inc +218 -0
  269. package/runtime/third_party/boringssl/crypto/fipsmodule/keccak/internal.h +165 -0
  270. package/runtime/third_party/boringssl/crypto/fipsmodule/keccak/keccak.cc.inc +647 -0
  271. package/runtime/third_party/boringssl/crypto/fipsmodule/mldsa/fips_known_values.inc +1345 -0
  272. package/runtime/third_party/boringssl/crypto/fipsmodule/mldsa/mldsa.cc.inc +3323 -0
  273. package/runtime/third_party/boringssl/crypto/fipsmodule/mlkem/fips_known_values.inc +411 -0
  274. package/runtime/third_party/boringssl/crypto/fipsmodule/mlkem/mlkem.cc.inc +1856 -0
  275. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/android_entropy_client.cc.inc +82 -0
  276. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/ctrdrbg.cc.inc +401 -0
  277. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/internal.h +99 -0
  278. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/rand.cc.inc +486 -0
  279. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/internal.h +167 -0
  280. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/padding.cc.inc +371 -0
  281. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/rsa.cc.inc +996 -0
  282. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.cc.inc +1000 -0
  283. package/runtime/third_party/boringssl/crypto/fipsmodule/self_check/fips.cc.inc +129 -0
  284. package/runtime/third_party/boringssl/crypto/fipsmodule/self_check/self_check.cc.inc +1093 -0
  285. package/runtime/third_party/boringssl/crypto/fipsmodule/service_indicator/internal.h +112 -0
  286. package/runtime/third_party/boringssl/crypto/fipsmodule/service_indicator/service_indicator.cc.inc +330 -0
  287. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/internal.h +205 -0
  288. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/sha1.cc.inc +404 -0
  289. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/sha256.cc.inc +315 -0
  290. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/sha512.cc.inc +473 -0
  291. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/address.h +144 -0
  292. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/fips_known_values.inc +674 -0
  293. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/fors.cc.inc +179 -0
  294. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/fors.h +48 -0
  295. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/merkle.cc.inc +164 -0
  296. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/merkle.h +58 -0
  297. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/params.h +178 -0
  298. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +690 -0
  299. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/thash.cc.inc +326 -0
  300. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/thash.h +71 -0
  301. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/wots.cc.inc +172 -0
  302. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/wots.h +40 -0
  303. package/runtime/third_party/boringssl/crypto/fipsmodule/tls/internal.h +33 -0
  304. package/runtime/third_party/boringssl/crypto/fipsmodule/tls/kdf.cc.inc +180 -0
  305. package/runtime/third_party/boringssl/crypto/fuzzer_mode.cc +30 -0
  306. package/runtime/third_party/boringssl/crypto/hpke/hpke.cc +1514 -0
  307. package/runtime/third_party/boringssl/crypto/hrss/asm/poly_rq_mul.S +8489 -0
  308. package/runtime/third_party/boringssl/crypto/hrss/hrss.cc +2189 -0
  309. package/runtime/third_party/boringssl/crypto/hrss/internal.h +64 -0
  310. package/runtime/third_party/boringssl/crypto/internal.h +1767 -0
  311. package/runtime/third_party/boringssl/crypto/lhash/internal.h +222 -0
  312. package/runtime/third_party/boringssl/crypto/lhash/lhash.cc +312 -0
  313. package/runtime/third_party/boringssl/crypto/md4/md4.cc +207 -0
  314. package/runtime/third_party/boringssl/crypto/md5/internal.h +34 -0
  315. package/runtime/third_party/boringssl/crypto/md5/md5.cc +255 -0
  316. package/runtime/third_party/boringssl/crypto/mem.cc +577 -0
  317. package/runtime/third_party/boringssl/crypto/mem_internal.h +706 -0
  318. package/runtime/third_party/boringssl/crypto/mldsa/mldsa.cc +296 -0
  319. package/runtime/third_party/boringssl/crypto/mlkem/mlkem.cc +108 -0
  320. package/runtime/third_party/boringssl/crypto/obj/obj.cc +494 -0
  321. package/runtime/third_party/boringssl/crypto/obj/obj_dat.h +11722 -0
  322. package/runtime/third_party/boringssl/crypto/obj/obj_xref.cc +83 -0
  323. package/runtime/third_party/boringssl/crypto/params_internal.h +30 -0
  324. package/runtime/third_party/boringssl/crypto/pem/internal.h +135 -0
  325. package/runtime/third_party/boringssl/crypto/pem/pem_all.cc +153 -0
  326. package/runtime/third_party/boringssl/crypto/pem/pem_info.cc +250 -0
  327. package/runtime/third_party/boringssl/crypto/pem/pem_lib.cc +707 -0
  328. package/runtime/third_party/boringssl/crypto/pem/pem_oth.cc +45 -0
  329. package/runtime/third_party/boringssl/crypto/pem/pem_pk8.cc +211 -0
  330. package/runtime/third_party/boringssl/crypto/pem/pem_pkey.cc +147 -0
  331. package/runtime/third_party/boringssl/crypto/pem/pem_x509.cc +25 -0
  332. package/runtime/third_party/boringssl/crypto/pem/pem_xaux.cc +25 -0
  333. package/runtime/third_party/boringssl/crypto/pkcs7/internal.h +67 -0
  334. package/runtime/third_party/boringssl/crypto/pkcs7/pkcs7.cc +198 -0
  335. package/runtime/third_party/boringssl/crypto/pkcs7/pkcs7_x509.cc +527 -0
  336. package/runtime/third_party/boringssl/crypto/pkcs8/internal.h +98 -0
  337. package/runtime/third_party/boringssl/crypto/pkcs8/p5_pbev2.cc +286 -0
  338. package/runtime/third_party/boringssl/crypto/pkcs8/pkcs8.cc +473 -0
  339. package/runtime/third_party/boringssl/crypto/pkcs8/pkcs8_x509.cc +1328 -0
  340. package/runtime/third_party/boringssl/crypto/poly1305/internal.h +54 -0
  341. package/runtime/third_party/boringssl/crypto/poly1305/poly1305.cc +315 -0
  342. package/runtime/third_party/boringssl/crypto/poly1305/poly1305_arm.cc +294 -0
  343. package/runtime/third_party/boringssl/crypto/poly1305/poly1305_arm_asm.S +2017 -0
  344. package/runtime/third_party/boringssl/crypto/poly1305/poly1305_vec.cc +853 -0
  345. package/runtime/third_party/boringssl/crypto/pool/internal.h +95 -0
  346. package/runtime/third_party/boringssl/crypto/pool/pool.cc +282 -0
  347. package/runtime/third_party/boringssl/crypto/rand/deterministic.cc +58 -0
  348. package/runtime/third_party/boringssl/crypto/rand/fork_detect.cc +222 -0
  349. package/runtime/third_party/boringssl/crypto/rand/forkunsafe.cc +44 -0
  350. package/runtime/third_party/boringssl/crypto/rand/getentropy.cc +53 -0
  351. package/runtime/third_party/boringssl/crypto/rand/internal.h +67 -0
  352. package/runtime/third_party/boringssl/crypto/rand/ios.cc +35 -0
  353. package/runtime/third_party/boringssl/crypto/rand/rand.cc +79 -0
  354. package/runtime/third_party/boringssl/crypto/rand/trusty.cc +39 -0
  355. package/runtime/third_party/boringssl/crypto/rand/urandom.cc +149 -0
  356. package/runtime/third_party/boringssl/crypto/rand/windows.cc +91 -0
  357. package/runtime/third_party/boringssl/crypto/rc4/rc4.cc +56 -0
  358. package/runtime/third_party/boringssl/crypto/refcount.cc +49 -0
  359. package/runtime/third_party/boringssl/crypto/rsa/internal.h +51 -0
  360. package/runtime/third_party/boringssl/crypto/rsa/rsa_asn1.cc +404 -0
  361. package/runtime/third_party/boringssl/crypto/rsa/rsa_crypt.cc +530 -0
  362. package/runtime/third_party/boringssl/crypto/rsa/rsa_extra.cc +30 -0
  363. package/runtime/third_party/boringssl/crypto/rsa/rsa_print.cc +25 -0
  364. package/runtime/third_party/boringssl/crypto/sha/sha1.cc +55 -0
  365. package/runtime/third_party/boringssl/crypto/sha/sha256.cc +89 -0
  366. package/runtime/third_party/boringssl/crypto/sha/sha512.cc +106 -0
  367. package/runtime/third_party/boringssl/crypto/siphash/siphash.cc +81 -0
  368. package/runtime/third_party/boringssl/crypto/slhdsa/slhdsa.cc +167 -0
  369. package/runtime/third_party/boringssl/crypto/spake2plus/internal.h +204 -0
  370. package/runtime/third_party/boringssl/crypto/spake2plus/spake2plus.cc +501 -0
  371. package/runtime/third_party/boringssl/crypto/stack/stack.cc +462 -0
  372. package/runtime/third_party/boringssl/crypto/thread.cc +68 -0
  373. package/runtime/third_party/boringssl/crypto/thread_none.cc +48 -0
  374. package/runtime/third_party/boringssl/crypto/thread_pthread.cc +138 -0
  375. package/runtime/third_party/boringssl/crypto/thread_win.cc +227 -0
  376. package/runtime/third_party/boringssl/crypto/trust_token/internal.h +405 -0
  377. package/runtime/third_party/boringssl/crypto/trust_token/pmbtoken.cc +1672 -0
  378. package/runtime/third_party/boringssl/crypto/trust_token/trust_token.cc +701 -0
  379. package/runtime/third_party/boringssl/crypto/trust_token/voprf.cc +1266 -0
  380. package/runtime/third_party/boringssl/crypto/x509/a_digest.cc +52 -0
  381. package/runtime/third_party/boringssl/crypto/x509/a_sign.cc +100 -0
  382. package/runtime/third_party/boringssl/crypto/x509/a_verify.cc +77 -0
  383. package/runtime/third_party/boringssl/crypto/x509/algorithm.cc +167 -0
  384. package/runtime/third_party/boringssl/crypto/x509/asn1_gen.cc +540 -0
  385. package/runtime/third_party/boringssl/crypto/x509/by_dir.cc +301 -0
  386. package/runtime/third_party/boringssl/crypto/x509/by_file.cc +226 -0
  387. package/runtime/third_party/boringssl/crypto/x509/i2d_pr.cc +37 -0
  388. package/runtime/third_party/boringssl/crypto/x509/internal.h +697 -0
  389. package/runtime/third_party/boringssl/crypto/x509/name_print.cc +187 -0
  390. package/runtime/third_party/boringssl/crypto/x509/policy.cc +686 -0
  391. package/runtime/third_party/boringssl/crypto/x509/rsa_pss.cc +187 -0
  392. package/runtime/third_party/boringssl/crypto/x509/t_crl.cc +106 -0
  393. package/runtime/third_party/boringssl/crypto/x509/t_req.cc +206 -0
  394. package/runtime/third_party/boringssl/crypto/x509/t_x509.cc +292 -0
  395. package/runtime/third_party/boringssl/crypto/x509/t_x509a.cc +81 -0
  396. package/runtime/third_party/boringssl/crypto/x509/v3_akey.cc +174 -0
  397. package/runtime/third_party/boringssl/crypto/x509/v3_akeya.cc +31 -0
  398. package/runtime/third_party/boringssl/crypto/x509/v3_alt.cc +636 -0
  399. package/runtime/third_party/boringssl/crypto/x509/v3_bcons.cc +96 -0
  400. package/runtime/third_party/boringssl/crypto/x509/v3_bitst.cc +100 -0
  401. package/runtime/third_party/boringssl/crypto/x509/v3_conf.cc +369 -0
  402. package/runtime/third_party/boringssl/crypto/x509/v3_cpols.cc +417 -0
  403. package/runtime/third_party/boringssl/crypto/x509/v3_crld.cc +471 -0
  404. package/runtime/third_party/boringssl/crypto/x509/v3_enum.cc +74 -0
  405. package/runtime/third_party/boringssl/crypto/x509/v3_extku.cc +97 -0
  406. package/runtime/third_party/boringssl/crypto/x509/v3_genn.cc +238 -0
  407. package/runtime/third_party/boringssl/crypto/x509/v3_ia5.cc +83 -0
  408. package/runtime/third_party/boringssl/crypto/x509/v3_info.cc +162 -0
  409. package/runtime/third_party/boringssl/crypto/x509/v3_int.cc +83 -0
  410. package/runtime/third_party/boringssl/crypto/x509/v3_lib.cc +349 -0
  411. package/runtime/third_party/boringssl/crypto/x509/v3_ncons.cc +798 -0
  412. package/runtime/third_party/boringssl/crypto/x509/v3_ocsp.cc +92 -0
  413. package/runtime/third_party/boringssl/crypto/x509/v3_pcons.cc +102 -0
  414. package/runtime/third_party/boringssl/crypto/x509/v3_pmaps.cc +110 -0
  415. package/runtime/third_party/boringssl/crypto/x509/v3_prn.cc +183 -0
  416. package/runtime/third_party/boringssl/crypto/x509/v3_purp.cc +580 -0
  417. package/runtime/third_party/boringssl/crypto/x509/v3_skey.cc +128 -0
  418. package/runtime/third_party/boringssl/crypto/x509/v3_utl.cc +1311 -0
  419. package/runtime/third_party/boringssl/crypto/x509/x509.cc +47 -0
  420. package/runtime/third_party/boringssl/crypto/x509/x509_att.cc +188 -0
  421. package/runtime/third_party/boringssl/crypto/x509/x509_cmp.cc +243 -0
  422. package/runtime/third_party/boringssl/crypto/x509/x509_d2.cc +66 -0
  423. package/runtime/third_party/boringssl/crypto/x509/x509_def.cc +42 -0
  424. package/runtime/third_party/boringssl/crypto/x509/x509_ext.cc +161 -0
  425. package/runtime/third_party/boringssl/crypto/x509/x509_lu.cc +570 -0
  426. package/runtime/third_party/boringssl/crypto/x509/x509_mtc.cc +598 -0
  427. package/runtime/third_party/boringssl/crypto/x509/x509_obj.cc +169 -0
  428. package/runtime/third_party/boringssl/crypto/x509/x509_req.cc +248 -0
  429. package/runtime/third_party/boringssl/crypto/x509/x509_set.cc +166 -0
  430. package/runtime/third_party/boringssl/crypto/x509/x509_trs.cc +123 -0
  431. package/runtime/third_party/boringssl/crypto/x509/x509_txt.cc +147 -0
  432. package/runtime/third_party/boringssl/crypto/x509/x509_v3.cc +249 -0
  433. package/runtime/third_party/boringssl/crypto/x509/x509_vfy.cc +1531 -0
  434. package/runtime/third_party/boringssl/crypto/x509/x509_vpm.cc +449 -0
  435. package/runtime/third_party/boringssl/crypto/x509/x509cset.cc +222 -0
  436. package/runtime/third_party/boringssl/crypto/x509/x509name.cc +377 -0
  437. package/runtime/third_party/boringssl/crypto/x509/x509rset.cc +55 -0
  438. package/runtime/third_party/boringssl/crypto/x509/x509spki.cc +91 -0
  439. package/runtime/third_party/boringssl/crypto/x509/x_algor.cc +223 -0
  440. package/runtime/third_party/boringssl/crypto/x509/x_all.cc +352 -0
  441. package/runtime/third_party/boringssl/crypto/x509/x_attrib.cc +61 -0
  442. package/runtime/third_party/boringssl/crypto/x509/x_crl.cc +325 -0
  443. package/runtime/third_party/boringssl/crypto/x509/x_exten.cc +42 -0
  444. package/runtime/third_party/boringssl/crypto/x509/x_name.cc +407 -0
  445. package/runtime/third_party/boringssl/crypto/x509/x_pubkey.cc +199 -0
  446. package/runtime/third_party/boringssl/crypto/x509/x_req.cc +80 -0
  447. package/runtime/third_party/boringssl/crypto/x509/x_sig.cc +51 -0
  448. package/runtime/third_party/boringssl/crypto/x509/x_spki.cc +44 -0
  449. package/runtime/third_party/boringssl/crypto/x509/x_x509.cc +495 -0
  450. package/runtime/third_party/boringssl/crypto/x509/x_x509a.cc +169 -0
  451. package/runtime/third_party/boringssl/crypto/xwing/xwing.cc +257 -0
  452. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx2-x86_64-apple.S +1326 -0
  453. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx2-x86_64-linux.S +1327 -0
  454. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx512-x86_64-apple.S +1252 -0
  455. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx512-x86_64-linux.S +1253 -0
  456. package/runtime/third_party/boringssl/gen/bcm/aesni-gcm-x86_64-apple.S +873 -0
  457. package/runtime/third_party/boringssl/gen/bcm/aesni-gcm-x86_64-linux.S +885 -0
  458. package/runtime/third_party/boringssl/gen/bcm/aesni-x86-apple.S +2490 -0
  459. package/runtime/third_party/boringssl/gen/bcm/aesni-x86-linux.S +2530 -0
  460. package/runtime/third_party/boringssl/gen/bcm/aesni-x86_64-apple.S +2413 -0
  461. package/runtime/third_party/boringssl/gen/bcm/aesni-x86_64-linux.S +2397 -0
  462. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv7-linux.S +784 -0
  463. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv8-apple.S +792 -0
  464. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv8-linux.S +786 -0
  465. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv8-win.S +798 -0
  466. package/runtime/third_party/boringssl/gen/bcm/aesv8-gcm-armv8-apple.S +2912 -0
  467. package/runtime/third_party/boringssl/gen/bcm/aesv8-gcm-armv8-linux.S +2907 -0
  468. package/runtime/third_party/boringssl/gen/bcm/aesv8-gcm-armv8-win.S +2915 -0
  469. package/runtime/third_party/boringssl/gen/bcm/armv4-mont-linux.S +932 -0
  470. package/runtime/third_party/boringssl/gen/bcm/armv8-mont-apple.S +1440 -0
  471. package/runtime/third_party/boringssl/gen/bcm/armv8-mont-linux.S +1440 -0
  472. package/runtime/third_party/boringssl/gen/bcm/armv8-mont-win.S +1446 -0
  473. package/runtime/third_party/boringssl/gen/bcm/bn-586-apple.S +530 -0
  474. package/runtime/third_party/boringssl/gen/bcm/bn-586-linux.S +540 -0
  475. package/runtime/third_party/boringssl/gen/bcm/bn-armv8-apple.S +88 -0
  476. package/runtime/third_party/boringssl/gen/bcm/bn-armv8-linux.S +87 -0
  477. package/runtime/third_party/boringssl/gen/bcm/bn-armv8-win.S +87 -0
  478. package/runtime/third_party/boringssl/gen/bcm/bsaes-armv7-linux.S +1520 -0
  479. package/runtime/third_party/boringssl/gen/bcm/co-586-apple.S +1256 -0
  480. package/runtime/third_party/boringssl/gen/bcm/co-586-linux.S +1264 -0
  481. package/runtime/third_party/boringssl/gen/bcm/ghash-armv4-linux.S +242 -0
  482. package/runtime/third_party/boringssl/gen/bcm/ghash-neon-armv8-apple.S +337 -0
  483. package/runtime/third_party/boringssl/gen/bcm/ghash-neon-armv8-linux.S +335 -0
  484. package/runtime/third_party/boringssl/gen/bcm/ghash-neon-armv8-win.S +341 -0
  485. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86-apple.S +288 -0
  486. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86-linux.S +292 -0
  487. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86_64-apple.S +426 -0
  488. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86_64-linux.S +425 -0
  489. package/runtime/third_party/boringssl/gen/bcm/ghash-x86-apple.S +322 -0
  490. package/runtime/third_party/boringssl/gen/bcm/ghash-x86-linux.S +328 -0
  491. package/runtime/third_party/boringssl/gen/bcm/ghash-x86_64-apple.S +1134 -0
  492. package/runtime/third_party/boringssl/gen/bcm/ghash-x86_64-linux.S +1129 -0
  493. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv7-linux.S +244 -0
  494. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv8-apple.S +567 -0
  495. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv8-linux.S +563 -0
  496. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv8-win.S +571 -0
  497. package/runtime/third_party/boringssl/gen/bcm/p256-armv8-asm-apple.S +1744 -0
  498. package/runtime/third_party/boringssl/gen/bcm/p256-armv8-asm-linux.S +1725 -0
  499. package/runtime/third_party/boringssl/gen/bcm/p256-armv8-asm-win.S +1765 -0
  500. package/runtime/third_party/boringssl/gen/bcm/p256-x86_64-asm-apple.S +4544 -0
  501. package/runtime/third_party/boringssl/gen/bcm/p256-x86_64-asm-linux.S +4600 -0
  502. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-armv8-asm-apple.S +310 -0
  503. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-armv8-asm-linux.S +310 -0
  504. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-armv8-asm-win.S +310 -0
  505. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-x86_64-asm-apple.S +321 -0
  506. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-x86_64-asm-linux.S +335 -0
  507. package/runtime/third_party/boringssl/gen/bcm/rdrand-x86_64-apple.S +58 -0
  508. package/runtime/third_party/boringssl/gen/bcm/rdrand-x86_64-linux.S +57 -0
  509. package/runtime/third_party/boringssl/gen/bcm/rsaz-avx2-apple.S +1756 -0
  510. package/runtime/third_party/boringssl/gen/bcm/rsaz-avx2-linux.S +1751 -0
  511. package/runtime/third_party/boringssl/gen/bcm/sha1-586-apple.S +3782 -0
  512. package/runtime/third_party/boringssl/gen/bcm/sha1-586-linux.S +3788 -0
  513. package/runtime/third_party/boringssl/gen/bcm/sha1-armv4-large-linux.S +1479 -0
  514. package/runtime/third_party/boringssl/gen/bcm/sha1-armv8-apple.S +1219 -0
  515. package/runtime/third_party/boringssl/gen/bcm/sha1-armv8-linux.S +1218 -0
  516. package/runtime/third_party/boringssl/gen/bcm/sha1-armv8-win.S +1222 -0
  517. package/runtime/third_party/boringssl/gen/bcm/sha1-x86_64-apple.S +5454 -0
  518. package/runtime/third_party/boringssl/gen/bcm/sha1-x86_64-linux.S +5450 -0
  519. package/runtime/third_party/boringssl/gen/bcm/sha256-586-apple.S +5593 -0
  520. package/runtime/third_party/boringssl/gen/bcm/sha256-586-linux.S +5599 -0
  521. package/runtime/third_party/boringssl/gen/bcm/sha256-armv4-linux.S +2840 -0
  522. package/runtime/third_party/boringssl/gen/bcm/sha256-armv8-apple.S +1195 -0
  523. package/runtime/third_party/boringssl/gen/bcm/sha256-armv8-linux.S +1194 -0
  524. package/runtime/third_party/boringssl/gen/bcm/sha256-armv8-win.S +1198 -0
  525. package/runtime/third_party/boringssl/gen/bcm/sha256-x86_64-apple.S +4173 -0
  526. package/runtime/third_party/boringssl/gen/bcm/sha256-x86_64-linux.S +4170 -0
  527. package/runtime/third_party/boringssl/gen/bcm/sha512-586-apple.S +2406 -0
  528. package/runtime/third_party/boringssl/gen/bcm/sha512-586-linux.S +2410 -0
  529. package/runtime/third_party/boringssl/gen/bcm/sha512-armv4-linux.S +1857 -0
  530. package/runtime/third_party/boringssl/gen/bcm/sha512-armv8-apple.S +1598 -0
  531. package/runtime/third_party/boringssl/gen/bcm/sha512-armv8-linux.S +1597 -0
  532. package/runtime/third_party/boringssl/gen/bcm/sha512-armv8-win.S +1601 -0
  533. package/runtime/third_party/boringssl/gen/bcm/sha512-x86_64-apple.S +2979 -0
  534. package/runtime/third_party/boringssl/gen/bcm/sha512-x86_64-linux.S +2978 -0
  535. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv7-linux.S +1225 -0
  536. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv8-apple.S +1238 -0
  537. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv8-linux.S +1220 -0
  538. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv8-win.S +1256 -0
  539. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86-apple.S +680 -0
  540. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86-linux.S +706 -0
  541. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86_64-apple.S +1146 -0
  542. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86_64-linux.S +1133 -0
  543. package/runtime/third_party/boringssl/gen/bcm/x86-mont-apple.S +216 -0
  544. package/runtime/third_party/boringssl/gen/bcm/x86-mont-linux.S +218 -0
  545. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont-apple.S +1238 -0
  546. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont-linux.S +1237 -0
  547. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont5-apple.S +3644 -0
  548. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont5-linux.S +3628 -0
  549. package/runtime/third_party/boringssl/gen/boringssl_prefix_symbols_internal_x86_64_win_asm.inc +325 -0
  550. package/runtime/third_party/boringssl/gen/boringssl_prefix_symbols_internal_x86_win_asm.inc +325 -0
  551. package/runtime/third_party/boringssl/gen/crypto/aes128gcmsiv-x86_64-apple.S +3113 -0
  552. package/runtime/third_party/boringssl/gen/crypto/aes128gcmsiv-x86_64-linux.S +3091 -0
  553. package/runtime/third_party/boringssl/gen/crypto/chacha-armv4-linux.S +1450 -0
  554. package/runtime/third_party/boringssl/gen/crypto/chacha-armv8-apple.S +1969 -0
  555. package/runtime/third_party/boringssl/gen/crypto/chacha-armv8-linux.S +1967 -0
  556. package/runtime/third_party/boringssl/gen/crypto/chacha-armv8-win.S +1973 -0
  557. package/runtime/third_party/boringssl/gen/crypto/chacha-x86-apple.S +957 -0
  558. package/runtime/third_party/boringssl/gen/crypto/chacha-x86-linux.S +961 -0
  559. package/runtime/third_party/boringssl/gen/crypto/chacha-x86_64-apple.S +1608 -0
  560. package/runtime/third_party/boringssl/gen/crypto/chacha-x86_64-linux.S +1611 -0
  561. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_armv8-apple.S +3010 -0
  562. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_armv8-linux.S +3008 -0
  563. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_armv8-win.S +3014 -0
  564. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_x86_64-apple.S +8903 -0
  565. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_x86_64-linux.S +8940 -0
  566. package/runtime/third_party/boringssl/gen/crypto/err_data.cc +1578 -0
  567. package/runtime/third_party/boringssl/gen/crypto/md5-586-apple.S +684 -0
  568. package/runtime/third_party/boringssl/gen/crypto/md5-586-linux.S +686 -0
  569. package/runtime/third_party/boringssl/gen/crypto/md5-x86_64-apple.S +690 -0
  570. package/runtime/third_party/boringssl/gen/crypto/md5-x86_64-linux.S +695 -0
  571. package/runtime/third_party/boringssl/include/openssl/aead.h +650 -0
  572. package/runtime/third_party/boringssl/include/openssl/aes.h +173 -0
  573. package/runtime/third_party/boringssl/include/openssl/arm_arch.h +24 -0
  574. package/runtime/third_party/boringssl/include/openssl/asm_base.h +219 -0
  575. package/runtime/third_party/boringssl/include/openssl/asn1.h +2002 -0
  576. package/runtime/third_party/boringssl/include/openssl/asn1_mac.h +18 -0
  577. package/runtime/third_party/boringssl/include/openssl/asn1t.h +584 -0
  578. package/runtime/third_party/boringssl/include/openssl/base.h +548 -0
  579. package/runtime/third_party/boringssl/include/openssl/base64.h +156 -0
  580. package/runtime/third_party/boringssl/include/openssl/bio.h +1061 -0
  581. package/runtime/third_party/boringssl/include/openssl/blake2.h +63 -0
  582. package/runtime/third_party/boringssl/include/openssl/blowfish.h +58 -0
  583. package/runtime/third_party/boringssl/include/openssl/bn.h +986 -0
  584. package/runtime/third_party/boringssl/include/openssl/buf.h +95 -0
  585. package/runtime/third_party/boringssl/include/openssl/buffer.h +18 -0
  586. package/runtime/third_party/boringssl/include/openssl/bytestring.h +798 -0
  587. package/runtime/third_party/boringssl/include/openssl/cast.h +91 -0
  588. package/runtime/third_party/boringssl/include/openssl/chacha.h +47 -0
  589. package/runtime/third_party/boringssl/include/openssl/cipher.h +819 -0
  590. package/runtime/third_party/boringssl/include/openssl/cmac.h +91 -0
  591. package/runtime/third_party/boringssl/include/openssl/cms.h +147 -0
  592. package/runtime/third_party/boringssl/include/openssl/conf.h +136 -0
  593. package/runtime/third_party/boringssl/include/openssl/configuration.h +18 -0
  594. package/runtime/third_party/boringssl/include/openssl/cpu.h +18 -0
  595. package/runtime/third_party/boringssl/include/openssl/crypto.h +235 -0
  596. package/runtime/third_party/boringssl/include/openssl/ctrdrbg.h +116 -0
  597. package/runtime/third_party/boringssl/include/openssl/curve25519.h +309 -0
  598. package/runtime/third_party/boringssl/include/openssl/des.h +134 -0
  599. package/runtime/third_party/boringssl/include/openssl/dh.h +336 -0
  600. package/runtime/third_party/boringssl/include/openssl/digest.h +399 -0
  601. package/runtime/third_party/boringssl/include/openssl/dsa.h +392 -0
  602. package/runtime/third_party/boringssl/include/openssl/dtls1.h +16 -0
  603. package/runtime/third_party/boringssl/include/openssl/e_os2.h +18 -0
  604. package/runtime/third_party/boringssl/include/openssl/ec.h +530 -0
  605. package/runtime/third_party/boringssl/include/openssl/ec_key.h +358 -0
  606. package/runtime/third_party/boringssl/include/openssl/ecdh.h +67 -0
  607. package/runtime/third_party/boringssl/include/openssl/ecdsa.h +242 -0
  608. package/runtime/third_party/boringssl/include/openssl/engine.h +109 -0
  609. package/runtime/third_party/boringssl/include/openssl/err.h +416 -0
  610. package/runtime/third_party/boringssl/include/openssl/evp.h +1645 -0
  611. package/runtime/third_party/boringssl/include/openssl/evp_errors.h +66 -0
  612. package/runtime/third_party/boringssl/include/openssl/ex_data.h +117 -0
  613. package/runtime/third_party/boringssl/include/openssl/hkdf.h +68 -0
  614. package/runtime/third_party/boringssl/include/openssl/hmac.h +151 -0
  615. package/runtime/third_party/boringssl/include/openssl/hpke.h +456 -0
  616. package/runtime/third_party/boringssl/include/openssl/hrss.h +108 -0
  617. package/runtime/third_party/boringssl/include/openssl/is_boringssl.h +16 -0
  618. package/runtime/third_party/boringssl/include/openssl/kdf.h +92 -0
  619. package/runtime/third_party/boringssl/include/openssl/lhash.h +18 -0
  620. package/runtime/third_party/boringssl/include/openssl/md4.h +73 -0
  621. package/runtime/third_party/boringssl/include/openssl/md5.h +67 -0
  622. package/runtime/third_party/boringssl/include/openssl/mem.h +215 -0
  623. package/runtime/third_party/boringssl/include/openssl/mldsa.h +486 -0
  624. package/runtime/third_party/boringssl/include/openssl/mlkem.h +222 -0
  625. package/runtime/third_party/boringssl/include/openssl/nid.h +5561 -0
  626. package/runtime/third_party/boringssl/include/openssl/obj.h +225 -0
  627. package/runtime/third_party/boringssl/include/openssl/obj_mac.h +18 -0
  628. package/runtime/third_party/boringssl/include/openssl/objects.h +18 -0
  629. package/runtime/third_party/boringssl/include/openssl/opensslconf.h +108 -0
  630. package/runtime/third_party/boringssl/include/openssl/opensslv.h +18 -0
  631. package/runtime/third_party/boringssl/include/openssl/ossl_typ.h +18 -0
  632. package/runtime/third_party/boringssl/include/openssl/params.h +42 -0
  633. package/runtime/third_party/boringssl/include/openssl/pem.h +769 -0
  634. package/runtime/third_party/boringssl/include/openssl/pkcs12.h +18 -0
  635. package/runtime/third_party/boringssl/include/openssl/pkcs7.h +239 -0
  636. package/runtime/third_party/boringssl/include/openssl/pkcs8.h +267 -0
  637. package/runtime/third_party/boringssl/include/openssl/poly1305.h +52 -0
  638. package/runtime/third_party/boringssl/include/openssl/pool.h +137 -0
  639. package/runtime/third_party/boringssl/include/openssl/posix_time.h +51 -0
  640. package/runtime/third_party/boringssl/include/openssl/prefix_symbols.h +8000 -0
  641. package/runtime/third_party/boringssl/include/openssl/prefix_symbols_internal_S.h +633 -0
  642. package/runtime/third_party/boringssl/include/openssl/prefix_symbols_internal_c.h +329 -0
  643. package/runtime/third_party/boringssl/include/openssl/rand.h +138 -0
  644. package/runtime/third_party/boringssl/include/openssl/rc4.h +54 -0
  645. package/runtime/third_party/boringssl/include/openssl/ripemd.h +71 -0
  646. package/runtime/third_party/boringssl/include/openssl/rsa.h +893 -0
  647. package/runtime/third_party/boringssl/include/openssl/safestack.h +16 -0
  648. package/runtime/third_party/boringssl/include/openssl/service_indicator.h +19 -0
  649. package/runtime/third_party/boringssl/include/openssl/sha.h +108 -0
  650. package/runtime/third_party/boringssl/include/openssl/sha2.h +201 -0
  651. package/runtime/third_party/boringssl/include/openssl/siphash.h +37 -0
  652. package/runtime/third_party/boringssl/include/openssl/slhdsa.h +250 -0
  653. package/runtime/third_party/boringssl/include/openssl/span.h +376 -0
  654. package/runtime/third_party/boringssl/include/openssl/srtp.h +18 -0
  655. package/runtime/third_party/boringssl/include/openssl/ssl.h +7211 -0
  656. package/runtime/third_party/boringssl/include/openssl/ssl3.h +171 -0
  657. package/runtime/third_party/boringssl/include/openssl/stack.h +688 -0
  658. package/runtime/third_party/boringssl/include/openssl/target.h +246 -0
  659. package/runtime/third_party/boringssl/include/openssl/thread.h +114 -0
  660. package/runtime/third_party/boringssl/include/openssl/time.h +22 -0
  661. package/runtime/third_party/boringssl/include/openssl/tls1.h +263 -0
  662. package/runtime/third_party/boringssl/include/openssl/tls_prf.h +47 -0
  663. package/runtime/third_party/boringssl/include/openssl/trust_token.h +349 -0
  664. package/runtime/third_party/boringssl/include/openssl/type_check.h +37 -0
  665. package/runtime/third_party/boringssl/include/openssl/types.h +18 -0
  666. package/runtime/third_party/boringssl/include/openssl/x509.h +5404 -0
  667. package/runtime/third_party/boringssl/include/openssl/x509_vfy.h +18 -0
  668. package/runtime/third_party/boringssl/include/openssl/x509v3.h +63 -0
  669. package/runtime/third_party/boringssl/include/openssl/x509v3_errors.h +84 -0
  670. package/runtime/third_party/boringssl/include/openssl/xwing.h +115 -0
  671. package/runtime/third_party/boringssl/sources.json +696 -0
  672. package/runtime/third_party/boringssl/ssl/bio_ssl.cc +196 -0
  673. package/runtime/third_party/boringssl/ssl/d1_both.cc +1137 -0
  674. package/runtime/third_party/boringssl/ssl/d1_lib.cc +245 -0
  675. package/runtime/third_party/boringssl/ssl/d1_pkt.cc +322 -0
  676. package/runtime/third_party/boringssl/ssl/d1_srtp.cc +128 -0
  677. package/runtime/third_party/boringssl/ssl/dtls_method.cc +216 -0
  678. package/runtime/third_party/boringssl/ssl/dtls_record.cc +586 -0
  679. package/runtime/third_party/boringssl/ssl/encrypted_client_hello.cc +1110 -0
  680. package/runtime/third_party/boringssl/ssl/extensions.cc +5368 -0
  681. package/runtime/third_party/boringssl/ssl/handoff.cc +625 -0
  682. package/runtime/third_party/boringssl/ssl/handshake.cc +694 -0
  683. package/runtime/third_party/boringssl/ssl/handshake_client.cc +1958 -0
  684. package/runtime/third_party/boringssl/ssl/handshake_server.cc +1875 -0
  685. package/runtime/third_party/boringssl/ssl/internal.h +4506 -0
  686. package/runtime/third_party/boringssl/ssl/s3_both.cc +555 -0
  687. package/runtime/third_party/boringssl/ssl/s3_lib.cc +88 -0
  688. package/runtime/third_party/boringssl/ssl/s3_pkt.cc +396 -0
  689. package/runtime/third_party/boringssl/ssl/ssl_aead_ctx.cc +416 -0
  690. package/runtime/third_party/boringssl/ssl/ssl_asn1.cc +851 -0
  691. package/runtime/third_party/boringssl/ssl/ssl_buffer.cc +304 -0
  692. package/runtime/third_party/boringssl/ssl/ssl_cert.cc +723 -0
  693. package/runtime/third_party/boringssl/ssl/ssl_cipher.cc +1762 -0
  694. package/runtime/third_party/boringssl/ssl/ssl_credential.cc +913 -0
  695. package/runtime/third_party/boringssl/ssl/ssl_file.cc +375 -0
  696. package/runtime/third_party/boringssl/ssl/ssl_key_share.cc +445 -0
  697. package/runtime/third_party/boringssl/ssl/ssl_lib.cc +4132 -0
  698. package/runtime/third_party/boringssl/ssl/ssl_privkey.cc +973 -0
  699. package/runtime/third_party/boringssl/ssl/ssl_session.cc +1273 -0
  700. package/runtime/third_party/boringssl/ssl/ssl_stat.cc +162 -0
  701. package/runtime/third_party/boringssl/ssl/ssl_transcript.cc +224 -0
  702. package/runtime/third_party/boringssl/ssl/ssl_versions.cc +436 -0
  703. package/runtime/third_party/boringssl/ssl/ssl_x509.cc +1229 -0
  704. package/runtime/third_party/boringssl/ssl/t1_enc.cc +266 -0
  705. package/runtime/third_party/boringssl/ssl/tls13_both.cc +764 -0
  706. package/runtime/third_party/boringssl/ssl/tls13_client.cc +1325 -0
  707. package/runtime/third_party/boringssl/ssl/tls13_enc.cc +746 -0
  708. package/runtime/third_party/boringssl/ssl/tls13_server.cc +1623 -0
  709. package/runtime/third_party/boringssl/ssl/tls_method.cc +266 -0
  710. package/runtime/third_party/boringssl/ssl/tls_record.cc +524 -0
  711. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_curve25519_adx_mul.S +178 -0
  712. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_curve25519_adx_square.S +146 -0
  713. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_p256_adx_mul.S +177 -0
  714. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_p256_adx_sqr.S +166 -0
  715. package/runtime/third_party/boringssl/third_party/fiat/bedrock_unverified_bareminimum.c.inc +47 -0
  716. package/runtime/third_party/boringssl/third_party/fiat/bedrock_unverified_platform.c.inc +137 -0
  717. package/runtime/third_party/boringssl/third_party/fiat/curve25519_32.h +1571 -0
  718. package/runtime/third_party/boringssl/third_party/fiat/curve25519_64.h +978 -0
  719. package/runtime/third_party/boringssl/third_party/fiat/curve25519_64_adx.h +700 -0
  720. package/runtime/third_party/boringssl/third_party/fiat/curve25519_64_msvc.h +1281 -0
  721. package/runtime/third_party/boringssl/third_party/fiat/p256_32.h +4760 -0
  722. package/runtime/third_party/boringssl/third_party/fiat/p256_64.h +1984 -0
  723. package/runtime/third_party/boringssl/third_party/fiat/p256_64_msvc.h +1939 -0
  724. package/runtime/third_party/boringssl/third_party/fiat/p256_field.c.inc +26 -0
  725. package/runtime/third_party/boringssl/third_party/fiat/p256_field_32.br.c.inc +71 -0
  726. package/runtime/third_party/boringssl/third_party/fiat/p256_field_64.br.c.inc +84 -0
  727. package/runtime/third_party/boringssl/third_party/fiat/p256_point.br.c.inc +112 -0
  728. package/runtime/third_party/v8-ieee754/README.md +2 -1
  729. package/runtime/third_party/v8-ieee754/convert.py +4 -0
  730. package/runtime/third_party/v8-ieee754/ieee754.c +1 -1
  731. package/runtime/third_party/bearssl/LICENSE.txt +0 -21
  732. package/runtime/third_party/bearssl/README.txt +0 -136
  733. package/runtime/third_party/bearssl/VERSION +0 -1
  734. package/runtime/third_party/bearssl/inc/bearssl.h +0 -183
  735. package/runtime/third_party/bearssl/inc/bearssl_aead.h +0 -1059
  736. package/runtime/third_party/bearssl/inc/bearssl_block.h +0 -2618
  737. package/runtime/third_party/bearssl/inc/bearssl_ec.h +0 -967
  738. package/runtime/third_party/bearssl/inc/bearssl_hash.h +0 -1346
  739. package/runtime/third_party/bearssl/inc/bearssl_hmac.h +0 -241
  740. package/runtime/third_party/bearssl/inc/bearssl_kdf.h +0 -284
  741. package/runtime/third_party/bearssl/inc/bearssl_pem.h +0 -294
  742. package/runtime/third_party/bearssl/inc/bearssl_prf.h +0 -150
  743. package/runtime/third_party/bearssl/inc/bearssl_rand.h +0 -397
  744. package/runtime/third_party/bearssl/inc/bearssl_rsa.h +0 -1655
  745. package/runtime/third_party/bearssl/inc/bearssl_ssl.h +0 -4296
  746. package/runtime/third_party/bearssl/inc/bearssl_x509.h +0 -1474
  747. package/runtime/third_party/bearssl/src/aead/ccm.c +0 -346
  748. package/runtime/third_party/bearssl/src/aead/eax.c +0 -525
  749. package/runtime/third_party/bearssl/src/aead/gcm.c +0 -318
  750. package/runtime/third_party/bearssl/src/codec/ccopy.c +0 -44
  751. package/runtime/third_party/bearssl/src/codec/dec16be.c +0 -38
  752. package/runtime/third_party/bearssl/src/codec/dec16le.c +0 -38
  753. package/runtime/third_party/bearssl/src/codec/dec32be.c +0 -38
  754. package/runtime/third_party/bearssl/src/codec/dec32le.c +0 -38
  755. package/runtime/third_party/bearssl/src/codec/dec64be.c +0 -38
  756. package/runtime/third_party/bearssl/src/codec/dec64le.c +0 -38
  757. package/runtime/third_party/bearssl/src/codec/enc16be.c +0 -38
  758. package/runtime/third_party/bearssl/src/codec/enc16le.c +0 -38
  759. package/runtime/third_party/bearssl/src/codec/enc32be.c +0 -38
  760. package/runtime/third_party/bearssl/src/codec/enc32le.c +0 -38
  761. package/runtime/third_party/bearssl/src/codec/enc64be.c +0 -38
  762. package/runtime/third_party/bearssl/src/codec/enc64le.c +0 -38
  763. package/runtime/third_party/bearssl/src/codec/pemdec.c +0 -526
  764. package/runtime/third_party/bearssl/src/codec/pemdec.t0 +0 -314
  765. package/runtime/third_party/bearssl/src/codec/pemenc.c +0 -173
  766. package/runtime/third_party/bearssl/src/config.h +0 -247
  767. package/runtime/third_party/bearssl/src/ec/ec_all_m15.c +0 -121
  768. package/runtime/third_party/bearssl/src/ec/ec_all_m31.c +0 -171
  769. package/runtime/third_party/bearssl/src/ec/ec_c25519_i15.c +0 -398
  770. package/runtime/third_party/bearssl/src/ec/ec_c25519_i31.c +0 -390
  771. package/runtime/third_party/bearssl/src/ec/ec_c25519_m15.c +0 -1478
  772. package/runtime/third_party/bearssl/src/ec/ec_c25519_m31.c +0 -800
  773. package/runtime/third_party/bearssl/src/ec/ec_c25519_m62.c +0 -605
  774. package/runtime/third_party/bearssl/src/ec/ec_c25519_m64.c +0 -831
  775. package/runtime/third_party/bearssl/src/ec/ec_curve25519.c +0 -46
  776. package/runtime/third_party/bearssl/src/ec/ec_default.c +0 -36
  777. package/runtime/third_party/bearssl/src/ec/ec_keygen.c +0 -86
  778. package/runtime/third_party/bearssl/src/ec/ec_p256_m15.c +0 -2124
  779. package/runtime/third_party/bearssl/src/ec/ec_p256_m31.c +0 -1469
  780. package/runtime/third_party/bearssl/src/ec/ec_p256_m62.c +0 -1765
  781. package/runtime/third_party/bearssl/src/ec/ec_p256_m64.c +0 -1781
  782. package/runtime/third_party/bearssl/src/ec/ec_prime_i15.c +0 -824
  783. package/runtime/third_party/bearssl/src/ec/ec_prime_i31.c +0 -826
  784. package/runtime/third_party/bearssl/src/ec/ec_pubkey.c +0 -85
  785. package/runtime/third_party/bearssl/src/ec/ec_secp256r1.c +0 -51
  786. package/runtime/third_party/bearssl/src/ec/ec_secp384r1.c +0 -57
  787. package/runtime/third_party/bearssl/src/ec/ec_secp521r1.c +0 -64
  788. package/runtime/third_party/bearssl/src/ec/ecdsa_atr.c +0 -134
  789. package/runtime/third_party/bearssl/src/ec/ecdsa_default_sign_asn1.c +0 -36
  790. package/runtime/third_party/bearssl/src/ec/ecdsa_default_sign_raw.c +0 -36
  791. package/runtime/third_party/bearssl/src/ec/ecdsa_default_vrfy_asn1.c +0 -36
  792. package/runtime/third_party/bearssl/src/ec/ecdsa_default_vrfy_raw.c +0 -36
  793. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_bits.c +0 -47
  794. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_sign_asn1.c +0 -45
  795. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_sign_raw.c +0 -174
  796. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_vrfy_asn1.c +0 -48
  797. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_vrfy_raw.c +0 -166
  798. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_bits.c +0 -47
  799. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_sign_asn1.c +0 -45
  800. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_sign_raw.c +0 -173
  801. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_vrfy_asn1.c +0 -48
  802. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_vrfy_raw.c +0 -165
  803. package/runtime/third_party/bearssl/src/ec/ecdsa_rta.c +0 -121
  804. package/runtime/third_party/bearssl/src/hash/dig_oid.c +0 -84
  805. package/runtime/third_party/bearssl/src/hash/dig_size.c +0 -50
  806. package/runtime/third_party/bearssl/src/hash/ghash_ctmul.c +0 -345
  807. package/runtime/third_party/bearssl/src/hash/ghash_ctmul32.c +0 -251
  808. package/runtime/third_party/bearssl/src/hash/ghash_ctmul64.c +0 -154
  809. package/runtime/third_party/bearssl/src/hash/ghash_pclmul.c +0 -389
  810. package/runtime/third_party/bearssl/src/hash/ghash_pwr8.c +0 -411
  811. package/runtime/third_party/bearssl/src/hash/md5.c +0 -208
  812. package/runtime/third_party/bearssl/src/hash/md5sha1.c +0 -141
  813. package/runtime/third_party/bearssl/src/hash/mgf1.c +0 -56
  814. package/runtime/third_party/bearssl/src/hash/multihash.c +0 -166
  815. package/runtime/third_party/bearssl/src/hash/sha1.c +0 -191
  816. package/runtime/third_party/bearssl/src/hash/sha2big.c +0 -285
  817. package/runtime/third_party/bearssl/src/hash/sha2small.c +0 -341
  818. package/runtime/third_party/bearssl/src/inner.h +0 -2577
  819. package/runtime/third_party/bearssl/src/int/i15_add.c +0 -46
  820. package/runtime/third_party/bearssl/src/int/i15_bitlen.c +0 -44
  821. package/runtime/third_party/bearssl/src/int/i15_decmod.c +0 -124
  822. package/runtime/third_party/bearssl/src/int/i15_decode.c +0 -56
  823. package/runtime/third_party/bearssl/src/int/i15_decred.c +0 -100
  824. package/runtime/third_party/bearssl/src/int/i15_encode.c +0 -56
  825. package/runtime/third_party/bearssl/src/int/i15_fmont.c +0 -59
  826. package/runtime/third_party/bearssl/src/int/i15_iszero.c +0 -39
  827. package/runtime/third_party/bearssl/src/int/i15_moddiv.c +0 -465
  828. package/runtime/third_party/bearssl/src/int/i15_modpow.c +0 -50
  829. package/runtime/third_party/bearssl/src/int/i15_modpow2.c +0 -160
  830. package/runtime/third_party/bearssl/src/int/i15_montmul.c +0 -184
  831. package/runtime/third_party/bearssl/src/int/i15_mulacc.c +0 -61
  832. package/runtime/third_party/bearssl/src/int/i15_muladd.c +0 -173
  833. package/runtime/third_party/bearssl/src/int/i15_ninv15.c +0 -38
  834. package/runtime/third_party/bearssl/src/int/i15_reduce.c +0 -66
  835. package/runtime/third_party/bearssl/src/int/i15_rshift.c +0 -47
  836. package/runtime/third_party/bearssl/src/int/i15_sub.c +0 -46
  837. package/runtime/third_party/bearssl/src/int/i15_tmont.c +0 -36
  838. package/runtime/third_party/bearssl/src/int/i31_add.c +0 -46
  839. package/runtime/third_party/bearssl/src/int/i31_bitlen.c +0 -44
  840. package/runtime/third_party/bearssl/src/int/i31_decmod.c +0 -124
  841. package/runtime/third_party/bearssl/src/int/i31_decode.c +0 -57
  842. package/runtime/third_party/bearssl/src/int/i31_decred.c +0 -103
  843. package/runtime/third_party/bearssl/src/int/i31_encode.c +0 -79
  844. package/runtime/third_party/bearssl/src/int/i31_fmont.c +0 -60
  845. package/runtime/third_party/bearssl/src/int/i31_iszero.c +0 -39
  846. package/runtime/third_party/bearssl/src/int/i31_moddiv.c +0 -488
  847. package/runtime/third_party/bearssl/src/int/i31_modpow.c +0 -65
  848. package/runtime/third_party/bearssl/src/int/i31_modpow2.c +0 -160
  849. package/runtime/third_party/bearssl/src/int/i31_montmul.c +0 -127
  850. package/runtime/third_party/bearssl/src/int/i31_mulacc.c +0 -74
  851. package/runtime/third_party/bearssl/src/int/i31_muladd.c +0 -157
  852. package/runtime/third_party/bearssl/src/int/i31_ninv31.c +0 -39
  853. package/runtime/third_party/bearssl/src/int/i31_reduce.c +0 -66
  854. package/runtime/third_party/bearssl/src/int/i31_rshift.c +0 -47
  855. package/runtime/third_party/bearssl/src/int/i31_sub.c +0 -46
  856. package/runtime/third_party/bearssl/src/int/i31_tmont.c +0 -36
  857. package/runtime/third_party/bearssl/src/int/i32_add.c +0 -51
  858. package/runtime/third_party/bearssl/src/int/i32_bitlen.c +0 -44
  859. package/runtime/third_party/bearssl/src/int/i32_decmod.c +0 -77
  860. package/runtime/third_party/bearssl/src/int/i32_decode.c +0 -63
  861. package/runtime/third_party/bearssl/src/int/i32_decred.c +0 -107
  862. package/runtime/third_party/bearssl/src/int/i32_div32.c +0 -56
  863. package/runtime/third_party/bearssl/src/int/i32_encode.c +0 -72
  864. package/runtime/third_party/bearssl/src/int/i32_fmont.c +0 -60
  865. package/runtime/third_party/bearssl/src/int/i32_iszero.c +0 -39
  866. package/runtime/third_party/bearssl/src/int/i32_modpow.c +0 -65
  867. package/runtime/third_party/bearssl/src/int/i32_montmul.c +0 -69
  868. package/runtime/third_party/bearssl/src/int/i32_mulacc.c +0 -56
  869. package/runtime/third_party/bearssl/src/int/i32_muladd.c +0 -138
  870. package/runtime/third_party/bearssl/src/int/i32_ninv32.c +0 -39
  871. package/runtime/third_party/bearssl/src/int/i32_reduce.c +0 -66
  872. package/runtime/third_party/bearssl/src/int/i32_sub.c +0 -51
  873. package/runtime/third_party/bearssl/src/int/i32_tmont.c +0 -36
  874. package/runtime/third_party/bearssl/src/int/i62_modpow2.c +0 -493
  875. package/runtime/third_party/bearssl/src/kdf/hkdf.c +0 -107
  876. package/runtime/third_party/bearssl/src/kdf/shake.c +0 -590
  877. package/runtime/third_party/bearssl/src/mac/hmac.c +0 -122
  878. package/runtime/third_party/bearssl/src/mac/hmac_ct.c +0 -193
  879. package/runtime/third_party/bearssl/src/rand/aesctr_drbg.c +0 -206
  880. package/runtime/third_party/bearssl/src/rand/hmac_drbg.c +0 -157
  881. package/runtime/third_party/bearssl/src/rand/sysrng.c +0 -252
  882. package/runtime/third_party/bearssl/src/rsa/rsa_default_keygen.c +0 -38
  883. package/runtime/third_party/bearssl/src/rsa/rsa_default_modulus.c +0 -36
  884. package/runtime/third_party/bearssl/src/rsa/rsa_default_oaep_decrypt.c +0 -38
  885. package/runtime/third_party/bearssl/src/rsa/rsa_default_oaep_encrypt.c +0 -38
  886. package/runtime/third_party/bearssl/src/rsa/rsa_default_pkcs1_sign.c +0 -38
  887. package/runtime/third_party/bearssl/src/rsa/rsa_default_pkcs1_vrfy.c +0 -38
  888. package/runtime/third_party/bearssl/src/rsa/rsa_default_priv.c +0 -38
  889. package/runtime/third_party/bearssl/src/rsa/rsa_default_privexp.c +0 -36
  890. package/runtime/third_party/bearssl/src/rsa/rsa_default_pss_sign.c +0 -38
  891. package/runtime/third_party/bearssl/src/rsa/rsa_default_pss_vrfy.c +0 -38
  892. package/runtime/third_party/bearssl/src/rsa/rsa_default_pub.c +0 -38
  893. package/runtime/third_party/bearssl/src/rsa/rsa_default_pubexp.c +0 -36
  894. package/runtime/third_party/bearssl/src/rsa/rsa_i15_keygen.c +0 -583
  895. package/runtime/third_party/bearssl/src/rsa/rsa_i15_modulus.c +0 -99
  896. package/runtime/third_party/bearssl/src/rsa/rsa_i15_oaep_decrypt.c +0 -41
  897. package/runtime/third_party/bearssl/src/rsa/rsa_i15_oaep_encrypt.c +0 -44
  898. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pkcs1_sign.c +0 -37
  899. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pkcs1_vrfy.c +0 -43
  900. package/runtime/third_party/bearssl/src/rsa/rsa_i15_priv.c +0 -209
  901. package/runtime/third_party/bearssl/src/rsa/rsa_i15_privexp.c +0 -320
  902. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pss_sign.c +0 -40
  903. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pss_vrfy.c +0 -44
  904. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pub.c +0 -113
  905. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pubexp.c +0 -152
  906. package/runtime/third_party/bearssl/src/rsa/rsa_i31_keygen.c +0 -37
  907. package/runtime/third_party/bearssl/src/rsa/rsa_i31_keygen_inner.c +0 -608
  908. package/runtime/third_party/bearssl/src/rsa/rsa_i31_modulus.c +0 -99
  909. package/runtime/third_party/bearssl/src/rsa/rsa_i31_oaep_decrypt.c +0 -41
  910. package/runtime/third_party/bearssl/src/rsa/rsa_i31_oaep_encrypt.c +0 -44
  911. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pkcs1_sign.c +0 -37
  912. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pkcs1_vrfy.c +0 -43
  913. package/runtime/third_party/bearssl/src/rsa/rsa_i31_priv.c +0 -203
  914. package/runtime/third_party/bearssl/src/rsa/rsa_i31_privexp.c +0 -318
  915. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pss_sign.c +0 -40
  916. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pss_vrfy.c +0 -44
  917. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pub.c +0 -106
  918. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pubexp.c +0 -152
  919. package/runtime/third_party/bearssl/src/rsa/rsa_i32_oaep_decrypt.c +0 -41
  920. package/runtime/third_party/bearssl/src/rsa/rsa_i32_oaep_encrypt.c +0 -44
  921. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pkcs1_sign.c +0 -37
  922. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pkcs1_vrfy.c +0 -43
  923. package/runtime/third_party/bearssl/src/rsa/rsa_i32_priv.c +0 -160
  924. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pss_sign.c +0 -40
  925. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pss_vrfy.c +0 -44
  926. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pub.c +0 -77
  927. package/runtime/third_party/bearssl/src/rsa/rsa_i62_keygen.c +0 -57
  928. package/runtime/third_party/bearssl/src/rsa/rsa_i62_oaep_decrypt.c +0 -61
  929. package/runtime/third_party/bearssl/src/rsa/rsa_i62_oaep_encrypt.c +0 -64
  930. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pkcs1_sign.c +0 -57
  931. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pkcs1_vrfy.c +0 -63
  932. package/runtime/third_party/bearssl/src/rsa/rsa_i62_priv.c +0 -223
  933. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pss_sign.c +0 -60
  934. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pss_vrfy.c +0 -64
  935. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pub.c +0 -125
  936. package/runtime/third_party/bearssl/src/rsa/rsa_oaep_pad.c +0 -112
  937. package/runtime/third_party/bearssl/src/rsa/rsa_oaep_unpad.c +0 -145
  938. package/runtime/third_party/bearssl/src/rsa/rsa_pkcs1_sig_pad.c +0 -100
  939. package/runtime/third_party/bearssl/src/rsa/rsa_pkcs1_sig_unpad.c +0 -121
  940. package/runtime/third_party/bearssl/src/rsa/rsa_pss_sig_pad.c +0 -106
  941. package/runtime/third_party/bearssl/src/rsa/rsa_pss_sig_unpad.c +0 -121
  942. package/runtime/third_party/bearssl/src/rsa/rsa_ssl_decrypt.c +0 -52
  943. package/runtime/third_party/bearssl/src/settings.c +0 -306
  944. package/runtime/third_party/bearssl/src/symcipher/aes_big_cbcdec.c +0 -69
  945. package/runtime/third_party/bearssl/src/symcipher/aes_big_cbcenc.c +0 -67
  946. package/runtime/third_party/bearssl/src/symcipher/aes_big_ctr.c +0 -84
  947. package/runtime/third_party/bearssl/src/symcipher/aes_big_ctrcbc.c +0 -142
  948. package/runtime/third_party/bearssl/src/symcipher/aes_big_dec.c +0 -254
  949. package/runtime/third_party/bearssl/src/symcipher/aes_big_enc.c +0 -157
  950. package/runtime/third_party/bearssl/src/symcipher/aes_common.c +0 -112
  951. package/runtime/third_party/bearssl/src/symcipher/aes_ct.c +0 -328
  952. package/runtime/third_party/bearssl/src/symcipher/aes_ct64.c +0 -398
  953. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_cbcdec.c +0 -104
  954. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_cbcenc.c +0 -81
  955. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_ctr.c +0 -114
  956. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_ctrcbc.c +0 -433
  957. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_dec.c +0 -159
  958. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_enc.c +0 -115
  959. package/runtime/third_party/bearssl/src/symcipher/aes_ct_cbcdec.c +0 -111
  960. package/runtime/third_party/bearssl/src/symcipher/aes_ct_cbcenc.c +0 -91
  961. package/runtime/third_party/bearssl/src/symcipher/aes_ct_ctr.c +0 -116
  962. package/runtime/third_party/bearssl/src/symcipher/aes_ct_ctrcbc.c +0 -422
  963. package/runtime/third_party/bearssl/src/symcipher/aes_ct_dec.c +0 -170
  964. package/runtime/third_party/bearssl/src/symcipher/aes_ct_enc.c +0 -112
  965. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8.c +0 -445
  966. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_cbcdec.c +0 -670
  967. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_cbcenc.c +0 -417
  968. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_ctr.c +0 -717
  969. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_ctrcbc.c +0 -946
  970. package/runtime/third_party/bearssl/src/symcipher/aes_small_cbcdec.c +0 -69
  971. package/runtime/third_party/bearssl/src/symcipher/aes_small_cbcenc.c +0 -67
  972. package/runtime/third_party/bearssl/src/symcipher/aes_small_ctr.c +0 -84
  973. package/runtime/third_party/bearssl/src/symcipher/aes_small_ctrcbc.c +0 -142
  974. package/runtime/third_party/bearssl/src/symcipher/aes_small_dec.c +0 -176
  975. package/runtime/third_party/bearssl/src/symcipher/aes_small_enc.c +0 -129
  976. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni.c +0 -240
  977. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_cbcdec.c +0 -223
  978. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_cbcenc.c +0 -122
  979. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_ctr.c +0 -211
  980. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_ctrcbc.c +0 -596
  981. package/runtime/third_party/bearssl/src/symcipher/chacha20_ct.c +0 -106
  982. package/runtime/third_party/bearssl/src/symcipher/chacha20_sse2.c +0 -237
  983. package/runtime/third_party/bearssl/src/symcipher/des_ct.c +0 -411
  984. package/runtime/third_party/bearssl/src/symcipher/des_ct_cbcdec.c +0 -87
  985. package/runtime/third_party/bearssl/src/symcipher/des_ct_cbcenc.c +0 -69
  986. package/runtime/third_party/bearssl/src/symcipher/des_support.c +0 -166
  987. package/runtime/third_party/bearssl/src/symcipher/des_tab.c +0 -310
  988. package/runtime/third_party/bearssl/src/symcipher/des_tab_cbcdec.c +0 -85
  989. package/runtime/third_party/bearssl/src/symcipher/des_tab_cbcenc.c +0 -67
  990. package/runtime/third_party/bearssl/src/symcipher/poly1305_ctmul.c +0 -260
  991. package/runtime/third_party/bearssl/src/symcipher/poly1305_ctmul32.c +0 -297
  992. package/runtime/third_party/bearssl/src/symcipher/poly1305_ctmulq.c +0 -475
  993. package/runtime/third_party/bearssl/src/symcipher/poly1305_i15.c +0 -221
  994. package/runtime/third_party/bearssl/src/x509/asn1.t0 +0 -757
  995. package/runtime/third_party/bearssl/src/x509/asn1enc.c +0 -93
  996. package/runtime/third_party/bearssl/src/x509/encode_ec_pk8der.c +0 -110
  997. package/runtime/third_party/bearssl/src/x509/encode_ec_rawder.c +0 -161
  998. package/runtime/third_party/bearssl/src/x509/encode_rsa_pk8der.c +0 -97
  999. package/runtime/third_party/bearssl/src/x509/encode_rsa_rawder.c +0 -96
  1000. package/runtime/third_party/bearssl/src/x509/skey_decoder.c +0 -653
  1001. package/runtime/third_party/bearssl/src/x509/skey_decoder.t0 +0 -376
  1002. package/runtime/third_party/bearssl/src/x509/x509_decoder.c +0 -776
  1003. package/runtime/third_party/bearssl/src/x509/x509_decoder.t0 +0 -324
  1004. package/runtime/third_party/bearssl/src/x509/x509_knownkey.c +0 -105
  1005. package/runtime/third_party/bearssl/src/x509/x509_minimal.c +0 -1722
  1006. package/runtime/third_party/bearssl/src/x509/x509_minimal.t0 +0 -1526
  1007. package/runtime/third_party/bearssl/src/x509/x509_minimal_full.c +0 -59
@@ -0,0 +1,1273 @@
1
+ // Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
2
+ // Copyright 2005 Nokia. All rights reserved.
3
+ //
4
+ // Licensed under the Apache License, Version 2.0 (the "License");
5
+ // you may not use this file except in compliance with the License.
6
+ // You may obtain a copy of the License at
7
+ //
8
+ // https://www.apache.org/licenses/LICENSE-2.0
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software
11
+ // distributed under the License is distributed on an "AS IS" BASIS,
12
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ // See the License for the specific language governing permissions and
14
+ // limitations under the License.
15
+
16
+ #include <openssl/ssl.h>
17
+
18
+ #include <assert.h>
19
+ #include <stdlib.h>
20
+ #include <string.h>
21
+
22
+ #include <utility>
23
+
24
+ #include <openssl/cipher.h>
25
+ #include <openssl/err.h>
26
+ #include <openssl/evp.h>
27
+ #include <openssl/hmac.h>
28
+ #include <openssl/mem.h>
29
+ #include <openssl/pool.h>
30
+ #include <openssl/rand.h>
31
+
32
+ #include "../crypto/internal.h"
33
+ #include "internal.h"
34
+
35
+
36
+ BSSL_NAMESPACE_BEGIN
37
+
38
+ // The address of this is a magic value, a pointer to which is returned by
39
+ // SSL_magic_pending_session_ptr(). It allows a session callback to indicate
40
+ // that it needs to asynchronously fetch session information.
41
+ static const char g_pending_session_magic = 0;
42
+
43
+ static ExDataClass g_ex_data_class(/*with_app_data=*/true);
44
+
45
+ static void SSL_SESSION_list_remove(SSLContext *ctx, SSLSession *session);
46
+ static void SSL_SESSION_list_add(SSLContext *ctx, SSLSession *session);
47
+
48
+ static Span<const uint8_t> ssl_handshake_session_id_context(
49
+ const SSL_HANDSHAKE *hs) {
50
+ if (hs->ssl->server && hs->credential != nullptr &&
51
+ !hs->credential->sid_ctx.empty()) {
52
+ return hs->credential->sid_ctx;
53
+ }
54
+ return hs->config->cert->sid_ctx;
55
+ }
56
+
57
+ UniquePtr<SSLSession> ssl_session_new(const SSL_X509_METHOD *x509_method) {
58
+ return MakeUnique<SSLSession>(x509_method);
59
+ }
60
+
61
+ uint32_t ssl_hash_session_id(Span<const uint8_t> session_id) {
62
+ // Take the first four bytes of `session_id`. Session IDs are generated by the
63
+ // server randomly, so we can assume even using the first four bytes results
64
+ // in a good distribution.
65
+ uint8_t tmp_storage[sizeof(uint32_t)];
66
+ if (session_id.size() < sizeof(tmp_storage)) {
67
+ OPENSSL_memset(tmp_storage, 0, sizeof(tmp_storage));
68
+ OPENSSL_memcpy(tmp_storage, session_id.data(), session_id.size());
69
+ session_id = tmp_storage;
70
+ }
71
+
72
+ uint32_t hash = ((uint32_t)session_id[0]) | ((uint32_t)session_id[1] << 8) |
73
+ ((uint32_t)session_id[2] << 16) |
74
+ ((uint32_t)session_id[3] << 24);
75
+
76
+ return hash;
77
+ }
78
+
79
+ UniquePtr<SSLSession> SSL_SESSION_dup(const SSLSession *session,
80
+ int dup_flags) {
81
+ UniquePtr<SSLSession> new_session = ssl_session_new(session->x509_method);
82
+ if (!new_session) {
83
+ return nullptr;
84
+ }
85
+
86
+ new_session->is_server = session->is_server;
87
+ new_session->ssl_version = session->ssl_version;
88
+ new_session->is_quic = session->is_quic;
89
+ new_session->sid_ctx = session->sid_ctx;
90
+
91
+ // Copy the key material.
92
+ new_session->secret = session->secret;
93
+ new_session->cipher = session->cipher;
94
+
95
+ // Copy authentication state.
96
+ if (session->psk_identity != nullptr) {
97
+ new_session->psk_identity.reset(
98
+ OPENSSL_strdup(session->psk_identity.get()));
99
+ if (new_session->psk_identity == nullptr) {
100
+ return nullptr;
101
+ }
102
+ }
103
+ new_session->peer_cert_type = session->peer_cert_type;
104
+ if (session->certs != nullptr) {
105
+ new_session->certs.reset(sk_CRYPTO_BUFFER_deep_copy(
106
+ session->certs.get(), CRYPTO_BUFFER_dup_ref, CRYPTO_BUFFER_free));
107
+ if (new_session->certs == nullptr) {
108
+ return nullptr;
109
+ }
110
+ }
111
+ if (session->peer_raw_public_key != nullptr) {
112
+ new_session->peer_raw_public_key = UpRef(session->peer_raw_public_key);
113
+ }
114
+
115
+ if (!session->x509_method->session_dup(new_session.get(), session)) {
116
+ return nullptr;
117
+ }
118
+
119
+ new_session->verify_result = session->verify_result;
120
+
121
+ new_session->ocsp_response = UpRef(session->ocsp_response);
122
+ new_session->signed_cert_timestamp_list =
123
+ UpRef(session->signed_cert_timestamp_list);
124
+
125
+ OPENSSL_memcpy(new_session->peer_sha256, session->peer_sha256,
126
+ SHA256_DIGEST_LENGTH);
127
+ new_session->peer_sha256_valid = session->peer_sha256_valid;
128
+
129
+ new_session->peer_signature_algorithm = session->peer_signature_algorithm;
130
+
131
+ new_session->timeout = session->timeout;
132
+ new_session->auth_timeout = session->auth_timeout;
133
+ new_session->time = session->time;
134
+
135
+ // Copy non-authentication connection properties.
136
+ if (dup_flags & SSL_SESSION_INCLUDE_NONAUTH) {
137
+ new_session->session_id = session->session_id;
138
+ new_session->group_id = session->group_id;
139
+ new_session->original_handshake_hash = session->original_handshake_hash;
140
+ new_session->ticket_lifetime_hint = session->ticket_lifetime_hint;
141
+ new_session->ticket_age_add = session->ticket_age_add;
142
+ new_session->ticket_max_early_data = session->ticket_max_early_data;
143
+ new_session->extended_master_secret = session->extended_master_secret;
144
+ new_session->has_application_settings = session->has_application_settings;
145
+
146
+ if (!new_session->early_alpn.CopyFrom(session->early_alpn) ||
147
+ !new_session->quic_early_data_context.CopyFrom(
148
+ session->quic_early_data_context) ||
149
+ !new_session->local_application_settings.CopyFrom(
150
+ session->local_application_settings) ||
151
+ !new_session->peer_application_settings.CopyFrom(
152
+ session->peer_application_settings)) {
153
+ return nullptr;
154
+ }
155
+ }
156
+
157
+ // Copy the ticket.
158
+ if (dup_flags & SSL_SESSION_INCLUDE_TICKET &&
159
+ !new_session->ticket.CopyFrom(session->ticket)) {
160
+ return nullptr;
161
+ }
162
+
163
+ // The new_session does not get a copy of the ex_data.
164
+
165
+ new_session->not_resumable = true;
166
+ return new_session;
167
+ }
168
+
169
+ void ssl_session_rebase_time(SSLImpl *ssl, SSLSession *session) {
170
+ OPENSSL_timeval now = ssl_ctx_get_current_time(ssl->ctx.get());
171
+
172
+ // To avoid overflows and underflows, if we've gone back in time, update the
173
+ // time, but mark the session expired.
174
+ if (session->time > now.tv_sec) {
175
+ session->time = now.tv_sec;
176
+ session->timeout = 0;
177
+ session->auth_timeout = 0;
178
+ return;
179
+ }
180
+
181
+ // Adjust the session time and timeouts. If the session has already expired,
182
+ // clamp the timeouts at zero.
183
+ uint64_t delta = now.tv_sec - session->time;
184
+ session->time = now.tv_sec;
185
+ if (session->timeout < delta) {
186
+ session->timeout = 0;
187
+ } else {
188
+ session->timeout -= delta;
189
+ }
190
+ if (session->auth_timeout < delta) {
191
+ session->auth_timeout = 0;
192
+ } else {
193
+ session->auth_timeout -= delta;
194
+ }
195
+ }
196
+
197
+ void ssl_session_renew_timeout(SSLImpl *ssl, SSLSession *session,
198
+ uint32_t timeout) {
199
+ // Rebase the timestamp relative to the current time so `timeout` is measured
200
+ // correctly.
201
+ ssl_session_rebase_time(ssl, session);
202
+
203
+ if (session->timeout > timeout) {
204
+ return;
205
+ }
206
+
207
+ session->timeout = timeout;
208
+ if (session->timeout > session->auth_timeout) {
209
+ session->timeout = session->auth_timeout;
210
+ }
211
+ }
212
+
213
+ uint16_t ssl_session_protocol_version(const SSLSession *session) {
214
+ uint16_t ret;
215
+ if (!ssl_protocol_version_from_wire(&ret, session->ssl_version)) {
216
+ // An `SSL_SESSION` will never have an invalid version. This is enforced by
217
+ // the parser.
218
+ assert(0);
219
+ return 0;
220
+ }
221
+
222
+ return ret;
223
+ }
224
+
225
+ const EVP_MD *ssl_session_get_digest(const SSLSession *session) {
226
+ return ssl_get_handshake_digest(ssl_session_protocol_version(session),
227
+ session->cipher);
228
+ }
229
+
230
+ bool ssl_get_new_session(SSL_HANDSHAKE *hs) {
231
+ SSLImpl *const ssl = hs->ssl;
232
+ if (ssl->mode & SSL_MODE_NO_SESSION_CREATION) {
233
+ OPENSSL_PUT_ERROR(SSL, SSL_R_SESSION_MAY_NOT_BE_CREATED);
234
+ return false;
235
+ }
236
+
237
+ UniquePtr<SSLSession> session = ssl_session_new(ssl->ctx->x509_method);
238
+ if (session == nullptr) {
239
+ return false;
240
+ }
241
+
242
+ session->is_server = ssl->server;
243
+ session->ssl_version = ssl->s3->version;
244
+ session->is_quic = SSL_is_quic(ssl);
245
+
246
+ // Fill in the time from the `SSL_CTX`'s clock.
247
+ OPENSSL_timeval now = ssl_ctx_get_current_time(ssl->ctx.get());
248
+ session->time = now.tv_sec;
249
+
250
+ uint16_t version = ssl_protocol_version(ssl);
251
+ if (version >= TLS1_3_VERSION) {
252
+ // TLS 1.3 uses tickets as authenticators, so we are willing to use them for
253
+ // longer.
254
+ session->timeout = ssl->session_ctx->session_psk_dhe_timeout;
255
+ session->auth_timeout = SSL_DEFAULT_SESSION_AUTH_TIMEOUT;
256
+ } else {
257
+ // TLS 1.2 resumption does not incorporate new key material, so we use a
258
+ // much shorter timeout.
259
+ session->timeout = ssl->session_ctx->session_timeout;
260
+ session->auth_timeout = ssl->session_ctx->session_timeout;
261
+ }
262
+
263
+ if (!session->sid_ctx.TryCopyFrom(ssl_handshake_session_id_context(hs))) {
264
+ return false;
265
+ }
266
+
267
+ // The session is marked not resumable until it is completely filled in.
268
+ session->not_resumable = true;
269
+ session->verify_result = X509_V_ERR_INVALID_CALL;
270
+
271
+ hs->new_session = std::move(session);
272
+ ssl_set_session(ssl, nullptr);
273
+ return true;
274
+ }
275
+
276
+ bool ssl_ctx_rotate_ticket_encryption_key(SSLContext *ctx) {
277
+ OPENSSL_timeval now = ssl_ctx_get_current_time(ctx);
278
+ {
279
+ // Avoid acquiring a write lock in the common case (i.e. a non-default key
280
+ // is used or the default keys have not expired yet).
281
+ MutexReadLock lock(&ctx->lock);
282
+ if (ctx->ticket_key_current &&
283
+ (ctx->ticket_key_current->next_rotation_tv_sec == 0 ||
284
+ ctx->ticket_key_current->next_rotation_tv_sec > now.tv_sec) &&
285
+ (!ctx->ticket_key_prev ||
286
+ ctx->ticket_key_prev->next_rotation_tv_sec > now.tv_sec)) {
287
+ return true;
288
+ }
289
+ }
290
+
291
+ MutexWriteLock lock(&ctx->lock);
292
+ if (!ctx->ticket_key_current ||
293
+ (ctx->ticket_key_current->next_rotation_tv_sec != 0 &&
294
+ ctx->ticket_key_current->next_rotation_tv_sec <= now.tv_sec)) {
295
+ // The current key has not been initialized or it is expired.
296
+ auto new_key = bssl::MakeUnique<TicketKey>();
297
+ if (!new_key) {
298
+ return false;
299
+ }
300
+ RAND_bytes(new_key->name, 16);
301
+ RAND_bytes(new_key->hmac_key, 16);
302
+ RAND_bytes(new_key->aes_key, 16);
303
+ new_key->next_rotation_tv_sec =
304
+ now.tv_sec + SSL_DEFAULT_TICKET_KEY_ROTATION_INTERVAL;
305
+ if (ctx->ticket_key_current) {
306
+ // The current key expired. Rotate it to prev and bump up its rotation
307
+ // timestamp. Note that even with the new rotation time it may still be
308
+ // expired and get dropped below.
309
+ ctx->ticket_key_current->next_rotation_tv_sec +=
310
+ SSL_DEFAULT_TICKET_KEY_ROTATION_INTERVAL;
311
+ ctx->ticket_key_prev = std::move(ctx->ticket_key_current);
312
+ }
313
+ ctx->ticket_key_current = std::move(new_key);
314
+ }
315
+
316
+ // Drop an expired prev key.
317
+ if (ctx->ticket_key_prev &&
318
+ ctx->ticket_key_prev->next_rotation_tv_sec <= now.tv_sec) {
319
+ ctx->ticket_key_prev.reset();
320
+ }
321
+
322
+ return true;
323
+ }
324
+
325
+ static int ssl_encrypt_ticket_with_cipher_ctx(SSL_HANDSHAKE *hs, CBB *out,
326
+ const uint8_t *session_buf,
327
+ size_t session_len) {
328
+ ScopedEVP_CIPHER_CTX ctx;
329
+ ScopedHMAC_CTX hctx;
330
+
331
+ // If the session is too long, decline to send a ticket.
332
+ static const size_t kMaxTicketOverhead =
333
+ 16 + EVP_MAX_IV_LENGTH + EVP_MAX_BLOCK_LENGTH + EVP_MAX_MD_SIZE;
334
+ if (session_len > 0xffff - kMaxTicketOverhead) {
335
+ return 1;
336
+ }
337
+
338
+ // Initialize HMAC and cipher contexts. If callback present it does all the
339
+ // work otherwise use generated values from parent ctx.
340
+ SSLContext *tctx = hs->ssl->session_ctx.get();
341
+ uint8_t iv[EVP_MAX_IV_LENGTH];
342
+ uint8_t key_name[16];
343
+ if (tctx->ticket_key_cb != nullptr) {
344
+ int ret = tctx->ticket_key_cb(hs->ssl, key_name, iv, ctx.get(), hctx.get(),
345
+ 1 /* encrypt */);
346
+ if (ret < 0) {
347
+ return 0;
348
+ }
349
+ if (ret == 0) {
350
+ // The caller requested to send no ticket, so write nothing to `out`.
351
+ return 1;
352
+ }
353
+ } else {
354
+ // Rotate ticket key if necessary.
355
+ if (!ssl_ctx_rotate_ticket_encryption_key(tctx)) {
356
+ return 0;
357
+ }
358
+ MutexReadLock lock(&tctx->lock);
359
+ if (!RAND_bytes(iv, 16) ||
360
+ !EVP_EncryptInit_ex(ctx.get(), EVP_aes_128_cbc(), nullptr,
361
+ tctx->ticket_key_current->aes_key, iv) ||
362
+ !HMAC_Init_ex(hctx.get(), tctx->ticket_key_current->hmac_key, 16,
363
+ tlsext_tick_md(), nullptr)) {
364
+ return 0;
365
+ }
366
+ OPENSSL_memcpy(key_name, tctx->ticket_key_current->name, 16);
367
+ }
368
+
369
+ uint8_t *ptr;
370
+ if (!CBB_add_bytes(out, key_name, 16) ||
371
+ !CBB_add_bytes(out, iv, EVP_CIPHER_CTX_iv_length(ctx.get())) ||
372
+ !CBB_reserve(out, &ptr, session_len + EVP_MAX_BLOCK_LENGTH)) {
373
+ return 0;
374
+ }
375
+
376
+ size_t total = 0;
377
+ if (CRYPTO_fuzzer_mode_enabled()) {
378
+ OPENSSL_memcpy(ptr, session_buf, session_len);
379
+ total = session_len;
380
+ } else {
381
+ size_t len;
382
+ if (!EVP_EncryptUpdate_ex(ctx.get(), ptr + total, &len,
383
+ session_len + EVP_MAX_BLOCK_LENGTH - total,
384
+ session_buf, session_len)) {
385
+ return 0;
386
+ }
387
+ total += len;
388
+ if (!EVP_EncryptFinal_ex2(ctx.get(), ptr + total, &len,
389
+ session_len + EVP_MAX_BLOCK_LENGTH - total)) {
390
+ return 0;
391
+ }
392
+ total += len;
393
+ }
394
+ if (!CBB_did_write(out, total)) {
395
+ return 0;
396
+ }
397
+
398
+ unsigned hlen;
399
+ if (!HMAC_Update(hctx.get(), CBB_data(out), CBB_len(out)) || //
400
+ !CBB_reserve(out, &ptr, EVP_MAX_MD_SIZE) || //
401
+ !HMAC_Final(hctx.get(), ptr, &hlen) || //
402
+ !CBB_did_write(out, hlen)) {
403
+ return 0;
404
+ }
405
+
406
+ return 1;
407
+ }
408
+
409
+ static int ssl_encrypt_ticket_with_method(SSL_HANDSHAKE *hs, CBB *out,
410
+ const uint8_t *session_buf,
411
+ size_t session_len) {
412
+ SSLImpl *const ssl = hs->ssl;
413
+ const SSL_TICKET_AEAD_METHOD *method = ssl->session_ctx->ticket_aead_method;
414
+ const size_t max_overhead = method->max_overhead(ssl);
415
+ const size_t max_out = session_len + max_overhead;
416
+ if (max_out < max_overhead) {
417
+ OPENSSL_PUT_ERROR(SSL, ERR_R_OVERFLOW);
418
+ return 0;
419
+ }
420
+
421
+ uint8_t *ptr;
422
+ if (!CBB_reserve(out, &ptr, max_out)) {
423
+ return 0;
424
+ }
425
+
426
+ size_t out_len;
427
+ if (!method->seal(ssl, ptr, &out_len, max_out, session_buf, session_len)) {
428
+ OPENSSL_PUT_ERROR(SSL, SSL_R_TICKET_ENCRYPTION_FAILED);
429
+ return 0;
430
+ }
431
+
432
+ if (!CBB_did_write(out, out_len)) {
433
+ return 0;
434
+ }
435
+
436
+ return 1;
437
+ }
438
+
439
+ bool ssl_encrypt_ticket(SSL_HANDSHAKE *hs, CBB *out,
440
+ const SSLSession *session) {
441
+ // Serialize the SSL_SESSION to be encoded into the ticket.
442
+ uint8_t *session_buf = nullptr;
443
+ size_t session_len;
444
+ if (!SSL_SESSION_to_bytes_for_ticket(session, &session_buf, &session_len)) {
445
+ return false;
446
+ }
447
+ bssl::UniquePtr<uint8_t> free_session_buf(session_buf);
448
+
449
+ if (hs->ssl->session_ctx->ticket_aead_method) {
450
+ return ssl_encrypt_ticket_with_method(hs, out, session_buf, session_len);
451
+ } else {
452
+ return ssl_encrypt_ticket_with_cipher_ctx(hs, out, session_buf,
453
+ session_len);
454
+ }
455
+ }
456
+
457
+ SSLSessionType ssl_session_get_type(const SSLSession *session) {
458
+ if (session->not_resumable) {
459
+ return SSLSessionType::kNotResumable;
460
+ }
461
+ if (ssl_session_protocol_version(session) >= TLS1_3_VERSION) {
462
+ return session->ticket.empty() ? SSLSessionType::kNotResumable
463
+ : SSLSessionType::kPreSharedKey;
464
+ }
465
+ if (!session->ticket.empty()) {
466
+ return SSLSessionType::kTicket;
467
+ }
468
+ if (!session->session_id.empty()) {
469
+ return SSLSessionType::kID;
470
+ }
471
+ return SSLSessionType::kNotResumable;
472
+ }
473
+
474
+ bool ssl_session_is_context_valid(const SSL_HANDSHAKE *hs,
475
+ const SSLSession *session) {
476
+ return session != nullptr &&
477
+ Span(session->sid_ctx) == ssl_handshake_session_id_context(hs);
478
+ }
479
+
480
+ bool ssl_session_is_time_valid(const SSLImpl *ssl, const SSLSession *session) {
481
+ if (session == nullptr) {
482
+ return false;
483
+ }
484
+
485
+ OPENSSL_timeval now = ssl_ctx_get_current_time(ssl->ctx.get());
486
+
487
+ // Reject tickets from the future to avoid underflow.
488
+ if (now.tv_sec < session->time) {
489
+ return false;
490
+ }
491
+
492
+ return session->timeout > now.tv_sec - session->time;
493
+ }
494
+
495
+ bool ssl_session_is_resumable(const SSL_HANDSHAKE *hs,
496
+ const SSLSession *session) {
497
+ const SSLImpl *const ssl = hs->ssl;
498
+ return ssl_session_is_context_valid(hs, session) &&
499
+ // The session must have been created by the same type of end point as
500
+ // we're now using it with.
501
+ ssl->server == session->is_server &&
502
+ // The session must not be expired.
503
+ ssl_session_is_time_valid(ssl, session) &&
504
+ // Only resume if the session's version matches the negotiated
505
+ // version.
506
+ ssl->s3->version == session->ssl_version &&
507
+ // Only resume if the session's cipher matches the negotiated one. This
508
+ // is stricter than necessary for TLS 1.3, which allows cross-cipher
509
+ // resumption if the PRF hashes match. We require an exact match for
510
+ // simplicity. If loosening this, the 0-RTT accept logic must be
511
+ // updated to check the cipher.
512
+ hs->new_cipher == session->cipher &&
513
+ // If the session contains a client certificate/RPK (either the full
514
+ // certificate/RPK or just the hash) then require that the form of the
515
+ // certificate/RPK matches the current configuration.
516
+ (!ssl_session_has_peer_cred(session) ||
517
+ session->peer_sha256_valid ==
518
+ hs->config->retain_only_sha256_of_client_certs) &&
519
+ // Only resume if the underlying transport protocol hasn't changed.
520
+ // This is to prevent cross-protocol resumption between QUIC and TCP.
521
+ SSL_is_quic(ssl) == int{session->is_quic};
522
+ }
523
+
524
+ // ssl_lookup_session looks up `session_id` in the session cache and sets
525
+ // `*out_session` to an `SSL_SESSION` object if found.
526
+ static enum ssl_hs_wait_t ssl_lookup_session(SSL_HANDSHAKE *hs,
527
+ UniquePtr<SSLSession> *out_session,
528
+ Span<const uint8_t> session_id) {
529
+ SSLImpl *const ssl = hs->ssl;
530
+ out_session->reset();
531
+
532
+ if (session_id.empty() || session_id.size() > SSL_MAX_SSL_SESSION_ID_LENGTH) {
533
+ return ssl_hs_ok;
534
+ }
535
+
536
+ UniquePtr<SSLSession> session;
537
+ // Try the internal cache, if it exists.
538
+ if (!(ssl->session_ctx->session_cache_mode &
539
+ SSL_SESS_CACHE_NO_INTERNAL_LOOKUP)) {
540
+ uint32_t hash = ssl_hash_session_id(session_id);
541
+ // TODO(crbug.com/565766495): Use `SSLSession` when the lhash does.
542
+ auto cmp = [](const void *key, const SSL_SESSION *sess) -> int {
543
+ Span<const uint8_t> key_id =
544
+ *reinterpret_cast<const Span<const uint8_t> *>(key);
545
+ return key_id == FromOpaque(sess)->session_id ? 0 : 1;
546
+ };
547
+ MutexReadLock lock(&ssl->session_ctx->lock);
548
+ // `lh_SSL_SESSION_retrieve_key` returns a non-owning pointer.
549
+ session = UpRef(FromOpaque(lh_SSL_SESSION_retrieve_key(
550
+ ssl->session_ctx->sessions, &session_id, hash, cmp)));
551
+ // TODO(davidben): This should probably move it to the front of the list.
552
+ }
553
+
554
+ // Fall back to the external cache, if it exists.
555
+ if (!session && ssl->session_ctx->get_session_cb != nullptr) {
556
+ int copy = 1;
557
+ SSL_SESSION *cb_session = ssl->session_ctx->get_session_cb(
558
+ ssl, session_id.data(), session_id.size(), &copy);
559
+ if (cb_session == nullptr) {
560
+ return ssl_hs_ok;
561
+ }
562
+
563
+ if (cb_session == SSL_magic_pending_session_ptr()) {
564
+ // This pointer is not actually a session.
565
+ return ssl_hs_pending_session;
566
+ }
567
+ session.reset(FromOpaque(cb_session));
568
+
569
+ // Increment reference count now if the session callback asks us to do so
570
+ // (note that if the session structures returned by the callback are shared
571
+ // between threads, it must handle the reference count itself [i.e. copy ==
572
+ // 0], or things won't be thread-safe).
573
+ if (copy) {
574
+ SSL_SESSION_up_ref(session.get());
575
+ }
576
+
577
+ // Add the externally cached session to the internal cache if necessary.
578
+ if (!(ssl->session_ctx->session_cache_mode &
579
+ SSL_SESS_CACHE_NO_INTERNAL_STORE)) {
580
+ SSL_CTX_add_session(ssl->session_ctx.get(), session.get());
581
+ }
582
+ }
583
+
584
+ if (session && !ssl_session_is_time_valid(ssl, session.get())) {
585
+ // The session was from the cache, so remove it.
586
+ SSL_CTX_remove_session(ssl->session_ctx.get(), session.get());
587
+ session.reset();
588
+ }
589
+
590
+ *out_session = std::move(session);
591
+ return ssl_hs_ok;
592
+ }
593
+
594
+ enum ssl_hs_wait_t ssl_get_prev_session(SSL_HANDSHAKE *hs,
595
+ UniquePtr<SSLSession> *out_session,
596
+ bool *out_tickets_supported,
597
+ bool *out_renew_ticket,
598
+ const SSL_CLIENT_HELLO *client_hello) {
599
+ // This is used only by servers.
600
+ assert(hs->ssl->server);
601
+ UniquePtr<SSLSession> session;
602
+ bool renew_ticket = false;
603
+
604
+ // If tickets are disabled, always behave as if no tickets are present.
605
+ CBS ticket;
606
+ const bool tickets_supported =
607
+ !(SSL_get_options(hs->ssl) & SSL_OP_NO_TICKET) &&
608
+ ssl_client_hello_get_extension(client_hello, &ticket,
609
+ TLSEXT_TYPE_session_ticket);
610
+ if (tickets_supported && CBS_len(&ticket) != 0) {
611
+ switch (ssl_process_ticket(
612
+ hs, &session, &renew_ticket, ticket,
613
+ Span(client_hello->session_id, client_hello->session_id_len),
614
+ /*save_ticket=*/false)) {
615
+ case ssl_ticket_aead_success:
616
+ break;
617
+ case ssl_ticket_aead_ignore_ticket:
618
+ assert(!session);
619
+ break;
620
+ case ssl_ticket_aead_error:
621
+ return ssl_hs_error;
622
+ case ssl_ticket_aead_retry:
623
+ return ssl_hs_pending_ticket;
624
+ }
625
+ } else {
626
+ // The client didn't send a ticket, so the session ID is a real ID.
627
+ enum ssl_hs_wait_t lookup_ret = ssl_lookup_session(
628
+ hs, &session,
629
+ Span(client_hello->session_id, client_hello->session_id_len));
630
+ if (lookup_ret != ssl_hs_ok) {
631
+ return lookup_ret;
632
+ }
633
+ }
634
+
635
+ *out_session = std::move(session);
636
+ *out_tickets_supported = tickets_supported;
637
+ *out_renew_ticket = renew_ticket;
638
+ return ssl_hs_ok;
639
+ }
640
+
641
+ static bool remove_session(SSLContext *ctx, SSLSession *session, bool lock) {
642
+ if (session == nullptr || session->session_id.empty()) {
643
+ return false;
644
+ }
645
+
646
+ if (lock) {
647
+ ctx->lock.LockWrite();
648
+ }
649
+
650
+ // TODO(crbug.com/565766495): Use `SSLSession` when the lhash does.
651
+ SSL_SESSION *found_session = lh_SSL_SESSION_retrieve(ctx->sessions, session);
652
+ bool found = found_session == session;
653
+ if (found) {
654
+ found_session = lh_SSL_SESSION_delete(ctx->sessions, session);
655
+ SSL_SESSION_list_remove(ctx, session);
656
+ }
657
+
658
+ if (lock) {
659
+ ctx->lock.UnlockWrite();
660
+ }
661
+
662
+ if (found) {
663
+ // TODO(https://crbug.com/boringssl/251): Callbacks should not be called
664
+ // under a lock.
665
+ if (ctx->remove_session_cb != nullptr) {
666
+ ctx->remove_session_cb(ctx, found_session);
667
+ }
668
+ SSL_SESSION_free(found_session);
669
+ }
670
+
671
+ return found;
672
+ }
673
+
674
+ void ssl_set_session(SSLImpl *ssl, SSLSession *session) {
675
+ if (ssl->session.get() == session) {
676
+ return;
677
+ }
678
+
679
+ ssl->session = UpRef(session);
680
+ }
681
+
682
+ // locked by SSL_CTX in the calling function
683
+ static void SSL_SESSION_list_remove(SSLContext *ctx, SSLSession *session) {
684
+ if (session->next == nullptr || session->prev == nullptr) {
685
+ return;
686
+ }
687
+
688
+ if (session->next == (SSLSession *)&ctx->session_cache_tail) {
689
+ // last element in list
690
+ if (session->prev == (SSLSession *)&ctx->session_cache_head) {
691
+ // only one element in list
692
+ ctx->session_cache_head = nullptr;
693
+ ctx->session_cache_tail = nullptr;
694
+ } else {
695
+ ctx->session_cache_tail = session->prev;
696
+ session->prev->next = (SSLSession *)&(ctx->session_cache_tail);
697
+ }
698
+ } else {
699
+ if (session->prev == (SSLSession *)&ctx->session_cache_head) {
700
+ // first element in list
701
+ ctx->session_cache_head = session->next;
702
+ session->next->prev = (SSLSession *)&(ctx->session_cache_head);
703
+ } else { // middle of list
704
+ session->next->prev = session->prev;
705
+ session->prev->next = session->next;
706
+ }
707
+ }
708
+ session->prev = session->next = nullptr;
709
+ }
710
+
711
+ static void SSL_SESSION_list_add(SSLContext *ctx, SSLSession *session) {
712
+ if (session->next != nullptr && session->prev != nullptr) {
713
+ SSL_SESSION_list_remove(ctx, session);
714
+ }
715
+
716
+ if (ctx->session_cache_head == nullptr) {
717
+ ctx->session_cache_head = session;
718
+ ctx->session_cache_tail = session;
719
+ session->prev = (SSLSession *)&(ctx->session_cache_head);
720
+ session->next = (SSLSession *)&(ctx->session_cache_tail);
721
+ } else {
722
+ session->next = ctx->session_cache_head;
723
+ session->next->prev = session;
724
+ session->prev = (SSLSession *)&(ctx->session_cache_head);
725
+ ctx->session_cache_head = session;
726
+ }
727
+ }
728
+
729
+ static bool add_session_locked(SSLContext *ctx, UniquePtr<SSLSession> session) {
730
+ SSLSession *new_session = session.get();
731
+
732
+ // Sessions have intrusive linked lists, so they cannot be stored in two
733
+ // SSLContexts at once.
734
+ // TODO(crbug.com/527997772): Remove this restriction.
735
+ if ((new_session->prev != nullptr || new_session->next != nullptr)) {
736
+ return false;
737
+ }
738
+
739
+ // TODO(crbug.com/565766495): Use `SSLSession` when the lhash does.
740
+ SSL_SESSION *old_session_opaque;
741
+ if (!lh_SSL_SESSION_insert(ctx->sessions, &old_session_opaque, new_session)) {
742
+ return false;
743
+ }
744
+ SSLSession *old_session = FromOpaque(old_session_opaque);
745
+ // `ctx->sessions` took ownership of `new_session` and gave us back a
746
+ // reference to `old_session`. (`old_session` may be the same as
747
+ // `new_session`, in which case we traded identical references with
748
+ // `ctx->sessions`.)
749
+ session.release();
750
+ session.reset(old_session);
751
+
752
+ if (old_session != nullptr) {
753
+ // The session cannot have been in the session, due to the check above.
754
+ // TODO(crbug.com/527997772): Revisit this when we remove the check.
755
+ BSSL_CHECK(old_session != new_session);
756
+
757
+ // There was a session ID collision. `old_session` was replaced with
758
+ // `session` in the hash table, so `old_session` must be removed from the
759
+ // linked list to match.
760
+ SSL_SESSION_list_remove(ctx, old_session);
761
+ }
762
+
763
+ // This does not increment the reference count. Although `session` is inserted
764
+ // into two structures (a doubly-linked list and the hash table), `ctx` only
765
+ // takes one reference.
766
+ SSL_SESSION_list_add(ctx, new_session);
767
+
768
+ // Enforce any cache size limits.
769
+ if (SSL_CTX_sess_get_cache_size(ctx) > 0) {
770
+ while (lh_SSL_SESSION_num_items(ctx->sessions) >
771
+ SSL_CTX_sess_get_cache_size(ctx)) {
772
+ if (!remove_session(ctx, ctx->session_cache_tail,
773
+ /*lock=*/false)) {
774
+ break;
775
+ }
776
+ }
777
+ }
778
+
779
+ return true;
780
+ }
781
+
782
+ void ssl_update_cache(SSLImpl *ssl) {
783
+ SSLContext *ctx = ssl->session_ctx.get();
784
+ SSLSession *session = ssl->s3->established_session.get();
785
+ int mode = SSL_is_server(ssl) ? SSL_SESS_CACHE_SERVER : SSL_SESS_CACHE_CLIENT;
786
+ if (!SSL_SESSION_is_resumable(session) ||
787
+ (ctx->session_cache_mode & mode) != mode) {
788
+ return;
789
+ }
790
+
791
+ // Clients never use the internal session cache.
792
+ if (ssl->server &&
793
+ !(ctx->session_cache_mode & SSL_SESS_CACHE_NO_INTERNAL_STORE)) {
794
+ UniquePtr<SSLSession> ref = UpRef(session);
795
+ bool remove_expired_sessions = false;
796
+ {
797
+ MutexWriteLock lock(&ctx->lock);
798
+ add_session_locked(ctx, std::move(ref));
799
+
800
+ if (!(ctx->session_cache_mode & SSL_SESS_CACHE_NO_AUTO_CLEAR)) {
801
+ // Automatically flush the internal session cache every 255 connections.
802
+ ctx->handshakes_since_cache_flush++;
803
+ if (ctx->handshakes_since_cache_flush >= 255) {
804
+ remove_expired_sessions = true;
805
+ ctx->handshakes_since_cache_flush = 0;
806
+ }
807
+ }
808
+ }
809
+
810
+ if (remove_expired_sessions) {
811
+ // `SSL_CTX_flush_sessions` takes the lock we just released. We could
812
+ // merge the critical sections, but we'd then call user code under a
813
+ // lock, or compute `now` earlier, even when not flushing.
814
+ OPENSSL_timeval now = ssl_ctx_get_current_time(ssl->ctx.get());
815
+ SSL_CTX_flush_sessions(ctx, now.tv_sec);
816
+ }
817
+ }
818
+
819
+ if (ctx->new_session_cb != nullptr) {
820
+ UniquePtr<SSLSession> ref = UpRef(session);
821
+ if (ctx->new_session_cb(ssl, ref.get())) {
822
+ // `new_session_cb`'s return value signals whether it took ownership.
823
+ ref.release();
824
+ }
825
+ }
826
+ }
827
+
828
+ bool ssl_session_has_peer_cred(const SSLSession *session) {
829
+ return sk_CRYPTO_BUFFER_num(SSL_SESSION_get0_peer_certificates(session)) >
830
+ 0 ||
831
+ SSL_SESSION_get0_peer_rpk(session) != nullptr ||
832
+ session->peer_sha256_valid;
833
+ }
834
+
835
+ SSLSession *ssl_get_session(const SSLImpl *ssl) {
836
+ // Once the initial handshake completes, we return the most recently
837
+ // established session. In particular, if there is a pending renegotiation, we
838
+ // do not return information about it until it completes.
839
+ //
840
+ // Code in the handshake must either use `hs->new_session` (if updating a
841
+ // partial session) or `ssl_handshake_session` (if trying to query properties
842
+ // consistently across TLS 1.2 resumption and other handshakes).
843
+ if (ssl->s3->established_session != nullptr) {
844
+ return ssl->s3->established_session.get();
845
+ }
846
+
847
+ // Otherwise, we must be in the initial handshake.
848
+ SSL_HANDSHAKE *hs = ssl->s3->hs.get();
849
+ assert(hs != nullptr);
850
+ assert(!ssl->s3->initial_handshake_complete);
851
+
852
+ // Return the 0-RTT session, if in the 0-RTT state. While the handshake has
853
+ // not actually completed, the public accessors all report properties as if
854
+ // it has.
855
+ if (hs->early_session) {
856
+ return hs->early_session.get();
857
+ }
858
+
859
+ // Otherwise, return the partial session.
860
+ return const_cast<SSLSession *>(ssl_handshake_session(hs));
861
+ }
862
+
863
+ BSSL_NAMESPACE_END
864
+
865
+ using namespace bssl;
866
+
867
+ SSLSession::SSLSession(const SSL_X509_METHOD *method)
868
+ : RefCounted(CheckSubClass()),
869
+ x509_method(method),
870
+ extended_master_secret(false),
871
+ peer_sha256_valid(false),
872
+ not_resumable(false),
873
+ ticket_age_add_valid(false),
874
+ is_server(false),
875
+ is_quic(false),
876
+ has_application_settings(false),
877
+ is_resumable_across_names(false) {
878
+ CRYPTO_new_ex_data(&ex_data);
879
+ time = ::time(nullptr);
880
+ }
881
+
882
+ SSLSession::~SSLSession() {
883
+ CRYPTO_free_ex_data(&g_ex_data_class, &ex_data);
884
+ x509_method->session_clear(this);
885
+ }
886
+
887
+ SSL_SESSION *SSL_SESSION_new(const SSL_CTX *ctx) {
888
+ return ssl_session_new(FromOpaque(ctx)->x509_method).release();
889
+ }
890
+
891
+ int SSL_SESSION_up_ref(SSL_SESSION *session) {
892
+ FromOpaque(session)->UpRefInternal();
893
+ return 1;
894
+ }
895
+
896
+ void SSL_SESSION_free(SSL_SESSION *session) {
897
+ if (session == nullptr) {
898
+ return;
899
+ }
900
+ FromOpaque(session)->DecRefInternal();
901
+ }
902
+
903
+ const uint8_t *SSL_SESSION_get_id(const SSL_SESSION *session,
904
+ unsigned *out_len) {
905
+ const auto *session_impl = FromOpaque(session);
906
+ if (out_len != nullptr) {
907
+ *out_len = session_impl->session_id.size();
908
+ }
909
+ return session_impl->session_id.data();
910
+ }
911
+
912
+ int SSL_SESSION_set1_id(SSL_SESSION *session, const uint8_t *sid,
913
+ size_t sid_len) {
914
+ if (!FromOpaque(session)->session_id.TryCopyFrom(Span(sid, sid_len))) {
915
+ OPENSSL_PUT_ERROR(SSL, SSL_R_SSL_SESSION_ID_TOO_LONG);
916
+ return 0;
917
+ }
918
+
919
+ return 1;
920
+ }
921
+
922
+ uint32_t SSL_SESSION_get_timeout(const SSL_SESSION *session) {
923
+ return FromOpaque(session)->timeout;
924
+ }
925
+
926
+ uint64_t SSL_SESSION_get_time(const SSL_SESSION *session) {
927
+ if (session == nullptr) {
928
+ // NULL should crash, but silently accept it here for compatibility.
929
+ return 0;
930
+ }
931
+ return FromOpaque(session)->time;
932
+ }
933
+
934
+ X509 *SSL_SESSION_get0_peer(const SSL_SESSION *session) {
935
+ return FromOpaque(session)->x509_peer;
936
+ }
937
+
938
+ const STACK_OF(CRYPTO_BUFFER) *SSL_SESSION_get0_peer_certificates(
939
+ const SSL_SESSION *session) {
940
+ return FromOpaque(session)->certs.get();
941
+ }
942
+
943
+ EVP_PKEY *SSL_SESSION_get0_peer_rpk(const SSL_SESSION *session) {
944
+ return FromOpaque(session)->peer_raw_public_key.get();
945
+ }
946
+
947
+ void SSL_SESSION_get0_signed_cert_timestamp_list(const SSL_SESSION *session,
948
+ const uint8_t **out,
949
+ size_t *out_len) {
950
+ const auto *session_impl = FromOpaque(session);
951
+ if (session_impl->signed_cert_timestamp_list) {
952
+ *out = CRYPTO_BUFFER_data(session_impl->signed_cert_timestamp_list.get());
953
+ *out_len =
954
+ CRYPTO_BUFFER_len(session_impl->signed_cert_timestamp_list.get());
955
+ } else {
956
+ *out = nullptr;
957
+ *out_len = 0;
958
+ }
959
+ }
960
+
961
+ void SSL_SESSION_get0_ocsp_response(const SSL_SESSION *session,
962
+ const uint8_t **out, size_t *out_len) {
963
+ const auto *session_impl = FromOpaque(session);
964
+ if (session_impl->ocsp_response) {
965
+ *out = CRYPTO_BUFFER_data(session_impl->ocsp_response.get());
966
+ *out_len = CRYPTO_BUFFER_len(session_impl->ocsp_response.get());
967
+ } else {
968
+ *out = nullptr;
969
+ *out_len = 0;
970
+ }
971
+ }
972
+
973
+ size_t SSL_SESSION_get_master_key(const SSL_SESSION *session, uint8_t *out,
974
+ size_t max_out) {
975
+ const auto *session_impl = FromOpaque(session);
976
+ if (max_out == 0) {
977
+ return session_impl->secret.size();
978
+ }
979
+ if (max_out > session_impl->secret.size()) {
980
+ max_out = session_impl->secret.size();
981
+ }
982
+ OPENSSL_memcpy(out, session_impl->secret.data(), max_out);
983
+ return max_out;
984
+ }
985
+
986
+ uint64_t SSL_SESSION_set_time(SSL_SESSION *session, uint64_t time) {
987
+ if (session == nullptr) {
988
+ return 0;
989
+ }
990
+
991
+ FromOpaque(session)->time = time;
992
+ return time;
993
+ }
994
+
995
+ uint32_t SSL_SESSION_set_timeout(SSL_SESSION *session, uint32_t timeout) {
996
+ auto *session_impl = FromOpaque(session);
997
+ if (session_impl == nullptr) {
998
+ return 0;
999
+ }
1000
+
1001
+ session_impl->timeout = timeout;
1002
+ session_impl->auth_timeout = timeout;
1003
+ return 1;
1004
+ }
1005
+
1006
+ const uint8_t *SSL_SESSION_get0_id_context(const SSL_SESSION *session,
1007
+ unsigned *out_len) {
1008
+ const auto *session_impl = FromOpaque(session);
1009
+ if (out_len != nullptr) {
1010
+ *out_len = session_impl->sid_ctx.size();
1011
+ }
1012
+ return session_impl->sid_ctx.data();
1013
+ }
1014
+
1015
+ int SSL_SESSION_set1_id_context(SSL_SESSION *session, const uint8_t *sid_ctx,
1016
+ size_t sid_ctx_len) {
1017
+ if (!FromOpaque(session)->sid_ctx.TryCopyFrom(Span(sid_ctx, sid_ctx_len))) {
1018
+ OPENSSL_PUT_ERROR(SSL, SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG);
1019
+ return 0;
1020
+ }
1021
+
1022
+ return 1;
1023
+ }
1024
+
1025
+ int SSL_SESSION_should_be_single_use(const SSL_SESSION *session) {
1026
+ return ssl_session_protocol_version(FromOpaque(session)) >= TLS1_3_VERSION;
1027
+ }
1028
+
1029
+ int SSL_SESSION_is_resumable(const SSL_SESSION *session) {
1030
+ return ssl_session_get_type(FromOpaque(session)) !=
1031
+ SSLSessionType::kNotResumable;
1032
+ }
1033
+
1034
+ int SSL_SESSION_has_ticket(const SSL_SESSION *session) {
1035
+ return !FromOpaque(session)->ticket.empty();
1036
+ }
1037
+
1038
+ void SSL_SESSION_get0_ticket(const SSL_SESSION *session,
1039
+ const uint8_t **out_ticket, size_t *out_len) {
1040
+ const auto *session_impl = FromOpaque(session);
1041
+ if (out_ticket != nullptr) {
1042
+ *out_ticket = session_impl->ticket.data();
1043
+ }
1044
+ *out_len = session_impl->ticket.size();
1045
+ }
1046
+
1047
+ int SSL_SESSION_set_ticket(SSL_SESSION *session, const uint8_t *ticket,
1048
+ size_t ticket_len) {
1049
+ return FromOpaque(session)->ticket.CopyFrom(Span(ticket, ticket_len));
1050
+ }
1051
+
1052
+ uint32_t SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *session) {
1053
+ return FromOpaque(session)->ticket_lifetime_hint;
1054
+ }
1055
+
1056
+ const SSL_CIPHER *SSL_SESSION_get0_cipher(const SSL_SESSION *session) {
1057
+ return FromOpaque(session)->cipher;
1058
+ }
1059
+
1060
+ int SSL_SESSION_has_peer_sha256(const SSL_SESSION *session) {
1061
+ return FromOpaque(session)->peer_sha256_valid;
1062
+ }
1063
+
1064
+ void SSL_SESSION_get0_peer_sha256(const SSL_SESSION *session,
1065
+ const uint8_t **out_ptr, size_t *out_len) {
1066
+ const auto *session_impl = FromOpaque(session);
1067
+ if (session_impl->peer_sha256_valid) {
1068
+ *out_ptr = session_impl->peer_sha256;
1069
+ *out_len = sizeof(session_impl->peer_sha256);
1070
+ } else {
1071
+ *out_ptr = nullptr;
1072
+ *out_len = 0;
1073
+ }
1074
+ }
1075
+
1076
+ int SSL_SESSION_is_resumable_across_names(const SSL_SESSION *session) {
1077
+ return FromOpaque(session)->is_resumable_across_names;
1078
+ }
1079
+
1080
+ int SSL_SESSION_early_data_capable(const SSL_SESSION *session) {
1081
+ const auto *session_impl = FromOpaque(session);
1082
+ return ssl_session_protocol_version(session_impl) >= TLS1_3_VERSION &&
1083
+ session_impl->ticket_max_early_data != 0;
1084
+ }
1085
+
1086
+ SSL_SESSION *SSL_SESSION_copy_without_early_data(SSL_SESSION *session) {
1087
+ auto *session_impl = FromOpaque(session);
1088
+ if (!SSL_SESSION_early_data_capable(session)) {
1089
+ return UpRef(session).release();
1090
+ }
1091
+
1092
+ UniquePtr<SSLSession> copy =
1093
+ SSL_SESSION_dup(session_impl, SSL_SESSION_DUP_ALL);
1094
+ if (!copy) {
1095
+ return nullptr;
1096
+ }
1097
+
1098
+ copy->ticket_max_early_data = 0;
1099
+ // Copied sessions are non-resumable until they're completely filled in.
1100
+ copy->not_resumable = session_impl->not_resumable;
1101
+ assert(!SSL_SESSION_early_data_capable(copy.get()));
1102
+ return copy.release();
1103
+ }
1104
+
1105
+ SSL_SESSION *SSL_magic_pending_session_ptr() {
1106
+ return (SSL_SESSION *)&g_pending_session_magic;
1107
+ }
1108
+
1109
+ SSL_SESSION *SSL_get_session(const SSL *ssl) {
1110
+ return ssl_get_session(FromOpaque(ssl));
1111
+ }
1112
+
1113
+ SSL_SESSION *SSL_get1_session(SSL *ssl) {
1114
+ SSL_SESSION *ret = SSL_get_session(ssl);
1115
+ if (ret != nullptr) {
1116
+ SSL_SESSION_up_ref(ret);
1117
+ }
1118
+ return ret;
1119
+ }
1120
+
1121
+ int SSL_SESSION_get_ex_new_index(long argl, void *argp,
1122
+ CRYPTO_EX_unused *unused,
1123
+ CRYPTO_EX_dup *dup_unused,
1124
+ CRYPTO_EX_free *free_func) {
1125
+ return CRYPTO_get_ex_new_index_ex(&g_ex_data_class, argl, argp, free_func);
1126
+ }
1127
+
1128
+ int SSL_SESSION_set_ex_data(SSL_SESSION *session, int idx, void *arg) {
1129
+ return CRYPTO_set_ex_data(&FromOpaque(session)->ex_data, idx, arg);
1130
+ }
1131
+
1132
+ void *SSL_SESSION_get_ex_data(const SSL_SESSION *session, int idx) {
1133
+ return CRYPTO_get_ex_data(&FromOpaque(session)->ex_data, idx);
1134
+ }
1135
+
1136
+ int SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *session) {
1137
+ auto *ctx_impl = FromOpaque(ctx);
1138
+ UniquePtr<SSLSession> owned_session = UpRef(FromOpaque(session));
1139
+ MutexWriteLock lock(&ctx_impl->lock);
1140
+ return add_session_locked(ctx_impl, std::move(owned_session));
1141
+ }
1142
+
1143
+ int SSL_CTX_remove_session(SSL_CTX *ctx, SSL_SESSION *session) {
1144
+ return remove_session(FromOpaque(ctx), FromOpaque(session), /*lock=*/true);
1145
+ }
1146
+
1147
+ int SSL_set_session(SSL *ssl, SSL_SESSION *session) {
1148
+ auto *ssl_impl = FromOpaque(ssl);
1149
+ // SSL_set_session may only be called before the handshake has started.
1150
+ if (ssl_impl->s3->initial_handshake_complete || //
1151
+ ssl_impl->s3->hs == nullptr || //
1152
+ ssl_impl->s3->hs->state != 0) {
1153
+ abort();
1154
+ }
1155
+
1156
+ ssl_set_session(ssl_impl, FromOpaque(session));
1157
+ return 1;
1158
+ }
1159
+
1160
+ uint32_t SSL_CTX_set_timeout(SSL_CTX *ctx, uint32_t timeout) {
1161
+ if (ctx == nullptr) {
1162
+ return 0;
1163
+ }
1164
+
1165
+ // Historically, zero was treated as `SSL_DEFAULT_SESSION_TIMEOUT`.
1166
+ if (timeout == 0) {
1167
+ timeout = SSL_DEFAULT_SESSION_TIMEOUT;
1168
+ }
1169
+
1170
+ return std::exchange(FromOpaque(ctx)->session_timeout, timeout);
1171
+ }
1172
+
1173
+ uint32_t SSL_CTX_get_timeout(const SSL_CTX *ctx) {
1174
+ if (ctx == nullptr) {
1175
+ return 0;
1176
+ }
1177
+
1178
+ return FromOpaque(ctx)->session_timeout;
1179
+ }
1180
+
1181
+ void SSL_CTX_set_session_psk_dhe_timeout(SSL_CTX *ctx, uint32_t timeout) {
1182
+ FromOpaque(ctx)->session_psk_dhe_timeout = timeout;
1183
+ }
1184
+
1185
+ typedef struct timeout_param_st {
1186
+ SSLContext *ctx;
1187
+ uint64_t time;
1188
+ LHASH_OF(SSL_SESSION) *cache;
1189
+ } TIMEOUT_PARAM;
1190
+
1191
+ // TODO(crbug.com/565766495): Take `SSLSession` when the lhash does.
1192
+ static void timeout_doall_arg(SSL_SESSION *session, void *void_param) {
1193
+ TIMEOUT_PARAM *param = reinterpret_cast<TIMEOUT_PARAM *>(void_param);
1194
+ auto *session_impl = FromOpaque(session);
1195
+
1196
+ if (param->time == 0 || //
1197
+ session_impl->time + session_impl->timeout < session_impl->time || //
1198
+ param->time > (session_impl->time + session_impl->timeout)) {
1199
+ // TODO(davidben): This can probably just call `remove_session`.
1200
+ (void)lh_SSL_SESSION_delete(param->cache, session);
1201
+ SSL_SESSION_list_remove(param->ctx, session_impl);
1202
+ // TODO(https://crbug.com/boringssl/251): Callbacks should not be called
1203
+ // under a lock.
1204
+ if (param->ctx->remove_session_cb != nullptr) {
1205
+ param->ctx->remove_session_cb(param->ctx, session);
1206
+ }
1207
+ SSL_SESSION_free(session);
1208
+ }
1209
+ }
1210
+
1211
+ void SSL_CTX_flush_sessions(SSL_CTX *ctx, uint64_t time) {
1212
+ auto *ctx_impl = FromOpaque(ctx);
1213
+ TIMEOUT_PARAM tp;
1214
+ tp.ctx = ctx_impl;
1215
+ tp.cache = ctx_impl->sessions;
1216
+ if (tp.cache == nullptr) {
1217
+ return;
1218
+ }
1219
+ tp.time = time;
1220
+ MutexWriteLock lock(&ctx_impl->lock);
1221
+ lh_SSL_SESSION_doall_arg(tp.cache, timeout_doall_arg, &tp);
1222
+ }
1223
+
1224
+ void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx,
1225
+ int (*cb)(SSL *ssl, SSL_SESSION *session)) {
1226
+ FromOpaque(ctx)->new_session_cb = cb;
1227
+ }
1228
+
1229
+ int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx))(SSL *ssl, SSL_SESSION *session) {
1230
+ return FromOpaque(ctx)->new_session_cb;
1231
+ }
1232
+
1233
+ void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx,
1234
+ void (*cb)(SSL_CTX *ctx,
1235
+ SSL_SESSION *session)) {
1236
+ FromOpaque(ctx)->remove_session_cb = cb;
1237
+ }
1238
+
1239
+ void (*SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx))(SSL_CTX *ctx,
1240
+ SSL_SESSION *session) {
1241
+ return FromOpaque(ctx)->remove_session_cb;
1242
+ }
1243
+
1244
+ void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx,
1245
+ SSL_SESSION *(*cb)(SSL *ssl, const uint8_t *id,
1246
+ int id_len, int *out_copy)) {
1247
+ FromOpaque(ctx)->get_session_cb = cb;
1248
+ }
1249
+
1250
+ SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx))(SSL *ssl,
1251
+ const uint8_t *id,
1252
+ int id_len,
1253
+ int *out_copy) {
1254
+ return FromOpaque(ctx)->get_session_cb;
1255
+ }
1256
+
1257
+ void SSL_CTX_set_resumption_across_names_enabled(SSL_CTX *ctx, int enabled) {
1258
+ FromOpaque(ctx)->resumption_across_names_enabled = !!enabled;
1259
+ }
1260
+
1261
+ void SSL_set_resumption_across_names_enabled(SSL *ssl, int enabled) {
1262
+ FromOpaque(ssl)->resumption_across_names_enabled = !!enabled;
1263
+ }
1264
+
1265
+ void SSL_CTX_set_info_callback(SSL_CTX *ctx, void (*cb)(const SSL *ssl,
1266
+ int type, int value)) {
1267
+ FromOpaque(ctx)->info_callback = cb;
1268
+ }
1269
+
1270
+ void (*SSL_CTX_get_info_callback(SSL_CTX *ctx))(const SSL *ssl, int type,
1271
+ int value) {
1272
+ return FromOpaque(ctx)->info_callback;
1273
+ }