visaljs 0.0.1 → 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 (1008) hide show
  1. package/README.md +17 -1
  2. package/cli.js +565 -75
  3. package/node/include/js_node.h +28 -5
  4. package/node/include/js_uv.h +36 -0
  5. package/node/prelude/crypto.js +7 -10
  6. package/node/prelude/dns.js +99 -0
  7. package/node/prelude/dns_promises.js +10 -0
  8. package/node/prelude/http.js +1039 -195
  9. package/node/prelude/internal/crypto/asym.js +39 -12
  10. package/node/prelude/internal/crypto/dh_groups.js +12 -0
  11. package/node/prelude/internal/crypto/diffiehellman.js +354 -0
  12. package/node/prelude/internal/crypto/hash.js +1 -1
  13. package/node/prelude/internal/crypto/key_type.js +3 -0
  14. package/node/prelude/internal/crypto/keys.js +39 -9
  15. package/node/prelude/internal/http_agent.js +249 -0
  16. package/node/prelude/internal/net.js +33 -0
  17. package/node/prelude/internal/socketaddress.js +249 -0
  18. package/node/prelude/internal/tls/common.js +306 -0
  19. package/node/prelude/internal/tls/wrap.js +1217 -0
  20. package/node/prelude/internal/tls/x509.js +394 -0
  21. package/node/prelude/net.js +1083 -50
  22. package/node/prelude/stream.js +6 -0
  23. package/node/prelude/tls.js +141 -0
  24. package/node/prelude/util.js +5 -2
  25. package/node/prelude/util_types.js +85 -0
  26. package/node/src/host_http.c +268 -270
  27. package/node/src/host_loop.c +84 -0
  28. package/node/src/host_net.c +495 -0
  29. package/node/src/host_sys.c +16 -0
  30. package/package.json +1 -1
  31. package/runtime/include/js_builtins.h +16 -0
  32. package/runtime/include/js_console.h +2 -0
  33. package/runtime/include/js_core.def +23 -0
  34. package/runtime/include/js_crypto.h +23 -0
  35. package/runtime/include/js_generator.h +2 -3
  36. package/runtime/include/js_promise.h +0 -2
  37. package/runtime/src/async_iter.c +4 -1
  38. package/runtime/src/boringssl_support.cc +34 -0
  39. package/runtime/src/builtin_table.c +8 -0
  40. package/runtime/src/components.c +10 -0
  41. package/runtime/src/console.c +6 -18
  42. package/runtime/src/core_all.c +1 -0
  43. package/runtime/src/crypto_asym.c +450 -241
  44. package/runtime/src/crypto_bn.c +91 -0
  45. package/runtime/src/crypto_cipher.c +153 -75
  46. package/runtime/src/crypto_hash.c +68 -53
  47. package/runtime/src/crypto_internal.h +55 -26
  48. package/runtime/src/crypto_pkey.c +198 -61
  49. package/runtime/src/crypto_subtle.c +42 -16
  50. package/runtime/src/crypto_tls.c +678 -0
  51. package/runtime/src/generator.c +8 -1
  52. package/runtime/src/global.c +2 -4
  53. package/runtime/src/internal.h +0 -1
  54. package/runtime/src/jobs.c +2 -1
  55. package/runtime/src/promise.c +4 -1
  56. package/runtime/src/tls_roots.gen.h +3215 -0
  57. package/runtime/src/util_types.c +52 -0
  58. package/runtime/src/weak.c +2 -1
  59. package/runtime/third_party/boringssl/LICENSE +238 -0
  60. package/runtime/third_party/boringssl/README.md +46 -0
  61. package/runtime/third_party/boringssl/VERSION +1 -0
  62. package/runtime/third_party/boringssl/crypto/aes/aes.cc +44 -0
  63. package/runtime/third_party/boringssl/crypto/armv8_feature_parsing.h +67 -0
  64. package/runtime/third_party/boringssl/crypto/asn1/a_bitstr.cc +297 -0
  65. package/runtime/third_party/boringssl/crypto/asn1/a_bool.cc +50 -0
  66. package/runtime/third_party/boringssl/crypto/asn1/a_d2i_fp.cc +47 -0
  67. package/runtime/third_party/boringssl/crypto/asn1/a_dup.cc +42 -0
  68. package/runtime/third_party/boringssl/crypto/asn1/a_gentm.cc +130 -0
  69. package/runtime/third_party/boringssl/crypto/asn1/a_i2d_fp.cc +44 -0
  70. package/runtime/third_party/boringssl/crypto/asn1/a_int.cc +467 -0
  71. package/runtime/third_party/boringssl/crypto/asn1/a_mbstr.cc +242 -0
  72. package/runtime/third_party/boringssl/crypto/asn1/a_object.cc +191 -0
  73. package/runtime/third_party/boringssl/crypto/asn1/a_octet.cc +32 -0
  74. package/runtime/third_party/boringssl/crypto/asn1/a_strex.cc +411 -0
  75. package/runtime/third_party/boringssl/crypto/asn1/a_strnid.cc +208 -0
  76. package/runtime/third_party/boringssl/crypto/asn1/a_time.cc +248 -0
  77. package/runtime/third_party/boringssl/crypto/asn1/a_type.cc +467 -0
  78. package/runtime/third_party/boringssl/crypto/asn1/a_utctm.cc +128 -0
  79. package/runtime/third_party/boringssl/crypto/asn1/asn1_lib.cc +453 -0
  80. package/runtime/third_party/boringssl/crypto/asn1/asn1_par.cc +61 -0
  81. package/runtime/third_party/boringssl/crypto/asn1/asn_pack.cc +56 -0
  82. package/runtime/third_party/boringssl/crypto/asn1/f_int.cc +63 -0
  83. package/runtime/third_party/boringssl/crypto/asn1/f_string.cc +52 -0
  84. package/runtime/third_party/boringssl/crypto/asn1/internal.h +430 -0
  85. package/runtime/third_party/boringssl/crypto/asn1/posix_time.cc +244 -0
  86. package/runtime/third_party/boringssl/crypto/asn1/tasn_dec.cc +611 -0
  87. package/runtime/third_party/boringssl/crypto/asn1/tasn_enc.cc +348 -0
  88. package/runtime/third_party/boringssl/crypto/asn1/tasn_fre.cc +163 -0
  89. package/runtime/third_party/boringssl/crypto/asn1/tasn_new.cc +274 -0
  90. package/runtime/third_party/boringssl/crypto/asn1/tasn_typ.cc +92 -0
  91. package/runtime/third_party/boringssl/crypto/asn1/tasn_utl.cc +218 -0
  92. package/runtime/third_party/boringssl/crypto/base64/base64.cc +433 -0
  93. package/runtime/third_party/boringssl/crypto/bcm_support.h +62 -0
  94. package/runtime/third_party/boringssl/crypto/bio/bio.cc +715 -0
  95. package/runtime/third_party/boringssl/crypto/bio/bio_mem.cc +260 -0
  96. package/runtime/third_party/boringssl/crypto/bio/connect.cc +463 -0
  97. package/runtime/third_party/boringssl/crypto/bio/errno.cc +52 -0
  98. package/runtime/third_party/boringssl/crypto/bio/fd.cc +193 -0
  99. package/runtime/third_party/boringssl/crypto/bio/file.cc +283 -0
  100. package/runtime/third_party/boringssl/crypto/bio/hexdump.cc +154 -0
  101. package/runtime/third_party/boringssl/crypto/bio/internal.h +128 -0
  102. package/runtime/third_party/boringssl/crypto/bio/pair.cc +426 -0
  103. package/runtime/third_party/boringssl/crypto/bio/printf.cc +59 -0
  104. package/runtime/third_party/boringssl/crypto/bio/socket.cc +210 -0
  105. package/runtime/third_party/boringssl/crypto/bio/socket_helper.cc +179 -0
  106. package/runtime/third_party/boringssl/crypto/blake2/blake2.cc +173 -0
  107. package/runtime/third_party/boringssl/crypto/bn/bn_asn1.cc +57 -0
  108. package/runtime/third_party/boringssl/crypto/bn/convert.cc +409 -0
  109. package/runtime/third_party/boringssl/crypto/bn/div.cc +102 -0
  110. package/runtime/third_party/boringssl/crypto/bn/exponentiation.cc +168 -0
  111. package/runtime/third_party/boringssl/crypto/bn/sqrt.cc +93 -0
  112. package/runtime/third_party/boringssl/crypto/buf/buf.cc +119 -0
  113. package/runtime/third_party/boringssl/crypto/bytestring/asn1_compat.cc +54 -0
  114. package/runtime/third_party/boringssl/crypto/bytestring/ber.cc +268 -0
  115. package/runtime/third_party/boringssl/crypto/bytestring/cbb.cc +787 -0
  116. package/runtime/third_party/boringssl/crypto/bytestring/cbs.cc +977 -0
  117. package/runtime/third_party/boringssl/crypto/bytestring/internal.h +134 -0
  118. package/runtime/third_party/boringssl/crypto/bytestring/unicode.cc +156 -0
  119. package/runtime/third_party/boringssl/crypto/chacha/chacha.cc +226 -0
  120. package/runtime/third_party/boringssl/crypto/chacha/internal.h +103 -0
  121. package/runtime/third_party/boringssl/crypto/cipher/derive_key.cc +106 -0
  122. package/runtime/third_party/boringssl/crypto/cipher/e_aesctrhmac.cc +294 -0
  123. package/runtime/third_party/boringssl/crypto/cipher/e_aeseax.cc +351 -0
  124. package/runtime/third_party/boringssl/crypto/cipher/e_aesgcmsiv.cc +918 -0
  125. package/runtime/third_party/boringssl/crypto/cipher/e_chacha20poly1305.cc +404 -0
  126. package/runtime/third_party/boringssl/crypto/cipher/e_des.cc +214 -0
  127. package/runtime/third_party/boringssl/crypto/cipher/e_null.cc +55 -0
  128. package/runtime/third_party/boringssl/crypto/cipher/e_rc2.cc +432 -0
  129. package/runtime/third_party/boringssl/crypto/cipher/e_rc4.cc +56 -0
  130. package/runtime/third_party/boringssl/crypto/cipher/e_tls.cc +615 -0
  131. package/runtime/third_party/boringssl/crypto/cipher/get_cipher.cc +85 -0
  132. package/runtime/third_party/boringssl/crypto/cipher/internal.h +399 -0
  133. package/runtime/third_party/boringssl/crypto/cipher/tls_cbc.cc +476 -0
  134. package/runtime/third_party/boringssl/crypto/cms/cms.cc +178 -0
  135. package/runtime/third_party/boringssl/crypto/conf/conf.cc +637 -0
  136. package/runtime/third_party/boringssl/crypto/conf/internal.h +54 -0
  137. package/runtime/third_party/boringssl/crypto/cpu_aarch64_apple.cc +76 -0
  138. package/runtime/third_party/boringssl/crypto/cpu_aarch64_fuchsia.cc +58 -0
  139. package/runtime/third_party/boringssl/crypto/cpu_aarch64_linux.cc +66 -0
  140. package/runtime/third_party/boringssl/crypto/cpu_aarch64_openbsd.cc +45 -0
  141. package/runtime/third_party/boringssl/crypto/cpu_aarch64_sysreg.cc +66 -0
  142. package/runtime/third_party/boringssl/crypto/cpu_aarch64_win.cc +52 -0
  143. package/runtime/third_party/boringssl/crypto/cpu_arm_freebsd.cc +55 -0
  144. package/runtime/third_party/boringssl/crypto/cpu_arm_linux.cc +173 -0
  145. package/runtime/third_party/boringssl/crypto/cpu_arm_linux.h +141 -0
  146. package/runtime/third_party/boringssl/crypto/cpu_intel.cc +287 -0
  147. package/runtime/third_party/boringssl/crypto/crypto.cc +152 -0
  148. package/runtime/third_party/boringssl/crypto/curve25519/asm/x25519-asm-arm.S +2124 -0
  149. package/runtime/third_party/boringssl/crypto/curve25519/cpace.cc +227 -0
  150. package/runtime/third_party/boringssl/crypto/curve25519/curve25519.cc +2436 -0
  151. package/runtime/third_party/boringssl/crypto/curve25519/curve25519_64_adx.cc +18 -0
  152. package/runtime/third_party/boringssl/crypto/curve25519/curve25519_tables.h +3264 -0
  153. package/runtime/third_party/boringssl/crypto/curve25519/internal.h +202 -0
  154. package/runtime/third_party/boringssl/crypto/curve25519/spake25519.cc +532 -0
  155. package/runtime/third_party/boringssl/crypto/des/des.cc +837 -0
  156. package/runtime/third_party/boringssl/crypto/des/internal.h +144 -0
  157. package/runtime/third_party/boringssl/crypto/dh/dh_asn1.cc +109 -0
  158. package/runtime/third_party/boringssl/crypto/dh/params.cc +411 -0
  159. package/runtime/third_party/boringssl/crypto/digest/digest_extra.cc +361 -0
  160. package/runtime/third_party/boringssl/crypto/dsa/dsa.cc +922 -0
  161. package/runtime/third_party/boringssl/crypto/dsa/dsa_asn1.cc +306 -0
  162. package/runtime/third_party/boringssl/crypto/dsa/internal.h +56 -0
  163. package/runtime/third_party/boringssl/crypto/ec/ec_asn1.cc +542 -0
  164. package/runtime/third_party/boringssl/crypto/ec/ec_derive.cc +94 -0
  165. package/runtime/third_party/boringssl/crypto/ec/hash_to_curve.cc +773 -0
  166. package/runtime/third_party/boringssl/crypto/ec/internal.h +114 -0
  167. package/runtime/third_party/boringssl/crypto/ecdh/ecdh.cc +75 -0
  168. package/runtime/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.cc +337 -0
  169. package/runtime/third_party/boringssl/crypto/ecdsa/ecdsa_p1363.cc +54 -0
  170. package/runtime/third_party/boringssl/crypto/engine/engine.cc +95 -0
  171. package/runtime/third_party/boringssl/crypto/err/err.cc +820 -0
  172. package/runtime/third_party/boringssl/crypto/err/internal.h +45 -0
  173. package/runtime/third_party/boringssl/crypto/evp/evp.cc +454 -0
  174. package/runtime/third_party/boringssl/crypto/evp/evp_asn1.cc +439 -0
  175. package/runtime/third_party/boringssl/crypto/evp/evp_ctx.cc +541 -0
  176. package/runtime/third_party/boringssl/crypto/evp/evp_kem.cc +101 -0
  177. package/runtime/third_party/boringssl/crypto/evp/internal.h +427 -0
  178. package/runtime/third_party/boringssl/crypto/evp/p_dh.cc +326 -0
  179. package/runtime/third_party/boringssl/crypto/evp/p_dsa.cc +333 -0
  180. package/runtime/third_party/boringssl/crypto/evp/p_ec.cc +736 -0
  181. package/runtime/third_party/boringssl/crypto/evp/p_ed25519.cc +359 -0
  182. package/runtime/third_party/boringssl/crypto/evp/p_hkdf.cc +204 -0
  183. package/runtime/third_party/boringssl/crypto/evp/p_mldsa.cc +549 -0
  184. package/runtime/third_party/boringssl/crypto/evp/p_mlkem.cc +510 -0
  185. package/runtime/third_party/boringssl/crypto/evp/p_rsa.cc +1185 -0
  186. package/runtime/third_party/boringssl/crypto/evp/p_x25519.cc +371 -0
  187. package/runtime/third_party/boringssl/crypto/evp/p_xwing.cc +300 -0
  188. package/runtime/third_party/boringssl/crypto/evp/pbkdf.cc +105 -0
  189. package/runtime/third_party/boringssl/crypto/evp/print.cc +287 -0
  190. package/runtime/third_party/boringssl/crypto/evp/scrypt.cc +218 -0
  191. package/runtime/third_party/boringssl/crypto/evp/sign.cc +95 -0
  192. package/runtime/third_party/boringssl/crypto/ex_data.cc +140 -0
  193. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/aes.cc.inc +208 -0
  194. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/aes_nohw.cc.inc +1279 -0
  195. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/cbc.cc.inc +132 -0
  196. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/cfb.cc.inc +168 -0
  197. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/ctr.cc.inc +102 -0
  198. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/gcm.cc.inc +614 -0
  199. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/gcm_nohw.cc.inc +304 -0
  200. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/internal.h +590 -0
  201. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/key_wrap.cc.inc +211 -0
  202. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/mode_wrappers.cc.inc +97 -0
  203. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/ofb.cc.inc +55 -0
  204. package/runtime/third_party/boringssl/crypto/fipsmodule/bcm.cc +288 -0
  205. package/runtime/third_party/boringssl/crypto/fipsmodule/bcm_interface.h +953 -0
  206. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/add.cc.inc +276 -0
  207. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/asm/x86_64-gcc.cc.inc +573 -0
  208. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/bn.cc.inc +377 -0
  209. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/bytes.cc.inc +230 -0
  210. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/cmp.cc.inc +161 -0
  211. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/ctx.cc.inc +127 -0
  212. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/div.cc.inc +738 -0
  213. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/div_extra.cc.inc +90 -0
  214. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.cc.inc +743 -0
  215. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/gcd.cc.inc +281 -0
  216. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/gcd_extra.cc.inc +327 -0
  217. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/generic.cc.inc +579 -0
  218. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/internal.h +810 -0
  219. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/jacobi.cc.inc +101 -0
  220. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/montgomery.cc.inc +408 -0
  221. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/montgomery_inv.cc.inc +179 -0
  222. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/mul.cc.inc +347 -0
  223. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/prime.cc.inc +931 -0
  224. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/random.cc.inc +261 -0
  225. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.cc.inc +144 -0
  226. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.h +109 -0
  227. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/shift.cc.inc +317 -0
  228. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/sqrt.cc.inc +370 -0
  229. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/aead.cc.inc +619 -0
  230. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/cipher.cc.inc +837 -0
  231. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.cc.inc +1240 -0
  232. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/e_aesccm.cc.inc +440 -0
  233. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/internal.h +461 -0
  234. package/runtime/third_party/boringssl/crypto/fipsmodule/cmac/cmac.cc.inc +293 -0
  235. package/runtime/third_party/boringssl/crypto/fipsmodule/delocate.h +95 -0
  236. package/runtime/third_party/boringssl/crypto/fipsmodule/dh/check.cc.inc +198 -0
  237. package/runtime/third_party/boringssl/crypto/fipsmodule/dh/dh.cc.inc +401 -0
  238. package/runtime/third_party/boringssl/crypto/fipsmodule/dh/internal.h +63 -0
  239. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/digest.cc.inc +221 -0
  240. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/digests.cc.inc +184 -0
  241. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/internal.h +72 -0
  242. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/md32_common.h +166 -0
  243. package/runtime/third_party/boringssl/crypto/fipsmodule/digestsign/digestsign.cc.inc +230 -0
  244. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/builtin_curves.h +277 -0
  245. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/ec.cc.inc +1024 -0
  246. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/ec_key.cc.inc +536 -0
  247. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.cc.inc +379 -0
  248. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/felem.cc.inc +250 -0
  249. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/internal.h +752 -0
  250. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/oct.cc.inc +174 -0
  251. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256-nistz-table.h +9502 -0
  252. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256-nistz.cc.inc +740 -0
  253. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256-nistz.h +207 -0
  254. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256.cc.inc +578 -0
  255. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256_table.h +297 -0
  256. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/scalar.cc.inc +184 -0
  257. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/simple.cc.inc +246 -0
  258. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/simple_mul.cc.inc +274 -0
  259. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/util.cc.inc +258 -0
  260. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/wnaf.cc.inc +224 -0
  261. package/runtime/third_party/boringssl/crypto/fipsmodule/ecdh/ecdh.cc.inc +91 -0
  262. package/runtime/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.cc.inc +288 -0
  263. package/runtime/third_party/boringssl/crypto/fipsmodule/ecdsa/internal.h +57 -0
  264. package/runtime/third_party/boringssl/crypto/fipsmodule/entropy/internal.h +38 -0
  265. package/runtime/third_party/boringssl/crypto/fipsmodule/entropy/jitter.cc.inc +487 -0
  266. package/runtime/third_party/boringssl/crypto/fipsmodule/entropy/sha512.cc.inc +329 -0
  267. package/runtime/third_party/boringssl/crypto/fipsmodule/fips_shared_support.cc +28 -0
  268. package/runtime/third_party/boringssl/crypto/fipsmodule/hkdf/hkdf.cc.inc +114 -0
  269. package/runtime/third_party/boringssl/crypto/fipsmodule/hmac/hmac.cc.inc +218 -0
  270. package/runtime/third_party/boringssl/crypto/fipsmodule/keccak/internal.h +165 -0
  271. package/runtime/third_party/boringssl/crypto/fipsmodule/keccak/keccak.cc.inc +647 -0
  272. package/runtime/third_party/boringssl/crypto/fipsmodule/mldsa/fips_known_values.inc +1345 -0
  273. package/runtime/third_party/boringssl/crypto/fipsmodule/mldsa/mldsa.cc.inc +3323 -0
  274. package/runtime/third_party/boringssl/crypto/fipsmodule/mlkem/fips_known_values.inc +411 -0
  275. package/runtime/third_party/boringssl/crypto/fipsmodule/mlkem/mlkem.cc.inc +1856 -0
  276. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/android_entropy_client.cc.inc +82 -0
  277. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/ctrdrbg.cc.inc +401 -0
  278. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/internal.h +99 -0
  279. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/rand.cc.inc +486 -0
  280. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/internal.h +167 -0
  281. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/padding.cc.inc +371 -0
  282. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/rsa.cc.inc +996 -0
  283. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.cc.inc +1000 -0
  284. package/runtime/third_party/boringssl/crypto/fipsmodule/self_check/fips.cc.inc +129 -0
  285. package/runtime/third_party/boringssl/crypto/fipsmodule/self_check/self_check.cc.inc +1093 -0
  286. package/runtime/third_party/boringssl/crypto/fipsmodule/service_indicator/internal.h +112 -0
  287. package/runtime/third_party/boringssl/crypto/fipsmodule/service_indicator/service_indicator.cc.inc +330 -0
  288. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/internal.h +205 -0
  289. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/sha1.cc.inc +404 -0
  290. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/sha256.cc.inc +315 -0
  291. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/sha512.cc.inc +473 -0
  292. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/address.h +144 -0
  293. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/fips_known_values.inc +674 -0
  294. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/fors.cc.inc +179 -0
  295. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/fors.h +48 -0
  296. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/merkle.cc.inc +164 -0
  297. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/merkle.h +58 -0
  298. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/params.h +178 -0
  299. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +690 -0
  300. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/thash.cc.inc +326 -0
  301. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/thash.h +71 -0
  302. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/wots.cc.inc +172 -0
  303. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/wots.h +40 -0
  304. package/runtime/third_party/boringssl/crypto/fipsmodule/tls/internal.h +33 -0
  305. package/runtime/third_party/boringssl/crypto/fipsmodule/tls/kdf.cc.inc +180 -0
  306. package/runtime/third_party/boringssl/crypto/fuzzer_mode.cc +30 -0
  307. package/runtime/third_party/boringssl/crypto/hpke/hpke.cc +1514 -0
  308. package/runtime/third_party/boringssl/crypto/hrss/asm/poly_rq_mul.S +8489 -0
  309. package/runtime/third_party/boringssl/crypto/hrss/hrss.cc +2189 -0
  310. package/runtime/third_party/boringssl/crypto/hrss/internal.h +64 -0
  311. package/runtime/third_party/boringssl/crypto/internal.h +1767 -0
  312. package/runtime/third_party/boringssl/crypto/lhash/internal.h +222 -0
  313. package/runtime/third_party/boringssl/crypto/lhash/lhash.cc +312 -0
  314. package/runtime/third_party/boringssl/crypto/md4/md4.cc +207 -0
  315. package/runtime/third_party/boringssl/crypto/md5/internal.h +34 -0
  316. package/runtime/third_party/boringssl/crypto/md5/md5.cc +255 -0
  317. package/runtime/third_party/boringssl/crypto/mem.cc +577 -0
  318. package/runtime/third_party/boringssl/crypto/mem_internal.h +706 -0
  319. package/runtime/third_party/boringssl/crypto/mldsa/mldsa.cc +296 -0
  320. package/runtime/third_party/boringssl/crypto/mlkem/mlkem.cc +108 -0
  321. package/runtime/third_party/boringssl/crypto/obj/obj.cc +494 -0
  322. package/runtime/third_party/boringssl/crypto/obj/obj_dat.h +11722 -0
  323. package/runtime/third_party/boringssl/crypto/obj/obj_xref.cc +83 -0
  324. package/runtime/third_party/boringssl/crypto/params_internal.h +30 -0
  325. package/runtime/third_party/boringssl/crypto/pem/internal.h +135 -0
  326. package/runtime/third_party/boringssl/crypto/pem/pem_all.cc +153 -0
  327. package/runtime/third_party/boringssl/crypto/pem/pem_info.cc +250 -0
  328. package/runtime/third_party/boringssl/crypto/pem/pem_lib.cc +707 -0
  329. package/runtime/third_party/boringssl/crypto/pem/pem_oth.cc +45 -0
  330. package/runtime/third_party/boringssl/crypto/pem/pem_pk8.cc +211 -0
  331. package/runtime/third_party/boringssl/crypto/pem/pem_pkey.cc +147 -0
  332. package/runtime/third_party/boringssl/crypto/pem/pem_x509.cc +25 -0
  333. package/runtime/third_party/boringssl/crypto/pem/pem_xaux.cc +25 -0
  334. package/runtime/third_party/boringssl/crypto/pkcs7/internal.h +67 -0
  335. package/runtime/third_party/boringssl/crypto/pkcs7/pkcs7.cc +198 -0
  336. package/runtime/third_party/boringssl/crypto/pkcs7/pkcs7_x509.cc +527 -0
  337. package/runtime/third_party/boringssl/crypto/pkcs8/internal.h +98 -0
  338. package/runtime/third_party/boringssl/crypto/pkcs8/p5_pbev2.cc +286 -0
  339. package/runtime/third_party/boringssl/crypto/pkcs8/pkcs8.cc +473 -0
  340. package/runtime/third_party/boringssl/crypto/pkcs8/pkcs8_x509.cc +1328 -0
  341. package/runtime/third_party/boringssl/crypto/poly1305/internal.h +54 -0
  342. package/runtime/third_party/boringssl/crypto/poly1305/poly1305.cc +315 -0
  343. package/runtime/third_party/boringssl/crypto/poly1305/poly1305_arm.cc +294 -0
  344. package/runtime/third_party/boringssl/crypto/poly1305/poly1305_arm_asm.S +2017 -0
  345. package/runtime/third_party/boringssl/crypto/poly1305/poly1305_vec.cc +853 -0
  346. package/runtime/third_party/boringssl/crypto/pool/internal.h +95 -0
  347. package/runtime/third_party/boringssl/crypto/pool/pool.cc +282 -0
  348. package/runtime/third_party/boringssl/crypto/rand/deterministic.cc +58 -0
  349. package/runtime/third_party/boringssl/crypto/rand/fork_detect.cc +222 -0
  350. package/runtime/third_party/boringssl/crypto/rand/forkunsafe.cc +44 -0
  351. package/runtime/third_party/boringssl/crypto/rand/getentropy.cc +53 -0
  352. package/runtime/third_party/boringssl/crypto/rand/internal.h +67 -0
  353. package/runtime/third_party/boringssl/crypto/rand/ios.cc +35 -0
  354. package/runtime/third_party/boringssl/crypto/rand/rand.cc +79 -0
  355. package/runtime/third_party/boringssl/crypto/rand/trusty.cc +39 -0
  356. package/runtime/third_party/boringssl/crypto/rand/urandom.cc +149 -0
  357. package/runtime/third_party/boringssl/crypto/rand/windows.cc +91 -0
  358. package/runtime/third_party/boringssl/crypto/rc4/rc4.cc +56 -0
  359. package/runtime/third_party/boringssl/crypto/refcount.cc +49 -0
  360. package/runtime/third_party/boringssl/crypto/rsa/internal.h +51 -0
  361. package/runtime/third_party/boringssl/crypto/rsa/rsa_asn1.cc +404 -0
  362. package/runtime/third_party/boringssl/crypto/rsa/rsa_crypt.cc +530 -0
  363. package/runtime/third_party/boringssl/crypto/rsa/rsa_extra.cc +30 -0
  364. package/runtime/third_party/boringssl/crypto/rsa/rsa_print.cc +25 -0
  365. package/runtime/third_party/boringssl/crypto/sha/sha1.cc +55 -0
  366. package/runtime/third_party/boringssl/crypto/sha/sha256.cc +89 -0
  367. package/runtime/third_party/boringssl/crypto/sha/sha512.cc +106 -0
  368. package/runtime/third_party/boringssl/crypto/siphash/siphash.cc +81 -0
  369. package/runtime/third_party/boringssl/crypto/slhdsa/slhdsa.cc +167 -0
  370. package/runtime/third_party/boringssl/crypto/spake2plus/internal.h +204 -0
  371. package/runtime/third_party/boringssl/crypto/spake2plus/spake2plus.cc +501 -0
  372. package/runtime/third_party/boringssl/crypto/stack/stack.cc +462 -0
  373. package/runtime/third_party/boringssl/crypto/thread.cc +68 -0
  374. package/runtime/third_party/boringssl/crypto/thread_none.cc +48 -0
  375. package/runtime/third_party/boringssl/crypto/thread_pthread.cc +138 -0
  376. package/runtime/third_party/boringssl/crypto/thread_win.cc +227 -0
  377. package/runtime/third_party/boringssl/crypto/trust_token/internal.h +405 -0
  378. package/runtime/third_party/boringssl/crypto/trust_token/pmbtoken.cc +1672 -0
  379. package/runtime/third_party/boringssl/crypto/trust_token/trust_token.cc +701 -0
  380. package/runtime/third_party/boringssl/crypto/trust_token/voprf.cc +1266 -0
  381. package/runtime/third_party/boringssl/crypto/x509/a_digest.cc +52 -0
  382. package/runtime/third_party/boringssl/crypto/x509/a_sign.cc +100 -0
  383. package/runtime/third_party/boringssl/crypto/x509/a_verify.cc +77 -0
  384. package/runtime/third_party/boringssl/crypto/x509/algorithm.cc +167 -0
  385. package/runtime/third_party/boringssl/crypto/x509/asn1_gen.cc +540 -0
  386. package/runtime/third_party/boringssl/crypto/x509/by_dir.cc +301 -0
  387. package/runtime/third_party/boringssl/crypto/x509/by_file.cc +226 -0
  388. package/runtime/third_party/boringssl/crypto/x509/i2d_pr.cc +37 -0
  389. package/runtime/third_party/boringssl/crypto/x509/internal.h +697 -0
  390. package/runtime/third_party/boringssl/crypto/x509/name_print.cc +187 -0
  391. package/runtime/third_party/boringssl/crypto/x509/policy.cc +686 -0
  392. package/runtime/third_party/boringssl/crypto/x509/rsa_pss.cc +187 -0
  393. package/runtime/third_party/boringssl/crypto/x509/t_crl.cc +106 -0
  394. package/runtime/third_party/boringssl/crypto/x509/t_req.cc +206 -0
  395. package/runtime/third_party/boringssl/crypto/x509/t_x509.cc +292 -0
  396. package/runtime/third_party/boringssl/crypto/x509/t_x509a.cc +81 -0
  397. package/runtime/third_party/boringssl/crypto/x509/v3_akey.cc +174 -0
  398. package/runtime/third_party/boringssl/crypto/x509/v3_akeya.cc +31 -0
  399. package/runtime/third_party/boringssl/crypto/x509/v3_alt.cc +636 -0
  400. package/runtime/third_party/boringssl/crypto/x509/v3_bcons.cc +96 -0
  401. package/runtime/third_party/boringssl/crypto/x509/v3_bitst.cc +100 -0
  402. package/runtime/third_party/boringssl/crypto/x509/v3_conf.cc +369 -0
  403. package/runtime/third_party/boringssl/crypto/x509/v3_cpols.cc +417 -0
  404. package/runtime/third_party/boringssl/crypto/x509/v3_crld.cc +471 -0
  405. package/runtime/third_party/boringssl/crypto/x509/v3_enum.cc +74 -0
  406. package/runtime/third_party/boringssl/crypto/x509/v3_extku.cc +97 -0
  407. package/runtime/third_party/boringssl/crypto/x509/v3_genn.cc +238 -0
  408. package/runtime/third_party/boringssl/crypto/x509/v3_ia5.cc +83 -0
  409. package/runtime/third_party/boringssl/crypto/x509/v3_info.cc +162 -0
  410. package/runtime/third_party/boringssl/crypto/x509/v3_int.cc +83 -0
  411. package/runtime/third_party/boringssl/crypto/x509/v3_lib.cc +349 -0
  412. package/runtime/third_party/boringssl/crypto/x509/v3_ncons.cc +798 -0
  413. package/runtime/third_party/boringssl/crypto/x509/v3_ocsp.cc +92 -0
  414. package/runtime/third_party/boringssl/crypto/x509/v3_pcons.cc +102 -0
  415. package/runtime/third_party/boringssl/crypto/x509/v3_pmaps.cc +110 -0
  416. package/runtime/third_party/boringssl/crypto/x509/v3_prn.cc +183 -0
  417. package/runtime/third_party/boringssl/crypto/x509/v3_purp.cc +580 -0
  418. package/runtime/third_party/boringssl/crypto/x509/v3_skey.cc +128 -0
  419. package/runtime/third_party/boringssl/crypto/x509/v3_utl.cc +1311 -0
  420. package/runtime/third_party/boringssl/crypto/x509/x509.cc +47 -0
  421. package/runtime/third_party/boringssl/crypto/x509/x509_att.cc +188 -0
  422. package/runtime/third_party/boringssl/crypto/x509/x509_cmp.cc +243 -0
  423. package/runtime/third_party/boringssl/crypto/x509/x509_d2.cc +66 -0
  424. package/runtime/third_party/boringssl/crypto/x509/x509_def.cc +42 -0
  425. package/runtime/third_party/boringssl/crypto/x509/x509_ext.cc +161 -0
  426. package/runtime/third_party/boringssl/crypto/x509/x509_lu.cc +570 -0
  427. package/runtime/third_party/boringssl/crypto/x509/x509_mtc.cc +598 -0
  428. package/runtime/third_party/boringssl/crypto/x509/x509_obj.cc +169 -0
  429. package/runtime/third_party/boringssl/crypto/x509/x509_req.cc +248 -0
  430. package/runtime/third_party/boringssl/crypto/x509/x509_set.cc +166 -0
  431. package/runtime/third_party/boringssl/crypto/x509/x509_trs.cc +123 -0
  432. package/runtime/third_party/boringssl/crypto/x509/x509_txt.cc +147 -0
  433. package/runtime/third_party/boringssl/crypto/x509/x509_v3.cc +249 -0
  434. package/runtime/third_party/boringssl/crypto/x509/x509_vfy.cc +1531 -0
  435. package/runtime/third_party/boringssl/crypto/x509/x509_vpm.cc +449 -0
  436. package/runtime/third_party/boringssl/crypto/x509/x509cset.cc +222 -0
  437. package/runtime/third_party/boringssl/crypto/x509/x509name.cc +377 -0
  438. package/runtime/third_party/boringssl/crypto/x509/x509rset.cc +55 -0
  439. package/runtime/third_party/boringssl/crypto/x509/x509spki.cc +91 -0
  440. package/runtime/third_party/boringssl/crypto/x509/x_algor.cc +223 -0
  441. package/runtime/third_party/boringssl/crypto/x509/x_all.cc +352 -0
  442. package/runtime/third_party/boringssl/crypto/x509/x_attrib.cc +61 -0
  443. package/runtime/third_party/boringssl/crypto/x509/x_crl.cc +325 -0
  444. package/runtime/third_party/boringssl/crypto/x509/x_exten.cc +42 -0
  445. package/runtime/third_party/boringssl/crypto/x509/x_name.cc +407 -0
  446. package/runtime/third_party/boringssl/crypto/x509/x_pubkey.cc +199 -0
  447. package/runtime/third_party/boringssl/crypto/x509/x_req.cc +80 -0
  448. package/runtime/third_party/boringssl/crypto/x509/x_sig.cc +51 -0
  449. package/runtime/third_party/boringssl/crypto/x509/x_spki.cc +44 -0
  450. package/runtime/third_party/boringssl/crypto/x509/x_x509.cc +495 -0
  451. package/runtime/third_party/boringssl/crypto/x509/x_x509a.cc +169 -0
  452. package/runtime/third_party/boringssl/crypto/xwing/xwing.cc +257 -0
  453. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx2-x86_64-apple.S +1326 -0
  454. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx2-x86_64-linux.S +1327 -0
  455. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx512-x86_64-apple.S +1252 -0
  456. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx512-x86_64-linux.S +1253 -0
  457. package/runtime/third_party/boringssl/gen/bcm/aesni-gcm-x86_64-apple.S +873 -0
  458. package/runtime/third_party/boringssl/gen/bcm/aesni-gcm-x86_64-linux.S +885 -0
  459. package/runtime/third_party/boringssl/gen/bcm/aesni-x86-apple.S +2490 -0
  460. package/runtime/third_party/boringssl/gen/bcm/aesni-x86-linux.S +2530 -0
  461. package/runtime/third_party/boringssl/gen/bcm/aesni-x86_64-apple.S +2413 -0
  462. package/runtime/third_party/boringssl/gen/bcm/aesni-x86_64-linux.S +2397 -0
  463. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv7-linux.S +784 -0
  464. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv8-apple.S +792 -0
  465. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv8-linux.S +786 -0
  466. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv8-win.S +798 -0
  467. package/runtime/third_party/boringssl/gen/bcm/aesv8-gcm-armv8-apple.S +2912 -0
  468. package/runtime/third_party/boringssl/gen/bcm/aesv8-gcm-armv8-linux.S +2907 -0
  469. package/runtime/third_party/boringssl/gen/bcm/aesv8-gcm-armv8-win.S +2915 -0
  470. package/runtime/third_party/boringssl/gen/bcm/armv4-mont-linux.S +932 -0
  471. package/runtime/third_party/boringssl/gen/bcm/armv8-mont-apple.S +1440 -0
  472. package/runtime/third_party/boringssl/gen/bcm/armv8-mont-linux.S +1440 -0
  473. package/runtime/third_party/boringssl/gen/bcm/armv8-mont-win.S +1446 -0
  474. package/runtime/third_party/boringssl/gen/bcm/bn-586-apple.S +530 -0
  475. package/runtime/third_party/boringssl/gen/bcm/bn-586-linux.S +540 -0
  476. package/runtime/third_party/boringssl/gen/bcm/bn-armv8-apple.S +88 -0
  477. package/runtime/third_party/boringssl/gen/bcm/bn-armv8-linux.S +87 -0
  478. package/runtime/third_party/boringssl/gen/bcm/bn-armv8-win.S +87 -0
  479. package/runtime/third_party/boringssl/gen/bcm/bsaes-armv7-linux.S +1520 -0
  480. package/runtime/third_party/boringssl/gen/bcm/co-586-apple.S +1256 -0
  481. package/runtime/third_party/boringssl/gen/bcm/co-586-linux.S +1264 -0
  482. package/runtime/third_party/boringssl/gen/bcm/ghash-armv4-linux.S +242 -0
  483. package/runtime/third_party/boringssl/gen/bcm/ghash-neon-armv8-apple.S +337 -0
  484. package/runtime/third_party/boringssl/gen/bcm/ghash-neon-armv8-linux.S +335 -0
  485. package/runtime/third_party/boringssl/gen/bcm/ghash-neon-armv8-win.S +341 -0
  486. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86-apple.S +288 -0
  487. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86-linux.S +292 -0
  488. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86_64-apple.S +426 -0
  489. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86_64-linux.S +425 -0
  490. package/runtime/third_party/boringssl/gen/bcm/ghash-x86-apple.S +322 -0
  491. package/runtime/third_party/boringssl/gen/bcm/ghash-x86-linux.S +328 -0
  492. package/runtime/third_party/boringssl/gen/bcm/ghash-x86_64-apple.S +1134 -0
  493. package/runtime/third_party/boringssl/gen/bcm/ghash-x86_64-linux.S +1129 -0
  494. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv7-linux.S +244 -0
  495. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv8-apple.S +567 -0
  496. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv8-linux.S +563 -0
  497. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv8-win.S +571 -0
  498. package/runtime/third_party/boringssl/gen/bcm/p256-armv8-asm-apple.S +1744 -0
  499. package/runtime/third_party/boringssl/gen/bcm/p256-armv8-asm-linux.S +1725 -0
  500. package/runtime/third_party/boringssl/gen/bcm/p256-armv8-asm-win.S +1765 -0
  501. package/runtime/third_party/boringssl/gen/bcm/p256-x86_64-asm-apple.S +4544 -0
  502. package/runtime/third_party/boringssl/gen/bcm/p256-x86_64-asm-linux.S +4600 -0
  503. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-armv8-asm-apple.S +310 -0
  504. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-armv8-asm-linux.S +310 -0
  505. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-armv8-asm-win.S +310 -0
  506. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-x86_64-asm-apple.S +321 -0
  507. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-x86_64-asm-linux.S +335 -0
  508. package/runtime/third_party/boringssl/gen/bcm/rdrand-x86_64-apple.S +58 -0
  509. package/runtime/third_party/boringssl/gen/bcm/rdrand-x86_64-linux.S +57 -0
  510. package/runtime/third_party/boringssl/gen/bcm/rsaz-avx2-apple.S +1756 -0
  511. package/runtime/third_party/boringssl/gen/bcm/rsaz-avx2-linux.S +1751 -0
  512. package/runtime/third_party/boringssl/gen/bcm/sha1-586-apple.S +3782 -0
  513. package/runtime/third_party/boringssl/gen/bcm/sha1-586-linux.S +3788 -0
  514. package/runtime/third_party/boringssl/gen/bcm/sha1-armv4-large-linux.S +1479 -0
  515. package/runtime/third_party/boringssl/gen/bcm/sha1-armv8-apple.S +1219 -0
  516. package/runtime/third_party/boringssl/gen/bcm/sha1-armv8-linux.S +1218 -0
  517. package/runtime/third_party/boringssl/gen/bcm/sha1-armv8-win.S +1222 -0
  518. package/runtime/third_party/boringssl/gen/bcm/sha1-x86_64-apple.S +5454 -0
  519. package/runtime/third_party/boringssl/gen/bcm/sha1-x86_64-linux.S +5450 -0
  520. package/runtime/third_party/boringssl/gen/bcm/sha256-586-apple.S +5593 -0
  521. package/runtime/third_party/boringssl/gen/bcm/sha256-586-linux.S +5599 -0
  522. package/runtime/third_party/boringssl/gen/bcm/sha256-armv4-linux.S +2840 -0
  523. package/runtime/third_party/boringssl/gen/bcm/sha256-armv8-apple.S +1195 -0
  524. package/runtime/third_party/boringssl/gen/bcm/sha256-armv8-linux.S +1194 -0
  525. package/runtime/third_party/boringssl/gen/bcm/sha256-armv8-win.S +1198 -0
  526. package/runtime/third_party/boringssl/gen/bcm/sha256-x86_64-apple.S +4173 -0
  527. package/runtime/third_party/boringssl/gen/bcm/sha256-x86_64-linux.S +4170 -0
  528. package/runtime/third_party/boringssl/gen/bcm/sha512-586-apple.S +2406 -0
  529. package/runtime/third_party/boringssl/gen/bcm/sha512-586-linux.S +2410 -0
  530. package/runtime/third_party/boringssl/gen/bcm/sha512-armv4-linux.S +1857 -0
  531. package/runtime/third_party/boringssl/gen/bcm/sha512-armv8-apple.S +1598 -0
  532. package/runtime/third_party/boringssl/gen/bcm/sha512-armv8-linux.S +1597 -0
  533. package/runtime/third_party/boringssl/gen/bcm/sha512-armv8-win.S +1601 -0
  534. package/runtime/third_party/boringssl/gen/bcm/sha512-x86_64-apple.S +2979 -0
  535. package/runtime/third_party/boringssl/gen/bcm/sha512-x86_64-linux.S +2978 -0
  536. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv7-linux.S +1225 -0
  537. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv8-apple.S +1238 -0
  538. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv8-linux.S +1220 -0
  539. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv8-win.S +1256 -0
  540. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86-apple.S +680 -0
  541. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86-linux.S +706 -0
  542. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86_64-apple.S +1146 -0
  543. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86_64-linux.S +1133 -0
  544. package/runtime/third_party/boringssl/gen/bcm/x86-mont-apple.S +216 -0
  545. package/runtime/third_party/boringssl/gen/bcm/x86-mont-linux.S +218 -0
  546. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont-apple.S +1238 -0
  547. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont-linux.S +1237 -0
  548. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont5-apple.S +3644 -0
  549. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont5-linux.S +3628 -0
  550. package/runtime/third_party/boringssl/gen/boringssl_prefix_symbols_internal_x86_64_win_asm.inc +325 -0
  551. package/runtime/third_party/boringssl/gen/boringssl_prefix_symbols_internal_x86_win_asm.inc +325 -0
  552. package/runtime/third_party/boringssl/gen/crypto/aes128gcmsiv-x86_64-apple.S +3113 -0
  553. package/runtime/third_party/boringssl/gen/crypto/aes128gcmsiv-x86_64-linux.S +3091 -0
  554. package/runtime/third_party/boringssl/gen/crypto/chacha-armv4-linux.S +1450 -0
  555. package/runtime/third_party/boringssl/gen/crypto/chacha-armv8-apple.S +1969 -0
  556. package/runtime/third_party/boringssl/gen/crypto/chacha-armv8-linux.S +1967 -0
  557. package/runtime/third_party/boringssl/gen/crypto/chacha-armv8-win.S +1973 -0
  558. package/runtime/third_party/boringssl/gen/crypto/chacha-x86-apple.S +957 -0
  559. package/runtime/third_party/boringssl/gen/crypto/chacha-x86-linux.S +961 -0
  560. package/runtime/third_party/boringssl/gen/crypto/chacha-x86_64-apple.S +1608 -0
  561. package/runtime/third_party/boringssl/gen/crypto/chacha-x86_64-linux.S +1611 -0
  562. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_armv8-apple.S +3010 -0
  563. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_armv8-linux.S +3008 -0
  564. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_armv8-win.S +3014 -0
  565. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_x86_64-apple.S +8903 -0
  566. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_x86_64-linux.S +8940 -0
  567. package/runtime/third_party/boringssl/gen/crypto/err_data.cc +1578 -0
  568. package/runtime/third_party/boringssl/gen/crypto/md5-586-apple.S +684 -0
  569. package/runtime/third_party/boringssl/gen/crypto/md5-586-linux.S +686 -0
  570. package/runtime/third_party/boringssl/gen/crypto/md5-x86_64-apple.S +690 -0
  571. package/runtime/third_party/boringssl/gen/crypto/md5-x86_64-linux.S +695 -0
  572. package/runtime/third_party/boringssl/include/openssl/aead.h +650 -0
  573. package/runtime/third_party/boringssl/include/openssl/aes.h +173 -0
  574. package/runtime/third_party/boringssl/include/openssl/arm_arch.h +24 -0
  575. package/runtime/third_party/boringssl/include/openssl/asm_base.h +219 -0
  576. package/runtime/third_party/boringssl/include/openssl/asn1.h +2002 -0
  577. package/runtime/third_party/boringssl/include/openssl/asn1_mac.h +18 -0
  578. package/runtime/third_party/boringssl/include/openssl/asn1t.h +584 -0
  579. package/runtime/third_party/boringssl/include/openssl/base.h +548 -0
  580. package/runtime/third_party/boringssl/include/openssl/base64.h +156 -0
  581. package/runtime/third_party/boringssl/include/openssl/bio.h +1061 -0
  582. package/runtime/third_party/boringssl/include/openssl/blake2.h +63 -0
  583. package/runtime/third_party/boringssl/include/openssl/blowfish.h +58 -0
  584. package/runtime/third_party/boringssl/include/openssl/bn.h +986 -0
  585. package/runtime/third_party/boringssl/include/openssl/buf.h +95 -0
  586. package/runtime/third_party/boringssl/include/openssl/buffer.h +18 -0
  587. package/runtime/third_party/boringssl/include/openssl/bytestring.h +798 -0
  588. package/runtime/third_party/boringssl/include/openssl/cast.h +91 -0
  589. package/runtime/third_party/boringssl/include/openssl/chacha.h +47 -0
  590. package/runtime/third_party/boringssl/include/openssl/cipher.h +819 -0
  591. package/runtime/third_party/boringssl/include/openssl/cmac.h +91 -0
  592. package/runtime/third_party/boringssl/include/openssl/cms.h +147 -0
  593. package/runtime/third_party/boringssl/include/openssl/conf.h +136 -0
  594. package/runtime/third_party/boringssl/include/openssl/configuration.h +18 -0
  595. package/runtime/third_party/boringssl/include/openssl/cpu.h +18 -0
  596. package/runtime/third_party/boringssl/include/openssl/crypto.h +235 -0
  597. package/runtime/third_party/boringssl/include/openssl/ctrdrbg.h +116 -0
  598. package/runtime/third_party/boringssl/include/openssl/curve25519.h +309 -0
  599. package/runtime/third_party/boringssl/include/openssl/des.h +134 -0
  600. package/runtime/third_party/boringssl/include/openssl/dh.h +336 -0
  601. package/runtime/third_party/boringssl/include/openssl/digest.h +399 -0
  602. package/runtime/third_party/boringssl/include/openssl/dsa.h +392 -0
  603. package/runtime/third_party/boringssl/include/openssl/dtls1.h +16 -0
  604. package/runtime/third_party/boringssl/include/openssl/e_os2.h +18 -0
  605. package/runtime/third_party/boringssl/include/openssl/ec.h +530 -0
  606. package/runtime/third_party/boringssl/include/openssl/ec_key.h +358 -0
  607. package/runtime/third_party/boringssl/include/openssl/ecdh.h +67 -0
  608. package/runtime/third_party/boringssl/include/openssl/ecdsa.h +242 -0
  609. package/runtime/third_party/boringssl/include/openssl/engine.h +109 -0
  610. package/runtime/third_party/boringssl/include/openssl/err.h +416 -0
  611. package/runtime/third_party/boringssl/include/openssl/evp.h +1645 -0
  612. package/runtime/third_party/boringssl/include/openssl/evp_errors.h +66 -0
  613. package/runtime/third_party/boringssl/include/openssl/ex_data.h +117 -0
  614. package/runtime/third_party/boringssl/include/openssl/hkdf.h +68 -0
  615. package/runtime/third_party/boringssl/include/openssl/hmac.h +151 -0
  616. package/runtime/third_party/boringssl/include/openssl/hpke.h +456 -0
  617. package/runtime/third_party/boringssl/include/openssl/hrss.h +108 -0
  618. package/runtime/third_party/boringssl/include/openssl/is_boringssl.h +16 -0
  619. package/runtime/third_party/boringssl/include/openssl/kdf.h +92 -0
  620. package/runtime/third_party/boringssl/include/openssl/lhash.h +18 -0
  621. package/runtime/third_party/boringssl/include/openssl/md4.h +73 -0
  622. package/runtime/third_party/boringssl/include/openssl/md5.h +67 -0
  623. package/runtime/third_party/boringssl/include/openssl/mem.h +215 -0
  624. package/runtime/third_party/boringssl/include/openssl/mldsa.h +486 -0
  625. package/runtime/third_party/boringssl/include/openssl/mlkem.h +222 -0
  626. package/runtime/third_party/boringssl/include/openssl/nid.h +5561 -0
  627. package/runtime/third_party/boringssl/include/openssl/obj.h +225 -0
  628. package/runtime/third_party/boringssl/include/openssl/obj_mac.h +18 -0
  629. package/runtime/third_party/boringssl/include/openssl/objects.h +18 -0
  630. package/runtime/third_party/boringssl/include/openssl/opensslconf.h +108 -0
  631. package/runtime/third_party/boringssl/include/openssl/opensslv.h +18 -0
  632. package/runtime/third_party/boringssl/include/openssl/ossl_typ.h +18 -0
  633. package/runtime/third_party/boringssl/include/openssl/params.h +42 -0
  634. package/runtime/third_party/boringssl/include/openssl/pem.h +769 -0
  635. package/runtime/third_party/boringssl/include/openssl/pkcs12.h +18 -0
  636. package/runtime/third_party/boringssl/include/openssl/pkcs7.h +239 -0
  637. package/runtime/third_party/boringssl/include/openssl/pkcs8.h +267 -0
  638. package/runtime/third_party/boringssl/include/openssl/poly1305.h +52 -0
  639. package/runtime/third_party/boringssl/include/openssl/pool.h +137 -0
  640. package/runtime/third_party/boringssl/include/openssl/posix_time.h +51 -0
  641. package/runtime/third_party/boringssl/include/openssl/prefix_symbols.h +8000 -0
  642. package/runtime/third_party/boringssl/include/openssl/prefix_symbols_internal_S.h +633 -0
  643. package/runtime/third_party/boringssl/include/openssl/prefix_symbols_internal_c.h +329 -0
  644. package/runtime/third_party/boringssl/include/openssl/rand.h +138 -0
  645. package/runtime/third_party/boringssl/include/openssl/rc4.h +54 -0
  646. package/runtime/third_party/boringssl/include/openssl/ripemd.h +71 -0
  647. package/runtime/third_party/boringssl/include/openssl/rsa.h +893 -0
  648. package/runtime/third_party/boringssl/include/openssl/safestack.h +16 -0
  649. package/runtime/third_party/boringssl/include/openssl/service_indicator.h +19 -0
  650. package/runtime/third_party/boringssl/include/openssl/sha.h +108 -0
  651. package/runtime/third_party/boringssl/include/openssl/sha2.h +201 -0
  652. package/runtime/third_party/boringssl/include/openssl/siphash.h +37 -0
  653. package/runtime/third_party/boringssl/include/openssl/slhdsa.h +250 -0
  654. package/runtime/third_party/boringssl/include/openssl/span.h +376 -0
  655. package/runtime/third_party/boringssl/include/openssl/srtp.h +18 -0
  656. package/runtime/third_party/boringssl/include/openssl/ssl.h +7211 -0
  657. package/runtime/third_party/boringssl/include/openssl/ssl3.h +171 -0
  658. package/runtime/third_party/boringssl/include/openssl/stack.h +688 -0
  659. package/runtime/third_party/boringssl/include/openssl/target.h +246 -0
  660. package/runtime/third_party/boringssl/include/openssl/thread.h +114 -0
  661. package/runtime/third_party/boringssl/include/openssl/time.h +22 -0
  662. package/runtime/third_party/boringssl/include/openssl/tls1.h +263 -0
  663. package/runtime/third_party/boringssl/include/openssl/tls_prf.h +47 -0
  664. package/runtime/third_party/boringssl/include/openssl/trust_token.h +349 -0
  665. package/runtime/third_party/boringssl/include/openssl/type_check.h +37 -0
  666. package/runtime/third_party/boringssl/include/openssl/types.h +18 -0
  667. package/runtime/third_party/boringssl/include/openssl/x509.h +5404 -0
  668. package/runtime/third_party/boringssl/include/openssl/x509_vfy.h +18 -0
  669. package/runtime/third_party/boringssl/include/openssl/x509v3.h +63 -0
  670. package/runtime/third_party/boringssl/include/openssl/x509v3_errors.h +84 -0
  671. package/runtime/third_party/boringssl/include/openssl/xwing.h +115 -0
  672. package/runtime/third_party/boringssl/sources.json +696 -0
  673. package/runtime/third_party/boringssl/ssl/bio_ssl.cc +196 -0
  674. package/runtime/third_party/boringssl/ssl/d1_both.cc +1137 -0
  675. package/runtime/third_party/boringssl/ssl/d1_lib.cc +245 -0
  676. package/runtime/third_party/boringssl/ssl/d1_pkt.cc +322 -0
  677. package/runtime/third_party/boringssl/ssl/d1_srtp.cc +128 -0
  678. package/runtime/third_party/boringssl/ssl/dtls_method.cc +216 -0
  679. package/runtime/third_party/boringssl/ssl/dtls_record.cc +586 -0
  680. package/runtime/third_party/boringssl/ssl/encrypted_client_hello.cc +1110 -0
  681. package/runtime/third_party/boringssl/ssl/extensions.cc +5368 -0
  682. package/runtime/third_party/boringssl/ssl/handoff.cc +625 -0
  683. package/runtime/third_party/boringssl/ssl/handshake.cc +694 -0
  684. package/runtime/third_party/boringssl/ssl/handshake_client.cc +1958 -0
  685. package/runtime/third_party/boringssl/ssl/handshake_server.cc +1875 -0
  686. package/runtime/third_party/boringssl/ssl/internal.h +4506 -0
  687. package/runtime/third_party/boringssl/ssl/s3_both.cc +555 -0
  688. package/runtime/third_party/boringssl/ssl/s3_lib.cc +88 -0
  689. package/runtime/third_party/boringssl/ssl/s3_pkt.cc +396 -0
  690. package/runtime/third_party/boringssl/ssl/ssl_aead_ctx.cc +416 -0
  691. package/runtime/third_party/boringssl/ssl/ssl_asn1.cc +851 -0
  692. package/runtime/third_party/boringssl/ssl/ssl_buffer.cc +304 -0
  693. package/runtime/third_party/boringssl/ssl/ssl_cert.cc +723 -0
  694. package/runtime/third_party/boringssl/ssl/ssl_cipher.cc +1762 -0
  695. package/runtime/third_party/boringssl/ssl/ssl_credential.cc +913 -0
  696. package/runtime/third_party/boringssl/ssl/ssl_file.cc +375 -0
  697. package/runtime/third_party/boringssl/ssl/ssl_key_share.cc +445 -0
  698. package/runtime/third_party/boringssl/ssl/ssl_lib.cc +4132 -0
  699. package/runtime/third_party/boringssl/ssl/ssl_privkey.cc +973 -0
  700. package/runtime/third_party/boringssl/ssl/ssl_session.cc +1273 -0
  701. package/runtime/third_party/boringssl/ssl/ssl_stat.cc +162 -0
  702. package/runtime/third_party/boringssl/ssl/ssl_transcript.cc +224 -0
  703. package/runtime/third_party/boringssl/ssl/ssl_versions.cc +436 -0
  704. package/runtime/third_party/boringssl/ssl/ssl_x509.cc +1229 -0
  705. package/runtime/third_party/boringssl/ssl/t1_enc.cc +266 -0
  706. package/runtime/third_party/boringssl/ssl/tls13_both.cc +764 -0
  707. package/runtime/third_party/boringssl/ssl/tls13_client.cc +1325 -0
  708. package/runtime/third_party/boringssl/ssl/tls13_enc.cc +746 -0
  709. package/runtime/third_party/boringssl/ssl/tls13_server.cc +1623 -0
  710. package/runtime/third_party/boringssl/ssl/tls_method.cc +266 -0
  711. package/runtime/third_party/boringssl/ssl/tls_record.cc +524 -0
  712. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_curve25519_adx_mul.S +178 -0
  713. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_curve25519_adx_square.S +146 -0
  714. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_p256_adx_mul.S +177 -0
  715. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_p256_adx_sqr.S +166 -0
  716. package/runtime/third_party/boringssl/third_party/fiat/bedrock_unverified_bareminimum.c.inc +47 -0
  717. package/runtime/third_party/boringssl/third_party/fiat/bedrock_unverified_platform.c.inc +137 -0
  718. package/runtime/third_party/boringssl/third_party/fiat/curve25519_32.h +1571 -0
  719. package/runtime/third_party/boringssl/third_party/fiat/curve25519_64.h +978 -0
  720. package/runtime/third_party/boringssl/third_party/fiat/curve25519_64_adx.h +700 -0
  721. package/runtime/third_party/boringssl/third_party/fiat/curve25519_64_msvc.h +1281 -0
  722. package/runtime/third_party/boringssl/third_party/fiat/p256_32.h +4760 -0
  723. package/runtime/third_party/boringssl/third_party/fiat/p256_64.h +1984 -0
  724. package/runtime/third_party/boringssl/third_party/fiat/p256_64_msvc.h +1939 -0
  725. package/runtime/third_party/boringssl/third_party/fiat/p256_field.c.inc +26 -0
  726. package/runtime/third_party/boringssl/third_party/fiat/p256_field_32.br.c.inc +71 -0
  727. package/runtime/third_party/boringssl/third_party/fiat/p256_field_64.br.c.inc +84 -0
  728. package/runtime/third_party/boringssl/third_party/fiat/p256_point.br.c.inc +112 -0
  729. package/runtime/third_party/v8-ieee754/README.md +2 -1
  730. package/runtime/third_party/v8-ieee754/convert.py +4 -0
  731. package/runtime/third_party/v8-ieee754/ieee754.c +1 -1
  732. package/runtime/third_party/bearssl/LICENSE.txt +0 -21
  733. package/runtime/third_party/bearssl/README.txt +0 -136
  734. package/runtime/third_party/bearssl/VERSION +0 -1
  735. package/runtime/third_party/bearssl/inc/bearssl.h +0 -183
  736. package/runtime/third_party/bearssl/inc/bearssl_aead.h +0 -1059
  737. package/runtime/third_party/bearssl/inc/bearssl_block.h +0 -2618
  738. package/runtime/third_party/bearssl/inc/bearssl_ec.h +0 -967
  739. package/runtime/third_party/bearssl/inc/bearssl_hash.h +0 -1346
  740. package/runtime/third_party/bearssl/inc/bearssl_hmac.h +0 -241
  741. package/runtime/third_party/bearssl/inc/bearssl_kdf.h +0 -284
  742. package/runtime/third_party/bearssl/inc/bearssl_pem.h +0 -294
  743. package/runtime/third_party/bearssl/inc/bearssl_prf.h +0 -150
  744. package/runtime/third_party/bearssl/inc/bearssl_rand.h +0 -397
  745. package/runtime/third_party/bearssl/inc/bearssl_rsa.h +0 -1655
  746. package/runtime/third_party/bearssl/inc/bearssl_ssl.h +0 -4296
  747. package/runtime/third_party/bearssl/inc/bearssl_x509.h +0 -1474
  748. package/runtime/third_party/bearssl/src/aead/ccm.c +0 -346
  749. package/runtime/third_party/bearssl/src/aead/eax.c +0 -525
  750. package/runtime/third_party/bearssl/src/aead/gcm.c +0 -318
  751. package/runtime/third_party/bearssl/src/codec/ccopy.c +0 -44
  752. package/runtime/third_party/bearssl/src/codec/dec16be.c +0 -38
  753. package/runtime/third_party/bearssl/src/codec/dec16le.c +0 -38
  754. package/runtime/third_party/bearssl/src/codec/dec32be.c +0 -38
  755. package/runtime/third_party/bearssl/src/codec/dec32le.c +0 -38
  756. package/runtime/third_party/bearssl/src/codec/dec64be.c +0 -38
  757. package/runtime/third_party/bearssl/src/codec/dec64le.c +0 -38
  758. package/runtime/third_party/bearssl/src/codec/enc16be.c +0 -38
  759. package/runtime/third_party/bearssl/src/codec/enc16le.c +0 -38
  760. package/runtime/third_party/bearssl/src/codec/enc32be.c +0 -38
  761. package/runtime/third_party/bearssl/src/codec/enc32le.c +0 -38
  762. package/runtime/third_party/bearssl/src/codec/enc64be.c +0 -38
  763. package/runtime/third_party/bearssl/src/codec/enc64le.c +0 -38
  764. package/runtime/third_party/bearssl/src/codec/pemdec.c +0 -526
  765. package/runtime/third_party/bearssl/src/codec/pemdec.t0 +0 -314
  766. package/runtime/third_party/bearssl/src/codec/pemenc.c +0 -173
  767. package/runtime/third_party/bearssl/src/config.h +0 -247
  768. package/runtime/third_party/bearssl/src/ec/ec_all_m15.c +0 -121
  769. package/runtime/third_party/bearssl/src/ec/ec_all_m31.c +0 -171
  770. package/runtime/third_party/bearssl/src/ec/ec_c25519_i15.c +0 -398
  771. package/runtime/third_party/bearssl/src/ec/ec_c25519_i31.c +0 -390
  772. package/runtime/third_party/bearssl/src/ec/ec_c25519_m15.c +0 -1478
  773. package/runtime/third_party/bearssl/src/ec/ec_c25519_m31.c +0 -800
  774. package/runtime/third_party/bearssl/src/ec/ec_c25519_m62.c +0 -605
  775. package/runtime/third_party/bearssl/src/ec/ec_c25519_m64.c +0 -831
  776. package/runtime/third_party/bearssl/src/ec/ec_curve25519.c +0 -46
  777. package/runtime/third_party/bearssl/src/ec/ec_default.c +0 -36
  778. package/runtime/third_party/bearssl/src/ec/ec_keygen.c +0 -86
  779. package/runtime/third_party/bearssl/src/ec/ec_p256_m15.c +0 -2124
  780. package/runtime/third_party/bearssl/src/ec/ec_p256_m31.c +0 -1469
  781. package/runtime/third_party/bearssl/src/ec/ec_p256_m62.c +0 -1765
  782. package/runtime/third_party/bearssl/src/ec/ec_p256_m64.c +0 -1781
  783. package/runtime/third_party/bearssl/src/ec/ec_prime_i15.c +0 -824
  784. package/runtime/third_party/bearssl/src/ec/ec_prime_i31.c +0 -826
  785. package/runtime/third_party/bearssl/src/ec/ec_pubkey.c +0 -85
  786. package/runtime/third_party/bearssl/src/ec/ec_secp256r1.c +0 -51
  787. package/runtime/third_party/bearssl/src/ec/ec_secp384r1.c +0 -57
  788. package/runtime/third_party/bearssl/src/ec/ec_secp521r1.c +0 -64
  789. package/runtime/third_party/bearssl/src/ec/ecdsa_atr.c +0 -134
  790. package/runtime/third_party/bearssl/src/ec/ecdsa_default_sign_asn1.c +0 -36
  791. package/runtime/third_party/bearssl/src/ec/ecdsa_default_sign_raw.c +0 -36
  792. package/runtime/third_party/bearssl/src/ec/ecdsa_default_vrfy_asn1.c +0 -36
  793. package/runtime/third_party/bearssl/src/ec/ecdsa_default_vrfy_raw.c +0 -36
  794. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_bits.c +0 -47
  795. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_sign_asn1.c +0 -45
  796. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_sign_raw.c +0 -174
  797. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_vrfy_asn1.c +0 -48
  798. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_vrfy_raw.c +0 -166
  799. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_bits.c +0 -47
  800. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_sign_asn1.c +0 -45
  801. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_sign_raw.c +0 -173
  802. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_vrfy_asn1.c +0 -48
  803. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_vrfy_raw.c +0 -165
  804. package/runtime/third_party/bearssl/src/ec/ecdsa_rta.c +0 -121
  805. package/runtime/third_party/bearssl/src/hash/dig_oid.c +0 -84
  806. package/runtime/third_party/bearssl/src/hash/dig_size.c +0 -50
  807. package/runtime/third_party/bearssl/src/hash/ghash_ctmul.c +0 -345
  808. package/runtime/third_party/bearssl/src/hash/ghash_ctmul32.c +0 -251
  809. package/runtime/third_party/bearssl/src/hash/ghash_ctmul64.c +0 -154
  810. package/runtime/third_party/bearssl/src/hash/ghash_pclmul.c +0 -389
  811. package/runtime/third_party/bearssl/src/hash/ghash_pwr8.c +0 -411
  812. package/runtime/third_party/bearssl/src/hash/md5.c +0 -208
  813. package/runtime/third_party/bearssl/src/hash/md5sha1.c +0 -141
  814. package/runtime/third_party/bearssl/src/hash/mgf1.c +0 -56
  815. package/runtime/third_party/bearssl/src/hash/multihash.c +0 -166
  816. package/runtime/third_party/bearssl/src/hash/sha1.c +0 -191
  817. package/runtime/third_party/bearssl/src/hash/sha2big.c +0 -285
  818. package/runtime/third_party/bearssl/src/hash/sha2small.c +0 -341
  819. package/runtime/third_party/bearssl/src/inner.h +0 -2577
  820. package/runtime/third_party/bearssl/src/int/i15_add.c +0 -46
  821. package/runtime/third_party/bearssl/src/int/i15_bitlen.c +0 -44
  822. package/runtime/third_party/bearssl/src/int/i15_decmod.c +0 -124
  823. package/runtime/third_party/bearssl/src/int/i15_decode.c +0 -56
  824. package/runtime/third_party/bearssl/src/int/i15_decred.c +0 -100
  825. package/runtime/third_party/bearssl/src/int/i15_encode.c +0 -56
  826. package/runtime/third_party/bearssl/src/int/i15_fmont.c +0 -59
  827. package/runtime/third_party/bearssl/src/int/i15_iszero.c +0 -39
  828. package/runtime/third_party/bearssl/src/int/i15_moddiv.c +0 -465
  829. package/runtime/third_party/bearssl/src/int/i15_modpow.c +0 -50
  830. package/runtime/third_party/bearssl/src/int/i15_modpow2.c +0 -160
  831. package/runtime/third_party/bearssl/src/int/i15_montmul.c +0 -184
  832. package/runtime/third_party/bearssl/src/int/i15_mulacc.c +0 -61
  833. package/runtime/third_party/bearssl/src/int/i15_muladd.c +0 -173
  834. package/runtime/third_party/bearssl/src/int/i15_ninv15.c +0 -38
  835. package/runtime/third_party/bearssl/src/int/i15_reduce.c +0 -66
  836. package/runtime/third_party/bearssl/src/int/i15_rshift.c +0 -47
  837. package/runtime/third_party/bearssl/src/int/i15_sub.c +0 -46
  838. package/runtime/third_party/bearssl/src/int/i15_tmont.c +0 -36
  839. package/runtime/third_party/bearssl/src/int/i31_add.c +0 -46
  840. package/runtime/third_party/bearssl/src/int/i31_bitlen.c +0 -44
  841. package/runtime/third_party/bearssl/src/int/i31_decmod.c +0 -124
  842. package/runtime/third_party/bearssl/src/int/i31_decode.c +0 -57
  843. package/runtime/third_party/bearssl/src/int/i31_decred.c +0 -103
  844. package/runtime/third_party/bearssl/src/int/i31_encode.c +0 -79
  845. package/runtime/third_party/bearssl/src/int/i31_fmont.c +0 -60
  846. package/runtime/third_party/bearssl/src/int/i31_iszero.c +0 -39
  847. package/runtime/third_party/bearssl/src/int/i31_moddiv.c +0 -488
  848. package/runtime/third_party/bearssl/src/int/i31_modpow.c +0 -65
  849. package/runtime/third_party/bearssl/src/int/i31_modpow2.c +0 -160
  850. package/runtime/third_party/bearssl/src/int/i31_montmul.c +0 -127
  851. package/runtime/third_party/bearssl/src/int/i31_mulacc.c +0 -74
  852. package/runtime/third_party/bearssl/src/int/i31_muladd.c +0 -157
  853. package/runtime/third_party/bearssl/src/int/i31_ninv31.c +0 -39
  854. package/runtime/third_party/bearssl/src/int/i31_reduce.c +0 -66
  855. package/runtime/third_party/bearssl/src/int/i31_rshift.c +0 -47
  856. package/runtime/third_party/bearssl/src/int/i31_sub.c +0 -46
  857. package/runtime/third_party/bearssl/src/int/i31_tmont.c +0 -36
  858. package/runtime/third_party/bearssl/src/int/i32_add.c +0 -51
  859. package/runtime/third_party/bearssl/src/int/i32_bitlen.c +0 -44
  860. package/runtime/third_party/bearssl/src/int/i32_decmod.c +0 -77
  861. package/runtime/third_party/bearssl/src/int/i32_decode.c +0 -63
  862. package/runtime/third_party/bearssl/src/int/i32_decred.c +0 -107
  863. package/runtime/third_party/bearssl/src/int/i32_div32.c +0 -56
  864. package/runtime/third_party/bearssl/src/int/i32_encode.c +0 -72
  865. package/runtime/third_party/bearssl/src/int/i32_fmont.c +0 -60
  866. package/runtime/third_party/bearssl/src/int/i32_iszero.c +0 -39
  867. package/runtime/third_party/bearssl/src/int/i32_modpow.c +0 -65
  868. package/runtime/third_party/bearssl/src/int/i32_montmul.c +0 -69
  869. package/runtime/third_party/bearssl/src/int/i32_mulacc.c +0 -56
  870. package/runtime/third_party/bearssl/src/int/i32_muladd.c +0 -138
  871. package/runtime/third_party/bearssl/src/int/i32_ninv32.c +0 -39
  872. package/runtime/third_party/bearssl/src/int/i32_reduce.c +0 -66
  873. package/runtime/third_party/bearssl/src/int/i32_sub.c +0 -51
  874. package/runtime/third_party/bearssl/src/int/i32_tmont.c +0 -36
  875. package/runtime/third_party/bearssl/src/int/i62_modpow2.c +0 -493
  876. package/runtime/third_party/bearssl/src/kdf/hkdf.c +0 -107
  877. package/runtime/third_party/bearssl/src/kdf/shake.c +0 -590
  878. package/runtime/third_party/bearssl/src/mac/hmac.c +0 -122
  879. package/runtime/third_party/bearssl/src/mac/hmac_ct.c +0 -193
  880. package/runtime/third_party/bearssl/src/rand/aesctr_drbg.c +0 -206
  881. package/runtime/third_party/bearssl/src/rand/hmac_drbg.c +0 -157
  882. package/runtime/third_party/bearssl/src/rand/sysrng.c +0 -252
  883. package/runtime/third_party/bearssl/src/rsa/rsa_default_keygen.c +0 -38
  884. package/runtime/third_party/bearssl/src/rsa/rsa_default_modulus.c +0 -36
  885. package/runtime/third_party/bearssl/src/rsa/rsa_default_oaep_decrypt.c +0 -38
  886. package/runtime/third_party/bearssl/src/rsa/rsa_default_oaep_encrypt.c +0 -38
  887. package/runtime/third_party/bearssl/src/rsa/rsa_default_pkcs1_sign.c +0 -38
  888. package/runtime/third_party/bearssl/src/rsa/rsa_default_pkcs1_vrfy.c +0 -38
  889. package/runtime/third_party/bearssl/src/rsa/rsa_default_priv.c +0 -38
  890. package/runtime/third_party/bearssl/src/rsa/rsa_default_privexp.c +0 -36
  891. package/runtime/third_party/bearssl/src/rsa/rsa_default_pss_sign.c +0 -38
  892. package/runtime/third_party/bearssl/src/rsa/rsa_default_pss_vrfy.c +0 -38
  893. package/runtime/third_party/bearssl/src/rsa/rsa_default_pub.c +0 -38
  894. package/runtime/third_party/bearssl/src/rsa/rsa_default_pubexp.c +0 -36
  895. package/runtime/third_party/bearssl/src/rsa/rsa_i15_keygen.c +0 -583
  896. package/runtime/third_party/bearssl/src/rsa/rsa_i15_modulus.c +0 -99
  897. package/runtime/third_party/bearssl/src/rsa/rsa_i15_oaep_decrypt.c +0 -41
  898. package/runtime/third_party/bearssl/src/rsa/rsa_i15_oaep_encrypt.c +0 -44
  899. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pkcs1_sign.c +0 -37
  900. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pkcs1_vrfy.c +0 -43
  901. package/runtime/third_party/bearssl/src/rsa/rsa_i15_priv.c +0 -209
  902. package/runtime/third_party/bearssl/src/rsa/rsa_i15_privexp.c +0 -320
  903. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pss_sign.c +0 -40
  904. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pss_vrfy.c +0 -44
  905. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pub.c +0 -113
  906. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pubexp.c +0 -152
  907. package/runtime/third_party/bearssl/src/rsa/rsa_i31_keygen.c +0 -37
  908. package/runtime/third_party/bearssl/src/rsa/rsa_i31_keygen_inner.c +0 -608
  909. package/runtime/third_party/bearssl/src/rsa/rsa_i31_modulus.c +0 -99
  910. package/runtime/third_party/bearssl/src/rsa/rsa_i31_oaep_decrypt.c +0 -41
  911. package/runtime/third_party/bearssl/src/rsa/rsa_i31_oaep_encrypt.c +0 -44
  912. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pkcs1_sign.c +0 -37
  913. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pkcs1_vrfy.c +0 -43
  914. package/runtime/third_party/bearssl/src/rsa/rsa_i31_priv.c +0 -203
  915. package/runtime/third_party/bearssl/src/rsa/rsa_i31_privexp.c +0 -318
  916. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pss_sign.c +0 -40
  917. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pss_vrfy.c +0 -44
  918. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pub.c +0 -106
  919. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pubexp.c +0 -152
  920. package/runtime/third_party/bearssl/src/rsa/rsa_i32_oaep_decrypt.c +0 -41
  921. package/runtime/third_party/bearssl/src/rsa/rsa_i32_oaep_encrypt.c +0 -44
  922. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pkcs1_sign.c +0 -37
  923. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pkcs1_vrfy.c +0 -43
  924. package/runtime/third_party/bearssl/src/rsa/rsa_i32_priv.c +0 -160
  925. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pss_sign.c +0 -40
  926. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pss_vrfy.c +0 -44
  927. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pub.c +0 -77
  928. package/runtime/third_party/bearssl/src/rsa/rsa_i62_keygen.c +0 -57
  929. package/runtime/third_party/bearssl/src/rsa/rsa_i62_oaep_decrypt.c +0 -61
  930. package/runtime/third_party/bearssl/src/rsa/rsa_i62_oaep_encrypt.c +0 -64
  931. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pkcs1_sign.c +0 -57
  932. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pkcs1_vrfy.c +0 -63
  933. package/runtime/third_party/bearssl/src/rsa/rsa_i62_priv.c +0 -223
  934. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pss_sign.c +0 -60
  935. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pss_vrfy.c +0 -64
  936. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pub.c +0 -125
  937. package/runtime/third_party/bearssl/src/rsa/rsa_oaep_pad.c +0 -112
  938. package/runtime/third_party/bearssl/src/rsa/rsa_oaep_unpad.c +0 -145
  939. package/runtime/third_party/bearssl/src/rsa/rsa_pkcs1_sig_pad.c +0 -100
  940. package/runtime/third_party/bearssl/src/rsa/rsa_pkcs1_sig_unpad.c +0 -121
  941. package/runtime/third_party/bearssl/src/rsa/rsa_pss_sig_pad.c +0 -106
  942. package/runtime/third_party/bearssl/src/rsa/rsa_pss_sig_unpad.c +0 -121
  943. package/runtime/third_party/bearssl/src/rsa/rsa_ssl_decrypt.c +0 -52
  944. package/runtime/third_party/bearssl/src/settings.c +0 -306
  945. package/runtime/third_party/bearssl/src/symcipher/aes_big_cbcdec.c +0 -69
  946. package/runtime/third_party/bearssl/src/symcipher/aes_big_cbcenc.c +0 -67
  947. package/runtime/third_party/bearssl/src/symcipher/aes_big_ctr.c +0 -84
  948. package/runtime/third_party/bearssl/src/symcipher/aes_big_ctrcbc.c +0 -142
  949. package/runtime/third_party/bearssl/src/symcipher/aes_big_dec.c +0 -254
  950. package/runtime/third_party/bearssl/src/symcipher/aes_big_enc.c +0 -157
  951. package/runtime/third_party/bearssl/src/symcipher/aes_common.c +0 -112
  952. package/runtime/third_party/bearssl/src/symcipher/aes_ct.c +0 -328
  953. package/runtime/third_party/bearssl/src/symcipher/aes_ct64.c +0 -398
  954. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_cbcdec.c +0 -104
  955. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_cbcenc.c +0 -81
  956. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_ctr.c +0 -114
  957. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_ctrcbc.c +0 -433
  958. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_dec.c +0 -159
  959. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_enc.c +0 -115
  960. package/runtime/third_party/bearssl/src/symcipher/aes_ct_cbcdec.c +0 -111
  961. package/runtime/third_party/bearssl/src/symcipher/aes_ct_cbcenc.c +0 -91
  962. package/runtime/third_party/bearssl/src/symcipher/aes_ct_ctr.c +0 -116
  963. package/runtime/third_party/bearssl/src/symcipher/aes_ct_ctrcbc.c +0 -422
  964. package/runtime/third_party/bearssl/src/symcipher/aes_ct_dec.c +0 -170
  965. package/runtime/third_party/bearssl/src/symcipher/aes_ct_enc.c +0 -112
  966. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8.c +0 -445
  967. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_cbcdec.c +0 -670
  968. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_cbcenc.c +0 -417
  969. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_ctr.c +0 -717
  970. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_ctrcbc.c +0 -946
  971. package/runtime/third_party/bearssl/src/symcipher/aes_small_cbcdec.c +0 -69
  972. package/runtime/third_party/bearssl/src/symcipher/aes_small_cbcenc.c +0 -67
  973. package/runtime/third_party/bearssl/src/symcipher/aes_small_ctr.c +0 -84
  974. package/runtime/third_party/bearssl/src/symcipher/aes_small_ctrcbc.c +0 -142
  975. package/runtime/third_party/bearssl/src/symcipher/aes_small_dec.c +0 -176
  976. package/runtime/third_party/bearssl/src/symcipher/aes_small_enc.c +0 -129
  977. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni.c +0 -240
  978. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_cbcdec.c +0 -223
  979. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_cbcenc.c +0 -122
  980. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_ctr.c +0 -211
  981. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_ctrcbc.c +0 -596
  982. package/runtime/third_party/bearssl/src/symcipher/chacha20_ct.c +0 -106
  983. package/runtime/third_party/bearssl/src/symcipher/chacha20_sse2.c +0 -237
  984. package/runtime/third_party/bearssl/src/symcipher/des_ct.c +0 -411
  985. package/runtime/third_party/bearssl/src/symcipher/des_ct_cbcdec.c +0 -87
  986. package/runtime/third_party/bearssl/src/symcipher/des_ct_cbcenc.c +0 -69
  987. package/runtime/third_party/bearssl/src/symcipher/des_support.c +0 -166
  988. package/runtime/third_party/bearssl/src/symcipher/des_tab.c +0 -310
  989. package/runtime/third_party/bearssl/src/symcipher/des_tab_cbcdec.c +0 -85
  990. package/runtime/third_party/bearssl/src/symcipher/des_tab_cbcenc.c +0 -67
  991. package/runtime/third_party/bearssl/src/symcipher/poly1305_ctmul.c +0 -260
  992. package/runtime/third_party/bearssl/src/symcipher/poly1305_ctmul32.c +0 -297
  993. package/runtime/third_party/bearssl/src/symcipher/poly1305_ctmulq.c +0 -475
  994. package/runtime/third_party/bearssl/src/symcipher/poly1305_i15.c +0 -221
  995. package/runtime/third_party/bearssl/src/x509/asn1.t0 +0 -757
  996. package/runtime/third_party/bearssl/src/x509/asn1enc.c +0 -93
  997. package/runtime/third_party/bearssl/src/x509/encode_ec_pk8der.c +0 -110
  998. package/runtime/third_party/bearssl/src/x509/encode_ec_rawder.c +0 -161
  999. package/runtime/third_party/bearssl/src/x509/encode_rsa_pk8der.c +0 -97
  1000. package/runtime/third_party/bearssl/src/x509/encode_rsa_rawder.c +0 -96
  1001. package/runtime/third_party/bearssl/src/x509/skey_decoder.c +0 -653
  1002. package/runtime/third_party/bearssl/src/x509/skey_decoder.t0 +0 -376
  1003. package/runtime/third_party/bearssl/src/x509/x509_decoder.c +0 -776
  1004. package/runtime/third_party/bearssl/src/x509/x509_decoder.t0 +0 -324
  1005. package/runtime/third_party/bearssl/src/x509/x509_knownkey.c +0 -105
  1006. package/runtime/third_party/bearssl/src/x509/x509_minimal.c +0 -1722
  1007. package/runtime/third_party/bearssl/src/x509/x509_minimal.t0 +0 -1526
  1008. package/runtime/third_party/bearssl/src/x509/x509_minimal_full.c +0 -59
@@ -0,0 +1,1229 @@
1
+ // Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
2
+ // Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
3
+ // Copyright 2005 Nokia. All rights reserved.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 (the "License");
6
+ // you may not use this file except in compliance with the License.
7
+ // You may obtain a copy of the License at
8
+ //
9
+ // https://www.apache.org/licenses/LICENSE-2.0
10
+ //
11
+ // Unless required by applicable law or agreed to in writing, software
12
+ // distributed under the License is distributed on an "AS IS" BASIS,
13
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ // See the License for the specific language governing permissions and
15
+ // limitations under the License.
16
+
17
+ #include <openssl/ssl.h>
18
+
19
+ #include <assert.h>
20
+
21
+ #include <openssl/asn1.h>
22
+ #include <openssl/bytestring.h>
23
+ #include <openssl/err.h>
24
+ #include <openssl/pem.h>
25
+ #include <openssl/stack.h>
26
+ #include <openssl/x509.h>
27
+
28
+ #include "../crypto/bytestring/internal.h"
29
+ #include "../crypto/internal.h"
30
+ #include "../crypto/pem/internal.h"
31
+ #include "internal.h"
32
+
33
+
34
+ BSSL_NAMESPACE_BEGIN
35
+
36
+ // check_ssl_x509_method asserts that `ssl` has the X509-based method
37
+ // installed. Calling an X509-based method on an `ssl` with a different method
38
+ // will likely misbehave and possibly crash or leak memory.
39
+ static void check_ssl_x509_method(const SSLImpl *ssl) {
40
+ assert(ssl == nullptr || ssl->ctx->x509_method == &ssl_crypto_x509_method);
41
+ }
42
+
43
+ // check_ssl_ctx_x509_method acts like `check_ssl_x509_method`, but for an
44
+ // `SSL_CTX`.
45
+ static void check_ssl_ctx_x509_method(const SSLContext *ctx) {
46
+ assert(ctx == nullptr || ctx->x509_method == &ssl_crypto_x509_method);
47
+ }
48
+
49
+ // x509_to_buffer returns a `CRYPTO_BUFFER` that contains the serialised
50
+ // contents of `x509`.
51
+ static UniquePtr<CRYPTO_BUFFER> x509_to_buffer(X509 *x509) {
52
+ uint8_t *buf = nullptr;
53
+ int cert_len = i2d_X509(x509, &buf);
54
+ if (cert_len <= 0) {
55
+ return nullptr;
56
+ }
57
+
58
+ UniquePtr<CRYPTO_BUFFER> buffer(CRYPTO_BUFFER_new(buf, cert_len, nullptr));
59
+ OPENSSL_free(buf);
60
+
61
+ return buffer;
62
+ }
63
+
64
+ static void ssl_crypto_x509_cert_flush_cached_leaf(CERT *cert) {
65
+ X509_free(cert->x509_leaf);
66
+ cert->x509_leaf = nullptr;
67
+ }
68
+
69
+ static void ssl_crypto_x509_cert_flush_cached_chain(CERT *cert) {
70
+ sk_X509_pop_free(cert->x509_chain, X509_free);
71
+ cert->x509_chain = nullptr;
72
+ }
73
+
74
+ // ssl_cert_set1_chain sets elements 1.. of `cert->chain` to the serialised
75
+ // forms of elements of `chain`. It returns one on success or zero on error, in
76
+ // which case no change to `cert->chain` is made. It preserves the existing
77
+ // leaf from `cert->chain`, if any.
78
+ static bool ssl_cert_set1_chain(CERT *cert, STACK_OF(X509) *chain) {
79
+ cert->legacy_credential->ClearIntermediateCerts();
80
+ for (X509 *x509 : chain) {
81
+ UniquePtr<CRYPTO_BUFFER> buffer = x509_to_buffer(x509);
82
+ if (!buffer ||
83
+ !cert->legacy_credential->AppendIntermediateCert(std::move(buffer))) {
84
+ return false;
85
+ }
86
+ }
87
+
88
+ ssl_crypto_x509_cert_flush_cached_chain(cert);
89
+ return true;
90
+ }
91
+
92
+ static bool ssl_crypto_x509_check_client_CA_list(
93
+ STACK_OF(CRYPTO_BUFFER) *names) {
94
+ for (const CRYPTO_BUFFER *buffer : names) {
95
+ const uint8_t *inp = CRYPTO_BUFFER_data(buffer);
96
+ UniquePtr<X509_NAME> name(
97
+ d2i_X509_NAME(nullptr, &inp, CRYPTO_BUFFER_len(buffer)));
98
+ if (name == nullptr ||
99
+ inp != CRYPTO_BUFFER_data(buffer) + CRYPTO_BUFFER_len(buffer)) {
100
+ return false;
101
+ }
102
+ }
103
+
104
+ return true;
105
+ }
106
+
107
+ static void ssl_crypto_x509_cert_clear(CERT *cert) {
108
+ ssl_crypto_x509_cert_flush_cached_leaf(cert);
109
+ ssl_crypto_x509_cert_flush_cached_chain(cert);
110
+
111
+ X509_free(cert->x509_stash);
112
+ cert->x509_stash = nullptr;
113
+ }
114
+
115
+ static void ssl_crypto_x509_cert_free(CERT *cert) {
116
+ ssl_crypto_x509_cert_clear(cert);
117
+ X509_STORE_free(cert->verify_store);
118
+ }
119
+
120
+ static void ssl_crypto_x509_cert_dup(CERT *new_cert, const CERT *cert) {
121
+ if (cert->verify_store != nullptr) {
122
+ X509_STORE_up_ref(cert->verify_store);
123
+ new_cert->verify_store = cert->verify_store;
124
+ }
125
+ }
126
+
127
+ static bool ssl_crypto_x509_session_cache_objects(SSLSession *sess) {
128
+ bssl::UniquePtr<STACK_OF(X509)> chain, chain_without_leaf;
129
+ if (sk_CRYPTO_BUFFER_num(sess->certs.get()) > 0) {
130
+ chain.reset(sk_X509_new_null());
131
+ if (!chain) {
132
+ return false;
133
+ }
134
+ if (sess->is_server) {
135
+ // chain_without_leaf is only needed for server sessions. See
136
+ // `SSL_get_peer_cert_chain`.
137
+ chain_without_leaf.reset(sk_X509_new_null());
138
+ if (!chain_without_leaf) {
139
+ return false;
140
+ }
141
+ }
142
+ }
143
+
144
+ bssl::UniquePtr<X509> leaf;
145
+ for (CRYPTO_BUFFER *cert : sess->certs.get()) {
146
+ UniquePtr<X509> x509(X509_parse_from_buffer(cert));
147
+ if (!x509) {
148
+ OPENSSL_PUT_ERROR(SSL, SSL_R_DECODE_ERROR);
149
+ return false;
150
+ }
151
+ if (leaf == nullptr) {
152
+ leaf = UpRef(x509);
153
+ } else if (chain_without_leaf &&
154
+ !PushToStack(chain_without_leaf.get(), UpRef(x509))) {
155
+ return false;
156
+ }
157
+ if (!PushToStack(chain.get(), std::move(x509))) {
158
+ return false;
159
+ }
160
+ }
161
+
162
+ sk_X509_pop_free(sess->x509_chain, X509_free);
163
+ sess->x509_chain = chain.release();
164
+
165
+ sk_X509_pop_free(sess->x509_chain_without_leaf, X509_free);
166
+ sess->x509_chain_without_leaf = chain_without_leaf.release();
167
+
168
+ X509_free(sess->x509_peer);
169
+ sess->x509_peer = leaf.release();
170
+ return true;
171
+ }
172
+
173
+ static bool ssl_crypto_x509_session_dup(SSLSession *new_session,
174
+ const SSLSession *session) {
175
+ new_session->x509_peer = UpRef(session->x509_peer).release();
176
+ if (session->x509_chain != nullptr) {
177
+ new_session->x509_chain = X509_chain_up_ref(session->x509_chain);
178
+ if (new_session->x509_chain == nullptr) {
179
+ return false;
180
+ }
181
+ }
182
+ if (session->x509_chain_without_leaf != nullptr) {
183
+ new_session->x509_chain_without_leaf =
184
+ X509_chain_up_ref(session->x509_chain_without_leaf);
185
+ if (new_session->x509_chain_without_leaf == nullptr) {
186
+ return false;
187
+ }
188
+ }
189
+
190
+ return true;
191
+ }
192
+
193
+ static void ssl_crypto_x509_session_clear(SSLSession *session) {
194
+ X509_free(session->x509_peer);
195
+ session->x509_peer = nullptr;
196
+ sk_X509_pop_free(session->x509_chain, X509_free);
197
+ session->x509_chain = nullptr;
198
+ sk_X509_pop_free(session->x509_chain_without_leaf, X509_free);
199
+ session->x509_chain_without_leaf = nullptr;
200
+ }
201
+
202
+ static bool ssl_crypto_x509_session_verify_cert_chain(SSLSession *session,
203
+ SSL_HANDSHAKE *hs,
204
+ uint8_t *out_alert) {
205
+ if (session->peer_cert_type != TLSEXT_cert_type_x509) {
206
+ return false;
207
+ }
208
+ *out_alert = SSL_AD_INTERNAL_ERROR;
209
+ STACK_OF(X509) *const cert_chain = session->x509_chain;
210
+ if (cert_chain == nullptr || sk_X509_num(cert_chain) == 0) {
211
+ return false;
212
+ }
213
+
214
+ SSLImpl *const ssl = hs->ssl;
215
+ SSLContext *ssl_ctx = ssl->ctx.get();
216
+ X509_STORE *verify_store = ssl_ctx->cert_store;
217
+ if (hs->config->cert->verify_store != nullptr) {
218
+ verify_store = hs->config->cert->verify_store;
219
+ }
220
+
221
+ X509 *leaf = sk_X509_value(cert_chain, 0);
222
+ const char *name;
223
+ size_t name_len;
224
+ SSL_get0_ech_name_override(ssl, &name, &name_len);
225
+ UniquePtr<X509_STORE_CTX> ctx(X509_STORE_CTX_new());
226
+ if (!ctx || //
227
+ !X509_STORE_CTX_init(ctx.get(), verify_store, leaf, cert_chain) || //
228
+ !X509_STORE_CTX_set_ex_data(
229
+ ctx.get(), SSL_get_ex_data_X509_STORE_CTX_idx(), ssl) || //
230
+ // We need to inherit the verify parameters. These can be determined by
231
+ // the context: if its a server it will verify SSL client certificates or
232
+ // vice versa.
233
+ !X509_STORE_CTX_set_default(
234
+ ctx.get(),
235
+ ssl->server ? "ssl_client" : "ssl_server") || //
236
+ // Anything non-default in "param" should overwrite anything in the ctx.
237
+ !X509_VERIFY_PARAM_set1(X509_STORE_CTX_get0_param(ctx.get()),
238
+ hs->config->param) || //
239
+ // ClientHelloOuter connections use a different name.
240
+ (name_len != 0 && //
241
+ !X509_VERIFY_PARAM_set1_host(X509_STORE_CTX_get0_param(ctx.get()), name,
242
+ name_len))) {
243
+ OPENSSL_PUT_ERROR(SSL, ERR_R_X509_LIB);
244
+ return false;
245
+ }
246
+
247
+ if (hs->config->verify_callback) {
248
+ X509_STORE_CTX_set_verify_cb(ctx.get(), hs->config->verify_callback);
249
+ }
250
+
251
+ int verify_ret;
252
+ if (ssl_ctx->app_verify_callback != nullptr) {
253
+ verify_ret =
254
+ ssl_ctx->app_verify_callback(ctx.get(), ssl_ctx->app_verify_arg);
255
+ } else {
256
+ verify_ret = X509_verify_cert(ctx.get());
257
+ }
258
+
259
+ session->verify_result = X509_STORE_CTX_get_error(ctx.get());
260
+
261
+ // If `SSL_VERIFY_NONE`, the error is non-fatal, but we keep the result.
262
+ if (verify_ret <= 0 && hs->config->verify_mode != SSL_VERIFY_NONE) {
263
+ *out_alert = SSL_alert_from_verify_result(session->verify_result);
264
+ return false;
265
+ }
266
+
267
+ ERR_clear_error();
268
+ return true;
269
+ }
270
+
271
+ static void ssl_crypto_x509_hs_flush_cached_ca_names(SSL_HANDSHAKE *hs) {
272
+ sk_X509_NAME_pop_free(hs->cached_x509_ca_names, X509_NAME_free);
273
+ hs->cached_x509_ca_names = nullptr;
274
+ }
275
+
276
+ static bool ssl_crypto_x509_ssl_new(SSL_HANDSHAKE *hs) {
277
+ hs->config->param = X509_VERIFY_PARAM_new();
278
+ if (hs->config->param == nullptr) {
279
+ return false;
280
+ }
281
+ X509_VERIFY_PARAM_inherit(hs->config->param, hs->ssl->ctx->param);
282
+ return true;
283
+ }
284
+
285
+ static void ssl_crypto_x509_ssl_flush_cached_client_CA(SSL_CONFIG *cfg) {
286
+ sk_X509_NAME_pop_free(cfg->cached_x509_client_CA, X509_NAME_free);
287
+ cfg->cached_x509_client_CA = nullptr;
288
+ }
289
+
290
+ static void ssl_crypto_x509_ssl_config_free(SSL_CONFIG *cfg) {
291
+ sk_X509_NAME_pop_free(cfg->cached_x509_client_CA, X509_NAME_free);
292
+ cfg->cached_x509_client_CA = nullptr;
293
+ X509_VERIFY_PARAM_free(cfg->param);
294
+ }
295
+
296
+ static bool ssl_crypto_x509_ssl_auto_chain_if_needed(SSL_HANDSHAKE *hs) {
297
+ // Only build a chain if the feature isn't disabled, the legacy credential
298
+ // exists but has no intermediates configured.
299
+ SSLImpl *ssl = hs->ssl;
300
+ SSLCredential *cred = hs->config->cert->legacy_credential.get();
301
+ if ((ssl->mode & SSL_MODE_NO_AUTO_CHAIN) || !cred->IsComplete() ||
302
+ sk_CRYPTO_BUFFER_num(cred->chain.get()) != 1) {
303
+ return true;
304
+ }
305
+
306
+ UniquePtr<X509> leaf(
307
+ X509_parse_from_buffer(sk_CRYPTO_BUFFER_value(cred->chain.get(), 0)));
308
+ if (!leaf) {
309
+ OPENSSL_PUT_ERROR(SSL, ERR_R_X509_LIB);
310
+ return false;
311
+ }
312
+
313
+ UniquePtr<X509_STORE_CTX> ctx(X509_STORE_CTX_new());
314
+ if (!ctx || !X509_STORE_CTX_init(ctx.get(), ssl->ctx->cert_store, leaf.get(),
315
+ nullptr)) {
316
+ OPENSSL_PUT_ERROR(SSL, ERR_R_X509_LIB);
317
+ return false;
318
+ }
319
+
320
+ // Attempt to build a chain, ignoring the result.
321
+ X509_verify_cert(ctx.get());
322
+ ERR_clear_error();
323
+
324
+ // Remove the leaf from the generated chain.
325
+ UniquePtr<STACK_OF(X509)> chain(X509_STORE_CTX_get1_chain(ctx.get()));
326
+ if (!chain) {
327
+ return false;
328
+ }
329
+ X509_free(sk_X509_shift(chain.get()));
330
+
331
+ return SSL_set1_chain(ssl, chain.get());
332
+ }
333
+
334
+ static void ssl_crypto_x509_ssl_ctx_flush_cached_client_CA(SSLContext *ctx) {
335
+ sk_X509_NAME_pop_free(ctx->cached_x509_client_CA, X509_NAME_free);
336
+ ctx->cached_x509_client_CA = nullptr;
337
+ }
338
+
339
+ static bool ssl_crypto_x509_ssl_ctx_new(SSLContext *ctx) {
340
+ ctx->cert_store = X509_STORE_new();
341
+ ctx->param = X509_VERIFY_PARAM_new();
342
+ return (ctx->cert_store != nullptr && ctx->param != nullptr);
343
+ }
344
+
345
+ static void ssl_crypto_x509_ssl_ctx_free(SSLContext *ctx) {
346
+ ssl_crypto_x509_ssl_ctx_flush_cached_client_CA(ctx);
347
+ X509_VERIFY_PARAM_free(ctx->param);
348
+ X509_STORE_free(ctx->cert_store);
349
+ }
350
+
351
+ const SSL_X509_METHOD ssl_crypto_x509_method = {
352
+ ssl_crypto_x509_check_client_CA_list,
353
+ ssl_crypto_x509_cert_clear,
354
+ ssl_crypto_x509_cert_free,
355
+ ssl_crypto_x509_cert_dup,
356
+ ssl_crypto_x509_cert_flush_cached_chain,
357
+ ssl_crypto_x509_cert_flush_cached_leaf,
358
+ ssl_crypto_x509_session_cache_objects,
359
+ ssl_crypto_x509_session_dup,
360
+ ssl_crypto_x509_session_clear,
361
+ ssl_crypto_x509_session_verify_cert_chain,
362
+ ssl_crypto_x509_hs_flush_cached_ca_names,
363
+ ssl_crypto_x509_ssl_new,
364
+ ssl_crypto_x509_ssl_config_free,
365
+ ssl_crypto_x509_ssl_flush_cached_client_CA,
366
+ ssl_crypto_x509_ssl_auto_chain_if_needed,
367
+ ssl_crypto_x509_ssl_ctx_new,
368
+ ssl_crypto_x509_ssl_ctx_free,
369
+ ssl_crypto_x509_ssl_ctx_flush_cached_client_CA,
370
+ };
371
+
372
+ BSSL_NAMESPACE_END
373
+
374
+ using namespace bssl;
375
+
376
+ X509 *SSL_get_peer_certificate(const SSL *ssl) {
377
+ const auto *ssl_impl = FromOpaque(ssl);
378
+ check_ssl_x509_method(ssl_impl);
379
+ if (ssl_impl == nullptr) {
380
+ return nullptr;
381
+ }
382
+ SSLSession *session = ssl_get_session(ssl_impl);
383
+ if (session == nullptr || session->x509_peer == nullptr) {
384
+ return nullptr;
385
+ }
386
+ X509_up_ref(session->x509_peer);
387
+ return session->x509_peer;
388
+ }
389
+
390
+ STACK_OF(X509) *SSL_get_peer_cert_chain(const SSL *ssl) {
391
+ const auto *ssl_impl = FromOpaque(ssl);
392
+ check_ssl_x509_method(ssl_impl);
393
+ if (ssl_impl == nullptr) {
394
+ return nullptr;
395
+ }
396
+ SSLSession *session = ssl_get_session(ssl_impl);
397
+ if (session == nullptr) {
398
+ return nullptr;
399
+ }
400
+
401
+ // OpenSSL historically didn't include the leaf certificate in the returned
402
+ // certificate chain, but only for servers.
403
+ return ssl_impl->server ? session->x509_chain_without_leaf
404
+ : session->x509_chain;
405
+ }
406
+
407
+ STACK_OF(X509) *SSL_get_peer_full_cert_chain(const SSL *ssl) {
408
+ auto *ssl_impl = FromOpaque(ssl);
409
+ check_ssl_x509_method(ssl_impl);
410
+ SSLSession *session = ssl_get_session(ssl_impl);
411
+ if (session == nullptr) {
412
+ return nullptr;
413
+ }
414
+
415
+ return session->x509_chain;
416
+ }
417
+
418
+ int SSL_CTX_set_purpose(SSL_CTX *ctx, int purpose) {
419
+ auto *ctx_impl = FromOpaque(ctx);
420
+ check_ssl_ctx_x509_method(ctx_impl);
421
+ return X509_VERIFY_PARAM_set_purpose(ctx_impl->param, purpose);
422
+ }
423
+
424
+ int SSL_set_purpose(SSL *ssl, int purpose) {
425
+ auto *ssl_impl = FromOpaque(ssl);
426
+ check_ssl_x509_method(ssl_impl);
427
+ if (!ssl_impl->config) {
428
+ return 0;
429
+ }
430
+ return X509_VERIFY_PARAM_set_purpose(ssl_impl->config->param, purpose);
431
+ }
432
+
433
+ int SSL_CTX_set_trust(SSL_CTX *ctx, int trust) {
434
+ auto *ctx_impl = FromOpaque(ctx);
435
+ check_ssl_ctx_x509_method(ctx_impl);
436
+ return X509_VERIFY_PARAM_set_trust(ctx_impl->param, trust);
437
+ }
438
+
439
+ int SSL_set_trust(SSL *ssl, int trust) {
440
+ auto *ssl_impl = FromOpaque(ssl);
441
+ check_ssl_x509_method(ssl_impl);
442
+ if (!ssl_impl->config) {
443
+ return 0;
444
+ }
445
+ return X509_VERIFY_PARAM_set_trust(ssl_impl->config->param, trust);
446
+ }
447
+
448
+ int SSL_CTX_set1_param(SSL_CTX *ctx, const X509_VERIFY_PARAM *param) {
449
+ auto *ctx_impl = FromOpaque(ctx);
450
+ check_ssl_ctx_x509_method(ctx_impl);
451
+ return X509_VERIFY_PARAM_set1(ctx_impl->param, param);
452
+ }
453
+
454
+ int SSL_set1_param(SSL *ssl, const X509_VERIFY_PARAM *param) {
455
+ auto *ssl_impl = FromOpaque(ssl);
456
+ check_ssl_x509_method(ssl_impl);
457
+ if (!ssl_impl->config) {
458
+ return 0;
459
+ }
460
+ return X509_VERIFY_PARAM_set1(ssl_impl->config->param, param);
461
+ }
462
+
463
+ X509_VERIFY_PARAM *SSL_CTX_get0_param(SSL_CTX *ctx) {
464
+ auto *ctx_impl = FromOpaque(ctx);
465
+ check_ssl_ctx_x509_method(ctx_impl);
466
+ return ctx_impl->param;
467
+ }
468
+
469
+ X509_VERIFY_PARAM *SSL_get0_param(SSL *ssl) {
470
+ auto *ssl_impl = FromOpaque(ssl);
471
+ check_ssl_x509_method(ssl_impl);
472
+ if (!ssl_impl->config) {
473
+ assert(ssl_impl->config);
474
+ return nullptr;
475
+ }
476
+ return ssl_impl->config->param;
477
+ }
478
+
479
+ int SSL_get_verify_depth(const SSL *ssl) {
480
+ const auto *ssl_impl = FromOpaque(ssl);
481
+ check_ssl_x509_method(ssl_impl);
482
+ if (!ssl_impl->config) {
483
+ assert(ssl_impl->config);
484
+ return 0;
485
+ }
486
+ return X509_VERIFY_PARAM_get_depth(ssl_impl->config->param);
487
+ }
488
+
489
+ int (*SSL_get_verify_callback(const SSL *ssl))(int, X509_STORE_CTX *) {
490
+ const auto *ssl_impl = FromOpaque(ssl);
491
+ check_ssl_x509_method(ssl_impl);
492
+ if (!ssl_impl->config) {
493
+ assert(ssl_impl->config);
494
+ return nullptr;
495
+ }
496
+ return ssl_impl->config->verify_callback;
497
+ }
498
+
499
+ int SSL_CTX_get_verify_mode(const SSL_CTX *ctx) {
500
+ auto *ctx_impl = FromOpaque(ctx);
501
+ check_ssl_ctx_x509_method(ctx_impl);
502
+ return ctx_impl->verify_mode;
503
+ }
504
+
505
+ int SSL_CTX_get_verify_depth(const SSL_CTX *ctx) {
506
+ auto *ctx_impl = FromOpaque(ctx);
507
+ check_ssl_ctx_x509_method(ctx_impl);
508
+ return X509_VERIFY_PARAM_get_depth(ctx_impl->param);
509
+ }
510
+
511
+ int (*SSL_CTX_get_verify_callback(const SSL_CTX *ctx))(
512
+ int ok, X509_STORE_CTX *store_ctx) {
513
+ auto *ctx_impl = FromOpaque(ctx);
514
+ check_ssl_ctx_x509_method(ctx_impl);
515
+ return ctx_impl->default_verify_callback;
516
+ }
517
+
518
+ void SSL_set_verify(SSL *ssl, int mode,
519
+ int (*callback)(int ok, X509_STORE_CTX *store_ctx)) {
520
+ auto *ssl_impl = FromOpaque(ssl);
521
+ check_ssl_x509_method(ssl_impl);
522
+ if (!ssl_impl->config) {
523
+ return;
524
+ }
525
+ ssl_impl->config->verify_mode = mode;
526
+ if (callback != nullptr) {
527
+ ssl_impl->config->verify_callback = callback;
528
+ }
529
+ }
530
+
531
+ void SSL_set_verify_depth(SSL *ssl, int depth) {
532
+ auto *ssl_impl = FromOpaque(ssl);
533
+ check_ssl_x509_method(ssl_impl);
534
+ if (!ssl_impl->config) {
535
+ return;
536
+ }
537
+ X509_VERIFY_PARAM_set_depth(ssl_impl->config->param, depth);
538
+ }
539
+
540
+ void SSL_CTX_set_cert_verify_callback(
541
+ SSL_CTX *ctx, int (*cb)(X509_STORE_CTX *store_ctx, void *arg), void *arg) {
542
+ auto *ctx_impl = FromOpaque(ctx);
543
+ check_ssl_ctx_x509_method(ctx_impl);
544
+ ctx_impl->app_verify_callback = cb;
545
+ ctx_impl->app_verify_arg = arg;
546
+ }
547
+
548
+ void SSL_CTX_set_verify(SSL_CTX *ctx, int mode,
549
+ int (*cb)(int, X509_STORE_CTX *)) {
550
+ auto *ctx_impl = FromOpaque(ctx);
551
+ check_ssl_ctx_x509_method(ctx_impl);
552
+ ctx_impl->verify_mode = mode;
553
+ ctx_impl->default_verify_callback = cb;
554
+ }
555
+
556
+ void SSL_CTX_set_verify_depth(SSL_CTX *ctx, int depth) {
557
+ auto *ctx_impl = FromOpaque(ctx);
558
+ check_ssl_ctx_x509_method(ctx_impl);
559
+ X509_VERIFY_PARAM_set_depth(ctx_impl->param, depth);
560
+ }
561
+
562
+ int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx) {
563
+ auto *ctx_impl = FromOpaque(ctx);
564
+ check_ssl_ctx_x509_method(ctx_impl);
565
+ return X509_STORE_set_default_paths(ctx_impl->cert_store);
566
+ }
567
+
568
+ int SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *ca_file,
569
+ const char *ca_dir) {
570
+ auto *ctx_impl = FromOpaque(ctx);
571
+ check_ssl_ctx_x509_method(ctx_impl);
572
+ return X509_STORE_load_locations(ctx_impl->cert_store, ca_file, ca_dir);
573
+ }
574
+
575
+ long SSL_get_verify_result(const SSL *ssl) {
576
+ auto *ssl_impl = FromOpaque(ssl);
577
+ check_ssl_x509_method(ssl_impl);
578
+ SSLSession *session = ssl_get_session(ssl_impl);
579
+ if (session == nullptr) {
580
+ return X509_V_ERR_INVALID_CALL;
581
+ }
582
+ return session->verify_result;
583
+ }
584
+
585
+ X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *ctx) {
586
+ auto *ctx_impl = FromOpaque(ctx);
587
+ check_ssl_ctx_x509_method(ctx_impl);
588
+ return ctx_impl->cert_store;
589
+ }
590
+
591
+ void SSL_CTX_set_cert_store(SSL_CTX *ctx, X509_STORE *store) {
592
+ auto *ctx_impl = FromOpaque(ctx);
593
+ check_ssl_ctx_x509_method(ctx_impl);
594
+ X509_STORE_free(ctx_impl->cert_store);
595
+ ctx_impl->cert_store = store;
596
+ }
597
+
598
+ static int ssl_use_certificate(CERT *cert, X509 *x) {
599
+ if (x == nullptr) {
600
+ OPENSSL_PUT_ERROR(SSL, ERR_R_PASSED_NULL_PARAMETER);
601
+ return 0;
602
+ }
603
+
604
+ UniquePtr<CRYPTO_BUFFER> buffer = x509_to_buffer(x);
605
+ if (!buffer) {
606
+ return 0;
607
+ }
608
+
609
+ return ssl_set_cert(cert, std::move(buffer));
610
+ }
611
+
612
+ int SSL_use_certificate(SSL *ssl, X509 *x) {
613
+ auto *ssl_impl = FromOpaque(ssl);
614
+ check_ssl_x509_method(ssl_impl);
615
+ if (!ssl_impl->config) {
616
+ return 0;
617
+ }
618
+ return ssl_use_certificate(ssl_impl->config->cert.get(), x);
619
+ }
620
+
621
+ int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x) {
622
+ auto *ctx_impl = FromOpaque(ctx);
623
+ check_ssl_ctx_x509_method(ctx_impl);
624
+ return ssl_use_certificate(ctx_impl->cert.get(), x);
625
+ }
626
+
627
+ // ssl_cert_cache_leaf_cert sets `cert->x509_leaf`, if currently NULL, from the
628
+ // first element of `cert->chain`.
629
+ static int ssl_cert_cache_leaf_cert(CERT *cert) {
630
+ assert(cert->x509_method);
631
+
632
+ const SSLCredential *cred = cert->legacy_credential.get();
633
+ if (cert->x509_leaf != nullptr || cred->chain == nullptr) {
634
+ return 1;
635
+ }
636
+
637
+ CRYPTO_BUFFER *leaf = sk_CRYPTO_BUFFER_value(cred->chain.get(), 0);
638
+ if (!leaf) {
639
+ return 1;
640
+ }
641
+
642
+ cert->x509_leaf = X509_parse_from_buffer(leaf);
643
+ return cert->x509_leaf != nullptr;
644
+ }
645
+
646
+ static X509 *ssl_cert_get0_leaf(CERT *cert) {
647
+ if (cert->x509_leaf == nullptr && //
648
+ !ssl_cert_cache_leaf_cert(cert)) {
649
+ return nullptr;
650
+ }
651
+
652
+ return cert->x509_leaf;
653
+ }
654
+
655
+ X509 *SSL_get_certificate(const SSL *ssl) {
656
+ const auto *ssl_impl = FromOpaque(ssl);
657
+ check_ssl_x509_method(ssl_impl);
658
+ if (!ssl_impl->config) {
659
+ assert(ssl_impl->config);
660
+ return nullptr;
661
+ }
662
+ return ssl_cert_get0_leaf(ssl_impl->config->cert.get());
663
+ }
664
+
665
+ X509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx) {
666
+ auto *ctx_impl = FromOpaque(ctx);
667
+ check_ssl_ctx_x509_method(ctx_impl);
668
+ MutexWriteLock lock(&ctx_impl->lock);
669
+ return ssl_cert_get0_leaf(ctx_impl->cert.get());
670
+ }
671
+
672
+ static int ssl_cert_add1_chain_cert(CERT *cert, X509 *x509) {
673
+ assert(cert->x509_method);
674
+
675
+ UniquePtr<CRYPTO_BUFFER> buffer = x509_to_buffer(x509);
676
+ if (!buffer ||
677
+ !cert->legacy_credential->AppendIntermediateCert(std::move(buffer))) {
678
+ return 0;
679
+ }
680
+
681
+ ssl_crypto_x509_cert_flush_cached_chain(cert);
682
+ return 1;
683
+ }
684
+
685
+ static int ssl_cert_add0_chain_cert(CERT *cert, X509 *x509) {
686
+ if (!ssl_cert_add1_chain_cert(cert, x509)) {
687
+ return 0;
688
+ }
689
+
690
+ X509_free(cert->x509_stash);
691
+ cert->x509_stash = x509;
692
+ return 1;
693
+ }
694
+
695
+ int SSL_CTX_set0_chain(SSL_CTX *ctx, STACK_OF(X509) *chain) {
696
+ auto *ctx_impl = FromOpaque(ctx);
697
+ check_ssl_ctx_x509_method(ctx_impl);
698
+ if (!ssl_cert_set1_chain(ctx_impl->cert.get(), chain)) {
699
+ return 0;
700
+ }
701
+ sk_X509_pop_free(chain, X509_free);
702
+ return 1;
703
+ }
704
+
705
+ int SSL_CTX_set1_chain(SSL_CTX *ctx, STACK_OF(X509) *chain) {
706
+ auto *ctx_impl = FromOpaque(ctx);
707
+ check_ssl_ctx_x509_method(ctx_impl);
708
+ return ssl_cert_set1_chain(ctx_impl->cert.get(), chain);
709
+ }
710
+
711
+ int SSL_set0_chain(SSL *ssl, STACK_OF(X509) *chain) {
712
+ auto *ssl_impl = FromOpaque(ssl);
713
+ check_ssl_x509_method(ssl_impl);
714
+ if (!ssl_impl->config) {
715
+ return 0;
716
+ }
717
+ if (!ssl_cert_set1_chain(ssl_impl->config->cert.get(), chain)) {
718
+ return 0;
719
+ }
720
+ sk_X509_pop_free(chain, X509_free);
721
+ return 1;
722
+ }
723
+
724
+ int SSL_set1_chain(SSL *ssl, STACK_OF(X509) *chain) {
725
+ auto *ssl_impl = FromOpaque(ssl);
726
+ check_ssl_x509_method(ssl_impl);
727
+ if (!ssl_impl->config) {
728
+ return 0;
729
+ }
730
+ return ssl_cert_set1_chain(ssl_impl->config->cert.get(), chain);
731
+ }
732
+
733
+ int SSL_CTX_add0_chain_cert(SSL_CTX *ctx, X509 *x509) {
734
+ auto *ctx_impl = FromOpaque(ctx);
735
+ check_ssl_ctx_x509_method(ctx_impl);
736
+ return ssl_cert_add0_chain_cert(ctx_impl->cert.get(), x509);
737
+ }
738
+
739
+ int SSL_CTX_add1_chain_cert(SSL_CTX *ctx, X509 *x509) {
740
+ auto *ctx_impl = FromOpaque(ctx);
741
+ check_ssl_ctx_x509_method(ctx_impl);
742
+ return ssl_cert_add1_chain_cert(ctx_impl->cert.get(), x509);
743
+ }
744
+
745
+ int SSL_CTX_add_extra_chain_cert(SSL_CTX *ctx, X509 *x509) {
746
+ auto *ctx_impl = FromOpaque(ctx);
747
+ check_ssl_ctx_x509_method(ctx_impl);
748
+ return SSL_CTX_add0_chain_cert(ctx, x509);
749
+ }
750
+
751
+ int SSL_add0_chain_cert(SSL *ssl, X509 *x509) {
752
+ auto *ssl_impl = FromOpaque(ssl);
753
+ check_ssl_x509_method(ssl_impl);
754
+ if (!ssl_impl->config) {
755
+ return 0;
756
+ }
757
+ return ssl_cert_add0_chain_cert(ssl_impl->config->cert.get(), x509);
758
+ }
759
+
760
+ int SSL_add1_chain_cert(SSL *ssl, X509 *x509) {
761
+ auto *ssl_impl = FromOpaque(ssl);
762
+ check_ssl_x509_method(ssl_impl);
763
+ if (!ssl_impl->config) {
764
+ return 0;
765
+ }
766
+ return ssl_cert_add1_chain_cert(ssl_impl->config->cert.get(), x509);
767
+ }
768
+
769
+ int SSL_CTX_clear_chain_certs(SSL_CTX *ctx) {
770
+ auto *ctx_impl = FromOpaque(ctx);
771
+ check_ssl_ctx_x509_method(ctx_impl);
772
+ return SSL_CTX_set0_chain(ctx, nullptr);
773
+ }
774
+
775
+ int SSL_CTX_clear_extra_chain_certs(SSL_CTX *ctx) {
776
+ auto *ctx_impl = FromOpaque(ctx);
777
+ check_ssl_ctx_x509_method(ctx_impl);
778
+ return SSL_CTX_clear_chain_certs(ctx);
779
+ }
780
+
781
+ int SSL_clear_chain_certs(SSL *ssl) {
782
+ auto *ssl_impl = FromOpaque(ssl);
783
+ check_ssl_x509_method(ssl_impl);
784
+ return SSL_set0_chain(ssl_impl, nullptr);
785
+ }
786
+
787
+ // ssl_cert_cache_chain_certs fills in `cert->x509_chain` from elements 1.. of
788
+ // `cert->chain`.
789
+ static int ssl_cert_cache_chain_certs(CERT *cert) {
790
+ assert(cert->x509_method);
791
+
792
+ const SSLCredential *cred = cert->legacy_credential.get();
793
+ if (cert->x509_chain != nullptr || cred->chain == nullptr ||
794
+ sk_CRYPTO_BUFFER_num(cred->chain.get()) < 2) {
795
+ return 1;
796
+ }
797
+
798
+ UniquePtr<STACK_OF(X509)> chain(sk_X509_new_null());
799
+ if (!chain) {
800
+ return 0;
801
+ }
802
+
803
+ for (size_t i = 1; i < sk_CRYPTO_BUFFER_num(cred->chain.get()); i++) {
804
+ CRYPTO_BUFFER *buffer = sk_CRYPTO_BUFFER_value(cred->chain.get(), i);
805
+ UniquePtr<X509> x509(X509_parse_from_buffer(buffer));
806
+ if (!x509 || //
807
+ !PushToStack(chain.get(), std::move(x509))) {
808
+ return 0;
809
+ }
810
+ }
811
+
812
+ cert->x509_chain = chain.release();
813
+ return 1;
814
+ }
815
+
816
+ int SSL_CTX_get0_chain_certs(const SSL_CTX *ctx, STACK_OF(X509) **out_chain) {
817
+ auto *ctx_impl = FromOpaque(ctx);
818
+ check_ssl_ctx_x509_method(ctx_impl);
819
+ MutexWriteLock lock(&ctx_impl->lock);
820
+ if (!ssl_cert_cache_chain_certs(ctx_impl->cert.get())) {
821
+ *out_chain = nullptr;
822
+ return 0;
823
+ }
824
+
825
+ *out_chain = ctx_impl->cert->x509_chain;
826
+ return 1;
827
+ }
828
+
829
+ int SSL_CTX_get_extra_chain_certs(const SSL_CTX *ctx,
830
+ STACK_OF(X509) **out_chain) {
831
+ return SSL_CTX_get0_chain_certs(ctx, out_chain);
832
+ }
833
+
834
+ int SSL_get0_chain_certs(const SSL *ssl, STACK_OF(X509) **out_chain) {
835
+ const auto *ssl_impl = FromOpaque(ssl);
836
+ check_ssl_x509_method(ssl_impl);
837
+ if (!ssl_impl->config) {
838
+ assert(ssl_impl->config);
839
+ return 0;
840
+ }
841
+ if (!ssl_cert_cache_chain_certs(ssl_impl->config->cert.get())) {
842
+ *out_chain = nullptr;
843
+ return 0;
844
+ }
845
+
846
+ *out_chain = ssl_impl->config->cert->x509_chain;
847
+ return 1;
848
+ }
849
+
850
+ SSL_SESSION *d2i_SSL_SESSION_bio(BIO *bio, SSL_SESSION **out) {
851
+ uint8_t *data;
852
+ size_t len;
853
+ if (!BIO_read_asn1(bio, &data, &len, 1024 * 1024)) {
854
+ return nullptr;
855
+ }
856
+ bssl::UniquePtr<uint8_t> free_data(data);
857
+ const uint8_t *ptr = data;
858
+ return d2i_SSL_SESSION(out, &ptr, static_cast<long>(len));
859
+ }
860
+
861
+ int i2d_SSL_SESSION_bio(BIO *bio, const SSL_SESSION *session) {
862
+ uint8_t *data;
863
+ size_t len;
864
+ if (!SSL_SESSION_to_bytes(session, &data, &len)) {
865
+ return 0;
866
+ }
867
+ bssl::UniquePtr<uint8_t> free_data(data);
868
+ return BIO_write_all(bio, data, len);
869
+ }
870
+
871
+ IMPLEMENT_PEM_rw(SSL_SESSION, SSL_SESSION, PEM_STRING_SSL_SESSION, SSL_SESSION)
872
+
873
+ SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **out, const uint8_t **inp, long len) {
874
+ return bssl::D2IFromCBS(
875
+ out, inp, len, [](CBS *cbs) -> UniquePtr<SSL_SESSION> {
876
+ return SSL_SESSION_parse(cbs, &ssl_crypto_x509_method,
877
+ nullptr /* no buffer pool */);
878
+ });
879
+ }
880
+
881
+ STACK_OF(X509_NAME) *SSL_dup_CA_list(STACK_OF(X509_NAME) *list) {
882
+ return sk_X509_NAME_deep_copy(list, X509_NAME_dup, X509_NAME_free);
883
+ }
884
+
885
+ static void set_client_CA_list(UniquePtr<STACK_OF(CRYPTO_BUFFER)> *ca_list,
886
+ const STACK_OF(X509_NAME) *name_list,
887
+ CRYPTO_BUFFER_POOL *pool) {
888
+ UniquePtr<STACK_OF(CRYPTO_BUFFER)> buffers(sk_CRYPTO_BUFFER_new_null());
889
+ if (!buffers) {
890
+ return;
891
+ }
892
+
893
+ for (X509_NAME *name : name_list) {
894
+ uint8_t *outp = nullptr;
895
+ int len = i2d_X509_NAME(name, &outp);
896
+ if (len < 0) {
897
+ return;
898
+ }
899
+
900
+ UniquePtr<CRYPTO_BUFFER> buffer(CRYPTO_BUFFER_new(outp, len, pool));
901
+ OPENSSL_free(outp);
902
+ if (!buffer || !PushToStack(buffers.get(), std::move(buffer))) {
903
+ return;
904
+ }
905
+ }
906
+
907
+ *ca_list = std::move(buffers);
908
+ }
909
+
910
+ void SSL_set_client_CA_list(SSL *ssl, STACK_OF(X509_NAME) *name_list) {
911
+ auto *ssl_impl = FromOpaque(ssl);
912
+ check_ssl_x509_method(ssl_impl);
913
+ if (!ssl_impl->config) {
914
+ return;
915
+ }
916
+ ssl_impl->ctx->x509_method->ssl_flush_cached_client_CA(
917
+ ssl_impl->config.get());
918
+ set_client_CA_list(&ssl_impl->config->client_CA, name_list,
919
+ ssl_impl->ctx->pool.get());
920
+ sk_X509_NAME_pop_free(name_list, X509_NAME_free);
921
+ }
922
+
923
+ void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list) {
924
+ auto *ctx_impl = FromOpaque(ctx);
925
+ check_ssl_ctx_x509_method(ctx_impl);
926
+ ctx_impl->x509_method->ssl_ctx_flush_cached_client_CA(ctx_impl);
927
+ set_client_CA_list(&ctx_impl->client_CA, name_list, ctx_impl->pool.get());
928
+ sk_X509_NAME_pop_free(name_list, X509_NAME_free);
929
+ }
930
+
931
+ static STACK_OF(X509_NAME) *buffer_names_to_x509(
932
+ const STACK_OF(CRYPTO_BUFFER) *names, STACK_OF(X509_NAME) **cached) {
933
+ if (names == nullptr) {
934
+ return nullptr;
935
+ }
936
+
937
+ if (*cached != nullptr) {
938
+ return *cached;
939
+ }
940
+
941
+ UniquePtr<STACK_OF(X509_NAME)> new_cache(sk_X509_NAME_new_null());
942
+ if (!new_cache) {
943
+ return nullptr;
944
+ }
945
+
946
+ for (const CRYPTO_BUFFER *buffer : names) {
947
+ const uint8_t *inp = CRYPTO_BUFFER_data(buffer);
948
+ UniquePtr<X509_NAME> name(
949
+ d2i_X509_NAME(nullptr, &inp, CRYPTO_BUFFER_len(buffer)));
950
+ if (!name ||
951
+ inp != CRYPTO_BUFFER_data(buffer) + CRYPTO_BUFFER_len(buffer) ||
952
+ !PushToStack(new_cache.get(), std::move(name))) {
953
+ return nullptr;
954
+ }
955
+ }
956
+
957
+ *cached = new_cache.release();
958
+ return *cached;
959
+ }
960
+
961
+ STACK_OF(X509_NAME) *SSL_get_client_CA_list(const SSL *ssl) {
962
+ const auto *ssl_impl = FromOpaque(ssl);
963
+ check_ssl_x509_method(ssl_impl);
964
+ if (!ssl_impl->config) {
965
+ assert(ssl_impl->config);
966
+ return nullptr;
967
+ }
968
+ // For historical reasons, this function is used both to query configuration
969
+ // state on a server as well as handshake state on a client. However, whether
970
+ // `ssl` is a client or server is not known until explicitly configured with
971
+ // `SSL_set_connect_state`. If `do_handshake` is NULL, `ssl` is in an
972
+ // indeterminate mode and `ssl->server` is unset.
973
+ if (ssl_impl->do_handshake != nullptr && !ssl_impl->server) {
974
+ if (ssl_impl->s3->hs != nullptr) {
975
+ return buffer_names_to_x509(ssl_impl->s3->hs->ca_names.get(),
976
+ &ssl_impl->s3->hs->cached_x509_ca_names);
977
+ }
978
+
979
+ return nullptr;
980
+ }
981
+
982
+ if (ssl_impl->config->client_CA != nullptr) {
983
+ return buffer_names_to_x509(
984
+ ssl_impl->config->client_CA.get(),
985
+ (STACK_OF(X509_NAME) **)&ssl_impl->config->cached_x509_client_CA);
986
+ }
987
+ return SSL_CTX_get_client_CA_list(ssl_impl->ctx.get());
988
+ }
989
+
990
+ STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(const SSL_CTX *ctx) {
991
+ auto *ctx_impl = FromOpaque(ctx);
992
+ check_ssl_ctx_x509_method(ctx_impl);
993
+ // This is a logically const operation that may be called on multiple threads,
994
+ // so it needs to lock around updating `cached_x509_client_CA`.
995
+ MutexWriteLock lock(&ctx_impl->lock);
996
+ return buffer_names_to_x509(
997
+ ctx_impl->client_CA.get(),
998
+ const_cast<STACK_OF(X509_NAME) **>(&ctx_impl->cached_x509_client_CA));
999
+ }
1000
+
1001
+ static int add_client_CA(UniquePtr<STACK_OF(CRYPTO_BUFFER)> *names, X509 *x509,
1002
+ CRYPTO_BUFFER_POOL *pool) {
1003
+ if (x509 == nullptr) {
1004
+ return 0;
1005
+ }
1006
+
1007
+ uint8_t *outp = nullptr;
1008
+ int len = i2d_X509_NAME(X509_get_subject_name(x509), &outp);
1009
+ if (len < 0) {
1010
+ return 0;
1011
+ }
1012
+
1013
+ UniquePtr<CRYPTO_BUFFER> buffer(CRYPTO_BUFFER_new(outp, len, pool));
1014
+ OPENSSL_free(outp);
1015
+ if (!buffer) {
1016
+ return 0;
1017
+ }
1018
+
1019
+ int alloced = 0;
1020
+ if (*names == nullptr) {
1021
+ names->reset(sk_CRYPTO_BUFFER_new_null());
1022
+ alloced = 1;
1023
+
1024
+ if (*names == nullptr) {
1025
+ return 0;
1026
+ }
1027
+ }
1028
+
1029
+ if (!PushToStack(names->get(), std::move(buffer))) {
1030
+ if (alloced) {
1031
+ names->reset();
1032
+ }
1033
+ return 0;
1034
+ }
1035
+
1036
+ return 1;
1037
+ }
1038
+
1039
+ int SSL_add_client_CA(SSL *ssl, X509 *x509) {
1040
+ auto *ssl_impl = FromOpaque(ssl);
1041
+ check_ssl_x509_method(ssl_impl);
1042
+ if (!ssl_impl->config) {
1043
+ return 0;
1044
+ }
1045
+ if (!add_client_CA(&ssl_impl->config->client_CA, x509,
1046
+ ssl_impl->ctx->pool.get())) {
1047
+ return 0;
1048
+ }
1049
+
1050
+ ssl_crypto_x509_ssl_flush_cached_client_CA(ssl_impl->config.get());
1051
+ return 1;
1052
+ }
1053
+
1054
+ int SSL_CTX_add_client_CA(SSL_CTX *ctx, X509 *x509) {
1055
+ auto *ctx_impl = FromOpaque(ctx);
1056
+ check_ssl_ctx_x509_method(ctx_impl);
1057
+ if (!add_client_CA(&ctx_impl->client_CA, x509, ctx_impl->pool.get())) {
1058
+ return 0;
1059
+ }
1060
+
1061
+ ssl_crypto_x509_ssl_ctx_flush_cached_client_CA(ctx_impl);
1062
+ return 1;
1063
+ }
1064
+
1065
+ static int do_client_cert_cb(SSL *ssl, void *arg) {
1066
+ auto *ssl_impl = FromOpaque(ssl);
1067
+ // Should only be called during handshake, but check to be sure.
1068
+ BSSL_CHECK(ssl_impl->config);
1069
+
1070
+ if (ssl_impl->config->cert->legacy_credential->IsComplete() ||
1071
+ ssl_impl->ctx->client_cert_cb == nullptr) {
1072
+ return 1;
1073
+ }
1074
+
1075
+ X509 *x509 = nullptr;
1076
+ EVP_PKEY *pkey = nullptr;
1077
+ int ret = ssl_impl->ctx->client_cert_cb(ssl_impl, &x509, &pkey);
1078
+ if (ret < 0) {
1079
+ return -1;
1080
+ }
1081
+ UniquePtr<X509> free_x509(x509);
1082
+ UniquePtr<EVP_PKEY> free_pkey(pkey);
1083
+
1084
+ if (ret != 0) {
1085
+ if (!SSL_use_certificate(ssl_impl, x509) || //
1086
+ !SSL_use_PrivateKey(ssl_impl, pkey)) {
1087
+ return 0;
1088
+ }
1089
+ }
1090
+
1091
+ return 1;
1092
+ }
1093
+
1094
+ void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx,
1095
+ int (*cb)(SSL *ssl, X509 **out_x509,
1096
+ EVP_PKEY **out_pkey)) {
1097
+ auto *ctx_impl = FromOpaque(ctx);
1098
+ check_ssl_ctx_x509_method(ctx_impl);
1099
+ // Emulate the old client certificate callback with the new one.
1100
+ SSL_CTX_set_cert_cb(ctx, do_client_cert_cb, nullptr);
1101
+ ctx_impl->client_cert_cb = cb;
1102
+ }
1103
+
1104
+ static int set_cert_store(X509_STORE **store_ptr, X509_STORE *new_store,
1105
+ int take_ref) {
1106
+ X509_STORE_free(*store_ptr);
1107
+ *store_ptr = new_store;
1108
+
1109
+ if (new_store != nullptr && take_ref) {
1110
+ X509_STORE_up_ref(new_store);
1111
+ }
1112
+
1113
+ return 1;
1114
+ }
1115
+
1116
+ int SSL_get_ex_data_X509_STORE_CTX_idx() {
1117
+ // The ex_data index to go from `X509_STORE_CTX` to `SSL` always uses the
1118
+ // reserved app_data slot. Before ex_data was introduced, app_data was used.
1119
+ // Avoid breaking any software which assumes `X509_STORE_CTX_get_app_data`
1120
+ // works.
1121
+ return 0;
1122
+ }
1123
+
1124
+ int SSL_CTX_set0_verify_cert_store(SSL_CTX *ctx, X509_STORE *store) {
1125
+ auto *ctx_impl = FromOpaque(ctx);
1126
+ check_ssl_ctx_x509_method(ctx_impl);
1127
+ return set_cert_store(&ctx_impl->cert->verify_store, store, 0);
1128
+ }
1129
+
1130
+ int SSL_CTX_set1_verify_cert_store(SSL_CTX *ctx, X509_STORE *store) {
1131
+ auto *ctx_impl = FromOpaque(ctx);
1132
+ check_ssl_ctx_x509_method(ctx_impl);
1133
+ return set_cert_store(&ctx_impl->cert->verify_store, store, 1);
1134
+ }
1135
+
1136
+ int SSL_set0_verify_cert_store(SSL *ssl, X509_STORE *store) {
1137
+ auto *ssl_impl = FromOpaque(ssl);
1138
+ check_ssl_x509_method(ssl_impl);
1139
+ if (!ssl_impl->config) {
1140
+ return 0;
1141
+ }
1142
+ return set_cert_store(&ssl_impl->config->cert->verify_store, store, 0);
1143
+ }
1144
+
1145
+ int SSL_set1_verify_cert_store(SSL *ssl, X509_STORE *store) {
1146
+ auto *ssl_impl = FromOpaque(ssl);
1147
+ check_ssl_x509_method(ssl_impl);
1148
+ if (!ssl_impl->config) {
1149
+ return 0;
1150
+ }
1151
+ return set_cert_store(&ssl_impl->config->cert->verify_store, store, 1);
1152
+ }
1153
+
1154
+ int SSL_set1_host(SSL *ssl, const char *hostname) {
1155
+ auto *ssl_impl = FromOpaque(ssl);
1156
+ check_ssl_x509_method(ssl_impl);
1157
+ if (!ssl_impl->config) {
1158
+ return 0;
1159
+ }
1160
+ return X509_VERIFY_PARAM_set1_host(ssl_impl->config->param, hostname,
1161
+ strlen(hostname));
1162
+ }
1163
+
1164
+ void SSL_set_hostflags(SSL *ssl, unsigned flags) {
1165
+ auto *ssl_impl = FromOpaque(ssl);
1166
+ check_ssl_x509_method(ssl_impl);
1167
+ if (!ssl_impl->config) {
1168
+ return;
1169
+ }
1170
+ X509_VERIFY_PARAM_set_hostflags(ssl_impl->config->param, flags);
1171
+ }
1172
+
1173
+ int SSL_alert_from_verify_result(long result) {
1174
+ switch (result) {
1175
+ case X509_V_ERR_CERT_CHAIN_TOO_LONG:
1176
+ case X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT:
1177
+ case X509_V_ERR_INVALID_CA:
1178
+ case X509_V_ERR_PATH_LENGTH_EXCEEDED:
1179
+ case X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN:
1180
+ case X509_V_ERR_UNABLE_TO_GET_CRL:
1181
+ case X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER:
1182
+ case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT:
1183
+ case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY:
1184
+ case X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE:
1185
+ return SSL_AD_UNKNOWN_CA;
1186
+
1187
+ case X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE:
1188
+ case X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE:
1189
+ case X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY:
1190
+ case X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD:
1191
+ case X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD:
1192
+ case X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD:
1193
+ case X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD:
1194
+ case X509_V_ERR_CERT_UNTRUSTED:
1195
+ case X509_V_ERR_CERT_REJECTED:
1196
+ case X509_V_ERR_HOSTNAME_MISMATCH:
1197
+ case X509_V_ERR_EMAIL_MISMATCH:
1198
+ case X509_V_ERR_IP_ADDRESS_MISMATCH:
1199
+ return SSL_AD_BAD_CERTIFICATE;
1200
+
1201
+ case X509_V_ERR_CERT_SIGNATURE_FAILURE:
1202
+ case X509_V_ERR_CRL_SIGNATURE_FAILURE:
1203
+ return SSL_AD_DECRYPT_ERROR;
1204
+
1205
+ case X509_V_ERR_CERT_HAS_EXPIRED:
1206
+ case X509_V_ERR_CERT_NOT_YET_VALID:
1207
+ case X509_V_ERR_CRL_HAS_EXPIRED:
1208
+ case X509_V_ERR_CRL_NOT_YET_VALID:
1209
+ return SSL_AD_CERTIFICATE_EXPIRED;
1210
+
1211
+ case X509_V_ERR_CERT_REVOKED:
1212
+ return SSL_AD_CERTIFICATE_REVOKED;
1213
+
1214
+ case X509_V_ERR_UNSPECIFIED:
1215
+ case X509_V_ERR_OUT_OF_MEM:
1216
+ case X509_V_ERR_INVALID_CALL:
1217
+ case X509_V_ERR_STORE_LOOKUP:
1218
+ return SSL_AD_INTERNAL_ERROR;
1219
+
1220
+ case X509_V_ERR_APPLICATION_VERIFICATION:
1221
+ return SSL_AD_HANDSHAKE_FAILURE;
1222
+
1223
+ case X509_V_ERR_INVALID_PURPOSE:
1224
+ return SSL_AD_UNSUPPORTED_CERTIFICATE;
1225
+
1226
+ default:
1227
+ return SSL_AD_CERTIFICATE_UNKNOWN;
1228
+ }
1229
+ }