visaljs 0.0.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1243) hide show
  1. package/README.md +3 -1
  2. package/cli.js +545 -86
  3. package/node/include/js_node.h +30 -5
  4. package/node/include/js_uv.h +36 -0
  5. package/node/prelude/async_hooks.js +0 -0
  6. package/node/prelude/buffer.js +0 -0
  7. package/node/prelude/crypto.js +7 -10
  8. package/node/prelude/dns.js +99 -0
  9. package/node/prelude/dns_promises.js +10 -0
  10. package/node/prelude/events.js +0 -0
  11. package/node/prelude/fs.js +0 -0
  12. package/node/prelude/http.js +1039 -195
  13. package/node/prelude/http2.js +0 -0
  14. package/node/prelude/internal/crypto/asym.js +39 -12
  15. package/node/prelude/internal/crypto/cipher.js +0 -0
  16. package/node/prelude/internal/crypto/dh_groups.js +12 -0
  17. package/node/prelude/internal/crypto/diffiehellman.js +354 -0
  18. package/node/prelude/internal/crypto/hash.js +1 -1
  19. package/node/prelude/internal/crypto/kdf.js +0 -0
  20. package/node/prelude/internal/crypto/key_type.js +3 -0
  21. package/node/prelude/internal/crypto/keys.js +39 -9
  22. package/node/prelude/internal/crypto/random.js +0 -0
  23. package/node/prelude/internal/crypto/util.js +0 -0
  24. package/node/prelude/internal/errors.js +0 -0
  25. package/node/prelude/internal/http_agent.js +249 -0
  26. package/node/prelude/internal/net.js +33 -0
  27. package/node/prelude/internal/querystring.js +0 -0
  28. package/node/prelude/internal/socketaddress.js +249 -0
  29. package/node/prelude/internal/tls/common.js +306 -0
  30. package/node/prelude/internal/tls/wrap.js +1220 -0
  31. package/node/prelude/internal/tls/x509.js +394 -0
  32. package/node/prelude/module.js +0 -0
  33. package/node/prelude/net.js +1082 -50
  34. package/node/prelude/os.js +2 -2
  35. package/node/prelude/path.js +0 -0
  36. package/node/prelude/process.js +0 -0
  37. package/node/prelude/querystring.js +0 -0
  38. package/node/prelude/stream.js +6 -0
  39. package/node/prelude/stream_promises.js +0 -0
  40. package/node/prelude/stream_web.js +0 -0
  41. package/node/prelude/string_decoder.js +0 -0
  42. package/node/prelude/tls.js +141 -0
  43. package/node/prelude/tty.js +0 -0
  44. package/node/prelude/url.js +0 -0
  45. package/node/prelude/util.js +5 -2
  46. package/node/prelude/util_types.js +85 -0
  47. package/node/prelude/zlib.js +0 -0
  48. package/node/src/host_fs.c +10 -2
  49. package/node/src/host_http.c +268 -270
  50. package/node/src/host_loop.c +84 -0
  51. package/node/src/host_net.c +495 -0
  52. package/node/src/host_os.c +0 -0
  53. package/node/src/host_sys.c +54 -26
  54. package/node/third_party/libuv/LICENSE +0 -0
  55. package/node/third_party/libuv/include/uv/aix.h +0 -0
  56. package/node/third_party/libuv/include/uv/bsd.h +0 -0
  57. package/node/third_party/libuv/include/uv/darwin.h +0 -0
  58. package/node/third_party/libuv/include/uv/errno.h +0 -0
  59. package/node/third_party/libuv/include/uv/linux.h +0 -0
  60. package/node/third_party/libuv/include/uv/os390.h +0 -0
  61. package/node/third_party/libuv/include/uv/posix.h +0 -0
  62. package/node/third_party/libuv/include/uv/sunos.h +0 -0
  63. package/node/third_party/libuv/include/uv/threadpool.h +0 -0
  64. package/node/third_party/libuv/include/uv/tree.h +0 -0
  65. package/node/third_party/libuv/include/uv/unix.h +0 -0
  66. package/node/third_party/libuv/include/uv/version.h +0 -0
  67. package/node/third_party/libuv/include/uv/win.h +0 -0
  68. package/node/third_party/libuv/include/uv.h +0 -0
  69. package/node/third_party/libuv/src/fs-poll.c +0 -0
  70. package/node/third_party/libuv/src/heap-inl.h +0 -0
  71. package/node/third_party/libuv/src/idna.c +0 -0
  72. package/node/third_party/libuv/src/idna.h +0 -0
  73. package/node/third_party/libuv/src/inet.c +0 -0
  74. package/node/third_party/libuv/src/queue.h +0 -0
  75. package/node/third_party/libuv/src/random.c +0 -0
  76. package/node/third_party/libuv/src/strscpy.c +0 -0
  77. package/node/third_party/libuv/src/strscpy.h +0 -0
  78. package/node/third_party/libuv/src/strtok.c +0 -0
  79. package/node/third_party/libuv/src/strtok.h +0 -0
  80. package/node/third_party/libuv/src/thread-common.c +0 -0
  81. package/node/third_party/libuv/src/threadpool.c +0 -0
  82. package/node/third_party/libuv/src/timer.c +0 -0
  83. package/node/third_party/libuv/src/unix/async.c +0 -0
  84. package/node/third_party/libuv/src/unix/bsd-ifaddrs.c +0 -0
  85. package/node/third_party/libuv/src/unix/core.c +0 -0
  86. package/node/third_party/libuv/src/unix/darwin-proctitle.c +0 -0
  87. package/node/third_party/libuv/src/unix/darwin-stub.h +0 -0
  88. package/node/third_party/libuv/src/unix/darwin-syscalls.h +0 -0
  89. package/node/third_party/libuv/src/unix/darwin.c +0 -0
  90. package/node/third_party/libuv/src/unix/dl.c +0 -0
  91. package/node/third_party/libuv/src/unix/fs.c +0 -0
  92. package/node/third_party/libuv/src/unix/fsevents.c +0 -0
  93. package/node/third_party/libuv/src/unix/getaddrinfo.c +0 -0
  94. package/node/third_party/libuv/src/unix/getnameinfo.c +0 -0
  95. package/node/third_party/libuv/src/unix/internal.h +0 -0
  96. package/node/third_party/libuv/src/unix/kqueue.c +0 -0
  97. package/node/third_party/libuv/src/unix/linux.c +0 -0
  98. package/node/third_party/libuv/src/unix/loop-watcher.c +0 -0
  99. package/node/third_party/libuv/src/unix/loop.c +0 -0
  100. package/node/third_party/libuv/src/unix/pipe.c +0 -0
  101. package/node/third_party/libuv/src/unix/poll.c +0 -0
  102. package/node/third_party/libuv/src/unix/process.c +0 -0
  103. package/node/third_party/libuv/src/unix/procfs-exepath.c +0 -0
  104. package/node/third_party/libuv/src/unix/proctitle.c +0 -0
  105. package/node/third_party/libuv/src/unix/random-devurandom.c +0 -0
  106. package/node/third_party/libuv/src/unix/random-getentropy.c +0 -0
  107. package/node/third_party/libuv/src/unix/random-getrandom.c +0 -0
  108. package/node/third_party/libuv/src/unix/random-sysctl-linux.c +0 -0
  109. package/node/third_party/libuv/src/unix/signal.c +0 -0
  110. package/node/third_party/libuv/src/unix/stream.c +0 -0
  111. package/node/third_party/libuv/src/unix/tcp.c +0 -0
  112. package/node/third_party/libuv/src/unix/thread.c +0 -0
  113. package/node/third_party/libuv/src/unix/tty.c +0 -0
  114. package/node/third_party/libuv/src/unix/udp.c +0 -0
  115. package/node/third_party/libuv/src/uv-common.c +0 -0
  116. package/node/third_party/libuv/src/uv-common.h +0 -0
  117. package/node/third_party/libuv/src/uv-data-getter-setters.c +0 -0
  118. package/node/third_party/libuv/src/version.c +0 -0
  119. package/node/third_party/libuv/src/win/async.c +98 -0
  120. package/node/third_party/libuv/src/win/atomicops-inl.h +61 -0
  121. package/node/third_party/libuv/src/win/core.c +683 -0
  122. package/node/third_party/libuv/src/win/detect-wakeup.c +56 -0
  123. package/node/third_party/libuv/src/win/dl.c +135 -0
  124. package/node/third_party/libuv/src/win/error.c +183 -0
  125. package/node/third_party/libuv/src/win/fs-event.c +620 -0
  126. package/node/third_party/libuv/src/win/fs-fd-hash-inl.h +200 -0
  127. package/node/third_party/libuv/src/win/fs.c +3774 -0
  128. package/node/third_party/libuv/src/win/getaddrinfo.c +388 -0
  129. package/node/third_party/libuv/src/win/getnameinfo.c +146 -0
  130. package/node/third_party/libuv/src/win/handle-inl.h +180 -0
  131. package/node/third_party/libuv/src/win/handle.c +162 -0
  132. package/node/third_party/libuv/src/win/internal.h +335 -0
  133. package/node/third_party/libuv/src/win/loop-watcher.c +122 -0
  134. package/node/third_party/libuv/src/win/pipe.c +2725 -0
  135. package/node/third_party/libuv/src/win/poll.c +586 -0
  136. package/node/third_party/libuv/src/win/process-stdio.c +419 -0
  137. package/node/third_party/libuv/src/win/process.c +1407 -0
  138. package/node/third_party/libuv/src/win/req-inl.h +214 -0
  139. package/node/third_party/libuv/src/win/signal.c +282 -0
  140. package/node/third_party/libuv/src/win/snprintf.c +42 -0
  141. package/node/third_party/libuv/src/win/stream-inl.h +54 -0
  142. package/node/third_party/libuv/src/win/stream.c +252 -0
  143. package/node/third_party/libuv/src/win/tcp.c +1674 -0
  144. package/node/third_party/libuv/src/win/thread.c +568 -0
  145. package/node/third_party/libuv/src/win/tty.c +2460 -0
  146. package/node/third_party/libuv/src/win/udp.c +1162 -0
  147. package/node/third_party/libuv/src/win/util.c +1750 -0
  148. package/node/third_party/libuv/src/win/winapi.c +144 -0
  149. package/node/third_party/libuv/src/win/winapi.h +4831 -0
  150. package/node/third_party/libuv/src/win/winsock.c +575 -0
  151. package/node/third_party/libuv/src/win/winsock.h +160 -0
  152. package/node/third_party/llhttp/LICENSE +0 -0
  153. package/node/third_party/llhttp/api.c +0 -0
  154. package/node/third_party/llhttp/http.c +0 -0
  155. package/node/third_party/llhttp/llhttp.c +0 -0
  156. package/node/third_party/llhttp/llhttp.h +0 -0
  157. package/package.json +1 -1
  158. package/runtime/include/js_atoms.gen.h +0 -0
  159. package/runtime/include/js_atoms.h +0 -0
  160. package/runtime/include/js_bigint.h +0 -0
  161. package/runtime/include/js_buffer.h +0 -0
  162. package/runtime/include/js_builtins.h +16 -0
  163. package/runtime/include/js_console.h +2 -0
  164. package/runtime/include/js_convert.h +0 -0
  165. package/runtime/include/js_core.def +23 -0
  166. package/runtime/include/js_crypto.h +23 -0
  167. package/runtime/include/js_error.h +0 -0
  168. package/runtime/include/js_exception.h +0 -0
  169. package/runtime/include/js_function.h +0 -0
  170. package/runtime/include/js_gc.h +0 -0
  171. package/runtime/include/js_generator.h +2 -3
  172. package/runtime/include/js_host.h +0 -0
  173. package/runtime/include/js_jobs.h +0 -0
  174. package/runtime/include/js_module.h +0 -0
  175. package/runtime/include/js_object.h +0 -0
  176. package/runtime/include/js_ops.h +0 -0
  177. package/runtime/include/js_promise.h +0 -2
  178. package/runtime/include/js_regexp.h +0 -0
  179. package/runtime/include/js_runtime.h +0 -0
  180. package/runtime/include/js_symbol.h +0 -0
  181. package/runtime/include/js_web.h +0 -0
  182. package/runtime/include/jscell.h +0 -0
  183. package/runtime/include/jscontext.h +0 -0
  184. package/runtime/include/jsnum.h +0 -0
  185. package/runtime/include/jsstring.h +0 -0
  186. package/runtime/include/jsvalue.h +0 -0
  187. package/runtime/src/arguments.c +0 -0
  188. package/runtime/src/array.c +0 -0
  189. package/runtime/src/arraybuffer.c +0 -0
  190. package/runtime/src/async_iter.c +4 -1
  191. package/runtime/src/atoms.c +0 -0
  192. package/runtime/src/base64.c +0 -0
  193. package/runtime/src/bigint.c +0 -0
  194. package/runtime/src/blob.c +0 -0
  195. package/runtime/src/boringssl_support.cc +37 -0
  196. package/runtime/src/buffer.c +0 -0
  197. package/runtime/src/builtin_table.c +8 -0
  198. package/runtime/src/builtins.c +0 -0
  199. package/runtime/src/builtins_util.h +0 -0
  200. package/runtime/src/collections.c +0 -0
  201. package/runtime/src/components.c +10 -0
  202. package/runtime/src/console.c +6 -18
  203. package/runtime/src/convert.c +0 -0
  204. package/runtime/src/core_all.c +1 -0
  205. package/runtime/src/crypto.c +0 -0
  206. package/runtime/src/crypto_asym.c +450 -241
  207. package/runtime/src/crypto_bn.c +91 -0
  208. package/runtime/src/crypto_cipher.c +153 -75
  209. package/runtime/src/crypto_hash.c +68 -53
  210. package/runtime/src/crypto_host.c +0 -0
  211. package/runtime/src/crypto_internal.h +55 -26
  212. package/runtime/src/crypto_kdf.c +0 -0
  213. package/runtime/src/crypto_key.c +0 -0
  214. package/runtime/src/crypto_pkey.c +198 -61
  215. package/runtime/src/crypto_subtle.c +42 -16
  216. package/runtime/src/crypto_tls.c +678 -0
  217. package/runtime/src/date.c +0 -0
  218. package/runtime/src/domexception.c +0 -0
  219. package/runtime/src/elements.c +0 -0
  220. package/runtime/src/elements.h +0 -0
  221. package/runtime/src/encoding.c +0 -0
  222. package/runtime/src/error.c +0 -0
  223. package/runtime/src/events.c +0 -0
  224. package/runtime/src/exception.c +0 -0
  225. package/runtime/src/fetch.c +0 -0
  226. package/runtime/src/function.c +0 -0
  227. package/runtime/src/gc.c +0 -0
  228. package/runtime/src/generator.c +8 -1
  229. package/runtime/src/global.c +2 -4
  230. package/runtime/src/headers.c +0 -0
  231. package/runtime/src/inspect.c +0 -0
  232. package/runtime/src/internal.h +0 -1
  233. package/runtime/src/iterate.c +0 -0
  234. package/runtime/src/iterator.c +0 -0
  235. package/runtime/src/jobs.c +2 -1
  236. package/runtime/src/jsnum.c +0 -0
  237. package/runtime/src/json.c +0 -0
  238. package/runtime/src/math.c +0 -0
  239. package/runtime/src/module.c +0 -0
  240. package/runtime/src/number.c +0 -0
  241. package/runtime/src/object.c +0 -0
  242. package/runtime/src/ops.c +0 -0
  243. package/runtime/src/os.c +0 -0
  244. package/runtime/src/os.h +0 -0
  245. package/runtime/src/process.c +7 -0
  246. package/runtime/src/promise.c +4 -1
  247. package/runtime/src/proxy.c +0 -0
  248. package/runtime/src/reflect.c +0 -0
  249. package/runtime/src/regexp.c +0 -0
  250. package/runtime/src/regexp_anchor.h +0 -0
  251. package/runtime/src/regexp_message.h +0 -0
  252. package/runtime/src/shape.c +0 -0
  253. package/runtime/src/shape.h +0 -0
  254. package/runtime/src/streams.c +0 -0
  255. package/runtime/src/streams.h +0 -0
  256. package/runtime/src/string.c +0 -0
  257. package/runtime/src/string_builtins.c +0 -0
  258. package/runtime/src/symbol.c +0 -0
  259. package/runtime/src/test_host.c +0 -0
  260. package/runtime/src/tls_roots.gen.h +3215 -0
  261. package/runtime/src/typedarray.c +0 -0
  262. package/runtime/src/tznames.gen.h +0 -0
  263. package/runtime/src/uri.c +0 -0
  264. package/runtime/src/url.c +0 -0
  265. package/runtime/src/util_types.c +52 -0
  266. package/runtime/src/weak.c +2 -1
  267. package/runtime/src/web.c +0 -0
  268. package/runtime/src/wrapper.c +0 -0
  269. package/runtime/src/writable.c +0 -0
  270. package/runtime/third_party/ada-idna/LICENSE-MIT +0 -0
  271. package/runtime/third_party/ada-idna/README.md +0 -0
  272. package/runtime/third_party/ada-idna/convert.mjs +0 -0
  273. package/runtime/third_party/ada-idna/idna.c +0 -0
  274. package/runtime/third_party/ada-idna/idna.h +0 -0
  275. package/runtime/third_party/ada-idna/idna_tables.h +0 -0
  276. package/runtime/third_party/boringssl/LICENSE +238 -0
  277. package/runtime/third_party/boringssl/README.md +46 -0
  278. package/runtime/third_party/boringssl/VERSION +1 -0
  279. package/runtime/third_party/boringssl/crypto/aes/aes.cc +44 -0
  280. package/runtime/third_party/boringssl/crypto/armv8_feature_parsing.h +67 -0
  281. package/runtime/third_party/boringssl/crypto/asn1/a_bitstr.cc +297 -0
  282. package/runtime/third_party/boringssl/crypto/asn1/a_bool.cc +50 -0
  283. package/runtime/third_party/boringssl/crypto/asn1/a_d2i_fp.cc +47 -0
  284. package/runtime/third_party/boringssl/crypto/asn1/a_dup.cc +42 -0
  285. package/runtime/third_party/boringssl/crypto/asn1/a_gentm.cc +130 -0
  286. package/runtime/third_party/boringssl/crypto/asn1/a_i2d_fp.cc +44 -0
  287. package/runtime/third_party/boringssl/crypto/asn1/a_int.cc +467 -0
  288. package/runtime/third_party/boringssl/crypto/asn1/a_mbstr.cc +242 -0
  289. package/runtime/third_party/boringssl/crypto/asn1/a_object.cc +191 -0
  290. package/runtime/third_party/boringssl/crypto/asn1/a_octet.cc +32 -0
  291. package/runtime/third_party/boringssl/crypto/asn1/a_strex.cc +411 -0
  292. package/runtime/third_party/boringssl/crypto/asn1/a_strnid.cc +208 -0
  293. package/runtime/third_party/boringssl/crypto/asn1/a_time.cc +248 -0
  294. package/runtime/third_party/boringssl/crypto/asn1/a_type.cc +467 -0
  295. package/runtime/third_party/boringssl/crypto/asn1/a_utctm.cc +128 -0
  296. package/runtime/third_party/boringssl/crypto/asn1/asn1_lib.cc +453 -0
  297. package/runtime/third_party/boringssl/crypto/asn1/asn1_par.cc +61 -0
  298. package/runtime/third_party/boringssl/crypto/asn1/asn_pack.cc +56 -0
  299. package/runtime/third_party/boringssl/crypto/asn1/f_int.cc +63 -0
  300. package/runtime/third_party/boringssl/crypto/asn1/f_string.cc +52 -0
  301. package/runtime/third_party/boringssl/crypto/asn1/internal.h +430 -0
  302. package/runtime/third_party/boringssl/crypto/asn1/posix_time.cc +244 -0
  303. package/runtime/third_party/boringssl/crypto/asn1/tasn_dec.cc +611 -0
  304. package/runtime/third_party/boringssl/crypto/asn1/tasn_enc.cc +348 -0
  305. package/runtime/third_party/boringssl/crypto/asn1/tasn_fre.cc +163 -0
  306. package/runtime/third_party/boringssl/crypto/asn1/tasn_new.cc +274 -0
  307. package/runtime/third_party/boringssl/crypto/asn1/tasn_typ.cc +92 -0
  308. package/runtime/third_party/boringssl/crypto/asn1/tasn_utl.cc +218 -0
  309. package/runtime/third_party/boringssl/crypto/base64/base64.cc +433 -0
  310. package/runtime/third_party/boringssl/crypto/bcm_support.h +62 -0
  311. package/runtime/third_party/boringssl/crypto/bio/bio.cc +715 -0
  312. package/runtime/third_party/boringssl/crypto/bio/bio_mem.cc +260 -0
  313. package/runtime/third_party/boringssl/crypto/bio/connect.cc +463 -0
  314. package/runtime/third_party/boringssl/crypto/bio/errno.cc +52 -0
  315. package/runtime/third_party/boringssl/crypto/bio/fd.cc +193 -0
  316. package/runtime/third_party/boringssl/crypto/bio/file.cc +283 -0
  317. package/runtime/third_party/boringssl/crypto/bio/hexdump.cc +154 -0
  318. package/runtime/third_party/boringssl/crypto/bio/internal.h +128 -0
  319. package/runtime/third_party/boringssl/crypto/bio/pair.cc +426 -0
  320. package/runtime/third_party/boringssl/crypto/bio/printf.cc +59 -0
  321. package/runtime/third_party/boringssl/crypto/bio/socket.cc +210 -0
  322. package/runtime/third_party/boringssl/crypto/bio/socket_helper.cc +179 -0
  323. package/runtime/third_party/boringssl/crypto/blake2/blake2.cc +173 -0
  324. package/runtime/third_party/boringssl/crypto/bn/bn_asn1.cc +57 -0
  325. package/runtime/third_party/boringssl/crypto/bn/convert.cc +409 -0
  326. package/runtime/third_party/boringssl/crypto/bn/div.cc +102 -0
  327. package/runtime/third_party/boringssl/crypto/bn/exponentiation.cc +168 -0
  328. package/runtime/third_party/boringssl/crypto/bn/sqrt.cc +93 -0
  329. package/runtime/third_party/boringssl/crypto/buf/buf.cc +119 -0
  330. package/runtime/third_party/boringssl/crypto/bytestring/asn1_compat.cc +54 -0
  331. package/runtime/third_party/boringssl/crypto/bytestring/ber.cc +268 -0
  332. package/runtime/third_party/boringssl/crypto/bytestring/cbb.cc +787 -0
  333. package/runtime/third_party/boringssl/crypto/bytestring/cbs.cc +977 -0
  334. package/runtime/third_party/boringssl/crypto/bytestring/internal.h +134 -0
  335. package/runtime/third_party/boringssl/crypto/bytestring/unicode.cc +156 -0
  336. package/runtime/third_party/boringssl/crypto/chacha/chacha.cc +226 -0
  337. package/runtime/third_party/boringssl/crypto/chacha/internal.h +103 -0
  338. package/runtime/third_party/boringssl/crypto/cipher/derive_key.cc +106 -0
  339. package/runtime/third_party/boringssl/crypto/cipher/e_aesctrhmac.cc +294 -0
  340. package/runtime/third_party/boringssl/crypto/cipher/e_aeseax.cc +351 -0
  341. package/runtime/third_party/boringssl/crypto/cipher/e_aesgcmsiv.cc +918 -0
  342. package/runtime/third_party/boringssl/crypto/cipher/e_chacha20poly1305.cc +404 -0
  343. package/runtime/third_party/boringssl/crypto/cipher/e_des.cc +214 -0
  344. package/runtime/third_party/boringssl/crypto/cipher/e_null.cc +55 -0
  345. package/runtime/third_party/boringssl/crypto/cipher/e_rc2.cc +432 -0
  346. package/runtime/third_party/boringssl/crypto/cipher/e_rc4.cc +56 -0
  347. package/runtime/third_party/boringssl/crypto/cipher/e_tls.cc +615 -0
  348. package/runtime/third_party/boringssl/crypto/cipher/get_cipher.cc +85 -0
  349. package/runtime/third_party/boringssl/crypto/cipher/internal.h +399 -0
  350. package/runtime/third_party/boringssl/crypto/cipher/tls_cbc.cc +476 -0
  351. package/runtime/third_party/boringssl/crypto/cms/cms.cc +178 -0
  352. package/runtime/third_party/boringssl/crypto/conf/conf.cc +637 -0
  353. package/runtime/third_party/boringssl/crypto/conf/internal.h +54 -0
  354. package/runtime/third_party/boringssl/crypto/cpu_aarch64_apple.cc +76 -0
  355. package/runtime/third_party/boringssl/crypto/cpu_aarch64_fuchsia.cc +58 -0
  356. package/runtime/third_party/boringssl/crypto/cpu_aarch64_linux.cc +66 -0
  357. package/runtime/third_party/boringssl/crypto/cpu_aarch64_openbsd.cc +45 -0
  358. package/runtime/third_party/boringssl/crypto/cpu_aarch64_sysreg.cc +66 -0
  359. package/runtime/third_party/boringssl/crypto/cpu_aarch64_win.cc +52 -0
  360. package/runtime/third_party/boringssl/crypto/cpu_arm_freebsd.cc +55 -0
  361. package/runtime/third_party/boringssl/crypto/cpu_arm_linux.cc +173 -0
  362. package/runtime/third_party/boringssl/crypto/cpu_arm_linux.h +141 -0
  363. package/runtime/third_party/boringssl/crypto/cpu_intel.cc +287 -0
  364. package/runtime/third_party/boringssl/crypto/crypto.cc +152 -0
  365. package/runtime/third_party/boringssl/crypto/curve25519/asm/x25519-asm-arm.S +2124 -0
  366. package/runtime/third_party/boringssl/crypto/curve25519/cpace.cc +227 -0
  367. package/runtime/third_party/boringssl/crypto/curve25519/curve25519.cc +2436 -0
  368. package/runtime/third_party/boringssl/crypto/curve25519/curve25519_64_adx.cc +18 -0
  369. package/runtime/third_party/boringssl/crypto/curve25519/curve25519_tables.h +3264 -0
  370. package/runtime/third_party/boringssl/crypto/curve25519/internal.h +202 -0
  371. package/runtime/third_party/boringssl/crypto/curve25519/spake25519.cc +532 -0
  372. package/runtime/third_party/boringssl/crypto/des/des.cc +837 -0
  373. package/runtime/third_party/boringssl/crypto/des/internal.h +144 -0
  374. package/runtime/third_party/boringssl/crypto/dh/dh_asn1.cc +109 -0
  375. package/runtime/third_party/boringssl/crypto/dh/params.cc +411 -0
  376. package/runtime/third_party/boringssl/crypto/digest/digest_extra.cc +361 -0
  377. package/runtime/third_party/boringssl/crypto/dsa/dsa.cc +922 -0
  378. package/runtime/third_party/boringssl/crypto/dsa/dsa_asn1.cc +306 -0
  379. package/runtime/third_party/boringssl/crypto/dsa/internal.h +56 -0
  380. package/runtime/third_party/boringssl/crypto/ec/ec_asn1.cc +542 -0
  381. package/runtime/third_party/boringssl/crypto/ec/ec_derive.cc +94 -0
  382. package/runtime/third_party/boringssl/crypto/ec/hash_to_curve.cc +773 -0
  383. package/runtime/third_party/boringssl/crypto/ec/internal.h +114 -0
  384. package/runtime/third_party/boringssl/crypto/ecdh/ecdh.cc +75 -0
  385. package/runtime/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.cc +337 -0
  386. package/runtime/third_party/boringssl/crypto/ecdsa/ecdsa_p1363.cc +54 -0
  387. package/runtime/third_party/boringssl/crypto/engine/engine.cc +95 -0
  388. package/runtime/third_party/boringssl/crypto/err/err.cc +820 -0
  389. package/runtime/third_party/boringssl/crypto/err/internal.h +45 -0
  390. package/runtime/third_party/boringssl/crypto/evp/evp.cc +454 -0
  391. package/runtime/third_party/boringssl/crypto/evp/evp_asn1.cc +439 -0
  392. package/runtime/third_party/boringssl/crypto/evp/evp_ctx.cc +541 -0
  393. package/runtime/third_party/boringssl/crypto/evp/evp_kem.cc +101 -0
  394. package/runtime/third_party/boringssl/crypto/evp/internal.h +427 -0
  395. package/runtime/third_party/boringssl/crypto/evp/p_dh.cc +326 -0
  396. package/runtime/third_party/boringssl/crypto/evp/p_dsa.cc +333 -0
  397. package/runtime/third_party/boringssl/crypto/evp/p_ec.cc +736 -0
  398. package/runtime/third_party/boringssl/crypto/evp/p_ed25519.cc +359 -0
  399. package/runtime/third_party/boringssl/crypto/evp/p_hkdf.cc +204 -0
  400. package/runtime/third_party/boringssl/crypto/evp/p_mldsa.cc +549 -0
  401. package/runtime/third_party/boringssl/crypto/evp/p_mlkem.cc +510 -0
  402. package/runtime/third_party/boringssl/crypto/evp/p_rsa.cc +1185 -0
  403. package/runtime/third_party/boringssl/crypto/evp/p_x25519.cc +371 -0
  404. package/runtime/third_party/boringssl/crypto/evp/p_xwing.cc +300 -0
  405. package/runtime/third_party/boringssl/crypto/evp/pbkdf.cc +105 -0
  406. package/runtime/third_party/boringssl/crypto/evp/print.cc +287 -0
  407. package/runtime/third_party/boringssl/crypto/evp/scrypt.cc +218 -0
  408. package/runtime/third_party/boringssl/crypto/evp/sign.cc +95 -0
  409. package/runtime/third_party/boringssl/crypto/ex_data.cc +140 -0
  410. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/aes.cc.inc +208 -0
  411. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/aes_nohw.cc.inc +1279 -0
  412. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/cbc.cc.inc +132 -0
  413. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/cfb.cc.inc +168 -0
  414. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/ctr.cc.inc +102 -0
  415. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/gcm.cc.inc +614 -0
  416. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/gcm_nohw.cc.inc +304 -0
  417. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/internal.h +590 -0
  418. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/key_wrap.cc.inc +211 -0
  419. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/mode_wrappers.cc.inc +97 -0
  420. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/ofb.cc.inc +55 -0
  421. package/runtime/third_party/boringssl/crypto/fipsmodule/bcm.cc +288 -0
  422. package/runtime/third_party/boringssl/crypto/fipsmodule/bcm_interface.h +953 -0
  423. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/add.cc.inc +276 -0
  424. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/asm/x86_64-gcc.cc.inc +573 -0
  425. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/bn.cc.inc +377 -0
  426. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/bytes.cc.inc +230 -0
  427. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/cmp.cc.inc +161 -0
  428. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/ctx.cc.inc +127 -0
  429. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/div.cc.inc +738 -0
  430. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/div_extra.cc.inc +90 -0
  431. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.cc.inc +743 -0
  432. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/gcd.cc.inc +281 -0
  433. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/gcd_extra.cc.inc +327 -0
  434. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/generic.cc.inc +579 -0
  435. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/internal.h +810 -0
  436. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/jacobi.cc.inc +101 -0
  437. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/montgomery.cc.inc +408 -0
  438. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/montgomery_inv.cc.inc +179 -0
  439. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/mul.cc.inc +347 -0
  440. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/prime.cc.inc +931 -0
  441. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/random.cc.inc +261 -0
  442. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.cc.inc +144 -0
  443. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.h +109 -0
  444. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/shift.cc.inc +317 -0
  445. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/sqrt.cc.inc +370 -0
  446. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/aead.cc.inc +619 -0
  447. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/cipher.cc.inc +837 -0
  448. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.cc.inc +1240 -0
  449. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/e_aesccm.cc.inc +440 -0
  450. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/internal.h +461 -0
  451. package/runtime/third_party/boringssl/crypto/fipsmodule/cmac/cmac.cc.inc +293 -0
  452. package/runtime/third_party/boringssl/crypto/fipsmodule/delocate.h +95 -0
  453. package/runtime/third_party/boringssl/crypto/fipsmodule/dh/check.cc.inc +198 -0
  454. package/runtime/third_party/boringssl/crypto/fipsmodule/dh/dh.cc.inc +401 -0
  455. package/runtime/third_party/boringssl/crypto/fipsmodule/dh/internal.h +63 -0
  456. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/digest.cc.inc +221 -0
  457. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/digests.cc.inc +184 -0
  458. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/internal.h +72 -0
  459. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/md32_common.h +166 -0
  460. package/runtime/third_party/boringssl/crypto/fipsmodule/digestsign/digestsign.cc.inc +230 -0
  461. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/builtin_curves.h +277 -0
  462. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/ec.cc.inc +1024 -0
  463. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/ec_key.cc.inc +536 -0
  464. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.cc.inc +379 -0
  465. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/felem.cc.inc +250 -0
  466. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/internal.h +752 -0
  467. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/oct.cc.inc +174 -0
  468. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256-nistz-table.h +9502 -0
  469. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256-nistz.cc.inc +740 -0
  470. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256-nistz.h +207 -0
  471. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256.cc.inc +578 -0
  472. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256_table.h +297 -0
  473. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/scalar.cc.inc +184 -0
  474. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/simple.cc.inc +246 -0
  475. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/simple_mul.cc.inc +274 -0
  476. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/util.cc.inc +258 -0
  477. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/wnaf.cc.inc +224 -0
  478. package/runtime/third_party/boringssl/crypto/fipsmodule/ecdh/ecdh.cc.inc +91 -0
  479. package/runtime/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.cc.inc +288 -0
  480. package/runtime/third_party/boringssl/crypto/fipsmodule/ecdsa/internal.h +57 -0
  481. package/runtime/third_party/boringssl/crypto/fipsmodule/entropy/internal.h +38 -0
  482. package/runtime/third_party/boringssl/crypto/fipsmodule/entropy/jitter.cc.inc +487 -0
  483. package/runtime/third_party/boringssl/crypto/fipsmodule/entropy/sha512.cc.inc +329 -0
  484. package/runtime/third_party/boringssl/crypto/fipsmodule/fips_shared_support.cc +28 -0
  485. package/runtime/third_party/boringssl/crypto/fipsmodule/hkdf/hkdf.cc.inc +114 -0
  486. package/runtime/third_party/boringssl/crypto/fipsmodule/hmac/hmac.cc.inc +218 -0
  487. package/runtime/third_party/boringssl/crypto/fipsmodule/keccak/internal.h +165 -0
  488. package/runtime/third_party/boringssl/crypto/fipsmodule/keccak/keccak.cc.inc +647 -0
  489. package/runtime/third_party/boringssl/crypto/fipsmodule/mldsa/fips_known_values.inc +1345 -0
  490. package/runtime/third_party/boringssl/crypto/fipsmodule/mldsa/mldsa.cc.inc +3323 -0
  491. package/runtime/third_party/boringssl/crypto/fipsmodule/mlkem/fips_known_values.inc +411 -0
  492. package/runtime/third_party/boringssl/crypto/fipsmodule/mlkem/mlkem.cc.inc +1856 -0
  493. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/android_entropy_client.cc.inc +82 -0
  494. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/ctrdrbg.cc.inc +401 -0
  495. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/internal.h +99 -0
  496. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/rand.cc.inc +486 -0
  497. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/internal.h +167 -0
  498. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/padding.cc.inc +371 -0
  499. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/rsa.cc.inc +996 -0
  500. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.cc.inc +1000 -0
  501. package/runtime/third_party/boringssl/crypto/fipsmodule/self_check/fips.cc.inc +129 -0
  502. package/runtime/third_party/boringssl/crypto/fipsmodule/self_check/self_check.cc.inc +1093 -0
  503. package/runtime/third_party/boringssl/crypto/fipsmodule/service_indicator/internal.h +112 -0
  504. package/runtime/third_party/boringssl/crypto/fipsmodule/service_indicator/service_indicator.cc.inc +330 -0
  505. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/internal.h +205 -0
  506. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/sha1.cc.inc +404 -0
  507. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/sha256.cc.inc +315 -0
  508. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/sha512.cc.inc +473 -0
  509. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/address.h +144 -0
  510. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/fips_known_values.inc +674 -0
  511. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/fors.cc.inc +179 -0
  512. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/fors.h +48 -0
  513. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/merkle.cc.inc +164 -0
  514. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/merkle.h +58 -0
  515. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/params.h +178 -0
  516. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +690 -0
  517. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/thash.cc.inc +326 -0
  518. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/thash.h +71 -0
  519. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/wots.cc.inc +172 -0
  520. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/wots.h +40 -0
  521. package/runtime/third_party/boringssl/crypto/fipsmodule/tls/internal.h +33 -0
  522. package/runtime/third_party/boringssl/crypto/fipsmodule/tls/kdf.cc.inc +180 -0
  523. package/runtime/third_party/boringssl/crypto/fuzzer_mode.cc +30 -0
  524. package/runtime/third_party/boringssl/crypto/hpke/hpke.cc +1514 -0
  525. package/runtime/third_party/boringssl/crypto/hrss/asm/poly_rq_mul.S +8489 -0
  526. package/runtime/third_party/boringssl/crypto/hrss/hrss.cc +2189 -0
  527. package/runtime/third_party/boringssl/crypto/hrss/internal.h +64 -0
  528. package/runtime/third_party/boringssl/crypto/internal.h +1767 -0
  529. package/runtime/third_party/boringssl/crypto/lhash/internal.h +222 -0
  530. package/runtime/third_party/boringssl/crypto/lhash/lhash.cc +312 -0
  531. package/runtime/third_party/boringssl/crypto/md4/md4.cc +207 -0
  532. package/runtime/third_party/boringssl/crypto/md5/internal.h +34 -0
  533. package/runtime/third_party/boringssl/crypto/md5/md5.cc +255 -0
  534. package/runtime/third_party/boringssl/crypto/mem.cc +577 -0
  535. package/runtime/third_party/boringssl/crypto/mem_internal.h +706 -0
  536. package/runtime/third_party/boringssl/crypto/mldsa/mldsa.cc +296 -0
  537. package/runtime/third_party/boringssl/crypto/mlkem/mlkem.cc +108 -0
  538. package/runtime/third_party/boringssl/crypto/obj/obj.cc +494 -0
  539. package/runtime/third_party/boringssl/crypto/obj/obj_dat.h +11722 -0
  540. package/runtime/third_party/boringssl/crypto/obj/obj_xref.cc +83 -0
  541. package/runtime/third_party/boringssl/crypto/params_internal.h +30 -0
  542. package/runtime/third_party/boringssl/crypto/pem/internal.h +135 -0
  543. package/runtime/third_party/boringssl/crypto/pem/pem_all.cc +153 -0
  544. package/runtime/third_party/boringssl/crypto/pem/pem_info.cc +250 -0
  545. package/runtime/third_party/boringssl/crypto/pem/pem_lib.cc +707 -0
  546. package/runtime/third_party/boringssl/crypto/pem/pem_oth.cc +45 -0
  547. package/runtime/third_party/boringssl/crypto/pem/pem_pk8.cc +211 -0
  548. package/runtime/third_party/boringssl/crypto/pem/pem_pkey.cc +147 -0
  549. package/runtime/third_party/boringssl/crypto/pem/pem_x509.cc +25 -0
  550. package/runtime/third_party/boringssl/crypto/pem/pem_xaux.cc +25 -0
  551. package/runtime/third_party/boringssl/crypto/pkcs7/internal.h +67 -0
  552. package/runtime/third_party/boringssl/crypto/pkcs7/pkcs7.cc +198 -0
  553. package/runtime/third_party/boringssl/crypto/pkcs7/pkcs7_x509.cc +527 -0
  554. package/runtime/third_party/boringssl/crypto/pkcs8/internal.h +98 -0
  555. package/runtime/third_party/boringssl/crypto/pkcs8/p5_pbev2.cc +286 -0
  556. package/runtime/third_party/boringssl/crypto/pkcs8/pkcs8.cc +473 -0
  557. package/runtime/third_party/boringssl/crypto/pkcs8/pkcs8_x509.cc +1328 -0
  558. package/runtime/third_party/boringssl/crypto/poly1305/internal.h +54 -0
  559. package/runtime/third_party/boringssl/crypto/poly1305/poly1305.cc +315 -0
  560. package/runtime/third_party/boringssl/crypto/poly1305/poly1305_arm.cc +294 -0
  561. package/runtime/third_party/boringssl/crypto/poly1305/poly1305_arm_asm.S +2017 -0
  562. package/runtime/third_party/boringssl/crypto/poly1305/poly1305_vec.cc +853 -0
  563. package/runtime/third_party/boringssl/crypto/pool/internal.h +95 -0
  564. package/runtime/third_party/boringssl/crypto/pool/pool.cc +282 -0
  565. package/runtime/third_party/boringssl/crypto/rand/deterministic.cc +58 -0
  566. package/runtime/third_party/boringssl/crypto/rand/fork_detect.cc +222 -0
  567. package/runtime/third_party/boringssl/crypto/rand/forkunsafe.cc +44 -0
  568. package/runtime/third_party/boringssl/crypto/rand/getentropy.cc +53 -0
  569. package/runtime/third_party/boringssl/crypto/rand/internal.h +67 -0
  570. package/runtime/third_party/boringssl/crypto/rand/ios.cc +35 -0
  571. package/runtime/third_party/boringssl/crypto/rand/rand.cc +79 -0
  572. package/runtime/third_party/boringssl/crypto/rand/trusty.cc +39 -0
  573. package/runtime/third_party/boringssl/crypto/rand/urandom.cc +149 -0
  574. package/runtime/third_party/boringssl/crypto/rand/windows.cc +91 -0
  575. package/runtime/third_party/boringssl/crypto/rc4/rc4.cc +56 -0
  576. package/runtime/third_party/boringssl/crypto/refcount.cc +49 -0
  577. package/runtime/third_party/boringssl/crypto/rsa/internal.h +51 -0
  578. package/runtime/third_party/boringssl/crypto/rsa/rsa_asn1.cc +404 -0
  579. package/runtime/third_party/boringssl/crypto/rsa/rsa_crypt.cc +530 -0
  580. package/runtime/third_party/boringssl/crypto/rsa/rsa_extra.cc +30 -0
  581. package/runtime/third_party/boringssl/crypto/rsa/rsa_print.cc +25 -0
  582. package/runtime/third_party/boringssl/crypto/sha/sha1.cc +55 -0
  583. package/runtime/third_party/boringssl/crypto/sha/sha256.cc +89 -0
  584. package/runtime/third_party/boringssl/crypto/sha/sha512.cc +106 -0
  585. package/runtime/third_party/boringssl/crypto/siphash/siphash.cc +81 -0
  586. package/runtime/third_party/boringssl/crypto/slhdsa/slhdsa.cc +167 -0
  587. package/runtime/third_party/boringssl/crypto/spake2plus/internal.h +204 -0
  588. package/runtime/third_party/boringssl/crypto/spake2plus/spake2plus.cc +501 -0
  589. package/runtime/third_party/boringssl/crypto/stack/stack.cc +462 -0
  590. package/runtime/third_party/boringssl/crypto/thread.cc +68 -0
  591. package/runtime/third_party/boringssl/crypto/thread_none.cc +48 -0
  592. package/runtime/third_party/boringssl/crypto/thread_pthread.cc +138 -0
  593. package/runtime/third_party/boringssl/crypto/thread_win.cc +227 -0
  594. package/runtime/third_party/boringssl/crypto/trust_token/internal.h +405 -0
  595. package/runtime/third_party/boringssl/crypto/trust_token/pmbtoken.cc +1672 -0
  596. package/runtime/third_party/boringssl/crypto/trust_token/trust_token.cc +701 -0
  597. package/runtime/third_party/boringssl/crypto/trust_token/voprf.cc +1266 -0
  598. package/runtime/third_party/boringssl/crypto/x509/a_digest.cc +52 -0
  599. package/runtime/third_party/boringssl/crypto/x509/a_sign.cc +100 -0
  600. package/runtime/third_party/boringssl/crypto/x509/a_verify.cc +77 -0
  601. package/runtime/third_party/boringssl/crypto/x509/algorithm.cc +167 -0
  602. package/runtime/third_party/boringssl/crypto/x509/asn1_gen.cc +540 -0
  603. package/runtime/third_party/boringssl/crypto/x509/by_dir.cc +301 -0
  604. package/runtime/third_party/boringssl/crypto/x509/by_file.cc +226 -0
  605. package/runtime/third_party/boringssl/crypto/x509/i2d_pr.cc +37 -0
  606. package/runtime/third_party/boringssl/crypto/x509/internal.h +697 -0
  607. package/runtime/third_party/boringssl/crypto/x509/name_print.cc +187 -0
  608. package/runtime/third_party/boringssl/crypto/x509/policy.cc +686 -0
  609. package/runtime/third_party/boringssl/crypto/x509/rsa_pss.cc +187 -0
  610. package/runtime/third_party/boringssl/crypto/x509/t_crl.cc +106 -0
  611. package/runtime/third_party/boringssl/crypto/x509/t_req.cc +206 -0
  612. package/runtime/third_party/boringssl/crypto/x509/t_x509.cc +292 -0
  613. package/runtime/third_party/boringssl/crypto/x509/t_x509a.cc +81 -0
  614. package/runtime/third_party/boringssl/crypto/x509/v3_akey.cc +174 -0
  615. package/runtime/third_party/boringssl/crypto/x509/v3_akeya.cc +31 -0
  616. package/runtime/third_party/boringssl/crypto/x509/v3_alt.cc +636 -0
  617. package/runtime/third_party/boringssl/crypto/x509/v3_bcons.cc +96 -0
  618. package/runtime/third_party/boringssl/crypto/x509/v3_bitst.cc +100 -0
  619. package/runtime/third_party/boringssl/crypto/x509/v3_conf.cc +369 -0
  620. package/runtime/third_party/boringssl/crypto/x509/v3_cpols.cc +417 -0
  621. package/runtime/third_party/boringssl/crypto/x509/v3_crld.cc +471 -0
  622. package/runtime/third_party/boringssl/crypto/x509/v3_enum.cc +74 -0
  623. package/runtime/third_party/boringssl/crypto/x509/v3_extku.cc +97 -0
  624. package/runtime/third_party/boringssl/crypto/x509/v3_genn.cc +238 -0
  625. package/runtime/third_party/boringssl/crypto/x509/v3_ia5.cc +83 -0
  626. package/runtime/third_party/boringssl/crypto/x509/v3_info.cc +162 -0
  627. package/runtime/third_party/boringssl/crypto/x509/v3_int.cc +83 -0
  628. package/runtime/third_party/boringssl/crypto/x509/v3_lib.cc +349 -0
  629. package/runtime/third_party/boringssl/crypto/x509/v3_ncons.cc +798 -0
  630. package/runtime/third_party/boringssl/crypto/x509/v3_ocsp.cc +92 -0
  631. package/runtime/third_party/boringssl/crypto/x509/v3_pcons.cc +102 -0
  632. package/runtime/third_party/boringssl/crypto/x509/v3_pmaps.cc +110 -0
  633. package/runtime/third_party/boringssl/crypto/x509/v3_prn.cc +183 -0
  634. package/runtime/third_party/boringssl/crypto/x509/v3_purp.cc +580 -0
  635. package/runtime/third_party/boringssl/crypto/x509/v3_skey.cc +128 -0
  636. package/runtime/third_party/boringssl/crypto/x509/v3_utl.cc +1311 -0
  637. package/runtime/third_party/boringssl/crypto/x509/x509.cc +47 -0
  638. package/runtime/third_party/boringssl/crypto/x509/x509_att.cc +188 -0
  639. package/runtime/third_party/boringssl/crypto/x509/x509_cmp.cc +243 -0
  640. package/runtime/third_party/boringssl/crypto/x509/x509_d2.cc +66 -0
  641. package/runtime/third_party/boringssl/crypto/x509/x509_def.cc +42 -0
  642. package/runtime/third_party/boringssl/crypto/x509/x509_ext.cc +161 -0
  643. package/runtime/third_party/boringssl/crypto/x509/x509_lu.cc +570 -0
  644. package/runtime/third_party/boringssl/crypto/x509/x509_mtc.cc +598 -0
  645. package/runtime/third_party/boringssl/crypto/x509/x509_obj.cc +169 -0
  646. package/runtime/third_party/boringssl/crypto/x509/x509_req.cc +248 -0
  647. package/runtime/third_party/boringssl/crypto/x509/x509_set.cc +166 -0
  648. package/runtime/third_party/boringssl/crypto/x509/x509_trs.cc +123 -0
  649. package/runtime/third_party/boringssl/crypto/x509/x509_txt.cc +147 -0
  650. package/runtime/third_party/boringssl/crypto/x509/x509_v3.cc +249 -0
  651. package/runtime/third_party/boringssl/crypto/x509/x509_vfy.cc +1531 -0
  652. package/runtime/third_party/boringssl/crypto/x509/x509_vpm.cc +449 -0
  653. package/runtime/third_party/boringssl/crypto/x509/x509cset.cc +222 -0
  654. package/runtime/third_party/boringssl/crypto/x509/x509name.cc +377 -0
  655. package/runtime/third_party/boringssl/crypto/x509/x509rset.cc +55 -0
  656. package/runtime/third_party/boringssl/crypto/x509/x509spki.cc +91 -0
  657. package/runtime/third_party/boringssl/crypto/x509/x_algor.cc +223 -0
  658. package/runtime/third_party/boringssl/crypto/x509/x_all.cc +352 -0
  659. package/runtime/third_party/boringssl/crypto/x509/x_attrib.cc +61 -0
  660. package/runtime/third_party/boringssl/crypto/x509/x_crl.cc +325 -0
  661. package/runtime/third_party/boringssl/crypto/x509/x_exten.cc +42 -0
  662. package/runtime/third_party/boringssl/crypto/x509/x_name.cc +407 -0
  663. package/runtime/third_party/boringssl/crypto/x509/x_pubkey.cc +199 -0
  664. package/runtime/third_party/boringssl/crypto/x509/x_req.cc +80 -0
  665. package/runtime/third_party/boringssl/crypto/x509/x_sig.cc +51 -0
  666. package/runtime/third_party/boringssl/crypto/x509/x_spki.cc +44 -0
  667. package/runtime/third_party/boringssl/crypto/x509/x_x509.cc +495 -0
  668. package/runtime/third_party/boringssl/crypto/x509/x_x509a.cc +169 -0
  669. package/runtime/third_party/boringssl/crypto/xwing/xwing.cc +257 -0
  670. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx2-x86_64-apple.S +1326 -0
  671. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx2-x86_64-linux.S +1327 -0
  672. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx512-x86_64-apple.S +1252 -0
  673. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx512-x86_64-linux.S +1253 -0
  674. package/runtime/third_party/boringssl/gen/bcm/aesni-gcm-x86_64-apple.S +873 -0
  675. package/runtime/third_party/boringssl/gen/bcm/aesni-gcm-x86_64-linux.S +885 -0
  676. package/runtime/third_party/boringssl/gen/bcm/aesni-x86-apple.S +2490 -0
  677. package/runtime/third_party/boringssl/gen/bcm/aesni-x86-linux.S +2530 -0
  678. package/runtime/third_party/boringssl/gen/bcm/aesni-x86_64-apple.S +2413 -0
  679. package/runtime/third_party/boringssl/gen/bcm/aesni-x86_64-linux.S +2397 -0
  680. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv7-linux.S +784 -0
  681. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv8-apple.S +792 -0
  682. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv8-linux.S +786 -0
  683. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv8-win.S +798 -0
  684. package/runtime/third_party/boringssl/gen/bcm/aesv8-gcm-armv8-apple.S +2912 -0
  685. package/runtime/third_party/boringssl/gen/bcm/aesv8-gcm-armv8-linux.S +2907 -0
  686. package/runtime/third_party/boringssl/gen/bcm/aesv8-gcm-armv8-win.S +2915 -0
  687. package/runtime/third_party/boringssl/gen/bcm/armv4-mont-linux.S +932 -0
  688. package/runtime/third_party/boringssl/gen/bcm/armv8-mont-apple.S +1440 -0
  689. package/runtime/third_party/boringssl/gen/bcm/armv8-mont-linux.S +1440 -0
  690. package/runtime/third_party/boringssl/gen/bcm/armv8-mont-win.S +1446 -0
  691. package/runtime/third_party/boringssl/gen/bcm/bn-586-apple.S +530 -0
  692. package/runtime/third_party/boringssl/gen/bcm/bn-586-linux.S +540 -0
  693. package/runtime/third_party/boringssl/gen/bcm/bn-armv8-apple.S +88 -0
  694. package/runtime/third_party/boringssl/gen/bcm/bn-armv8-linux.S +87 -0
  695. package/runtime/third_party/boringssl/gen/bcm/bn-armv8-win.S +87 -0
  696. package/runtime/third_party/boringssl/gen/bcm/bsaes-armv7-linux.S +1520 -0
  697. package/runtime/third_party/boringssl/gen/bcm/co-586-apple.S +1256 -0
  698. package/runtime/third_party/boringssl/gen/bcm/co-586-linux.S +1264 -0
  699. package/runtime/third_party/boringssl/gen/bcm/ghash-armv4-linux.S +242 -0
  700. package/runtime/third_party/boringssl/gen/bcm/ghash-neon-armv8-apple.S +337 -0
  701. package/runtime/third_party/boringssl/gen/bcm/ghash-neon-armv8-linux.S +335 -0
  702. package/runtime/third_party/boringssl/gen/bcm/ghash-neon-armv8-win.S +341 -0
  703. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86-apple.S +288 -0
  704. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86-linux.S +292 -0
  705. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86_64-apple.S +426 -0
  706. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86_64-linux.S +425 -0
  707. package/runtime/third_party/boringssl/gen/bcm/ghash-x86-apple.S +322 -0
  708. package/runtime/third_party/boringssl/gen/bcm/ghash-x86-linux.S +328 -0
  709. package/runtime/third_party/boringssl/gen/bcm/ghash-x86_64-apple.S +1134 -0
  710. package/runtime/third_party/boringssl/gen/bcm/ghash-x86_64-linux.S +1129 -0
  711. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv7-linux.S +244 -0
  712. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv8-apple.S +567 -0
  713. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv8-linux.S +563 -0
  714. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv8-win.S +571 -0
  715. package/runtime/third_party/boringssl/gen/bcm/p256-armv8-asm-apple.S +1744 -0
  716. package/runtime/third_party/boringssl/gen/bcm/p256-armv8-asm-linux.S +1725 -0
  717. package/runtime/third_party/boringssl/gen/bcm/p256-armv8-asm-win.S +1765 -0
  718. package/runtime/third_party/boringssl/gen/bcm/p256-x86_64-asm-apple.S +4544 -0
  719. package/runtime/third_party/boringssl/gen/bcm/p256-x86_64-asm-linux.S +4600 -0
  720. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-armv8-asm-apple.S +310 -0
  721. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-armv8-asm-linux.S +310 -0
  722. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-armv8-asm-win.S +310 -0
  723. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-x86_64-asm-apple.S +321 -0
  724. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-x86_64-asm-linux.S +335 -0
  725. package/runtime/third_party/boringssl/gen/bcm/rdrand-x86_64-apple.S +58 -0
  726. package/runtime/third_party/boringssl/gen/bcm/rdrand-x86_64-linux.S +57 -0
  727. package/runtime/third_party/boringssl/gen/bcm/rsaz-avx2-apple.S +1756 -0
  728. package/runtime/third_party/boringssl/gen/bcm/rsaz-avx2-linux.S +1751 -0
  729. package/runtime/third_party/boringssl/gen/bcm/sha1-586-apple.S +3782 -0
  730. package/runtime/third_party/boringssl/gen/bcm/sha1-586-linux.S +3788 -0
  731. package/runtime/third_party/boringssl/gen/bcm/sha1-armv4-large-linux.S +1479 -0
  732. package/runtime/third_party/boringssl/gen/bcm/sha1-armv8-apple.S +1219 -0
  733. package/runtime/third_party/boringssl/gen/bcm/sha1-armv8-linux.S +1218 -0
  734. package/runtime/third_party/boringssl/gen/bcm/sha1-armv8-win.S +1222 -0
  735. package/runtime/third_party/boringssl/gen/bcm/sha1-x86_64-apple.S +5454 -0
  736. package/runtime/third_party/boringssl/gen/bcm/sha1-x86_64-linux.S +5450 -0
  737. package/runtime/third_party/boringssl/gen/bcm/sha256-586-apple.S +5593 -0
  738. package/runtime/third_party/boringssl/gen/bcm/sha256-586-linux.S +5599 -0
  739. package/runtime/third_party/boringssl/gen/bcm/sha256-armv4-linux.S +2840 -0
  740. package/runtime/third_party/boringssl/gen/bcm/sha256-armv8-apple.S +1195 -0
  741. package/runtime/third_party/boringssl/gen/bcm/sha256-armv8-linux.S +1194 -0
  742. package/runtime/third_party/boringssl/gen/bcm/sha256-armv8-win.S +1198 -0
  743. package/runtime/third_party/boringssl/gen/bcm/sha256-x86_64-apple.S +4173 -0
  744. package/runtime/third_party/boringssl/gen/bcm/sha256-x86_64-linux.S +4170 -0
  745. package/runtime/third_party/boringssl/gen/bcm/sha512-586-apple.S +2406 -0
  746. package/runtime/third_party/boringssl/gen/bcm/sha512-586-linux.S +2410 -0
  747. package/runtime/third_party/boringssl/gen/bcm/sha512-armv4-linux.S +1857 -0
  748. package/runtime/third_party/boringssl/gen/bcm/sha512-armv8-apple.S +1598 -0
  749. package/runtime/third_party/boringssl/gen/bcm/sha512-armv8-linux.S +1597 -0
  750. package/runtime/third_party/boringssl/gen/bcm/sha512-armv8-win.S +1601 -0
  751. package/runtime/third_party/boringssl/gen/bcm/sha512-x86_64-apple.S +2979 -0
  752. package/runtime/third_party/boringssl/gen/bcm/sha512-x86_64-linux.S +2978 -0
  753. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv7-linux.S +1225 -0
  754. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv8-apple.S +1238 -0
  755. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv8-linux.S +1220 -0
  756. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv8-win.S +1256 -0
  757. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86-apple.S +680 -0
  758. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86-linux.S +706 -0
  759. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86_64-apple.S +1146 -0
  760. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86_64-linux.S +1133 -0
  761. package/runtime/third_party/boringssl/gen/bcm/x86-mont-apple.S +216 -0
  762. package/runtime/third_party/boringssl/gen/bcm/x86-mont-linux.S +218 -0
  763. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont-apple.S +1238 -0
  764. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont-linux.S +1237 -0
  765. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont5-apple.S +3644 -0
  766. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont5-linux.S +3628 -0
  767. package/runtime/third_party/boringssl/gen/boringssl_prefix_symbols_internal_x86_64_win_asm.inc +325 -0
  768. package/runtime/third_party/boringssl/gen/boringssl_prefix_symbols_internal_x86_win_asm.inc +325 -0
  769. package/runtime/third_party/boringssl/gen/crypto/aes128gcmsiv-x86_64-apple.S +3113 -0
  770. package/runtime/third_party/boringssl/gen/crypto/aes128gcmsiv-x86_64-linux.S +3091 -0
  771. package/runtime/third_party/boringssl/gen/crypto/chacha-armv4-linux.S +1450 -0
  772. package/runtime/third_party/boringssl/gen/crypto/chacha-armv8-apple.S +1969 -0
  773. package/runtime/third_party/boringssl/gen/crypto/chacha-armv8-linux.S +1967 -0
  774. package/runtime/third_party/boringssl/gen/crypto/chacha-armv8-win.S +1973 -0
  775. package/runtime/third_party/boringssl/gen/crypto/chacha-x86-apple.S +957 -0
  776. package/runtime/third_party/boringssl/gen/crypto/chacha-x86-linux.S +961 -0
  777. package/runtime/third_party/boringssl/gen/crypto/chacha-x86_64-apple.S +1608 -0
  778. package/runtime/third_party/boringssl/gen/crypto/chacha-x86_64-linux.S +1611 -0
  779. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_armv8-apple.S +3010 -0
  780. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_armv8-linux.S +3008 -0
  781. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_armv8-win.S +3014 -0
  782. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_x86_64-apple.S +8903 -0
  783. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_x86_64-linux.S +8940 -0
  784. package/runtime/third_party/boringssl/gen/crypto/err_data.cc +1578 -0
  785. package/runtime/third_party/boringssl/gen/crypto/md5-586-apple.S +684 -0
  786. package/runtime/third_party/boringssl/gen/crypto/md5-586-linux.S +686 -0
  787. package/runtime/third_party/boringssl/gen/crypto/md5-x86_64-apple.S +690 -0
  788. package/runtime/third_party/boringssl/gen/crypto/md5-x86_64-linux.S +695 -0
  789. package/runtime/third_party/boringssl/include/openssl/aead.h +650 -0
  790. package/runtime/third_party/boringssl/include/openssl/aes.h +173 -0
  791. package/runtime/third_party/boringssl/include/openssl/arm_arch.h +24 -0
  792. package/runtime/third_party/boringssl/include/openssl/asm_base.h +219 -0
  793. package/runtime/third_party/boringssl/include/openssl/asn1.h +2002 -0
  794. package/runtime/third_party/boringssl/include/openssl/asn1_mac.h +18 -0
  795. package/runtime/third_party/boringssl/include/openssl/asn1t.h +584 -0
  796. package/runtime/third_party/boringssl/include/openssl/base.h +548 -0
  797. package/runtime/third_party/boringssl/include/openssl/base64.h +156 -0
  798. package/runtime/third_party/boringssl/include/openssl/bio.h +1061 -0
  799. package/runtime/third_party/boringssl/include/openssl/blake2.h +63 -0
  800. package/runtime/third_party/boringssl/include/openssl/blowfish.h +58 -0
  801. package/runtime/third_party/boringssl/include/openssl/bn.h +986 -0
  802. package/runtime/third_party/boringssl/include/openssl/buf.h +95 -0
  803. package/runtime/third_party/boringssl/include/openssl/buffer.h +18 -0
  804. package/runtime/third_party/boringssl/include/openssl/bytestring.h +798 -0
  805. package/runtime/third_party/boringssl/include/openssl/cast.h +91 -0
  806. package/runtime/third_party/boringssl/include/openssl/chacha.h +47 -0
  807. package/runtime/third_party/boringssl/include/openssl/cipher.h +819 -0
  808. package/runtime/third_party/boringssl/include/openssl/cmac.h +91 -0
  809. package/runtime/third_party/boringssl/include/openssl/cms.h +147 -0
  810. package/runtime/third_party/boringssl/include/openssl/conf.h +136 -0
  811. package/runtime/third_party/boringssl/include/openssl/configuration.h +18 -0
  812. package/runtime/third_party/boringssl/include/openssl/cpu.h +18 -0
  813. package/runtime/third_party/boringssl/include/openssl/crypto.h +235 -0
  814. package/runtime/third_party/boringssl/include/openssl/ctrdrbg.h +116 -0
  815. package/runtime/third_party/boringssl/include/openssl/curve25519.h +309 -0
  816. package/runtime/third_party/boringssl/include/openssl/des.h +134 -0
  817. package/runtime/third_party/boringssl/include/openssl/dh.h +336 -0
  818. package/runtime/third_party/boringssl/include/openssl/digest.h +399 -0
  819. package/runtime/third_party/boringssl/include/openssl/dsa.h +392 -0
  820. package/runtime/third_party/boringssl/include/openssl/dtls1.h +16 -0
  821. package/runtime/third_party/boringssl/include/openssl/e_os2.h +18 -0
  822. package/runtime/third_party/boringssl/include/openssl/ec.h +530 -0
  823. package/runtime/third_party/boringssl/include/openssl/ec_key.h +358 -0
  824. package/runtime/third_party/boringssl/include/openssl/ecdh.h +67 -0
  825. package/runtime/third_party/boringssl/include/openssl/ecdsa.h +242 -0
  826. package/runtime/third_party/boringssl/include/openssl/engine.h +109 -0
  827. package/runtime/third_party/boringssl/include/openssl/err.h +416 -0
  828. package/runtime/third_party/boringssl/include/openssl/evp.h +1645 -0
  829. package/runtime/third_party/boringssl/include/openssl/evp_errors.h +66 -0
  830. package/runtime/third_party/boringssl/include/openssl/ex_data.h +117 -0
  831. package/runtime/third_party/boringssl/include/openssl/hkdf.h +68 -0
  832. package/runtime/third_party/boringssl/include/openssl/hmac.h +151 -0
  833. package/runtime/third_party/boringssl/include/openssl/hpke.h +456 -0
  834. package/runtime/third_party/boringssl/include/openssl/hrss.h +108 -0
  835. package/runtime/third_party/boringssl/include/openssl/is_boringssl.h +16 -0
  836. package/runtime/third_party/boringssl/include/openssl/kdf.h +92 -0
  837. package/runtime/third_party/boringssl/include/openssl/lhash.h +18 -0
  838. package/runtime/third_party/boringssl/include/openssl/md4.h +73 -0
  839. package/runtime/third_party/boringssl/include/openssl/md5.h +67 -0
  840. package/runtime/third_party/boringssl/include/openssl/mem.h +215 -0
  841. package/runtime/third_party/boringssl/include/openssl/mldsa.h +486 -0
  842. package/runtime/third_party/boringssl/include/openssl/mlkem.h +222 -0
  843. package/runtime/third_party/boringssl/include/openssl/nid.h +5561 -0
  844. package/runtime/third_party/boringssl/include/openssl/obj.h +225 -0
  845. package/runtime/third_party/boringssl/include/openssl/obj_mac.h +18 -0
  846. package/runtime/third_party/boringssl/include/openssl/objects.h +18 -0
  847. package/runtime/third_party/boringssl/include/openssl/opensslconf.h +108 -0
  848. package/runtime/third_party/boringssl/include/openssl/opensslv.h +18 -0
  849. package/runtime/third_party/boringssl/include/openssl/ossl_typ.h +18 -0
  850. package/runtime/third_party/boringssl/include/openssl/params.h +42 -0
  851. package/runtime/third_party/boringssl/include/openssl/pem.h +769 -0
  852. package/runtime/third_party/boringssl/include/openssl/pkcs12.h +18 -0
  853. package/runtime/third_party/boringssl/include/openssl/pkcs7.h +239 -0
  854. package/runtime/third_party/boringssl/include/openssl/pkcs8.h +267 -0
  855. package/runtime/third_party/boringssl/include/openssl/poly1305.h +52 -0
  856. package/runtime/third_party/boringssl/include/openssl/pool.h +137 -0
  857. package/runtime/third_party/boringssl/include/openssl/posix_time.h +51 -0
  858. package/runtime/third_party/boringssl/include/openssl/prefix_symbols.h +8000 -0
  859. package/runtime/third_party/boringssl/include/openssl/prefix_symbols_internal_S.h +633 -0
  860. package/runtime/third_party/boringssl/include/openssl/prefix_symbols_internal_c.h +329 -0
  861. package/runtime/third_party/boringssl/include/openssl/rand.h +138 -0
  862. package/runtime/third_party/boringssl/include/openssl/rc4.h +54 -0
  863. package/runtime/third_party/boringssl/include/openssl/ripemd.h +71 -0
  864. package/runtime/third_party/boringssl/include/openssl/rsa.h +893 -0
  865. package/runtime/third_party/boringssl/include/openssl/safestack.h +16 -0
  866. package/runtime/third_party/boringssl/include/openssl/service_indicator.h +19 -0
  867. package/runtime/third_party/boringssl/include/openssl/sha.h +108 -0
  868. package/runtime/third_party/boringssl/include/openssl/sha2.h +201 -0
  869. package/runtime/third_party/boringssl/include/openssl/siphash.h +37 -0
  870. package/runtime/third_party/boringssl/include/openssl/slhdsa.h +250 -0
  871. package/runtime/third_party/boringssl/include/openssl/span.h +376 -0
  872. package/runtime/third_party/boringssl/include/openssl/srtp.h +18 -0
  873. package/runtime/third_party/boringssl/include/openssl/ssl.h +7211 -0
  874. package/runtime/third_party/boringssl/include/openssl/ssl3.h +171 -0
  875. package/runtime/third_party/boringssl/include/openssl/stack.h +688 -0
  876. package/runtime/third_party/boringssl/include/openssl/target.h +246 -0
  877. package/runtime/third_party/boringssl/include/openssl/thread.h +114 -0
  878. package/runtime/third_party/boringssl/include/openssl/time.h +22 -0
  879. package/runtime/third_party/boringssl/include/openssl/tls1.h +263 -0
  880. package/runtime/third_party/boringssl/include/openssl/tls_prf.h +47 -0
  881. package/runtime/third_party/boringssl/include/openssl/trust_token.h +349 -0
  882. package/runtime/third_party/boringssl/include/openssl/type_check.h +37 -0
  883. package/runtime/third_party/boringssl/include/openssl/types.h +18 -0
  884. package/runtime/third_party/boringssl/include/openssl/x509.h +5404 -0
  885. package/runtime/third_party/boringssl/include/openssl/x509_vfy.h +18 -0
  886. package/runtime/third_party/boringssl/include/openssl/x509v3.h +63 -0
  887. package/runtime/third_party/boringssl/include/openssl/x509v3_errors.h +84 -0
  888. package/runtime/third_party/boringssl/include/openssl/xwing.h +115 -0
  889. package/runtime/third_party/boringssl/sources.json +696 -0
  890. package/runtime/third_party/boringssl/ssl/bio_ssl.cc +196 -0
  891. package/runtime/third_party/boringssl/ssl/d1_both.cc +1137 -0
  892. package/runtime/third_party/boringssl/ssl/d1_lib.cc +245 -0
  893. package/runtime/third_party/boringssl/ssl/d1_pkt.cc +322 -0
  894. package/runtime/third_party/boringssl/ssl/d1_srtp.cc +128 -0
  895. package/runtime/third_party/boringssl/ssl/dtls_method.cc +216 -0
  896. package/runtime/third_party/boringssl/ssl/dtls_record.cc +586 -0
  897. package/runtime/third_party/boringssl/ssl/encrypted_client_hello.cc +1110 -0
  898. package/runtime/third_party/boringssl/ssl/extensions.cc +5368 -0
  899. package/runtime/third_party/boringssl/ssl/handoff.cc +625 -0
  900. package/runtime/third_party/boringssl/ssl/handshake.cc +694 -0
  901. package/runtime/third_party/boringssl/ssl/handshake_client.cc +1958 -0
  902. package/runtime/third_party/boringssl/ssl/handshake_server.cc +1875 -0
  903. package/runtime/third_party/boringssl/ssl/internal.h +4506 -0
  904. package/runtime/third_party/boringssl/ssl/s3_both.cc +555 -0
  905. package/runtime/third_party/boringssl/ssl/s3_lib.cc +88 -0
  906. package/runtime/third_party/boringssl/ssl/s3_pkt.cc +396 -0
  907. package/runtime/third_party/boringssl/ssl/ssl_aead_ctx.cc +416 -0
  908. package/runtime/third_party/boringssl/ssl/ssl_asn1.cc +851 -0
  909. package/runtime/third_party/boringssl/ssl/ssl_buffer.cc +304 -0
  910. package/runtime/third_party/boringssl/ssl/ssl_cert.cc +723 -0
  911. package/runtime/third_party/boringssl/ssl/ssl_cipher.cc +1762 -0
  912. package/runtime/third_party/boringssl/ssl/ssl_credential.cc +913 -0
  913. package/runtime/third_party/boringssl/ssl/ssl_file.cc +375 -0
  914. package/runtime/third_party/boringssl/ssl/ssl_key_share.cc +445 -0
  915. package/runtime/third_party/boringssl/ssl/ssl_lib.cc +4132 -0
  916. package/runtime/third_party/boringssl/ssl/ssl_privkey.cc +973 -0
  917. package/runtime/third_party/boringssl/ssl/ssl_session.cc +1273 -0
  918. package/runtime/third_party/boringssl/ssl/ssl_stat.cc +162 -0
  919. package/runtime/third_party/boringssl/ssl/ssl_transcript.cc +224 -0
  920. package/runtime/third_party/boringssl/ssl/ssl_versions.cc +436 -0
  921. package/runtime/third_party/boringssl/ssl/ssl_x509.cc +1229 -0
  922. package/runtime/third_party/boringssl/ssl/t1_enc.cc +266 -0
  923. package/runtime/third_party/boringssl/ssl/tls13_both.cc +764 -0
  924. package/runtime/third_party/boringssl/ssl/tls13_client.cc +1325 -0
  925. package/runtime/third_party/boringssl/ssl/tls13_enc.cc +746 -0
  926. package/runtime/third_party/boringssl/ssl/tls13_server.cc +1623 -0
  927. package/runtime/third_party/boringssl/ssl/tls_method.cc +266 -0
  928. package/runtime/third_party/boringssl/ssl/tls_record.cc +524 -0
  929. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_curve25519_adx_mul.S +178 -0
  930. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_curve25519_adx_square.S +146 -0
  931. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_p256_adx_mul.S +177 -0
  932. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_p256_adx_sqr.S +166 -0
  933. package/runtime/third_party/boringssl/third_party/fiat/bedrock_unverified_bareminimum.c.inc +47 -0
  934. package/runtime/third_party/boringssl/third_party/fiat/bedrock_unverified_platform.c.inc +137 -0
  935. package/runtime/third_party/boringssl/third_party/fiat/curve25519_32.h +1571 -0
  936. package/runtime/third_party/boringssl/third_party/fiat/curve25519_64.h +978 -0
  937. package/runtime/third_party/boringssl/third_party/fiat/curve25519_64_adx.h +700 -0
  938. package/runtime/third_party/boringssl/third_party/fiat/curve25519_64_msvc.h +1281 -0
  939. package/runtime/third_party/boringssl/third_party/fiat/p256_32.h +4760 -0
  940. package/runtime/third_party/boringssl/third_party/fiat/p256_64.h +1984 -0
  941. package/runtime/third_party/boringssl/third_party/fiat/p256_64_msvc.h +1939 -0
  942. package/runtime/third_party/boringssl/third_party/fiat/p256_field.c.inc +26 -0
  943. package/runtime/third_party/boringssl/third_party/fiat/p256_field_32.br.c.inc +71 -0
  944. package/runtime/third_party/boringssl/third_party/fiat/p256_field_64.br.c.inc +84 -0
  945. package/runtime/third_party/boringssl/third_party/fiat/p256_point.br.c.inc +112 -0
  946. package/runtime/third_party/quickjs-dtoa/LICENSE +0 -0
  947. package/runtime/third_party/quickjs-dtoa/README.md +0 -0
  948. package/runtime/third_party/quickjs-dtoa/dtoa.c +0 -0
  949. package/runtime/third_party/quickjs-dtoa/dtoa.h +0 -0
  950. package/runtime/third_party/quickjs-dtoa/dtoa_compat.h +0 -0
  951. package/runtime/third_party/quickjs-regexp/LICENSE +0 -0
  952. package/runtime/third_party/quickjs-regexp/README.md +0 -0
  953. package/runtime/third_party/quickjs-regexp/cutils.c +0 -0
  954. package/runtime/third_party/quickjs-regexp/cutils.h +0 -0
  955. package/runtime/third_party/quickjs-regexp/libregexp-opcode.h +0 -0
  956. package/runtime/third_party/quickjs-regexp/libregexp.c +0 -0
  957. package/runtime/third_party/quickjs-regexp/libregexp.h +0 -0
  958. package/runtime/third_party/quickjs-regexp/libunicode-table.h +0 -0
  959. package/runtime/third_party/quickjs-regexp/libunicode.c +0 -0
  960. package/runtime/third_party/quickjs-regexp/libunicode.h +0 -0
  961. package/runtime/third_party/v8-ieee754/LICENSE +0 -0
  962. package/runtime/third_party/v8-ieee754/README.md +2 -1
  963. package/runtime/third_party/v8-ieee754/convert.py +4 -0
  964. package/runtime/third_party/v8-ieee754/ieee754.c +1 -1
  965. package/runtime/third_party/v8-ieee754/ieee754.h +0 -0
  966. package/runtime/tools/regexp_compile.c +0 -0
  967. package/runtime/third_party/bearssl/LICENSE.txt +0 -21
  968. package/runtime/third_party/bearssl/README.txt +0 -136
  969. package/runtime/third_party/bearssl/VERSION +0 -1
  970. package/runtime/third_party/bearssl/inc/bearssl.h +0 -183
  971. package/runtime/third_party/bearssl/inc/bearssl_aead.h +0 -1059
  972. package/runtime/third_party/bearssl/inc/bearssl_block.h +0 -2618
  973. package/runtime/third_party/bearssl/inc/bearssl_ec.h +0 -967
  974. package/runtime/third_party/bearssl/inc/bearssl_hash.h +0 -1346
  975. package/runtime/third_party/bearssl/inc/bearssl_hmac.h +0 -241
  976. package/runtime/third_party/bearssl/inc/bearssl_kdf.h +0 -284
  977. package/runtime/third_party/bearssl/inc/bearssl_pem.h +0 -294
  978. package/runtime/third_party/bearssl/inc/bearssl_prf.h +0 -150
  979. package/runtime/third_party/bearssl/inc/bearssl_rand.h +0 -397
  980. package/runtime/third_party/bearssl/inc/bearssl_rsa.h +0 -1655
  981. package/runtime/third_party/bearssl/inc/bearssl_ssl.h +0 -4296
  982. package/runtime/third_party/bearssl/inc/bearssl_x509.h +0 -1474
  983. package/runtime/third_party/bearssl/src/aead/ccm.c +0 -346
  984. package/runtime/third_party/bearssl/src/aead/eax.c +0 -525
  985. package/runtime/third_party/bearssl/src/aead/gcm.c +0 -318
  986. package/runtime/third_party/bearssl/src/codec/ccopy.c +0 -44
  987. package/runtime/third_party/bearssl/src/codec/dec16be.c +0 -38
  988. package/runtime/third_party/bearssl/src/codec/dec16le.c +0 -38
  989. package/runtime/third_party/bearssl/src/codec/dec32be.c +0 -38
  990. package/runtime/third_party/bearssl/src/codec/dec32le.c +0 -38
  991. package/runtime/third_party/bearssl/src/codec/dec64be.c +0 -38
  992. package/runtime/third_party/bearssl/src/codec/dec64le.c +0 -38
  993. package/runtime/third_party/bearssl/src/codec/enc16be.c +0 -38
  994. package/runtime/third_party/bearssl/src/codec/enc16le.c +0 -38
  995. package/runtime/third_party/bearssl/src/codec/enc32be.c +0 -38
  996. package/runtime/third_party/bearssl/src/codec/enc32le.c +0 -38
  997. package/runtime/third_party/bearssl/src/codec/enc64be.c +0 -38
  998. package/runtime/third_party/bearssl/src/codec/enc64le.c +0 -38
  999. package/runtime/third_party/bearssl/src/codec/pemdec.c +0 -526
  1000. package/runtime/third_party/bearssl/src/codec/pemdec.t0 +0 -314
  1001. package/runtime/third_party/bearssl/src/codec/pemenc.c +0 -173
  1002. package/runtime/third_party/bearssl/src/config.h +0 -247
  1003. package/runtime/third_party/bearssl/src/ec/ec_all_m15.c +0 -121
  1004. package/runtime/third_party/bearssl/src/ec/ec_all_m31.c +0 -171
  1005. package/runtime/third_party/bearssl/src/ec/ec_c25519_i15.c +0 -398
  1006. package/runtime/third_party/bearssl/src/ec/ec_c25519_i31.c +0 -390
  1007. package/runtime/third_party/bearssl/src/ec/ec_c25519_m15.c +0 -1478
  1008. package/runtime/third_party/bearssl/src/ec/ec_c25519_m31.c +0 -800
  1009. package/runtime/third_party/bearssl/src/ec/ec_c25519_m62.c +0 -605
  1010. package/runtime/third_party/bearssl/src/ec/ec_c25519_m64.c +0 -831
  1011. package/runtime/third_party/bearssl/src/ec/ec_curve25519.c +0 -46
  1012. package/runtime/third_party/bearssl/src/ec/ec_default.c +0 -36
  1013. package/runtime/third_party/bearssl/src/ec/ec_keygen.c +0 -86
  1014. package/runtime/third_party/bearssl/src/ec/ec_p256_m15.c +0 -2124
  1015. package/runtime/third_party/bearssl/src/ec/ec_p256_m31.c +0 -1469
  1016. package/runtime/third_party/bearssl/src/ec/ec_p256_m62.c +0 -1765
  1017. package/runtime/third_party/bearssl/src/ec/ec_p256_m64.c +0 -1781
  1018. package/runtime/third_party/bearssl/src/ec/ec_prime_i15.c +0 -824
  1019. package/runtime/third_party/bearssl/src/ec/ec_prime_i31.c +0 -826
  1020. package/runtime/third_party/bearssl/src/ec/ec_pubkey.c +0 -85
  1021. package/runtime/third_party/bearssl/src/ec/ec_secp256r1.c +0 -51
  1022. package/runtime/third_party/bearssl/src/ec/ec_secp384r1.c +0 -57
  1023. package/runtime/third_party/bearssl/src/ec/ec_secp521r1.c +0 -64
  1024. package/runtime/third_party/bearssl/src/ec/ecdsa_atr.c +0 -134
  1025. package/runtime/third_party/bearssl/src/ec/ecdsa_default_sign_asn1.c +0 -36
  1026. package/runtime/third_party/bearssl/src/ec/ecdsa_default_sign_raw.c +0 -36
  1027. package/runtime/third_party/bearssl/src/ec/ecdsa_default_vrfy_asn1.c +0 -36
  1028. package/runtime/third_party/bearssl/src/ec/ecdsa_default_vrfy_raw.c +0 -36
  1029. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_bits.c +0 -47
  1030. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_sign_asn1.c +0 -45
  1031. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_sign_raw.c +0 -174
  1032. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_vrfy_asn1.c +0 -48
  1033. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_vrfy_raw.c +0 -166
  1034. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_bits.c +0 -47
  1035. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_sign_asn1.c +0 -45
  1036. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_sign_raw.c +0 -173
  1037. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_vrfy_asn1.c +0 -48
  1038. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_vrfy_raw.c +0 -165
  1039. package/runtime/third_party/bearssl/src/ec/ecdsa_rta.c +0 -121
  1040. package/runtime/third_party/bearssl/src/hash/dig_oid.c +0 -84
  1041. package/runtime/third_party/bearssl/src/hash/dig_size.c +0 -50
  1042. package/runtime/third_party/bearssl/src/hash/ghash_ctmul.c +0 -345
  1043. package/runtime/third_party/bearssl/src/hash/ghash_ctmul32.c +0 -251
  1044. package/runtime/third_party/bearssl/src/hash/ghash_ctmul64.c +0 -154
  1045. package/runtime/third_party/bearssl/src/hash/ghash_pclmul.c +0 -389
  1046. package/runtime/third_party/bearssl/src/hash/ghash_pwr8.c +0 -411
  1047. package/runtime/third_party/bearssl/src/hash/md5.c +0 -208
  1048. package/runtime/third_party/bearssl/src/hash/md5sha1.c +0 -141
  1049. package/runtime/third_party/bearssl/src/hash/mgf1.c +0 -56
  1050. package/runtime/third_party/bearssl/src/hash/multihash.c +0 -166
  1051. package/runtime/third_party/bearssl/src/hash/sha1.c +0 -191
  1052. package/runtime/third_party/bearssl/src/hash/sha2big.c +0 -285
  1053. package/runtime/third_party/bearssl/src/hash/sha2small.c +0 -341
  1054. package/runtime/third_party/bearssl/src/inner.h +0 -2577
  1055. package/runtime/third_party/bearssl/src/int/i15_add.c +0 -46
  1056. package/runtime/third_party/bearssl/src/int/i15_bitlen.c +0 -44
  1057. package/runtime/third_party/bearssl/src/int/i15_decmod.c +0 -124
  1058. package/runtime/third_party/bearssl/src/int/i15_decode.c +0 -56
  1059. package/runtime/third_party/bearssl/src/int/i15_decred.c +0 -100
  1060. package/runtime/third_party/bearssl/src/int/i15_encode.c +0 -56
  1061. package/runtime/third_party/bearssl/src/int/i15_fmont.c +0 -59
  1062. package/runtime/third_party/bearssl/src/int/i15_iszero.c +0 -39
  1063. package/runtime/third_party/bearssl/src/int/i15_moddiv.c +0 -465
  1064. package/runtime/third_party/bearssl/src/int/i15_modpow.c +0 -50
  1065. package/runtime/third_party/bearssl/src/int/i15_modpow2.c +0 -160
  1066. package/runtime/third_party/bearssl/src/int/i15_montmul.c +0 -184
  1067. package/runtime/third_party/bearssl/src/int/i15_mulacc.c +0 -61
  1068. package/runtime/third_party/bearssl/src/int/i15_muladd.c +0 -173
  1069. package/runtime/third_party/bearssl/src/int/i15_ninv15.c +0 -38
  1070. package/runtime/third_party/bearssl/src/int/i15_reduce.c +0 -66
  1071. package/runtime/third_party/bearssl/src/int/i15_rshift.c +0 -47
  1072. package/runtime/third_party/bearssl/src/int/i15_sub.c +0 -46
  1073. package/runtime/third_party/bearssl/src/int/i15_tmont.c +0 -36
  1074. package/runtime/third_party/bearssl/src/int/i31_add.c +0 -46
  1075. package/runtime/third_party/bearssl/src/int/i31_bitlen.c +0 -44
  1076. package/runtime/third_party/bearssl/src/int/i31_decmod.c +0 -124
  1077. package/runtime/third_party/bearssl/src/int/i31_decode.c +0 -57
  1078. package/runtime/third_party/bearssl/src/int/i31_decred.c +0 -103
  1079. package/runtime/third_party/bearssl/src/int/i31_encode.c +0 -79
  1080. package/runtime/third_party/bearssl/src/int/i31_fmont.c +0 -60
  1081. package/runtime/third_party/bearssl/src/int/i31_iszero.c +0 -39
  1082. package/runtime/third_party/bearssl/src/int/i31_moddiv.c +0 -488
  1083. package/runtime/third_party/bearssl/src/int/i31_modpow.c +0 -65
  1084. package/runtime/third_party/bearssl/src/int/i31_modpow2.c +0 -160
  1085. package/runtime/third_party/bearssl/src/int/i31_montmul.c +0 -127
  1086. package/runtime/third_party/bearssl/src/int/i31_mulacc.c +0 -74
  1087. package/runtime/third_party/bearssl/src/int/i31_muladd.c +0 -157
  1088. package/runtime/third_party/bearssl/src/int/i31_ninv31.c +0 -39
  1089. package/runtime/third_party/bearssl/src/int/i31_reduce.c +0 -66
  1090. package/runtime/third_party/bearssl/src/int/i31_rshift.c +0 -47
  1091. package/runtime/third_party/bearssl/src/int/i31_sub.c +0 -46
  1092. package/runtime/third_party/bearssl/src/int/i31_tmont.c +0 -36
  1093. package/runtime/third_party/bearssl/src/int/i32_add.c +0 -51
  1094. package/runtime/third_party/bearssl/src/int/i32_bitlen.c +0 -44
  1095. package/runtime/third_party/bearssl/src/int/i32_decmod.c +0 -77
  1096. package/runtime/third_party/bearssl/src/int/i32_decode.c +0 -63
  1097. package/runtime/third_party/bearssl/src/int/i32_decred.c +0 -107
  1098. package/runtime/third_party/bearssl/src/int/i32_div32.c +0 -56
  1099. package/runtime/third_party/bearssl/src/int/i32_encode.c +0 -72
  1100. package/runtime/third_party/bearssl/src/int/i32_fmont.c +0 -60
  1101. package/runtime/third_party/bearssl/src/int/i32_iszero.c +0 -39
  1102. package/runtime/third_party/bearssl/src/int/i32_modpow.c +0 -65
  1103. package/runtime/third_party/bearssl/src/int/i32_montmul.c +0 -69
  1104. package/runtime/third_party/bearssl/src/int/i32_mulacc.c +0 -56
  1105. package/runtime/third_party/bearssl/src/int/i32_muladd.c +0 -138
  1106. package/runtime/third_party/bearssl/src/int/i32_ninv32.c +0 -39
  1107. package/runtime/third_party/bearssl/src/int/i32_reduce.c +0 -66
  1108. package/runtime/third_party/bearssl/src/int/i32_sub.c +0 -51
  1109. package/runtime/third_party/bearssl/src/int/i32_tmont.c +0 -36
  1110. package/runtime/third_party/bearssl/src/int/i62_modpow2.c +0 -493
  1111. package/runtime/third_party/bearssl/src/kdf/hkdf.c +0 -107
  1112. package/runtime/third_party/bearssl/src/kdf/shake.c +0 -590
  1113. package/runtime/third_party/bearssl/src/mac/hmac.c +0 -122
  1114. package/runtime/third_party/bearssl/src/mac/hmac_ct.c +0 -193
  1115. package/runtime/third_party/bearssl/src/rand/aesctr_drbg.c +0 -206
  1116. package/runtime/third_party/bearssl/src/rand/hmac_drbg.c +0 -157
  1117. package/runtime/third_party/bearssl/src/rand/sysrng.c +0 -252
  1118. package/runtime/third_party/bearssl/src/rsa/rsa_default_keygen.c +0 -38
  1119. package/runtime/third_party/bearssl/src/rsa/rsa_default_modulus.c +0 -36
  1120. package/runtime/third_party/bearssl/src/rsa/rsa_default_oaep_decrypt.c +0 -38
  1121. package/runtime/third_party/bearssl/src/rsa/rsa_default_oaep_encrypt.c +0 -38
  1122. package/runtime/third_party/bearssl/src/rsa/rsa_default_pkcs1_sign.c +0 -38
  1123. package/runtime/third_party/bearssl/src/rsa/rsa_default_pkcs1_vrfy.c +0 -38
  1124. package/runtime/third_party/bearssl/src/rsa/rsa_default_priv.c +0 -38
  1125. package/runtime/third_party/bearssl/src/rsa/rsa_default_privexp.c +0 -36
  1126. package/runtime/third_party/bearssl/src/rsa/rsa_default_pss_sign.c +0 -38
  1127. package/runtime/third_party/bearssl/src/rsa/rsa_default_pss_vrfy.c +0 -38
  1128. package/runtime/third_party/bearssl/src/rsa/rsa_default_pub.c +0 -38
  1129. package/runtime/third_party/bearssl/src/rsa/rsa_default_pubexp.c +0 -36
  1130. package/runtime/third_party/bearssl/src/rsa/rsa_i15_keygen.c +0 -583
  1131. package/runtime/third_party/bearssl/src/rsa/rsa_i15_modulus.c +0 -99
  1132. package/runtime/third_party/bearssl/src/rsa/rsa_i15_oaep_decrypt.c +0 -41
  1133. package/runtime/third_party/bearssl/src/rsa/rsa_i15_oaep_encrypt.c +0 -44
  1134. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pkcs1_sign.c +0 -37
  1135. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pkcs1_vrfy.c +0 -43
  1136. package/runtime/third_party/bearssl/src/rsa/rsa_i15_priv.c +0 -209
  1137. package/runtime/third_party/bearssl/src/rsa/rsa_i15_privexp.c +0 -320
  1138. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pss_sign.c +0 -40
  1139. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pss_vrfy.c +0 -44
  1140. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pub.c +0 -113
  1141. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pubexp.c +0 -152
  1142. package/runtime/third_party/bearssl/src/rsa/rsa_i31_keygen.c +0 -37
  1143. package/runtime/third_party/bearssl/src/rsa/rsa_i31_keygen_inner.c +0 -608
  1144. package/runtime/third_party/bearssl/src/rsa/rsa_i31_modulus.c +0 -99
  1145. package/runtime/third_party/bearssl/src/rsa/rsa_i31_oaep_decrypt.c +0 -41
  1146. package/runtime/third_party/bearssl/src/rsa/rsa_i31_oaep_encrypt.c +0 -44
  1147. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pkcs1_sign.c +0 -37
  1148. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pkcs1_vrfy.c +0 -43
  1149. package/runtime/third_party/bearssl/src/rsa/rsa_i31_priv.c +0 -203
  1150. package/runtime/third_party/bearssl/src/rsa/rsa_i31_privexp.c +0 -318
  1151. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pss_sign.c +0 -40
  1152. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pss_vrfy.c +0 -44
  1153. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pub.c +0 -106
  1154. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pubexp.c +0 -152
  1155. package/runtime/third_party/bearssl/src/rsa/rsa_i32_oaep_decrypt.c +0 -41
  1156. package/runtime/third_party/bearssl/src/rsa/rsa_i32_oaep_encrypt.c +0 -44
  1157. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pkcs1_sign.c +0 -37
  1158. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pkcs1_vrfy.c +0 -43
  1159. package/runtime/third_party/bearssl/src/rsa/rsa_i32_priv.c +0 -160
  1160. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pss_sign.c +0 -40
  1161. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pss_vrfy.c +0 -44
  1162. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pub.c +0 -77
  1163. package/runtime/third_party/bearssl/src/rsa/rsa_i62_keygen.c +0 -57
  1164. package/runtime/third_party/bearssl/src/rsa/rsa_i62_oaep_decrypt.c +0 -61
  1165. package/runtime/third_party/bearssl/src/rsa/rsa_i62_oaep_encrypt.c +0 -64
  1166. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pkcs1_sign.c +0 -57
  1167. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pkcs1_vrfy.c +0 -63
  1168. package/runtime/third_party/bearssl/src/rsa/rsa_i62_priv.c +0 -223
  1169. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pss_sign.c +0 -60
  1170. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pss_vrfy.c +0 -64
  1171. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pub.c +0 -125
  1172. package/runtime/third_party/bearssl/src/rsa/rsa_oaep_pad.c +0 -112
  1173. package/runtime/third_party/bearssl/src/rsa/rsa_oaep_unpad.c +0 -145
  1174. package/runtime/third_party/bearssl/src/rsa/rsa_pkcs1_sig_pad.c +0 -100
  1175. package/runtime/third_party/bearssl/src/rsa/rsa_pkcs1_sig_unpad.c +0 -121
  1176. package/runtime/third_party/bearssl/src/rsa/rsa_pss_sig_pad.c +0 -106
  1177. package/runtime/third_party/bearssl/src/rsa/rsa_pss_sig_unpad.c +0 -121
  1178. package/runtime/third_party/bearssl/src/rsa/rsa_ssl_decrypt.c +0 -52
  1179. package/runtime/third_party/bearssl/src/settings.c +0 -306
  1180. package/runtime/third_party/bearssl/src/symcipher/aes_big_cbcdec.c +0 -69
  1181. package/runtime/third_party/bearssl/src/symcipher/aes_big_cbcenc.c +0 -67
  1182. package/runtime/third_party/bearssl/src/symcipher/aes_big_ctr.c +0 -84
  1183. package/runtime/third_party/bearssl/src/symcipher/aes_big_ctrcbc.c +0 -142
  1184. package/runtime/third_party/bearssl/src/symcipher/aes_big_dec.c +0 -254
  1185. package/runtime/third_party/bearssl/src/symcipher/aes_big_enc.c +0 -157
  1186. package/runtime/third_party/bearssl/src/symcipher/aes_common.c +0 -112
  1187. package/runtime/third_party/bearssl/src/symcipher/aes_ct.c +0 -328
  1188. package/runtime/third_party/bearssl/src/symcipher/aes_ct64.c +0 -398
  1189. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_cbcdec.c +0 -104
  1190. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_cbcenc.c +0 -81
  1191. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_ctr.c +0 -114
  1192. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_ctrcbc.c +0 -433
  1193. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_dec.c +0 -159
  1194. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_enc.c +0 -115
  1195. package/runtime/third_party/bearssl/src/symcipher/aes_ct_cbcdec.c +0 -111
  1196. package/runtime/third_party/bearssl/src/symcipher/aes_ct_cbcenc.c +0 -91
  1197. package/runtime/third_party/bearssl/src/symcipher/aes_ct_ctr.c +0 -116
  1198. package/runtime/third_party/bearssl/src/symcipher/aes_ct_ctrcbc.c +0 -422
  1199. package/runtime/third_party/bearssl/src/symcipher/aes_ct_dec.c +0 -170
  1200. package/runtime/third_party/bearssl/src/symcipher/aes_ct_enc.c +0 -112
  1201. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8.c +0 -445
  1202. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_cbcdec.c +0 -670
  1203. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_cbcenc.c +0 -417
  1204. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_ctr.c +0 -717
  1205. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_ctrcbc.c +0 -946
  1206. package/runtime/third_party/bearssl/src/symcipher/aes_small_cbcdec.c +0 -69
  1207. package/runtime/third_party/bearssl/src/symcipher/aes_small_cbcenc.c +0 -67
  1208. package/runtime/third_party/bearssl/src/symcipher/aes_small_ctr.c +0 -84
  1209. package/runtime/third_party/bearssl/src/symcipher/aes_small_ctrcbc.c +0 -142
  1210. package/runtime/third_party/bearssl/src/symcipher/aes_small_dec.c +0 -176
  1211. package/runtime/third_party/bearssl/src/symcipher/aes_small_enc.c +0 -129
  1212. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni.c +0 -240
  1213. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_cbcdec.c +0 -223
  1214. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_cbcenc.c +0 -122
  1215. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_ctr.c +0 -211
  1216. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_ctrcbc.c +0 -596
  1217. package/runtime/third_party/bearssl/src/symcipher/chacha20_ct.c +0 -106
  1218. package/runtime/third_party/bearssl/src/symcipher/chacha20_sse2.c +0 -237
  1219. package/runtime/third_party/bearssl/src/symcipher/des_ct.c +0 -411
  1220. package/runtime/third_party/bearssl/src/symcipher/des_ct_cbcdec.c +0 -87
  1221. package/runtime/third_party/bearssl/src/symcipher/des_ct_cbcenc.c +0 -69
  1222. package/runtime/third_party/bearssl/src/symcipher/des_support.c +0 -166
  1223. package/runtime/third_party/bearssl/src/symcipher/des_tab.c +0 -310
  1224. package/runtime/third_party/bearssl/src/symcipher/des_tab_cbcdec.c +0 -85
  1225. package/runtime/third_party/bearssl/src/symcipher/des_tab_cbcenc.c +0 -67
  1226. package/runtime/third_party/bearssl/src/symcipher/poly1305_ctmul.c +0 -260
  1227. package/runtime/third_party/bearssl/src/symcipher/poly1305_ctmul32.c +0 -297
  1228. package/runtime/third_party/bearssl/src/symcipher/poly1305_ctmulq.c +0 -475
  1229. package/runtime/third_party/bearssl/src/symcipher/poly1305_i15.c +0 -221
  1230. package/runtime/third_party/bearssl/src/x509/asn1.t0 +0 -757
  1231. package/runtime/third_party/bearssl/src/x509/asn1enc.c +0 -93
  1232. package/runtime/third_party/bearssl/src/x509/encode_ec_pk8der.c +0 -110
  1233. package/runtime/third_party/bearssl/src/x509/encode_ec_rawder.c +0 -161
  1234. package/runtime/third_party/bearssl/src/x509/encode_rsa_pk8der.c +0 -97
  1235. package/runtime/third_party/bearssl/src/x509/encode_rsa_rawder.c +0 -96
  1236. package/runtime/third_party/bearssl/src/x509/skey_decoder.c +0 -653
  1237. package/runtime/third_party/bearssl/src/x509/skey_decoder.t0 +0 -376
  1238. package/runtime/third_party/bearssl/src/x509/x509_decoder.c +0 -776
  1239. package/runtime/third_party/bearssl/src/x509/x509_decoder.t0 +0 -324
  1240. package/runtime/third_party/bearssl/src/x509/x509_knownkey.c +0 -105
  1241. package/runtime/third_party/bearssl/src/x509/x509_minimal.c +0 -1722
  1242. package/runtime/third_party/bearssl/src/x509/x509_minimal.t0 +0 -1526
  1243. package/runtime/third_party/bearssl/src/x509/x509_minimal_full.c +0 -59
@@ -0,0 +1,1531 @@
1
+ // Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // https://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ #include <limits.h>
16
+ #include <string.h>
17
+ #include <time.h>
18
+
19
+ #include <openssl/asn1.h>
20
+ #include <openssl/err.h>
21
+ #include <openssl/evp.h>
22
+ #include <openssl/mem.h>
23
+ #include <openssl/obj.h>
24
+ #include <openssl/x509.h>
25
+
26
+ #include "../internal.h"
27
+ #include "../mem_internal.h"
28
+ #include "internal.h"
29
+
30
+
31
+ using namespace bssl;
32
+
33
+ static ExDataClass g_ex_data_class(/*with_app_data=*/true);
34
+
35
+ // CRL score values
36
+
37
+ // No unhandled critical extensions
38
+ #define CRL_SCORE_NOCRITICAL 0x100
39
+
40
+ // certificate is within CRL scope
41
+ #define CRL_SCORE_SCOPE 0x080
42
+
43
+ // CRL times valid
44
+ #define CRL_SCORE_TIME 0x040
45
+
46
+ // Issuer name matches certificate
47
+ #define CRL_SCORE_ISSUER_NAME 0x020
48
+
49
+ // If this score or above CRL is probably valid
50
+ #define CRL_SCORE_VALID \
51
+ (CRL_SCORE_NOCRITICAL | CRL_SCORE_TIME | CRL_SCORE_SCOPE)
52
+
53
+ // CRL issuer is certificate issuer
54
+ #define CRL_SCORE_ISSUER_CERT 0x018
55
+
56
+ // CRL issuer is on certificate path
57
+ #define CRL_SCORE_SAME_PATH 0x008
58
+
59
+ // CRL issuer matches CRL AKID
60
+ #define CRL_SCORE_AKID 0x004
61
+
62
+ static int null_callback(int ok, X509_STORE_CTX *e);
63
+ static X509 *find_issuer(X509_STORE_CTX *ctx, const STACK_OF(X509) *sk,
64
+ const X509 *x);
65
+ static int check_chain_extensions(X509_STORE_CTX *ctx);
66
+ static int check_name_constraints(X509_STORE_CTX *ctx);
67
+ static int check_id(X509_STORE_CTX *ctx);
68
+ static int check_trust(X509_STORE_CTX *ctx);
69
+ static int check_revocation(X509_STORE_CTX *ctx);
70
+ static int check_cert(X509_STORE_CTX *ctx);
71
+ static int check_policy(X509_STORE_CTX *ctx);
72
+
73
+ static UniquePtr<X509> get_trusted_issuer(X509_STORE_CTX *ctx, const X509 *x);
74
+ static int get_crl_score(X509_STORE_CTX *ctx, X509 **pissuer, X509_CRL *crl,
75
+ X509 *x);
76
+ static int get_crl(X509_STORE_CTX *ctx, X509_CRL **pcrl, X509 *x);
77
+ static int crl_akid_check(X509_STORE_CTX *ctx, X509_CRL *crl, X509 **pissuer,
78
+ int *pcrl_score);
79
+ static int crl_crldp_check(X509 *x, X509_CRL *crl, int crl_score);
80
+ static int check_crl(X509_STORE_CTX *ctx, X509_CRL *crl);
81
+ static int cert_crl(X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x);
82
+
83
+ static int internal_verify(X509_STORE_CTX *ctx);
84
+
85
+ static int null_callback(int ok, X509_STORE_CTX *e) { return ok; }
86
+
87
+ // cert_self_signed checks if `x` is self-signed. If `x` is valid, it returns
88
+ // one and sets `*out_is_self_signed` to the result. If `x` is invalid, it
89
+ // returns zero.
90
+ static int cert_self_signed(X509 *x, int *out_is_self_signed) {
91
+ if (!x509v3_cache_extensions(x)) {
92
+ return 0;
93
+ }
94
+ auto *impl = FromOpaque(x);
95
+ *out_is_self_signed = (impl->ex_flags & EXFLAG_SS) != 0;
96
+ return 1;
97
+ }
98
+
99
+ static int call_verify_cb(int ok, X509_STORE_CTX *ctx) {
100
+ ok = ctx->verify_cb(ok, ctx);
101
+ // Historically, callbacks returning values like -1 would be treated as a mix
102
+ // of success or failure. Insert that callers check correctly.
103
+ //
104
+ // TODO(davidben): Also use this wrapper to constrain which errors may be
105
+ // suppressed, and ensure all `verify_cb` calls remember to fill in an error.
106
+ BSSL_CHECK(ok == 0 || ok == 1);
107
+ return ok;
108
+ }
109
+
110
+ // Given a certificate try and find an exact match in the store
111
+ static UniquePtr<X509> lookup_cert_match(X509_STORE_CTX *ctx, const X509 *x) {
112
+ // Lookup all certs with matching subject name
113
+ UniquePtr<STACK_OF(X509)> certs(
114
+ X509_STORE_CTX_get1_certs(ctx, X509_get_subject_name(x)));
115
+ if (certs == nullptr) {
116
+ return nullptr;
117
+ }
118
+ // Look for exact match
119
+ for (X509 *found : certs.get()) {
120
+ if (X509_cmp(found, x) == 0) {
121
+ return UpRef(found);
122
+ }
123
+ }
124
+ return nullptr;
125
+ }
126
+
127
+ int X509_verify_cert(X509_STORE_CTX *ctx) {
128
+ int ok = 0;
129
+ Cleanup set_ctx_error = [&] {
130
+ // Safety net, error returns must set ctx->error
131
+ if (!ok && ctx->error == X509_V_OK) {
132
+ ctx->error = X509_V_ERR_UNSPECIFIED;
133
+ }
134
+ };
135
+
136
+ const X509_VERIFY_PARAM *param = ctx->param;
137
+ if (ctx->cert == nullptr) {
138
+ OPENSSL_PUT_ERROR(X509, X509_R_NO_CERT_SET_FOR_US_TO_VERIFY);
139
+ ctx->error = X509_V_ERR_INVALID_CALL;
140
+ return 0;
141
+ }
142
+
143
+ if (ctx->chain != nullptr) {
144
+ // This X509_STORE_CTX has already been used to verify a cert. We
145
+ // cannot do another one.
146
+ OPENSSL_PUT_ERROR(X509, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
147
+ ctx->error = X509_V_ERR_INVALID_CALL;
148
+ return 0;
149
+ }
150
+
151
+ if (param->flags &
152
+ (X509_V_FLAG_EXTENDED_CRL_SUPPORT | X509_V_FLAG_USE_DELTAS)) {
153
+ // We do not support indirect or delta CRLs. The flags still exist for
154
+ // compatibility with bindings libraries, but to ensure we do not
155
+ // inadvertently skip a CRL check that the caller expects, fail closed.
156
+ OPENSSL_PUT_ERROR(X509, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
157
+ ctx->error = X509_V_ERR_INVALID_CALL;
158
+ return 0;
159
+ }
160
+
161
+ // first we make sure the chain we are going to build is present and that
162
+ // the first entry is in place
163
+ ctx->chain = sk_X509_new_null();
164
+ if (ctx->chain == nullptr || !PushToStack(ctx->chain, UpRef(ctx->cert))) {
165
+ ctx->error = X509_V_ERR_OUT_OF_MEM;
166
+ return 0;
167
+ }
168
+ ctx->last_untrusted = 1;
169
+
170
+ // We use a temporary STACK so we can chop and hack at it. `sktmp` is not a
171
+ // `UniquePtr<STACK_OF(X509)>` because that would do a deep free and this is a
172
+ // shallow free.
173
+ STACK_OF(X509) *sktmp = nullptr;
174
+ Cleanup free_sktmp = [&] { sk_X509_free(sktmp); };
175
+ if (ctx->untrusted != nullptr &&
176
+ (sktmp = sk_X509_dup(ctx->untrusted)) == nullptr) {
177
+ ctx->error = X509_V_ERR_OUT_OF_MEM;
178
+ return 0;
179
+ }
180
+
181
+ // Maintain invariants: `num` is always the size of `ctx->chain` and `last` is
182
+ // always the last element.
183
+ int num = (int)sk_X509_num(ctx->chain);
184
+ X509 *last = sk_X509_last(ctx->chain);
185
+ // `param->depth` does not include the leaf certificate or the trust anchor,
186
+ // so the maximum size is 2 more.
187
+ int max_chain = param->depth >= INT_MAX - 2 ? INT_MAX : param->depth + 2;
188
+
189
+ for (;;) {
190
+ if (num >= max_chain) {
191
+ // FIXME: If this happens, we should take note of it and, if
192
+ // appropriate, use the X509_V_ERR_CERT_CHAIN_TOO_LONG error code later.
193
+ break;
194
+ }
195
+
196
+ int is_self_signed;
197
+ if (!cert_self_signed(last, &is_self_signed)) {
198
+ ctx->error = X509_V_ERR_INVALID_EXTENSION;
199
+ return 0;
200
+ }
201
+
202
+ // If we are self signed, we break
203
+ if (is_self_signed) {
204
+ break;
205
+ }
206
+ // See if we can find issuer in trusted store first.
207
+ if (UniquePtr<X509> trusted = get_trusted_issuer(ctx, last);
208
+ trusted != nullptr) {
209
+ // Free the certificate. It will be picked up again later.
210
+ break;
211
+ }
212
+
213
+ // If we were passed a cert chain, use it first
214
+ if (sktmp != nullptr) {
215
+ X509 *issuer = find_issuer(ctx, sktmp, last);
216
+ if (issuer != nullptr) {
217
+ if (!PushToStack(ctx->chain, UpRef(issuer))) {
218
+ ctx->error = X509_V_ERR_OUT_OF_MEM;
219
+ return 0;
220
+ }
221
+ (void)sk_X509_delete_ptr(sktmp, issuer);
222
+ ctx->last_untrusted++;
223
+ last = issuer;
224
+ num++;
225
+ // reparse the full chain for the next one
226
+ continue;
227
+ }
228
+ }
229
+ break;
230
+ }
231
+
232
+ // At this point, chain should contain a list of untrusted certificates.
233
+ // We now need to add at least one trusted one, if possible, otherwise we
234
+ // complain.
235
+ assert(num == static_cast<int>(sk_X509_num(ctx->chain)));
236
+ assert(last == sk_X509_last(ctx->chain));
237
+
238
+ // Examine last certificate in chain and see if it is self signed.
239
+ int is_self_signed;
240
+ if (!cert_self_signed(last, &is_self_signed)) {
241
+ ctx->error = X509_V_ERR_INVALID_EXTENSION;
242
+ return 0;
243
+ }
244
+
245
+ int bad_chain = 0;
246
+ UniquePtr<X509> chain_ss;
247
+ if (is_self_signed) {
248
+ // we have a self signed certificate
249
+ if (sk_X509_num(ctx->chain) == 1) {
250
+ // We have a single self signed certificate: see if we can
251
+ // find it in the store. We must have an exact match to avoid
252
+ // possible impersonation.
253
+ UniquePtr<X509> issuer = get_trusted_issuer(ctx, last);
254
+ if (issuer == nullptr || X509_cmp(last, issuer.get()) != 0) {
255
+ ctx->error = X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT;
256
+ ctx->current_cert = last;
257
+ ctx->error_depth = num - 1;
258
+ bad_chain = 1;
259
+ if (!call_verify_cb(0, ctx)) {
260
+ return 0;
261
+ }
262
+ } else {
263
+ // We have a match: replace certificate with store
264
+ // version so we get any trust settings.
265
+ X509_free(last);
266
+ last = issuer.release();
267
+ (void)sk_X509_set(ctx->chain, num - 1, last);
268
+ ctx->last_untrusted = 0;
269
+ }
270
+ } else {
271
+ // extract and save self signed certificate for later use
272
+ chain_ss.reset(sk_X509_pop(ctx->chain));
273
+ ctx->last_untrusted--;
274
+ num--;
275
+ last = sk_X509_value(ctx->chain, num - 1);
276
+ }
277
+ }
278
+ // We now lookup certs from the certificate store
279
+ for (;;) {
280
+ if (num >= max_chain) {
281
+ // FIXME: If this happens, we should take note of it and, if
282
+ // appropriate, use the X509_V_ERR_CERT_CHAIN_TOO_LONG error code
283
+ // later.
284
+ break;
285
+ }
286
+ if (!cert_self_signed(last, &is_self_signed)) {
287
+ ctx->error = X509_V_ERR_INVALID_EXTENSION;
288
+ return 0;
289
+ }
290
+ // If we are self signed, we break
291
+ if (is_self_signed) {
292
+ break;
293
+ }
294
+ UniquePtr<X509> issuer = get_trusted_issuer(ctx, last);
295
+ if (issuer == nullptr) {
296
+ break;
297
+ }
298
+ last = issuer.get();
299
+ if (!PushToStack(ctx->chain, std::move(issuer))) {
300
+ ctx->error = X509_V_ERR_OUT_OF_MEM;
301
+ return 0;
302
+ }
303
+ num++;
304
+ }
305
+
306
+ // we now have our chain, lets check it...
307
+ int trust = check_trust(ctx);
308
+
309
+ // If explicitly rejected error
310
+ if (trust == X509_TRUST_REJECTED) {
311
+ return 0;
312
+ }
313
+
314
+ // If not explicitly trusted then indicate error unless it's a single
315
+ // self signed certificate in which case we've indicated an error already
316
+ // and set bad_chain == 1
317
+ if (trust != X509_TRUST_TRUSTED && !bad_chain) {
318
+ if (chain_ss == nullptr ||
319
+ !x509_check_issued_with_callback(ctx, last, chain_ss.get())) {
320
+ if (ctx->last_untrusted >= num) {
321
+ ctx->error = X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY;
322
+ } else {
323
+ ctx->error = X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT;
324
+ }
325
+ ctx->current_cert = last;
326
+ } else {
327
+ if (!PushToStack(ctx->chain, std::move(chain_ss))) {
328
+ ctx->error = X509_V_ERR_OUT_OF_MEM;
329
+ return 0;
330
+ }
331
+ num++;
332
+ ctx->last_untrusted = num;
333
+ ctx->current_cert = sk_X509_last(ctx->chain);
334
+ ctx->error = X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN;
335
+ }
336
+
337
+ ctx->error_depth = num - 1;
338
+ bad_chain = 1;
339
+ if (!call_verify_cb(0, ctx)) {
340
+ return 0;
341
+ }
342
+ }
343
+
344
+ // We have the chain complete: now we need to check its purpose
345
+ if (!check_chain_extensions(ctx) || //
346
+ !check_id(ctx) ||
347
+ // We check revocation status after copying parameters because they may
348
+ // be needed for CRL signature verification.
349
+ !check_revocation(ctx) || //
350
+ !internal_verify(ctx) || //
351
+ !check_name_constraints(ctx) ||
352
+ // TODO(davidben): Does `check_policy` still need to be conditioned on
353
+ // |!bad_chain|? DoS concerns have been resolved.
354
+ (!bad_chain && !check_policy(ctx))) {
355
+ return 0;
356
+ }
357
+
358
+ ok = 1;
359
+ return 1;
360
+ }
361
+
362
+ // Given a STACK_OF(X509) find the issuer of cert (if any)
363
+ static X509 *find_issuer(X509_STORE_CTX *ctx, const STACK_OF(X509) *sk,
364
+ const X509 *x) {
365
+ for (X509 *issuer : sk) {
366
+ if (x509_check_issued_with_callback(ctx, x, issuer)) {
367
+ return issuer;
368
+ }
369
+ }
370
+ return nullptr;
371
+ }
372
+
373
+ // Given a possible certificate and issuer check them
374
+ int bssl::x509_check_issued_with_callback(X509_STORE_CTX *ctx, const X509 *x,
375
+ const X509 *issuer) {
376
+ int ret;
377
+ ret = X509_check_issued(issuer, x);
378
+ if (ret == X509_V_OK) {
379
+ return 1;
380
+ }
381
+ // If we haven't asked for issuer errors don't set ctx
382
+ if (!(ctx->param->flags & X509_V_FLAG_CB_ISSUER_CHECK)) {
383
+ return 0;
384
+ }
385
+
386
+ ctx->error = ret;
387
+ ctx->current_cert = const_cast<X509 *>(x);
388
+ return call_verify_cb(0, ctx);
389
+ }
390
+
391
+ static UniquePtr<X509> get_trusted_issuer(X509_STORE_CTX *ctx, const X509 *x) {
392
+ if (ctx->trusted_stack != nullptr) {
393
+ // Ignore the store and use the configured stack instead.
394
+ return UpRef(find_issuer(ctx, ctx->trusted_stack, x));
395
+ }
396
+
397
+ X509 *issuer = nullptr;
398
+ if (!X509_STORE_CTX_get1_issuer(&issuer, ctx, x)) {
399
+ return nullptr;
400
+ }
401
+ // `X509_STORE_CTX_get1_issuer` passes ownership of `issuer`.
402
+ return UniquePtr<X509>(issuer);
403
+ }
404
+
405
+ // Check a certificate chains extensions for consistency with the supplied
406
+ // purpose
407
+ static int check_chain_extensions(X509_STORE_CTX *ctx) {
408
+ int plen = 0;
409
+ int purpose = ctx->param->purpose;
410
+
411
+ // Check all untrusted certificates
412
+ for (int i = 0; i < ctx->last_untrusted; i++) {
413
+ X509Impl *x = FromOpaque(sk_X509_value(ctx->chain, i));
414
+ if (!(ctx->param->flags & X509_V_FLAG_IGNORE_CRITICAL) &&
415
+ (x->ex_flags & EXFLAG_CRITICAL)) {
416
+ ctx->error = X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION;
417
+ ctx->error_depth = i;
418
+ ctx->current_cert = x;
419
+ if (!call_verify_cb(0, ctx)) {
420
+ return 0;
421
+ }
422
+ }
423
+
424
+ int must_be_ca = i > 0;
425
+ if (must_be_ca && !X509_check_ca(x)) {
426
+ ctx->error = X509_V_ERR_INVALID_CA;
427
+ ctx->error_depth = i;
428
+ ctx->current_cert = x;
429
+ if (!call_verify_cb(0, ctx)) {
430
+ return 0;
431
+ }
432
+ }
433
+ if (ctx->param->purpose > 0 &&
434
+ X509_check_purpose(x, purpose, must_be_ca) != 1) {
435
+ ctx->error = X509_V_ERR_INVALID_PURPOSE;
436
+ ctx->error_depth = i;
437
+ ctx->current_cert = x;
438
+ if (!call_verify_cb(0, ctx)) {
439
+ return 0;
440
+ }
441
+ }
442
+ // Check path length constraints. See steps (l) and (m) of RFC 5280,
443
+ // section 6.1.4. Note the spec is structured differently from this
444
+ // logic. Section 6.1.4 runs from root to leaf and does not run on
445
+ // the leaf. `plen` counts the number of times step (l) would have
446
+ // run. The constraint is violated if some `x->ex_pathlen`, read in
447
+ // step (m), is too low to be decremented `plen` times.
448
+ //
449
+ // Note that path lengths of self-issued certificates still have to be
450
+ // considered - they are just not counted as part of the path length!
451
+ if (i > 1 && x->ex_pathlen != -1 && plen > x->ex_pathlen + 1) {
452
+ ctx->error = X509_V_ERR_PATH_LENGTH_EXCEEDED;
453
+ ctx->error_depth = i;
454
+ ctx->current_cert = x;
455
+ if (!call_verify_cb(0, ctx)) {
456
+ return 0;
457
+ }
458
+ }
459
+ // Increment path length if not self issued. As only self-issued
460
+ // _intermediates_ are skipped in (l) of RFC 5280 (simply because it
461
+ // operates on certificate chain _edges_), always increment for the first
462
+ // (the leaf) in the chain.
463
+ if (i == 0 || !(x->ex_flags & EXFLAG_SI)) {
464
+ plen++;
465
+ }
466
+ }
467
+
468
+ return 1;
469
+ }
470
+
471
+ static int reject_dns_name_in_common_name(X509 *x509) {
472
+ const X509_NAME *name = X509_get_subject_name(x509);
473
+ int i = -1;
474
+ for (;;) {
475
+ i = X509_NAME_get_index_by_NID(name, NID_commonName, i);
476
+ if (i == -1) {
477
+ return X509_V_OK;
478
+ }
479
+
480
+ const X509_NAME_ENTRY *entry = X509_NAME_get_entry(name, i);
481
+ const ASN1_STRING *common_name = X509_NAME_ENTRY_get_data(entry);
482
+ unsigned char *idval;
483
+ int idlen = ASN1_STRING_to_UTF8(&idval, common_name);
484
+ if (idlen < 0) {
485
+ return X509_V_ERR_OUT_OF_MEM;
486
+ }
487
+ // Only process attributes that look like host names. Note it is
488
+ // important that this check be mirrored in `X509_check_host`.
489
+ int looks_like_dns = x509v3_looks_like_dns_name(idval, (size_t)idlen);
490
+ OPENSSL_free(idval);
491
+ if (looks_like_dns) {
492
+ return X509_V_ERR_NAME_CONSTRAINTS_WITHOUT_SANS;
493
+ }
494
+ }
495
+ }
496
+
497
+ static int check_name_constraints(X509_STORE_CTX *ctx) {
498
+ int i, j, rv;
499
+ int has_name_constraints = 0;
500
+ // Check name constraints for all certificates
501
+ for (i = (int)sk_X509_num(ctx->chain) - 1; i >= 0; i--) {
502
+ X509Impl *x = FromOpaque(sk_X509_value(ctx->chain, i));
503
+ // Ignore self issued certs unless last in chain
504
+ if (i && (x->ex_flags & EXFLAG_SI)) {
505
+ continue;
506
+ }
507
+ // Check against constraints for all certificates higher in chain
508
+ // including trust anchor. Trust anchor not strictly speaking needed
509
+ // but if it includes constraints it is to be assumed it expects them
510
+ // to be obeyed.
511
+ for (j = (int)sk_X509_num(ctx->chain) - 1; j > i; j--) {
512
+ NAME_CONSTRAINTS *nc = FromOpaque(sk_X509_value(ctx->chain, j))->nc.get();
513
+ if (nc) {
514
+ has_name_constraints = 1;
515
+ rv = NAME_CONSTRAINTS_check(x, nc);
516
+ switch (rv) {
517
+ case X509_V_OK:
518
+ continue;
519
+ case X509_V_ERR_OUT_OF_MEM:
520
+ ctx->error = rv;
521
+ return 0;
522
+ default:
523
+ ctx->error = rv;
524
+ ctx->error_depth = i;
525
+ ctx->current_cert = x;
526
+ if (!call_verify_cb(0, ctx)) {
527
+ return 0;
528
+ }
529
+ break;
530
+ }
531
+ }
532
+ }
533
+ }
534
+
535
+ // Name constraints do not match against the common name, but
536
+ // `X509_check_host` still implements the legacy behavior where, on
537
+ // certificates lacking a SAN list, DNS-like names in the common name are
538
+ // checked instead.
539
+ //
540
+ // While we could apply the name constraints to the common name, name
541
+ // constraints are rare enough that can hold such certificates to a higher
542
+ // standard. Note this does not make "DNS-like" heuristic failures any
543
+ // worse. A decorative common-name misidentified as a DNS name would fail
544
+ // the name constraint anyway.
545
+ X509Impl *leaf = FromOpaque(sk_X509_value(ctx->chain, 0));
546
+ if (has_name_constraints && leaf->altname == nullptr) {
547
+ rv = reject_dns_name_in_common_name(leaf);
548
+ switch (rv) {
549
+ case X509_V_OK:
550
+ break;
551
+ case X509_V_ERR_OUT_OF_MEM:
552
+ ctx->error = rv;
553
+ return 0;
554
+ default:
555
+ ctx->error = rv;
556
+ ctx->error_depth = 0;
557
+ ctx->current_cert = leaf;
558
+ if (!call_verify_cb(0, ctx)) {
559
+ return 0;
560
+ }
561
+ break;
562
+ }
563
+ }
564
+
565
+ return 1;
566
+ }
567
+
568
+ static int check_id_error(X509_STORE_CTX *ctx, int errcode) {
569
+ ctx->error = errcode;
570
+ ctx->current_cert = ctx->cert;
571
+ ctx->error_depth = 0;
572
+ return call_verify_cb(0, ctx);
573
+ }
574
+
575
+ static int check_hosts(X509 *x, X509_VERIFY_PARAM *param) {
576
+ size_t i;
577
+ size_t n = sk_OPENSSL_STRING_num(param->hosts);
578
+ char *name;
579
+
580
+ for (i = 0; i < n; ++i) {
581
+ name = sk_OPENSSL_STRING_value(param->hosts, i);
582
+ if (X509_check_host(x, name, strlen(name), param->hostflags, nullptr) > 0) {
583
+ return 1;
584
+ }
585
+ }
586
+ return n == 0;
587
+ }
588
+
589
+ static int check_id(X509_STORE_CTX *ctx) {
590
+ X509_VERIFY_PARAM *vpm = ctx->param;
591
+ X509 *x = ctx->cert;
592
+ if (vpm->poison) {
593
+ if (!check_id_error(ctx, X509_V_ERR_INVALID_CALL)) {
594
+ return 0;
595
+ }
596
+ }
597
+ if (vpm->hosts && check_hosts(x, vpm) <= 0) {
598
+ if (!check_id_error(ctx, X509_V_ERR_HOSTNAME_MISMATCH)) {
599
+ return 0;
600
+ }
601
+ }
602
+ if (vpm->email && X509_check_email(x, vpm->email, vpm->emaillen, 0) <= 0) {
603
+ if (!check_id_error(ctx, X509_V_ERR_EMAIL_MISMATCH)) {
604
+ return 0;
605
+ }
606
+ }
607
+ if (vpm->ip && X509_check_ip(x, vpm->ip, vpm->iplen, 0) <= 0) {
608
+ if (!check_id_error(ctx, X509_V_ERR_IP_ADDRESS_MISMATCH)) {
609
+ return 0;
610
+ }
611
+ }
612
+ return 1;
613
+ }
614
+
615
+ static int check_trust(X509_STORE_CTX *ctx) {
616
+ // Check all trusted certificates in chain
617
+ for (size_t i = ctx->last_untrusted; i < sk_X509_num(ctx->chain); i++) {
618
+ X509 *x = sk_X509_value(ctx->chain, i);
619
+ int trust = X509_check_trust(x, ctx->param->trust, 0);
620
+ // If explicitly trusted return trusted
621
+ if (trust == X509_TRUST_TRUSTED) {
622
+ return X509_TRUST_TRUSTED;
623
+ }
624
+ // If explicitly rejected notify callback and reject if not
625
+ // overridden.
626
+ if (trust == X509_TRUST_REJECTED) {
627
+ ctx->error_depth = (int)i;
628
+ ctx->current_cert = x;
629
+ ctx->error = X509_V_ERR_CERT_REJECTED;
630
+ if (!call_verify_cb(0, ctx)) {
631
+ return X509_TRUST_REJECTED;
632
+ }
633
+ }
634
+ }
635
+ // If we accept partial chains and have at least one trusted certificate
636
+ // return success.
637
+ if (ctx->param->flags & X509_V_FLAG_PARTIAL_CHAIN) {
638
+ if (ctx->last_untrusted < (int)sk_X509_num(ctx->chain)) {
639
+ return X509_TRUST_TRUSTED;
640
+ }
641
+ X509 *x = sk_X509_value(ctx->chain, 0);
642
+ UniquePtr<X509> mx = lookup_cert_match(ctx, x);
643
+ if (mx) {
644
+ (void)sk_X509_set(ctx->chain, 0, mx.release());
645
+ X509_free(x);
646
+ ctx->last_untrusted = 0;
647
+ return X509_TRUST_TRUSTED;
648
+ }
649
+ }
650
+
651
+ // If no trusted certs in chain at all return untrusted and allow
652
+ // standard (no issuer cert) etc errors to be indicated.
653
+ return X509_TRUST_UNTRUSTED;
654
+ }
655
+
656
+ static int check_revocation(X509_STORE_CTX *ctx) {
657
+ if (!(ctx->param->flags & X509_V_FLAG_CRL_CHECK)) {
658
+ return 1;
659
+ }
660
+ int last;
661
+ if (ctx->param->flags & X509_V_FLAG_CRL_CHECK_ALL) {
662
+ last = (int)sk_X509_num(ctx->chain) - 1;
663
+ } else {
664
+ last = 0;
665
+ }
666
+ for (int i = 0; i <= last; i++) {
667
+ ctx->error_depth = i;
668
+ if (!check_cert(ctx)) {
669
+ return 0;
670
+ }
671
+ }
672
+ return 1;
673
+ }
674
+
675
+ static int check_cert(X509_STORE_CTX *ctx) {
676
+ X509_CRL *crl = nullptr;
677
+ int ok = 0, cnum = ctx->error_depth;
678
+ X509 *x = sk_X509_value(ctx->chain, cnum);
679
+ ctx->current_cert = x;
680
+ ctx->current_crl_issuer = nullptr;
681
+ ctx->current_crl_score = 0;
682
+
683
+ // Try to retrieve the relevant CRL. Note that `get_crl` sets
684
+ // `current_crl_issuer` and `current_crl_score`, which `check_crl` then reads.
685
+ //
686
+ // TODO(davidben): The awkward internal calling convention is a historical
687
+ // artifact of when these functions were user-overridable callbacks, even
688
+ // though there was no way to set them correctly. These callbacks have since
689
+ // been removed, so we can pass input and output parameters more directly.
690
+ if (!get_crl(ctx, &crl, x)) {
691
+ ctx->error = X509_V_ERR_UNABLE_TO_GET_CRL;
692
+ ok = call_verify_cb(0, ctx);
693
+ goto err;
694
+ }
695
+
696
+ ctx->current_crl = crl;
697
+ if (!check_crl(ctx, crl) || //
698
+ !cert_crl(ctx, crl, x)) {
699
+ goto err;
700
+ }
701
+
702
+ ok = 1;
703
+
704
+ err:
705
+ X509_CRL_free(crl);
706
+ ctx->current_crl = nullptr;
707
+ return ok;
708
+ }
709
+
710
+ // Check CRL times against values in X509_STORE_CTX
711
+ static int check_crl_time(X509_STORE_CTX *ctx, X509_CRL *crl, int notify) {
712
+ if (ctx->param->flags & X509_V_FLAG_NO_CHECK_TIME) {
713
+ return 1;
714
+ }
715
+
716
+ if (notify) {
717
+ ctx->current_crl = crl;
718
+ }
719
+ int64_t ptime;
720
+ if (ctx->param->flags & X509_V_FLAG_USE_CHECK_TIME) {
721
+ ptime = ctx->param->check_time;
722
+ } else {
723
+ ptime = time(nullptr);
724
+ }
725
+
726
+ int i = X509_cmp_time_posix(X509_CRL_get0_lastUpdate(crl), ptime);
727
+ if (i == 0) {
728
+ if (!notify) {
729
+ return 0;
730
+ }
731
+ ctx->error = X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD;
732
+ if (!call_verify_cb(0, ctx)) {
733
+ return 0;
734
+ }
735
+ }
736
+
737
+ if (i > 0) {
738
+ if (!notify) {
739
+ return 0;
740
+ }
741
+ ctx->error = X509_V_ERR_CRL_NOT_YET_VALID;
742
+ if (!call_verify_cb(0, ctx)) {
743
+ return 0;
744
+ }
745
+ }
746
+
747
+ if (X509_CRL_get0_nextUpdate(crl)) {
748
+ i = X509_cmp_time_posix(X509_CRL_get0_nextUpdate(crl), ptime);
749
+
750
+ if (i == 0) {
751
+ if (!notify) {
752
+ return 0;
753
+ }
754
+ ctx->error = X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD;
755
+ if (!call_verify_cb(0, ctx)) {
756
+ return 0;
757
+ }
758
+ }
759
+ if (i < 0) {
760
+ if (!notify) {
761
+ return 0;
762
+ }
763
+ ctx->error = X509_V_ERR_CRL_HAS_EXPIRED;
764
+ if (!call_verify_cb(0, ctx)) {
765
+ return 0;
766
+ }
767
+ }
768
+ }
769
+
770
+ if (notify) {
771
+ ctx->current_crl = nullptr;
772
+ }
773
+
774
+ return 1;
775
+ }
776
+
777
+ static int get_crl_sk(X509_STORE_CTX *ctx, X509_CRL **pcrl, X509 **pissuer,
778
+ int *pscore, STACK_OF(X509_CRL) *crls) {
779
+ int crl_score, best_score = *pscore;
780
+ X509 *x = ctx->current_cert;
781
+ X509_CRL *best_crl = nullptr;
782
+ X509 *crl_issuer = nullptr, *best_crl_issuer = nullptr;
783
+
784
+ for (size_t i = 0; i < sk_X509_CRL_num(crls); i++) {
785
+ X509_CRL *crl = sk_X509_CRL_value(crls, i);
786
+ crl_score = get_crl_score(ctx, &crl_issuer, crl, x);
787
+ if (crl_score < best_score || crl_score == 0) {
788
+ continue;
789
+ }
790
+ // If current CRL is equivalent use it if it is newer
791
+ if (crl_score == best_score && best_crl != nullptr) {
792
+ int day, sec;
793
+ if (ASN1_TIME_diff(&day, &sec, X509_CRL_get0_lastUpdate(best_crl),
794
+ X509_CRL_get0_lastUpdate(crl)) == 0) {
795
+ continue;
796
+ }
797
+ // ASN1_TIME_diff never returns inconsistent signs for `day`
798
+ // and `sec`.
799
+ if (day <= 0 && sec <= 0) {
800
+ continue;
801
+ }
802
+ }
803
+ best_crl = crl;
804
+ best_crl_issuer = crl_issuer;
805
+ best_score = crl_score;
806
+ }
807
+
808
+ if (best_crl) {
809
+ if (*pcrl) {
810
+ X509_CRL_free(*pcrl);
811
+ }
812
+ *pcrl = best_crl;
813
+ *pissuer = best_crl_issuer;
814
+ *pscore = best_score;
815
+ X509_CRL_up_ref(best_crl);
816
+ }
817
+
818
+ if (best_score >= CRL_SCORE_VALID) {
819
+ return 1;
820
+ }
821
+
822
+ return 0;
823
+ }
824
+
825
+ // For a given CRL return how suitable it is for the supplied certificate
826
+ // 'x'. The return value is a mask of several criteria. If the issuer is not
827
+ // the certificate issuer this is returned in *pissuer.
828
+ static int get_crl_score(X509_STORE_CTX *ctx, X509 **pissuer, X509_CRL *crl,
829
+ X509 *x) {
830
+ if (crl->idp) {
831
+ // Per RFC 5280, section 5.2.5, at most one of onlyContainsUserCerts,
832
+ // onlyContainsCACerts, and onlyContainsAttributeCerts may be true.
833
+ // TODO(crbug.com/42290307): Move this check to the `ISSUING_DIST_POINT`
834
+ // parser.
835
+ int num_only =
836
+ (!!crl->idp->onlyuser) + (!!crl->idp->onlyCA) + (!!crl->idp->onlyattr);
837
+ if (num_only > 1) {
838
+ return 0;
839
+ }
840
+ // Reason codes and indirect CRLs are not supported.
841
+ if (crl->idp->indirectCRL || crl->idp->onlysomereasons) {
842
+ return 0;
843
+ }
844
+ }
845
+
846
+ // We do not support indirect CRLs, so the issuer names must match.
847
+ if (X509_NAME_cmp(X509_get_issuer_name(x), X509_CRL_get_issuer(crl))) {
848
+ return 0;
849
+ }
850
+
851
+ int crl_score = CRL_SCORE_ISSUER_NAME;
852
+ if (!(crl->flags & EXFLAG_CRITICAL)) {
853
+ crl_score |= CRL_SCORE_NOCRITICAL;
854
+ }
855
+
856
+ // Check expiry
857
+ if (check_crl_time(ctx, crl, 0)) {
858
+ crl_score |= CRL_SCORE_TIME;
859
+ }
860
+
861
+ // Check authority key ID and locate certificate issuer
862
+ if (!crl_akid_check(ctx, crl, pissuer, &crl_score)) {
863
+ // If we can't locate certificate issuer at this point forget it
864
+ return 0;
865
+ }
866
+
867
+ // Check cert for matching CRL distribution points
868
+ if (crl_crldp_check(x, crl, crl_score)) {
869
+ crl_score |= CRL_SCORE_SCOPE;
870
+ }
871
+
872
+ return crl_score;
873
+ }
874
+
875
+ static int crl_akid_check(X509_STORE_CTX *ctx, X509_CRL *crl, X509 **pissuer,
876
+ int *pcrl_score) {
877
+ X509 *crl_issuer = nullptr;
878
+ X509_NAME *cnm = X509_CRL_get_issuer(crl);
879
+ int cidx = ctx->error_depth;
880
+
881
+ if ((size_t)cidx != sk_X509_num(ctx->chain) - 1) {
882
+ cidx++;
883
+ }
884
+
885
+ crl_issuer = sk_X509_value(ctx->chain, cidx);
886
+
887
+ if (X509_check_akid(crl_issuer, crl->akid) == X509_V_OK) {
888
+ *pcrl_score |= CRL_SCORE_AKID | CRL_SCORE_ISSUER_CERT;
889
+ *pissuer = crl_issuer;
890
+ return 1;
891
+ }
892
+
893
+ for (cidx++; cidx < (int)sk_X509_num(ctx->chain); cidx++) {
894
+ crl_issuer = sk_X509_value(ctx->chain, cidx);
895
+ if (X509_NAME_cmp(X509_get_subject_name(crl_issuer), cnm)) {
896
+ continue;
897
+ }
898
+ if (X509_check_akid(crl_issuer, crl->akid) == X509_V_OK) {
899
+ *pcrl_score |= CRL_SCORE_AKID | CRL_SCORE_SAME_PATH;
900
+ *pissuer = crl_issuer;
901
+ return 1;
902
+ }
903
+ }
904
+
905
+ return 0;
906
+ }
907
+
908
+ static int idp_check_dp(const DIST_POINT_NAME *dp_cert,
909
+ const DIST_POINT_NAME *dp_crl) {
910
+ // If the CRL IDP does not have a distributionPoint field, the CRL is scoped
911
+ // to the entire CA and matches everything.
912
+ //
913
+ // TODO(crbug.com/42290219): This covers a null `dp_crl`, but not `dp_cert`.
914
+ // If `dp_cert` is null, that means the certificate's DistributionPoint lacks
915
+ // a distributionPoint. However, DistributionPoints are required to have
916
+ // either distributionPoint or cRLIssuer (indirect CRL) and we reject the
917
+ // latter. However, we don't seem to check this in the parser. Enforce this so
918
+ // that `dp_cert` cannot be null.
919
+ if (!dp_cert || !dp_crl) {
920
+ return 1;
921
+ }
922
+ // We only support fullName, not nameRelativeToCRLIssuer.
923
+ if (dp_cert->type != 0 || dp_crl->type != 0) {
924
+ return 0;
925
+ }
926
+ // Check that the CRL's distributionPoint has some name in common with the
927
+ // certificate's. A CA might shard across multiple CRLs. This check ensures we
928
+ // are looking at the right shard.
929
+ //
930
+ // TODO(crbug.com/565047760): This should not be an O(N^2) comparison.
931
+ for (const GENERAL_NAME *gen_cert : dp_cert->name.fullname) {
932
+ for (const GENERAL_NAME *gen_crl : dp_crl->name.fullname) {
933
+ if (GENERAL_NAME_cmp(gen_cert, gen_crl) == 0) {
934
+ return 1;
935
+ }
936
+ }
937
+ }
938
+ return 0;
939
+ }
940
+
941
+ // Check CRLDP and IDP
942
+ static int crl_crldp_check(X509 *x, X509_CRL *crl, int crl_score) {
943
+ auto *impl = FromOpaque(x);
944
+ if (impl->ex_flags & EXFLAG_CA) {
945
+ if (crl->idp && crl->idp->onlyuser) {
946
+ return 0;
947
+ }
948
+ } else {
949
+ if (crl->idp && crl->idp->onlyCA) {
950
+ return 0;
951
+ }
952
+ }
953
+ for (const DIST_POINT *dp : impl->crldp.get()) {
954
+ // Skip distribution points with a reasons field or a CRL issuer:
955
+ //
956
+ // We do not support CRLs partitioned by reason code. RFC 5280 requires CAs
957
+ // include at least one DistributionPoint that covers all reasons.
958
+ //
959
+ // We also do not support indirect CRLs, and a CRL issuer can only match
960
+ // indirect CRLs (RFC 5280, section 6.3.3, step b.1).
961
+ if (dp->reasons != nullptr || dp->CRLissuer != nullptr) {
962
+ continue;
963
+ }
964
+ // At this point we have already checked that the CRL issuer matches
965
+ // the certificate issuer (and set CRL_SCORE_ISSUER_NAME);
966
+
967
+ // RFC 5280 Section 6.3.3 step b.2
968
+ if (!crl->idp || idp_check_dp(dp->distpoint, crl->idp->distpoint)){
969
+ return 1;
970
+ }
971
+ }
972
+
973
+ // If the CRL does not specify an issuing distribution point, allow it to
974
+ // match anything. This partially implements RFC 5280. The final paragraph of
975
+ // RFC 5280, section 6.3.3, specifies a default CRL-DP. This default would
976
+ // match IDP-less CRLs and CRLs with an IDP of the default CRL-DP. We do not
977
+ // implement the second condition.
978
+ return !crl->idp || !crl->idp->distpoint;
979
+ }
980
+
981
+ // Retrieve CRL corresponding to current certificate.
982
+ static int get_crl(X509_STORE_CTX *ctx, X509_CRL **pcrl, X509 *x) {
983
+ X509 *issuer = nullptr;
984
+ int crl_score = 0;
985
+ X509_CRL *crl = nullptr;
986
+ STACK_OF(X509_CRL) *skcrl = nullptr;
987
+ if (get_crl_sk(ctx, &crl, &issuer, &crl_score, ctx->crls)) {
988
+ goto done;
989
+ }
990
+
991
+ // Lookup CRLs from store
992
+ skcrl = X509_STORE_CTX_get1_crls(ctx, X509_get_issuer_name(x));
993
+
994
+ // If no CRLs found and a near match from get_crl_sk use that
995
+ if (!skcrl && crl) {
996
+ goto done;
997
+ }
998
+
999
+ get_crl_sk(ctx, &crl, &issuer, &crl_score, skcrl);
1000
+
1001
+ sk_X509_CRL_pop_free(skcrl, X509_CRL_free);
1002
+
1003
+ done:
1004
+ // If we got any kind of CRL use it and return success
1005
+ if (crl) {
1006
+ ctx->current_crl_issuer = issuer;
1007
+ ctx->current_crl_score = crl_score;
1008
+ *pcrl = crl;
1009
+ return 1;
1010
+ }
1011
+
1012
+ return 0;
1013
+ }
1014
+
1015
+ // Check CRL validity
1016
+ static int check_crl(X509_STORE_CTX *ctx, X509_CRL *crl) {
1017
+ X509Impl *issuer = nullptr;
1018
+ int cnum = ctx->error_depth;
1019
+ int chnum = (int)sk_X509_num(ctx->chain) - 1;
1020
+ // If we have an alternative CRL issuer cert use that. Otherwise, it is the
1021
+ // issuer of the current certificate.
1022
+ if (ctx->current_crl_issuer) {
1023
+ issuer = FromOpaque(ctx->current_crl_issuer);
1024
+ } else if (cnum < chnum) {
1025
+ issuer = FromOpaque(sk_X509_value(ctx->chain, cnum + 1));
1026
+ } else {
1027
+ issuer = FromOpaque(sk_X509_value(ctx->chain, chnum));
1028
+ // If not self signed, can't check signature
1029
+ if (!x509_check_issued_with_callback(ctx, issuer, issuer)) {
1030
+ ctx->error = X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER;
1031
+ if (!call_verify_cb(0, ctx)) {
1032
+ return 0;
1033
+ }
1034
+ }
1035
+ }
1036
+
1037
+ if (issuer) {
1038
+ // Check for cRLSign bit if keyUsage present
1039
+ if ((issuer->ex_flags & EXFLAG_KUSAGE) &&
1040
+ !(issuer->ex_kusage & X509v3_KU_CRL_SIGN)) {
1041
+ ctx->error = X509_V_ERR_KEYUSAGE_NO_CRL_SIGN;
1042
+ if (!call_verify_cb(0, ctx)) {
1043
+ return 0;
1044
+ }
1045
+ }
1046
+
1047
+ if (!(ctx->current_crl_score & CRL_SCORE_SCOPE)) {
1048
+ ctx->error = X509_V_ERR_DIFFERENT_CRL_SCOPE;
1049
+ if (!call_verify_cb(0, ctx)) {
1050
+ return 0;
1051
+ }
1052
+ }
1053
+
1054
+ if (!(ctx->current_crl_score & CRL_SCORE_TIME)) {
1055
+ if (!check_crl_time(ctx, crl, 1)) {
1056
+ return 0;
1057
+ }
1058
+ }
1059
+
1060
+ // Attempt to get issuer certificate public key
1061
+ EVP_PKEY *ikey = X509_get0_pubkey(issuer);
1062
+ if (!ikey) {
1063
+ ctx->error = X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY;
1064
+ if (!call_verify_cb(0, ctx)) {
1065
+ return 0;
1066
+ }
1067
+ } else {
1068
+ // Verify CRL signature
1069
+ if (X509_CRL_verify(crl, ikey) <= 0) {
1070
+ ctx->error = X509_V_ERR_CRL_SIGNATURE_FAILURE;
1071
+ if (!call_verify_cb(0, ctx)) {
1072
+ return 0;
1073
+ }
1074
+ }
1075
+ }
1076
+ }
1077
+
1078
+ return 1;
1079
+ }
1080
+
1081
+ // Check certificate against CRL
1082
+ static int cert_crl(X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x) {
1083
+ // The rules changed for this... previously if a CRL contained unhandled
1084
+ // critical extensions it could still be used to indicate a certificate
1085
+ // was revoked. This has since been changed since critical extension can
1086
+ // change the meaning of CRL entries.
1087
+ if (!(ctx->param->flags & X509_V_FLAG_IGNORE_CRITICAL) &&
1088
+ (crl->flags & EXFLAG_CRITICAL)) {
1089
+ ctx->error = X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION;
1090
+ if (!call_verify_cb(0, ctx)) {
1091
+ return 0;
1092
+ }
1093
+ }
1094
+ // Look for serial number of certificate in CRL.
1095
+ X509_REVOKED *rev;
1096
+ if (X509_CRL_get0_by_cert(crl, &rev, x)) {
1097
+ ctx->error = X509_V_ERR_CERT_REVOKED;
1098
+ if (!call_verify_cb(0, ctx)) {
1099
+ return 0;
1100
+ }
1101
+ }
1102
+
1103
+ return 1;
1104
+ }
1105
+
1106
+ static int check_policy(X509_STORE_CTX *ctx) {
1107
+ X509 *current_cert = nullptr;
1108
+ int ret = X509_policy_check(ctx->chain, ctx->param->policies,
1109
+ ctx->param->flags, &current_cert);
1110
+ if (ret != X509_V_OK) {
1111
+ ctx->current_cert = current_cert;
1112
+ ctx->error = ret;
1113
+ if (ret == X509_V_ERR_OUT_OF_MEM) {
1114
+ return 0;
1115
+ }
1116
+ return call_verify_cb(0, ctx);
1117
+ }
1118
+
1119
+ return 1;
1120
+ }
1121
+
1122
+ static int check_cert_time(X509_STORE_CTX *ctx, X509 *x) {
1123
+ if (ctx->param->flags & X509_V_FLAG_NO_CHECK_TIME) {
1124
+ return 1;
1125
+ }
1126
+
1127
+ int64_t ptime;
1128
+ if (ctx->param->flags & X509_V_FLAG_USE_CHECK_TIME) {
1129
+ ptime = ctx->param->check_time;
1130
+ } else {
1131
+ ptime = time(nullptr);
1132
+ }
1133
+
1134
+ int i = (ctx->param->flags & X509_V_FLAG_ALLOW_TIMEZONE_OFFSET)
1135
+ ? X509_cmp_time_posix_nonstandard(X509_get_notBefore(x), ptime)
1136
+ : X509_cmp_time_posix(X509_get_notBefore(x), ptime);
1137
+ if (i == 0) {
1138
+ ctx->error = X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD;
1139
+ ctx->current_cert = x;
1140
+ if (!call_verify_cb(0, ctx)) {
1141
+ return 0;
1142
+ }
1143
+ }
1144
+
1145
+ if (i > 0) {
1146
+ ctx->error = X509_V_ERR_CERT_NOT_YET_VALID;
1147
+ ctx->current_cert = x;
1148
+ if (!call_verify_cb(0, ctx)) {
1149
+ return 0;
1150
+ }
1151
+ }
1152
+
1153
+ i = (ctx->param->flags & X509_V_FLAG_ALLOW_TIMEZONE_OFFSET)
1154
+ ? X509_cmp_time_posix_nonstandard(X509_get_notAfter(x), ptime)
1155
+ : X509_cmp_time_posix(X509_get_notAfter(x), ptime);
1156
+ if (i == 0) {
1157
+ ctx->error = X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD;
1158
+ ctx->current_cert = x;
1159
+ if (!call_verify_cb(0, ctx)) {
1160
+ return 0;
1161
+ }
1162
+ }
1163
+
1164
+ if (i < 0) {
1165
+ ctx->error = X509_V_ERR_CERT_HAS_EXPIRED;
1166
+ ctx->current_cert = x;
1167
+ if (!call_verify_cb(0, ctx)) {
1168
+ return 0;
1169
+ }
1170
+ }
1171
+
1172
+ return 1;
1173
+ }
1174
+
1175
+ static int verify_signature(X509_STORE_CTX *ctx, const X509 *x509,
1176
+ const X509 *issuer, EVP_PKEY *pkey) {
1177
+ int ret;
1178
+ if ((ctx->param->flags & X509_V_FLAG_USE_MTC_DRAFT_PLANTS_05) &&
1179
+ x509_is_merkle_tree_ca(issuer)) {
1180
+ ret = x509_verify_mtc(x509, pkey, issuer);
1181
+ } else {
1182
+ ret = X509_verify(x509, pkey);
1183
+ }
1184
+ return ret ? X509_V_OK : X509_V_ERR_CERT_SIGNATURE_FAILURE;
1185
+ }
1186
+
1187
+ static int internal_verify(X509_STORE_CTX *ctx) {
1188
+ // TODO(davidben): This logic is incredibly confusing. Rewrite this:
1189
+ //
1190
+ // First, don't allow the verify callback to suppress
1191
+ // X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY, which will simplify the
1192
+ // signature check. Then replace jumping into the middle of the loop. It's
1193
+ // trying to ensure that all certificates see `check_cert_time`, then checking
1194
+ // the root's self signature when requested, but not breaking partial chains
1195
+ // in the process.
1196
+ int n = (int)sk_X509_num(ctx->chain);
1197
+ ctx->error_depth = n - 1;
1198
+ n--;
1199
+ X509 *xi = sk_X509_value(ctx->chain, n);
1200
+ X509 *xs;
1201
+ if (x509_check_issued_with_callback(ctx, xi, xi)) {
1202
+ xs = xi;
1203
+ } else {
1204
+ if (ctx->param->flags & X509_V_FLAG_PARTIAL_CHAIN) {
1205
+ xs = xi;
1206
+ goto check_cert;
1207
+ }
1208
+ if (n <= 0) {
1209
+ ctx->error = X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE;
1210
+ ctx->current_cert = xi;
1211
+ return call_verify_cb(0, ctx);
1212
+ }
1213
+ n--;
1214
+ ctx->error_depth = n;
1215
+ xs = sk_X509_value(ctx->chain, n);
1216
+ }
1217
+
1218
+ // ctx->error=0; not needed
1219
+ while (n >= 0) {
1220
+ ctx->error_depth = n;
1221
+
1222
+ // Skip signature check for self signed certificates unless
1223
+ // explicitly asked for. It doesn't add any security and just wastes
1224
+ // time.
1225
+ if (xs != xi || (ctx->param->flags & X509_V_FLAG_CHECK_SS_SIGNATURE)) {
1226
+ EVP_PKEY *pkey = X509_get0_pubkey(xi);
1227
+ int err = pkey == nullptr ? X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY
1228
+ : verify_signature(ctx, xs, xi, pkey);
1229
+ if (err != X509_V_OK) {
1230
+ ctx->error = err;
1231
+ ctx->current_cert = xs;
1232
+ if (!call_verify_cb(0, ctx)) {
1233
+ return 0;
1234
+ }
1235
+ }
1236
+ }
1237
+
1238
+ check_cert:
1239
+ if (!check_cert_time(ctx, xs)) {
1240
+ return 0;
1241
+ }
1242
+
1243
+ // The last error (if any) is still in the error value
1244
+ ctx->current_cert = xs;
1245
+ if (!call_verify_cb(1, ctx)) {
1246
+ return 0;
1247
+ }
1248
+
1249
+ n--;
1250
+ if (n >= 0) {
1251
+ xi = xs;
1252
+ xs = sk_X509_value(ctx->chain, n);
1253
+ }
1254
+ }
1255
+
1256
+ return 1;
1257
+ }
1258
+
1259
+ int X509_cmp_current_time(const ASN1_TIME *ctm) {
1260
+ return X509_cmp_time_posix(ctm, time(nullptr));
1261
+ }
1262
+
1263
+ int X509_cmp_time(const ASN1_TIME *ctm, const time_t *cmp_time) {
1264
+ int64_t compare_time = (cmp_time == nullptr) ? time(nullptr) : *cmp_time;
1265
+ return X509_cmp_time_posix(ctm, compare_time);
1266
+ }
1267
+
1268
+ int X509_cmp_time_posix(const ASN1_TIME *ctm, int64_t cmp_time) {
1269
+ int64_t ctm_time;
1270
+ if (!ASN1_TIME_to_posix(ctm, &ctm_time)) {
1271
+ return 0;
1272
+ }
1273
+ // The return value 0 is reserved for errors.
1274
+ return (ctm_time - cmp_time <= 0) ? -1 : 1;
1275
+ }
1276
+
1277
+ int X509_cmp_time_posix_nonstandard(const ASN1_TIME *ctm, int64_t cmp_time) {
1278
+ int64_t ctm_time;
1279
+ if (!ASN1_TIME_to_posix_nonstandard(ctm, &ctm_time)) {
1280
+ return 0;
1281
+ }
1282
+ // The return value 0 is reserved for errors.
1283
+ return (ctm_time - cmp_time <= 0) ? -1 : 1;
1284
+ }
1285
+
1286
+ ASN1_TIME *X509_gmtime_adj(ASN1_TIME *s, long offset_sec) {
1287
+ return X509_time_adj(s, offset_sec, nullptr);
1288
+ }
1289
+
1290
+ ASN1_TIME *X509_time_adj(ASN1_TIME *s, long offset_sec, const time_t *in_tm) {
1291
+ return X509_time_adj_ex(s, 0, offset_sec, in_tm);
1292
+ }
1293
+
1294
+ ASN1_TIME *X509_time_adj_ex(ASN1_TIME *s, int offset_day, long offset_sec,
1295
+ const time_t *in_tm) {
1296
+ int64_t t = 0;
1297
+
1298
+ if (in_tm) {
1299
+ t = *in_tm;
1300
+ } else {
1301
+ t = time(nullptr);
1302
+ }
1303
+
1304
+ return ASN1_TIME_adj(s, t, offset_day, offset_sec);
1305
+ }
1306
+
1307
+ int X509_STORE_CTX_get_ex_new_index(long argl, void *argp,
1308
+ CRYPTO_EX_unused *unused,
1309
+ CRYPTO_EX_dup *dup_unused,
1310
+ CRYPTO_EX_free *free_func) {
1311
+ return CRYPTO_get_ex_new_index_ex(&g_ex_data_class, argl, argp, free_func);
1312
+ }
1313
+
1314
+ int X509_STORE_CTX_set_ex_data(X509_STORE_CTX *ctx, int idx, void *data) {
1315
+ return CRYPTO_set_ex_data(&ctx->ex_data, idx, data);
1316
+ }
1317
+
1318
+ void *X509_STORE_CTX_get_ex_data(X509_STORE_CTX *ctx, int idx) {
1319
+ return CRYPTO_get_ex_data(&ctx->ex_data, idx);
1320
+ }
1321
+
1322
+ int X509_STORE_CTX_get_error(const X509_STORE_CTX *ctx) { return ctx->error; }
1323
+
1324
+ void X509_STORE_CTX_set_error(X509_STORE_CTX *ctx, int err) {
1325
+ ctx->error = err;
1326
+ }
1327
+
1328
+ int X509_STORE_CTX_get_error_depth(const X509_STORE_CTX *ctx) {
1329
+ return ctx->error_depth;
1330
+ }
1331
+
1332
+ X509 *X509_STORE_CTX_get_current_cert(const X509_STORE_CTX *ctx) {
1333
+ return ctx->current_cert;
1334
+ }
1335
+
1336
+ STACK_OF(X509) *X509_STORE_CTX_get_chain(const X509_STORE_CTX *ctx) {
1337
+ return ctx->chain;
1338
+ }
1339
+
1340
+ STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx) {
1341
+ return ctx->chain;
1342
+ }
1343
+
1344
+ STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx) {
1345
+ if (!ctx->chain) {
1346
+ return nullptr;
1347
+ }
1348
+ return X509_chain_up_ref(ctx->chain);
1349
+ }
1350
+
1351
+ X509_CRL *X509_STORE_CTX_get0_current_crl(const X509_STORE_CTX *ctx) {
1352
+ return ctx->current_crl;
1353
+ }
1354
+
1355
+ X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx) {
1356
+ // In OpenSSL, an `X509_STORE_CTX` sometimes has a parent context during CRL
1357
+ // path validation for indirect CRLs. We require the CRL to be issued
1358
+ // somewhere along the certificate path, so this is always NULL.
1359
+ return nullptr;
1360
+ }
1361
+
1362
+ void X509_STORE_CTX_set_chain(X509_STORE_CTX *ctx, STACK_OF(X509) *sk) {
1363
+ ctx->untrusted = sk;
1364
+ }
1365
+
1366
+ STACK_OF(X509) *X509_STORE_CTX_get0_untrusted(const X509_STORE_CTX *ctx) {
1367
+ return ctx->untrusted;
1368
+ }
1369
+
1370
+ void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk) {
1371
+ ctx->crls = sk;
1372
+ }
1373
+
1374
+ int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose) {
1375
+ // If `purpose` is zero, this function historically silently did nothing.
1376
+ if (purpose == 0) {
1377
+ return 1;
1378
+ }
1379
+
1380
+ const X509_PURPOSE *pobj = X509_PURPOSE_get0(purpose);
1381
+ if (pobj == nullptr) {
1382
+ OPENSSL_PUT_ERROR(X509, X509_R_UNKNOWN_PURPOSE_ID);
1383
+ return 0;
1384
+ }
1385
+
1386
+ int trust = X509_PURPOSE_get_trust(pobj);
1387
+ if (!X509_STORE_CTX_set_trust(ctx, trust)) {
1388
+ return 0;
1389
+ }
1390
+
1391
+ if (ctx->param->purpose == 0) {
1392
+ ctx->param->purpose = purpose;
1393
+ }
1394
+ return 1;
1395
+ }
1396
+
1397
+ int X509_STORE_CTX_set_trust(X509_STORE_CTX *ctx, int trust) {
1398
+ // If `trust` is zero, this function historically silently did nothing.
1399
+ if (trust == 0) {
1400
+ return 1;
1401
+ }
1402
+
1403
+ if (!X509_is_valid_trust_id(trust)) {
1404
+ OPENSSL_PUT_ERROR(X509, X509_R_UNKNOWN_TRUST_ID);
1405
+ return 0;
1406
+ }
1407
+
1408
+ if (ctx->param->trust == 0) {
1409
+ ctx->param->trust = trust;
1410
+ }
1411
+ return 1;
1412
+ }
1413
+
1414
+ X509_STORE_CTX *X509_STORE_CTX_new() { return New<X509_STORE_CTX>(); }
1415
+
1416
+ void X509_STORE_CTX_free(X509_STORE_CTX *ctx) {
1417
+ if (ctx == nullptr) {
1418
+ return;
1419
+ }
1420
+ X509_STORE_CTX_cleanup(ctx);
1421
+ Delete(ctx);
1422
+ }
1423
+
1424
+ int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store, X509 *x509,
1425
+ STACK_OF(X509) *chain) {
1426
+ X509_STORE_CTX_cleanup(ctx);
1427
+
1428
+ ctx->ctx = store;
1429
+ ctx->cert = x509;
1430
+ ctx->untrusted = chain;
1431
+
1432
+ CRYPTO_new_ex_data(&ctx->ex_data);
1433
+
1434
+ if (store == nullptr) {
1435
+ OPENSSL_PUT_ERROR(X509, ERR_R_PASSED_NULL_PARAMETER);
1436
+ goto err;
1437
+ }
1438
+
1439
+ ctx->param = X509_VERIFY_PARAM_new();
1440
+ if (!ctx->param) {
1441
+ goto err;
1442
+ }
1443
+
1444
+ {
1445
+ // Inherit callbacks and flags from X509_STORE.
1446
+
1447
+ auto *store_impl = FromOpaque(store);
1448
+ ctx->verify_cb = store_impl->verify_cb;
1449
+
1450
+ if (!X509_VERIFY_PARAM_inherit(ctx->param, store_impl->param.get()) ||
1451
+ !X509_VERIFY_PARAM_inherit(ctx->param,
1452
+ X509_VERIFY_PARAM_lookup("default"))) {
1453
+ goto err;
1454
+ }
1455
+
1456
+ if (store_impl->verify_cb) {
1457
+ ctx->verify_cb = store_impl->verify_cb;
1458
+ } else {
1459
+ ctx->verify_cb = null_callback;
1460
+ }
1461
+ }
1462
+
1463
+ return 1;
1464
+
1465
+ err:
1466
+ X509_STORE_CTX_cleanup(ctx);
1467
+ return 0;
1468
+ }
1469
+
1470
+ // Set alternative lookup method: just a STACK of trusted certificates. This
1471
+ // avoids X509_STORE nastiness where it isn't needed.
1472
+
1473
+ void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx,
1474
+ STACK_OF(X509) *sk) {
1475
+ ctx->trusted_stack = sk;
1476
+ }
1477
+
1478
+ void X509_STORE_CTX_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk) {
1479
+ X509_STORE_CTX_set0_trusted_stack(ctx, sk);
1480
+ }
1481
+
1482
+ void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx) {
1483
+ CRYPTO_free_ex_data(&g_ex_data_class, &ctx->ex_data);
1484
+ X509_VERIFY_PARAM_free(ctx->param);
1485
+ sk_X509_pop_free(ctx->chain, X509_free);
1486
+ OPENSSL_memset(ctx, 0, sizeof(X509_STORE_CTX));
1487
+ }
1488
+
1489
+ void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth) {
1490
+ X509_VERIFY_PARAM_set_depth(ctx->param, depth);
1491
+ }
1492
+
1493
+ void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags) {
1494
+ X509_VERIFY_PARAM_set_flags(ctx->param, flags);
1495
+ }
1496
+
1497
+ void X509_STORE_CTX_set_time_posix(X509_STORE_CTX *ctx, unsigned long flags,
1498
+ int64_t t) {
1499
+ X509_VERIFY_PARAM_set_time_posix(ctx->param, t);
1500
+ }
1501
+
1502
+ void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags,
1503
+ time_t t) {
1504
+ X509_STORE_CTX_set_time_posix(ctx, flags, t);
1505
+ }
1506
+
1507
+ X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx) { return ctx->cert; }
1508
+
1509
+ void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx,
1510
+ int (*verify_cb)(int, X509_STORE_CTX *)) {
1511
+ ctx->verify_cb = verify_cb;
1512
+ }
1513
+
1514
+ int X509_STORE_CTX_set_default(X509_STORE_CTX *ctx, const char *name) {
1515
+ const X509_VERIFY_PARAM *param = X509_VERIFY_PARAM_lookup(name);
1516
+ if (!param) {
1517
+ return 0;
1518
+ }
1519
+ return X509_VERIFY_PARAM_inherit(ctx->param, param);
1520
+ }
1521
+
1522
+ X509_VERIFY_PARAM *X509_STORE_CTX_get0_param(X509_STORE_CTX *ctx) {
1523
+ return ctx->param;
1524
+ }
1525
+
1526
+ void X509_STORE_CTX_set0_param(X509_STORE_CTX *ctx, X509_VERIFY_PARAM *param) {
1527
+ if (ctx->param) {
1528
+ X509_VERIFY_PARAM_free(ctx->param);
1529
+ }
1530
+ ctx->param = param;
1531
+ }