visaljs 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1008) hide show
  1. package/README.md +17 -1
  2. package/cli.js +565 -75
  3. package/node/include/js_node.h +28 -5
  4. package/node/include/js_uv.h +36 -0
  5. package/node/prelude/crypto.js +7 -10
  6. package/node/prelude/dns.js +99 -0
  7. package/node/prelude/dns_promises.js +10 -0
  8. package/node/prelude/http.js +1039 -195
  9. package/node/prelude/internal/crypto/asym.js +39 -12
  10. package/node/prelude/internal/crypto/dh_groups.js +12 -0
  11. package/node/prelude/internal/crypto/diffiehellman.js +354 -0
  12. package/node/prelude/internal/crypto/hash.js +1 -1
  13. package/node/prelude/internal/crypto/key_type.js +3 -0
  14. package/node/prelude/internal/crypto/keys.js +39 -9
  15. package/node/prelude/internal/http_agent.js +249 -0
  16. package/node/prelude/internal/net.js +33 -0
  17. package/node/prelude/internal/socketaddress.js +249 -0
  18. package/node/prelude/internal/tls/common.js +306 -0
  19. package/node/prelude/internal/tls/wrap.js +1217 -0
  20. package/node/prelude/internal/tls/x509.js +394 -0
  21. package/node/prelude/net.js +1083 -50
  22. package/node/prelude/stream.js +6 -0
  23. package/node/prelude/tls.js +141 -0
  24. package/node/prelude/util.js +5 -2
  25. package/node/prelude/util_types.js +85 -0
  26. package/node/src/host_http.c +268 -270
  27. package/node/src/host_loop.c +84 -0
  28. package/node/src/host_net.c +495 -0
  29. package/node/src/host_sys.c +16 -0
  30. package/package.json +1 -1
  31. package/runtime/include/js_builtins.h +16 -0
  32. package/runtime/include/js_console.h +2 -0
  33. package/runtime/include/js_core.def +23 -0
  34. package/runtime/include/js_crypto.h +23 -0
  35. package/runtime/include/js_generator.h +2 -3
  36. package/runtime/include/js_promise.h +0 -2
  37. package/runtime/src/async_iter.c +4 -1
  38. package/runtime/src/boringssl_support.cc +34 -0
  39. package/runtime/src/builtin_table.c +8 -0
  40. package/runtime/src/components.c +10 -0
  41. package/runtime/src/console.c +6 -18
  42. package/runtime/src/core_all.c +1 -0
  43. package/runtime/src/crypto_asym.c +450 -241
  44. package/runtime/src/crypto_bn.c +91 -0
  45. package/runtime/src/crypto_cipher.c +153 -75
  46. package/runtime/src/crypto_hash.c +68 -53
  47. package/runtime/src/crypto_internal.h +55 -26
  48. package/runtime/src/crypto_pkey.c +198 -61
  49. package/runtime/src/crypto_subtle.c +42 -16
  50. package/runtime/src/crypto_tls.c +678 -0
  51. package/runtime/src/generator.c +8 -1
  52. package/runtime/src/global.c +2 -4
  53. package/runtime/src/internal.h +0 -1
  54. package/runtime/src/jobs.c +2 -1
  55. package/runtime/src/promise.c +4 -1
  56. package/runtime/src/tls_roots.gen.h +3215 -0
  57. package/runtime/src/util_types.c +52 -0
  58. package/runtime/src/weak.c +2 -1
  59. package/runtime/third_party/boringssl/LICENSE +238 -0
  60. package/runtime/third_party/boringssl/README.md +46 -0
  61. package/runtime/third_party/boringssl/VERSION +1 -0
  62. package/runtime/third_party/boringssl/crypto/aes/aes.cc +44 -0
  63. package/runtime/third_party/boringssl/crypto/armv8_feature_parsing.h +67 -0
  64. package/runtime/third_party/boringssl/crypto/asn1/a_bitstr.cc +297 -0
  65. package/runtime/third_party/boringssl/crypto/asn1/a_bool.cc +50 -0
  66. package/runtime/third_party/boringssl/crypto/asn1/a_d2i_fp.cc +47 -0
  67. package/runtime/third_party/boringssl/crypto/asn1/a_dup.cc +42 -0
  68. package/runtime/third_party/boringssl/crypto/asn1/a_gentm.cc +130 -0
  69. package/runtime/third_party/boringssl/crypto/asn1/a_i2d_fp.cc +44 -0
  70. package/runtime/third_party/boringssl/crypto/asn1/a_int.cc +467 -0
  71. package/runtime/third_party/boringssl/crypto/asn1/a_mbstr.cc +242 -0
  72. package/runtime/third_party/boringssl/crypto/asn1/a_object.cc +191 -0
  73. package/runtime/third_party/boringssl/crypto/asn1/a_octet.cc +32 -0
  74. package/runtime/third_party/boringssl/crypto/asn1/a_strex.cc +411 -0
  75. package/runtime/third_party/boringssl/crypto/asn1/a_strnid.cc +208 -0
  76. package/runtime/third_party/boringssl/crypto/asn1/a_time.cc +248 -0
  77. package/runtime/third_party/boringssl/crypto/asn1/a_type.cc +467 -0
  78. package/runtime/third_party/boringssl/crypto/asn1/a_utctm.cc +128 -0
  79. package/runtime/third_party/boringssl/crypto/asn1/asn1_lib.cc +453 -0
  80. package/runtime/third_party/boringssl/crypto/asn1/asn1_par.cc +61 -0
  81. package/runtime/third_party/boringssl/crypto/asn1/asn_pack.cc +56 -0
  82. package/runtime/third_party/boringssl/crypto/asn1/f_int.cc +63 -0
  83. package/runtime/third_party/boringssl/crypto/asn1/f_string.cc +52 -0
  84. package/runtime/third_party/boringssl/crypto/asn1/internal.h +430 -0
  85. package/runtime/third_party/boringssl/crypto/asn1/posix_time.cc +244 -0
  86. package/runtime/third_party/boringssl/crypto/asn1/tasn_dec.cc +611 -0
  87. package/runtime/third_party/boringssl/crypto/asn1/tasn_enc.cc +348 -0
  88. package/runtime/third_party/boringssl/crypto/asn1/tasn_fre.cc +163 -0
  89. package/runtime/third_party/boringssl/crypto/asn1/tasn_new.cc +274 -0
  90. package/runtime/third_party/boringssl/crypto/asn1/tasn_typ.cc +92 -0
  91. package/runtime/third_party/boringssl/crypto/asn1/tasn_utl.cc +218 -0
  92. package/runtime/third_party/boringssl/crypto/base64/base64.cc +433 -0
  93. package/runtime/third_party/boringssl/crypto/bcm_support.h +62 -0
  94. package/runtime/third_party/boringssl/crypto/bio/bio.cc +715 -0
  95. package/runtime/third_party/boringssl/crypto/bio/bio_mem.cc +260 -0
  96. package/runtime/third_party/boringssl/crypto/bio/connect.cc +463 -0
  97. package/runtime/third_party/boringssl/crypto/bio/errno.cc +52 -0
  98. package/runtime/third_party/boringssl/crypto/bio/fd.cc +193 -0
  99. package/runtime/third_party/boringssl/crypto/bio/file.cc +283 -0
  100. package/runtime/third_party/boringssl/crypto/bio/hexdump.cc +154 -0
  101. package/runtime/third_party/boringssl/crypto/bio/internal.h +128 -0
  102. package/runtime/third_party/boringssl/crypto/bio/pair.cc +426 -0
  103. package/runtime/third_party/boringssl/crypto/bio/printf.cc +59 -0
  104. package/runtime/third_party/boringssl/crypto/bio/socket.cc +210 -0
  105. package/runtime/third_party/boringssl/crypto/bio/socket_helper.cc +179 -0
  106. package/runtime/third_party/boringssl/crypto/blake2/blake2.cc +173 -0
  107. package/runtime/third_party/boringssl/crypto/bn/bn_asn1.cc +57 -0
  108. package/runtime/third_party/boringssl/crypto/bn/convert.cc +409 -0
  109. package/runtime/third_party/boringssl/crypto/bn/div.cc +102 -0
  110. package/runtime/third_party/boringssl/crypto/bn/exponentiation.cc +168 -0
  111. package/runtime/third_party/boringssl/crypto/bn/sqrt.cc +93 -0
  112. package/runtime/third_party/boringssl/crypto/buf/buf.cc +119 -0
  113. package/runtime/third_party/boringssl/crypto/bytestring/asn1_compat.cc +54 -0
  114. package/runtime/third_party/boringssl/crypto/bytestring/ber.cc +268 -0
  115. package/runtime/third_party/boringssl/crypto/bytestring/cbb.cc +787 -0
  116. package/runtime/third_party/boringssl/crypto/bytestring/cbs.cc +977 -0
  117. package/runtime/third_party/boringssl/crypto/bytestring/internal.h +134 -0
  118. package/runtime/third_party/boringssl/crypto/bytestring/unicode.cc +156 -0
  119. package/runtime/third_party/boringssl/crypto/chacha/chacha.cc +226 -0
  120. package/runtime/third_party/boringssl/crypto/chacha/internal.h +103 -0
  121. package/runtime/third_party/boringssl/crypto/cipher/derive_key.cc +106 -0
  122. package/runtime/third_party/boringssl/crypto/cipher/e_aesctrhmac.cc +294 -0
  123. package/runtime/third_party/boringssl/crypto/cipher/e_aeseax.cc +351 -0
  124. package/runtime/third_party/boringssl/crypto/cipher/e_aesgcmsiv.cc +918 -0
  125. package/runtime/third_party/boringssl/crypto/cipher/e_chacha20poly1305.cc +404 -0
  126. package/runtime/third_party/boringssl/crypto/cipher/e_des.cc +214 -0
  127. package/runtime/third_party/boringssl/crypto/cipher/e_null.cc +55 -0
  128. package/runtime/third_party/boringssl/crypto/cipher/e_rc2.cc +432 -0
  129. package/runtime/third_party/boringssl/crypto/cipher/e_rc4.cc +56 -0
  130. package/runtime/third_party/boringssl/crypto/cipher/e_tls.cc +615 -0
  131. package/runtime/third_party/boringssl/crypto/cipher/get_cipher.cc +85 -0
  132. package/runtime/third_party/boringssl/crypto/cipher/internal.h +399 -0
  133. package/runtime/third_party/boringssl/crypto/cipher/tls_cbc.cc +476 -0
  134. package/runtime/third_party/boringssl/crypto/cms/cms.cc +178 -0
  135. package/runtime/third_party/boringssl/crypto/conf/conf.cc +637 -0
  136. package/runtime/third_party/boringssl/crypto/conf/internal.h +54 -0
  137. package/runtime/third_party/boringssl/crypto/cpu_aarch64_apple.cc +76 -0
  138. package/runtime/third_party/boringssl/crypto/cpu_aarch64_fuchsia.cc +58 -0
  139. package/runtime/third_party/boringssl/crypto/cpu_aarch64_linux.cc +66 -0
  140. package/runtime/third_party/boringssl/crypto/cpu_aarch64_openbsd.cc +45 -0
  141. package/runtime/third_party/boringssl/crypto/cpu_aarch64_sysreg.cc +66 -0
  142. package/runtime/third_party/boringssl/crypto/cpu_aarch64_win.cc +52 -0
  143. package/runtime/third_party/boringssl/crypto/cpu_arm_freebsd.cc +55 -0
  144. package/runtime/third_party/boringssl/crypto/cpu_arm_linux.cc +173 -0
  145. package/runtime/third_party/boringssl/crypto/cpu_arm_linux.h +141 -0
  146. package/runtime/third_party/boringssl/crypto/cpu_intel.cc +287 -0
  147. package/runtime/third_party/boringssl/crypto/crypto.cc +152 -0
  148. package/runtime/third_party/boringssl/crypto/curve25519/asm/x25519-asm-arm.S +2124 -0
  149. package/runtime/third_party/boringssl/crypto/curve25519/cpace.cc +227 -0
  150. package/runtime/third_party/boringssl/crypto/curve25519/curve25519.cc +2436 -0
  151. package/runtime/third_party/boringssl/crypto/curve25519/curve25519_64_adx.cc +18 -0
  152. package/runtime/third_party/boringssl/crypto/curve25519/curve25519_tables.h +3264 -0
  153. package/runtime/third_party/boringssl/crypto/curve25519/internal.h +202 -0
  154. package/runtime/third_party/boringssl/crypto/curve25519/spake25519.cc +532 -0
  155. package/runtime/third_party/boringssl/crypto/des/des.cc +837 -0
  156. package/runtime/third_party/boringssl/crypto/des/internal.h +144 -0
  157. package/runtime/third_party/boringssl/crypto/dh/dh_asn1.cc +109 -0
  158. package/runtime/third_party/boringssl/crypto/dh/params.cc +411 -0
  159. package/runtime/third_party/boringssl/crypto/digest/digest_extra.cc +361 -0
  160. package/runtime/third_party/boringssl/crypto/dsa/dsa.cc +922 -0
  161. package/runtime/third_party/boringssl/crypto/dsa/dsa_asn1.cc +306 -0
  162. package/runtime/third_party/boringssl/crypto/dsa/internal.h +56 -0
  163. package/runtime/third_party/boringssl/crypto/ec/ec_asn1.cc +542 -0
  164. package/runtime/third_party/boringssl/crypto/ec/ec_derive.cc +94 -0
  165. package/runtime/third_party/boringssl/crypto/ec/hash_to_curve.cc +773 -0
  166. package/runtime/third_party/boringssl/crypto/ec/internal.h +114 -0
  167. package/runtime/third_party/boringssl/crypto/ecdh/ecdh.cc +75 -0
  168. package/runtime/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.cc +337 -0
  169. package/runtime/third_party/boringssl/crypto/ecdsa/ecdsa_p1363.cc +54 -0
  170. package/runtime/third_party/boringssl/crypto/engine/engine.cc +95 -0
  171. package/runtime/third_party/boringssl/crypto/err/err.cc +820 -0
  172. package/runtime/third_party/boringssl/crypto/err/internal.h +45 -0
  173. package/runtime/third_party/boringssl/crypto/evp/evp.cc +454 -0
  174. package/runtime/third_party/boringssl/crypto/evp/evp_asn1.cc +439 -0
  175. package/runtime/third_party/boringssl/crypto/evp/evp_ctx.cc +541 -0
  176. package/runtime/third_party/boringssl/crypto/evp/evp_kem.cc +101 -0
  177. package/runtime/third_party/boringssl/crypto/evp/internal.h +427 -0
  178. package/runtime/third_party/boringssl/crypto/evp/p_dh.cc +326 -0
  179. package/runtime/third_party/boringssl/crypto/evp/p_dsa.cc +333 -0
  180. package/runtime/third_party/boringssl/crypto/evp/p_ec.cc +736 -0
  181. package/runtime/third_party/boringssl/crypto/evp/p_ed25519.cc +359 -0
  182. package/runtime/third_party/boringssl/crypto/evp/p_hkdf.cc +204 -0
  183. package/runtime/third_party/boringssl/crypto/evp/p_mldsa.cc +549 -0
  184. package/runtime/third_party/boringssl/crypto/evp/p_mlkem.cc +510 -0
  185. package/runtime/third_party/boringssl/crypto/evp/p_rsa.cc +1185 -0
  186. package/runtime/third_party/boringssl/crypto/evp/p_x25519.cc +371 -0
  187. package/runtime/third_party/boringssl/crypto/evp/p_xwing.cc +300 -0
  188. package/runtime/third_party/boringssl/crypto/evp/pbkdf.cc +105 -0
  189. package/runtime/third_party/boringssl/crypto/evp/print.cc +287 -0
  190. package/runtime/third_party/boringssl/crypto/evp/scrypt.cc +218 -0
  191. package/runtime/third_party/boringssl/crypto/evp/sign.cc +95 -0
  192. package/runtime/third_party/boringssl/crypto/ex_data.cc +140 -0
  193. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/aes.cc.inc +208 -0
  194. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/aes_nohw.cc.inc +1279 -0
  195. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/cbc.cc.inc +132 -0
  196. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/cfb.cc.inc +168 -0
  197. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/ctr.cc.inc +102 -0
  198. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/gcm.cc.inc +614 -0
  199. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/gcm_nohw.cc.inc +304 -0
  200. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/internal.h +590 -0
  201. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/key_wrap.cc.inc +211 -0
  202. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/mode_wrappers.cc.inc +97 -0
  203. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/ofb.cc.inc +55 -0
  204. package/runtime/third_party/boringssl/crypto/fipsmodule/bcm.cc +288 -0
  205. package/runtime/third_party/boringssl/crypto/fipsmodule/bcm_interface.h +953 -0
  206. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/add.cc.inc +276 -0
  207. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/asm/x86_64-gcc.cc.inc +573 -0
  208. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/bn.cc.inc +377 -0
  209. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/bytes.cc.inc +230 -0
  210. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/cmp.cc.inc +161 -0
  211. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/ctx.cc.inc +127 -0
  212. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/div.cc.inc +738 -0
  213. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/div_extra.cc.inc +90 -0
  214. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.cc.inc +743 -0
  215. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/gcd.cc.inc +281 -0
  216. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/gcd_extra.cc.inc +327 -0
  217. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/generic.cc.inc +579 -0
  218. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/internal.h +810 -0
  219. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/jacobi.cc.inc +101 -0
  220. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/montgomery.cc.inc +408 -0
  221. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/montgomery_inv.cc.inc +179 -0
  222. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/mul.cc.inc +347 -0
  223. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/prime.cc.inc +931 -0
  224. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/random.cc.inc +261 -0
  225. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.cc.inc +144 -0
  226. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.h +109 -0
  227. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/shift.cc.inc +317 -0
  228. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/sqrt.cc.inc +370 -0
  229. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/aead.cc.inc +619 -0
  230. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/cipher.cc.inc +837 -0
  231. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.cc.inc +1240 -0
  232. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/e_aesccm.cc.inc +440 -0
  233. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/internal.h +461 -0
  234. package/runtime/third_party/boringssl/crypto/fipsmodule/cmac/cmac.cc.inc +293 -0
  235. package/runtime/third_party/boringssl/crypto/fipsmodule/delocate.h +95 -0
  236. package/runtime/third_party/boringssl/crypto/fipsmodule/dh/check.cc.inc +198 -0
  237. package/runtime/third_party/boringssl/crypto/fipsmodule/dh/dh.cc.inc +401 -0
  238. package/runtime/third_party/boringssl/crypto/fipsmodule/dh/internal.h +63 -0
  239. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/digest.cc.inc +221 -0
  240. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/digests.cc.inc +184 -0
  241. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/internal.h +72 -0
  242. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/md32_common.h +166 -0
  243. package/runtime/third_party/boringssl/crypto/fipsmodule/digestsign/digestsign.cc.inc +230 -0
  244. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/builtin_curves.h +277 -0
  245. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/ec.cc.inc +1024 -0
  246. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/ec_key.cc.inc +536 -0
  247. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.cc.inc +379 -0
  248. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/felem.cc.inc +250 -0
  249. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/internal.h +752 -0
  250. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/oct.cc.inc +174 -0
  251. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256-nistz-table.h +9502 -0
  252. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256-nistz.cc.inc +740 -0
  253. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256-nistz.h +207 -0
  254. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256.cc.inc +578 -0
  255. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256_table.h +297 -0
  256. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/scalar.cc.inc +184 -0
  257. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/simple.cc.inc +246 -0
  258. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/simple_mul.cc.inc +274 -0
  259. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/util.cc.inc +258 -0
  260. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/wnaf.cc.inc +224 -0
  261. package/runtime/third_party/boringssl/crypto/fipsmodule/ecdh/ecdh.cc.inc +91 -0
  262. package/runtime/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.cc.inc +288 -0
  263. package/runtime/third_party/boringssl/crypto/fipsmodule/ecdsa/internal.h +57 -0
  264. package/runtime/third_party/boringssl/crypto/fipsmodule/entropy/internal.h +38 -0
  265. package/runtime/third_party/boringssl/crypto/fipsmodule/entropy/jitter.cc.inc +487 -0
  266. package/runtime/third_party/boringssl/crypto/fipsmodule/entropy/sha512.cc.inc +329 -0
  267. package/runtime/third_party/boringssl/crypto/fipsmodule/fips_shared_support.cc +28 -0
  268. package/runtime/third_party/boringssl/crypto/fipsmodule/hkdf/hkdf.cc.inc +114 -0
  269. package/runtime/third_party/boringssl/crypto/fipsmodule/hmac/hmac.cc.inc +218 -0
  270. package/runtime/third_party/boringssl/crypto/fipsmodule/keccak/internal.h +165 -0
  271. package/runtime/third_party/boringssl/crypto/fipsmodule/keccak/keccak.cc.inc +647 -0
  272. package/runtime/third_party/boringssl/crypto/fipsmodule/mldsa/fips_known_values.inc +1345 -0
  273. package/runtime/third_party/boringssl/crypto/fipsmodule/mldsa/mldsa.cc.inc +3323 -0
  274. package/runtime/third_party/boringssl/crypto/fipsmodule/mlkem/fips_known_values.inc +411 -0
  275. package/runtime/third_party/boringssl/crypto/fipsmodule/mlkem/mlkem.cc.inc +1856 -0
  276. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/android_entropy_client.cc.inc +82 -0
  277. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/ctrdrbg.cc.inc +401 -0
  278. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/internal.h +99 -0
  279. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/rand.cc.inc +486 -0
  280. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/internal.h +167 -0
  281. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/padding.cc.inc +371 -0
  282. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/rsa.cc.inc +996 -0
  283. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.cc.inc +1000 -0
  284. package/runtime/third_party/boringssl/crypto/fipsmodule/self_check/fips.cc.inc +129 -0
  285. package/runtime/third_party/boringssl/crypto/fipsmodule/self_check/self_check.cc.inc +1093 -0
  286. package/runtime/third_party/boringssl/crypto/fipsmodule/service_indicator/internal.h +112 -0
  287. package/runtime/third_party/boringssl/crypto/fipsmodule/service_indicator/service_indicator.cc.inc +330 -0
  288. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/internal.h +205 -0
  289. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/sha1.cc.inc +404 -0
  290. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/sha256.cc.inc +315 -0
  291. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/sha512.cc.inc +473 -0
  292. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/address.h +144 -0
  293. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/fips_known_values.inc +674 -0
  294. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/fors.cc.inc +179 -0
  295. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/fors.h +48 -0
  296. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/merkle.cc.inc +164 -0
  297. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/merkle.h +58 -0
  298. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/params.h +178 -0
  299. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +690 -0
  300. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/thash.cc.inc +326 -0
  301. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/thash.h +71 -0
  302. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/wots.cc.inc +172 -0
  303. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/wots.h +40 -0
  304. package/runtime/third_party/boringssl/crypto/fipsmodule/tls/internal.h +33 -0
  305. package/runtime/third_party/boringssl/crypto/fipsmodule/tls/kdf.cc.inc +180 -0
  306. package/runtime/third_party/boringssl/crypto/fuzzer_mode.cc +30 -0
  307. package/runtime/third_party/boringssl/crypto/hpke/hpke.cc +1514 -0
  308. package/runtime/third_party/boringssl/crypto/hrss/asm/poly_rq_mul.S +8489 -0
  309. package/runtime/third_party/boringssl/crypto/hrss/hrss.cc +2189 -0
  310. package/runtime/third_party/boringssl/crypto/hrss/internal.h +64 -0
  311. package/runtime/third_party/boringssl/crypto/internal.h +1767 -0
  312. package/runtime/third_party/boringssl/crypto/lhash/internal.h +222 -0
  313. package/runtime/third_party/boringssl/crypto/lhash/lhash.cc +312 -0
  314. package/runtime/third_party/boringssl/crypto/md4/md4.cc +207 -0
  315. package/runtime/third_party/boringssl/crypto/md5/internal.h +34 -0
  316. package/runtime/third_party/boringssl/crypto/md5/md5.cc +255 -0
  317. package/runtime/third_party/boringssl/crypto/mem.cc +577 -0
  318. package/runtime/third_party/boringssl/crypto/mem_internal.h +706 -0
  319. package/runtime/third_party/boringssl/crypto/mldsa/mldsa.cc +296 -0
  320. package/runtime/third_party/boringssl/crypto/mlkem/mlkem.cc +108 -0
  321. package/runtime/third_party/boringssl/crypto/obj/obj.cc +494 -0
  322. package/runtime/third_party/boringssl/crypto/obj/obj_dat.h +11722 -0
  323. package/runtime/third_party/boringssl/crypto/obj/obj_xref.cc +83 -0
  324. package/runtime/third_party/boringssl/crypto/params_internal.h +30 -0
  325. package/runtime/third_party/boringssl/crypto/pem/internal.h +135 -0
  326. package/runtime/third_party/boringssl/crypto/pem/pem_all.cc +153 -0
  327. package/runtime/third_party/boringssl/crypto/pem/pem_info.cc +250 -0
  328. package/runtime/third_party/boringssl/crypto/pem/pem_lib.cc +707 -0
  329. package/runtime/third_party/boringssl/crypto/pem/pem_oth.cc +45 -0
  330. package/runtime/third_party/boringssl/crypto/pem/pem_pk8.cc +211 -0
  331. package/runtime/third_party/boringssl/crypto/pem/pem_pkey.cc +147 -0
  332. package/runtime/third_party/boringssl/crypto/pem/pem_x509.cc +25 -0
  333. package/runtime/third_party/boringssl/crypto/pem/pem_xaux.cc +25 -0
  334. package/runtime/third_party/boringssl/crypto/pkcs7/internal.h +67 -0
  335. package/runtime/third_party/boringssl/crypto/pkcs7/pkcs7.cc +198 -0
  336. package/runtime/third_party/boringssl/crypto/pkcs7/pkcs7_x509.cc +527 -0
  337. package/runtime/third_party/boringssl/crypto/pkcs8/internal.h +98 -0
  338. package/runtime/third_party/boringssl/crypto/pkcs8/p5_pbev2.cc +286 -0
  339. package/runtime/third_party/boringssl/crypto/pkcs8/pkcs8.cc +473 -0
  340. package/runtime/third_party/boringssl/crypto/pkcs8/pkcs8_x509.cc +1328 -0
  341. package/runtime/third_party/boringssl/crypto/poly1305/internal.h +54 -0
  342. package/runtime/third_party/boringssl/crypto/poly1305/poly1305.cc +315 -0
  343. package/runtime/third_party/boringssl/crypto/poly1305/poly1305_arm.cc +294 -0
  344. package/runtime/third_party/boringssl/crypto/poly1305/poly1305_arm_asm.S +2017 -0
  345. package/runtime/third_party/boringssl/crypto/poly1305/poly1305_vec.cc +853 -0
  346. package/runtime/third_party/boringssl/crypto/pool/internal.h +95 -0
  347. package/runtime/third_party/boringssl/crypto/pool/pool.cc +282 -0
  348. package/runtime/third_party/boringssl/crypto/rand/deterministic.cc +58 -0
  349. package/runtime/third_party/boringssl/crypto/rand/fork_detect.cc +222 -0
  350. package/runtime/third_party/boringssl/crypto/rand/forkunsafe.cc +44 -0
  351. package/runtime/third_party/boringssl/crypto/rand/getentropy.cc +53 -0
  352. package/runtime/third_party/boringssl/crypto/rand/internal.h +67 -0
  353. package/runtime/third_party/boringssl/crypto/rand/ios.cc +35 -0
  354. package/runtime/third_party/boringssl/crypto/rand/rand.cc +79 -0
  355. package/runtime/third_party/boringssl/crypto/rand/trusty.cc +39 -0
  356. package/runtime/third_party/boringssl/crypto/rand/urandom.cc +149 -0
  357. package/runtime/third_party/boringssl/crypto/rand/windows.cc +91 -0
  358. package/runtime/third_party/boringssl/crypto/rc4/rc4.cc +56 -0
  359. package/runtime/third_party/boringssl/crypto/refcount.cc +49 -0
  360. package/runtime/third_party/boringssl/crypto/rsa/internal.h +51 -0
  361. package/runtime/third_party/boringssl/crypto/rsa/rsa_asn1.cc +404 -0
  362. package/runtime/third_party/boringssl/crypto/rsa/rsa_crypt.cc +530 -0
  363. package/runtime/third_party/boringssl/crypto/rsa/rsa_extra.cc +30 -0
  364. package/runtime/third_party/boringssl/crypto/rsa/rsa_print.cc +25 -0
  365. package/runtime/third_party/boringssl/crypto/sha/sha1.cc +55 -0
  366. package/runtime/third_party/boringssl/crypto/sha/sha256.cc +89 -0
  367. package/runtime/third_party/boringssl/crypto/sha/sha512.cc +106 -0
  368. package/runtime/third_party/boringssl/crypto/siphash/siphash.cc +81 -0
  369. package/runtime/third_party/boringssl/crypto/slhdsa/slhdsa.cc +167 -0
  370. package/runtime/third_party/boringssl/crypto/spake2plus/internal.h +204 -0
  371. package/runtime/third_party/boringssl/crypto/spake2plus/spake2plus.cc +501 -0
  372. package/runtime/third_party/boringssl/crypto/stack/stack.cc +462 -0
  373. package/runtime/third_party/boringssl/crypto/thread.cc +68 -0
  374. package/runtime/third_party/boringssl/crypto/thread_none.cc +48 -0
  375. package/runtime/third_party/boringssl/crypto/thread_pthread.cc +138 -0
  376. package/runtime/third_party/boringssl/crypto/thread_win.cc +227 -0
  377. package/runtime/third_party/boringssl/crypto/trust_token/internal.h +405 -0
  378. package/runtime/third_party/boringssl/crypto/trust_token/pmbtoken.cc +1672 -0
  379. package/runtime/third_party/boringssl/crypto/trust_token/trust_token.cc +701 -0
  380. package/runtime/third_party/boringssl/crypto/trust_token/voprf.cc +1266 -0
  381. package/runtime/third_party/boringssl/crypto/x509/a_digest.cc +52 -0
  382. package/runtime/third_party/boringssl/crypto/x509/a_sign.cc +100 -0
  383. package/runtime/third_party/boringssl/crypto/x509/a_verify.cc +77 -0
  384. package/runtime/third_party/boringssl/crypto/x509/algorithm.cc +167 -0
  385. package/runtime/third_party/boringssl/crypto/x509/asn1_gen.cc +540 -0
  386. package/runtime/third_party/boringssl/crypto/x509/by_dir.cc +301 -0
  387. package/runtime/third_party/boringssl/crypto/x509/by_file.cc +226 -0
  388. package/runtime/third_party/boringssl/crypto/x509/i2d_pr.cc +37 -0
  389. package/runtime/third_party/boringssl/crypto/x509/internal.h +697 -0
  390. package/runtime/third_party/boringssl/crypto/x509/name_print.cc +187 -0
  391. package/runtime/third_party/boringssl/crypto/x509/policy.cc +686 -0
  392. package/runtime/third_party/boringssl/crypto/x509/rsa_pss.cc +187 -0
  393. package/runtime/third_party/boringssl/crypto/x509/t_crl.cc +106 -0
  394. package/runtime/third_party/boringssl/crypto/x509/t_req.cc +206 -0
  395. package/runtime/third_party/boringssl/crypto/x509/t_x509.cc +292 -0
  396. package/runtime/third_party/boringssl/crypto/x509/t_x509a.cc +81 -0
  397. package/runtime/third_party/boringssl/crypto/x509/v3_akey.cc +174 -0
  398. package/runtime/third_party/boringssl/crypto/x509/v3_akeya.cc +31 -0
  399. package/runtime/third_party/boringssl/crypto/x509/v3_alt.cc +636 -0
  400. package/runtime/third_party/boringssl/crypto/x509/v3_bcons.cc +96 -0
  401. package/runtime/third_party/boringssl/crypto/x509/v3_bitst.cc +100 -0
  402. package/runtime/third_party/boringssl/crypto/x509/v3_conf.cc +369 -0
  403. package/runtime/third_party/boringssl/crypto/x509/v3_cpols.cc +417 -0
  404. package/runtime/third_party/boringssl/crypto/x509/v3_crld.cc +471 -0
  405. package/runtime/third_party/boringssl/crypto/x509/v3_enum.cc +74 -0
  406. package/runtime/third_party/boringssl/crypto/x509/v3_extku.cc +97 -0
  407. package/runtime/third_party/boringssl/crypto/x509/v3_genn.cc +238 -0
  408. package/runtime/third_party/boringssl/crypto/x509/v3_ia5.cc +83 -0
  409. package/runtime/third_party/boringssl/crypto/x509/v3_info.cc +162 -0
  410. package/runtime/third_party/boringssl/crypto/x509/v3_int.cc +83 -0
  411. package/runtime/third_party/boringssl/crypto/x509/v3_lib.cc +349 -0
  412. package/runtime/third_party/boringssl/crypto/x509/v3_ncons.cc +798 -0
  413. package/runtime/third_party/boringssl/crypto/x509/v3_ocsp.cc +92 -0
  414. package/runtime/third_party/boringssl/crypto/x509/v3_pcons.cc +102 -0
  415. package/runtime/third_party/boringssl/crypto/x509/v3_pmaps.cc +110 -0
  416. package/runtime/third_party/boringssl/crypto/x509/v3_prn.cc +183 -0
  417. package/runtime/third_party/boringssl/crypto/x509/v3_purp.cc +580 -0
  418. package/runtime/third_party/boringssl/crypto/x509/v3_skey.cc +128 -0
  419. package/runtime/third_party/boringssl/crypto/x509/v3_utl.cc +1311 -0
  420. package/runtime/third_party/boringssl/crypto/x509/x509.cc +47 -0
  421. package/runtime/third_party/boringssl/crypto/x509/x509_att.cc +188 -0
  422. package/runtime/third_party/boringssl/crypto/x509/x509_cmp.cc +243 -0
  423. package/runtime/third_party/boringssl/crypto/x509/x509_d2.cc +66 -0
  424. package/runtime/third_party/boringssl/crypto/x509/x509_def.cc +42 -0
  425. package/runtime/third_party/boringssl/crypto/x509/x509_ext.cc +161 -0
  426. package/runtime/third_party/boringssl/crypto/x509/x509_lu.cc +570 -0
  427. package/runtime/third_party/boringssl/crypto/x509/x509_mtc.cc +598 -0
  428. package/runtime/third_party/boringssl/crypto/x509/x509_obj.cc +169 -0
  429. package/runtime/third_party/boringssl/crypto/x509/x509_req.cc +248 -0
  430. package/runtime/third_party/boringssl/crypto/x509/x509_set.cc +166 -0
  431. package/runtime/third_party/boringssl/crypto/x509/x509_trs.cc +123 -0
  432. package/runtime/third_party/boringssl/crypto/x509/x509_txt.cc +147 -0
  433. package/runtime/third_party/boringssl/crypto/x509/x509_v3.cc +249 -0
  434. package/runtime/third_party/boringssl/crypto/x509/x509_vfy.cc +1531 -0
  435. package/runtime/third_party/boringssl/crypto/x509/x509_vpm.cc +449 -0
  436. package/runtime/third_party/boringssl/crypto/x509/x509cset.cc +222 -0
  437. package/runtime/third_party/boringssl/crypto/x509/x509name.cc +377 -0
  438. package/runtime/third_party/boringssl/crypto/x509/x509rset.cc +55 -0
  439. package/runtime/third_party/boringssl/crypto/x509/x509spki.cc +91 -0
  440. package/runtime/third_party/boringssl/crypto/x509/x_algor.cc +223 -0
  441. package/runtime/third_party/boringssl/crypto/x509/x_all.cc +352 -0
  442. package/runtime/third_party/boringssl/crypto/x509/x_attrib.cc +61 -0
  443. package/runtime/third_party/boringssl/crypto/x509/x_crl.cc +325 -0
  444. package/runtime/third_party/boringssl/crypto/x509/x_exten.cc +42 -0
  445. package/runtime/third_party/boringssl/crypto/x509/x_name.cc +407 -0
  446. package/runtime/third_party/boringssl/crypto/x509/x_pubkey.cc +199 -0
  447. package/runtime/third_party/boringssl/crypto/x509/x_req.cc +80 -0
  448. package/runtime/third_party/boringssl/crypto/x509/x_sig.cc +51 -0
  449. package/runtime/third_party/boringssl/crypto/x509/x_spki.cc +44 -0
  450. package/runtime/third_party/boringssl/crypto/x509/x_x509.cc +495 -0
  451. package/runtime/third_party/boringssl/crypto/x509/x_x509a.cc +169 -0
  452. package/runtime/third_party/boringssl/crypto/xwing/xwing.cc +257 -0
  453. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx2-x86_64-apple.S +1326 -0
  454. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx2-x86_64-linux.S +1327 -0
  455. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx512-x86_64-apple.S +1252 -0
  456. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx512-x86_64-linux.S +1253 -0
  457. package/runtime/third_party/boringssl/gen/bcm/aesni-gcm-x86_64-apple.S +873 -0
  458. package/runtime/third_party/boringssl/gen/bcm/aesni-gcm-x86_64-linux.S +885 -0
  459. package/runtime/third_party/boringssl/gen/bcm/aesni-x86-apple.S +2490 -0
  460. package/runtime/third_party/boringssl/gen/bcm/aesni-x86-linux.S +2530 -0
  461. package/runtime/third_party/boringssl/gen/bcm/aesni-x86_64-apple.S +2413 -0
  462. package/runtime/third_party/boringssl/gen/bcm/aesni-x86_64-linux.S +2397 -0
  463. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv7-linux.S +784 -0
  464. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv8-apple.S +792 -0
  465. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv8-linux.S +786 -0
  466. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv8-win.S +798 -0
  467. package/runtime/third_party/boringssl/gen/bcm/aesv8-gcm-armv8-apple.S +2912 -0
  468. package/runtime/third_party/boringssl/gen/bcm/aesv8-gcm-armv8-linux.S +2907 -0
  469. package/runtime/third_party/boringssl/gen/bcm/aesv8-gcm-armv8-win.S +2915 -0
  470. package/runtime/third_party/boringssl/gen/bcm/armv4-mont-linux.S +932 -0
  471. package/runtime/third_party/boringssl/gen/bcm/armv8-mont-apple.S +1440 -0
  472. package/runtime/third_party/boringssl/gen/bcm/armv8-mont-linux.S +1440 -0
  473. package/runtime/third_party/boringssl/gen/bcm/armv8-mont-win.S +1446 -0
  474. package/runtime/third_party/boringssl/gen/bcm/bn-586-apple.S +530 -0
  475. package/runtime/third_party/boringssl/gen/bcm/bn-586-linux.S +540 -0
  476. package/runtime/third_party/boringssl/gen/bcm/bn-armv8-apple.S +88 -0
  477. package/runtime/third_party/boringssl/gen/bcm/bn-armv8-linux.S +87 -0
  478. package/runtime/third_party/boringssl/gen/bcm/bn-armv8-win.S +87 -0
  479. package/runtime/third_party/boringssl/gen/bcm/bsaes-armv7-linux.S +1520 -0
  480. package/runtime/third_party/boringssl/gen/bcm/co-586-apple.S +1256 -0
  481. package/runtime/third_party/boringssl/gen/bcm/co-586-linux.S +1264 -0
  482. package/runtime/third_party/boringssl/gen/bcm/ghash-armv4-linux.S +242 -0
  483. package/runtime/third_party/boringssl/gen/bcm/ghash-neon-armv8-apple.S +337 -0
  484. package/runtime/third_party/boringssl/gen/bcm/ghash-neon-armv8-linux.S +335 -0
  485. package/runtime/third_party/boringssl/gen/bcm/ghash-neon-armv8-win.S +341 -0
  486. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86-apple.S +288 -0
  487. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86-linux.S +292 -0
  488. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86_64-apple.S +426 -0
  489. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86_64-linux.S +425 -0
  490. package/runtime/third_party/boringssl/gen/bcm/ghash-x86-apple.S +322 -0
  491. package/runtime/third_party/boringssl/gen/bcm/ghash-x86-linux.S +328 -0
  492. package/runtime/third_party/boringssl/gen/bcm/ghash-x86_64-apple.S +1134 -0
  493. package/runtime/third_party/boringssl/gen/bcm/ghash-x86_64-linux.S +1129 -0
  494. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv7-linux.S +244 -0
  495. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv8-apple.S +567 -0
  496. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv8-linux.S +563 -0
  497. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv8-win.S +571 -0
  498. package/runtime/third_party/boringssl/gen/bcm/p256-armv8-asm-apple.S +1744 -0
  499. package/runtime/third_party/boringssl/gen/bcm/p256-armv8-asm-linux.S +1725 -0
  500. package/runtime/third_party/boringssl/gen/bcm/p256-armv8-asm-win.S +1765 -0
  501. package/runtime/third_party/boringssl/gen/bcm/p256-x86_64-asm-apple.S +4544 -0
  502. package/runtime/third_party/boringssl/gen/bcm/p256-x86_64-asm-linux.S +4600 -0
  503. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-armv8-asm-apple.S +310 -0
  504. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-armv8-asm-linux.S +310 -0
  505. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-armv8-asm-win.S +310 -0
  506. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-x86_64-asm-apple.S +321 -0
  507. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-x86_64-asm-linux.S +335 -0
  508. package/runtime/third_party/boringssl/gen/bcm/rdrand-x86_64-apple.S +58 -0
  509. package/runtime/third_party/boringssl/gen/bcm/rdrand-x86_64-linux.S +57 -0
  510. package/runtime/third_party/boringssl/gen/bcm/rsaz-avx2-apple.S +1756 -0
  511. package/runtime/third_party/boringssl/gen/bcm/rsaz-avx2-linux.S +1751 -0
  512. package/runtime/third_party/boringssl/gen/bcm/sha1-586-apple.S +3782 -0
  513. package/runtime/third_party/boringssl/gen/bcm/sha1-586-linux.S +3788 -0
  514. package/runtime/third_party/boringssl/gen/bcm/sha1-armv4-large-linux.S +1479 -0
  515. package/runtime/third_party/boringssl/gen/bcm/sha1-armv8-apple.S +1219 -0
  516. package/runtime/third_party/boringssl/gen/bcm/sha1-armv8-linux.S +1218 -0
  517. package/runtime/third_party/boringssl/gen/bcm/sha1-armv8-win.S +1222 -0
  518. package/runtime/third_party/boringssl/gen/bcm/sha1-x86_64-apple.S +5454 -0
  519. package/runtime/third_party/boringssl/gen/bcm/sha1-x86_64-linux.S +5450 -0
  520. package/runtime/third_party/boringssl/gen/bcm/sha256-586-apple.S +5593 -0
  521. package/runtime/third_party/boringssl/gen/bcm/sha256-586-linux.S +5599 -0
  522. package/runtime/third_party/boringssl/gen/bcm/sha256-armv4-linux.S +2840 -0
  523. package/runtime/third_party/boringssl/gen/bcm/sha256-armv8-apple.S +1195 -0
  524. package/runtime/third_party/boringssl/gen/bcm/sha256-armv8-linux.S +1194 -0
  525. package/runtime/third_party/boringssl/gen/bcm/sha256-armv8-win.S +1198 -0
  526. package/runtime/third_party/boringssl/gen/bcm/sha256-x86_64-apple.S +4173 -0
  527. package/runtime/third_party/boringssl/gen/bcm/sha256-x86_64-linux.S +4170 -0
  528. package/runtime/third_party/boringssl/gen/bcm/sha512-586-apple.S +2406 -0
  529. package/runtime/third_party/boringssl/gen/bcm/sha512-586-linux.S +2410 -0
  530. package/runtime/third_party/boringssl/gen/bcm/sha512-armv4-linux.S +1857 -0
  531. package/runtime/third_party/boringssl/gen/bcm/sha512-armv8-apple.S +1598 -0
  532. package/runtime/third_party/boringssl/gen/bcm/sha512-armv8-linux.S +1597 -0
  533. package/runtime/third_party/boringssl/gen/bcm/sha512-armv8-win.S +1601 -0
  534. package/runtime/third_party/boringssl/gen/bcm/sha512-x86_64-apple.S +2979 -0
  535. package/runtime/third_party/boringssl/gen/bcm/sha512-x86_64-linux.S +2978 -0
  536. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv7-linux.S +1225 -0
  537. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv8-apple.S +1238 -0
  538. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv8-linux.S +1220 -0
  539. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv8-win.S +1256 -0
  540. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86-apple.S +680 -0
  541. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86-linux.S +706 -0
  542. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86_64-apple.S +1146 -0
  543. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86_64-linux.S +1133 -0
  544. package/runtime/third_party/boringssl/gen/bcm/x86-mont-apple.S +216 -0
  545. package/runtime/third_party/boringssl/gen/bcm/x86-mont-linux.S +218 -0
  546. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont-apple.S +1238 -0
  547. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont-linux.S +1237 -0
  548. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont5-apple.S +3644 -0
  549. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont5-linux.S +3628 -0
  550. package/runtime/third_party/boringssl/gen/boringssl_prefix_symbols_internal_x86_64_win_asm.inc +325 -0
  551. package/runtime/third_party/boringssl/gen/boringssl_prefix_symbols_internal_x86_win_asm.inc +325 -0
  552. package/runtime/third_party/boringssl/gen/crypto/aes128gcmsiv-x86_64-apple.S +3113 -0
  553. package/runtime/third_party/boringssl/gen/crypto/aes128gcmsiv-x86_64-linux.S +3091 -0
  554. package/runtime/third_party/boringssl/gen/crypto/chacha-armv4-linux.S +1450 -0
  555. package/runtime/third_party/boringssl/gen/crypto/chacha-armv8-apple.S +1969 -0
  556. package/runtime/third_party/boringssl/gen/crypto/chacha-armv8-linux.S +1967 -0
  557. package/runtime/third_party/boringssl/gen/crypto/chacha-armv8-win.S +1973 -0
  558. package/runtime/third_party/boringssl/gen/crypto/chacha-x86-apple.S +957 -0
  559. package/runtime/third_party/boringssl/gen/crypto/chacha-x86-linux.S +961 -0
  560. package/runtime/third_party/boringssl/gen/crypto/chacha-x86_64-apple.S +1608 -0
  561. package/runtime/third_party/boringssl/gen/crypto/chacha-x86_64-linux.S +1611 -0
  562. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_armv8-apple.S +3010 -0
  563. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_armv8-linux.S +3008 -0
  564. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_armv8-win.S +3014 -0
  565. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_x86_64-apple.S +8903 -0
  566. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_x86_64-linux.S +8940 -0
  567. package/runtime/third_party/boringssl/gen/crypto/err_data.cc +1578 -0
  568. package/runtime/third_party/boringssl/gen/crypto/md5-586-apple.S +684 -0
  569. package/runtime/third_party/boringssl/gen/crypto/md5-586-linux.S +686 -0
  570. package/runtime/third_party/boringssl/gen/crypto/md5-x86_64-apple.S +690 -0
  571. package/runtime/third_party/boringssl/gen/crypto/md5-x86_64-linux.S +695 -0
  572. package/runtime/third_party/boringssl/include/openssl/aead.h +650 -0
  573. package/runtime/third_party/boringssl/include/openssl/aes.h +173 -0
  574. package/runtime/third_party/boringssl/include/openssl/arm_arch.h +24 -0
  575. package/runtime/third_party/boringssl/include/openssl/asm_base.h +219 -0
  576. package/runtime/third_party/boringssl/include/openssl/asn1.h +2002 -0
  577. package/runtime/third_party/boringssl/include/openssl/asn1_mac.h +18 -0
  578. package/runtime/third_party/boringssl/include/openssl/asn1t.h +584 -0
  579. package/runtime/third_party/boringssl/include/openssl/base.h +548 -0
  580. package/runtime/third_party/boringssl/include/openssl/base64.h +156 -0
  581. package/runtime/third_party/boringssl/include/openssl/bio.h +1061 -0
  582. package/runtime/third_party/boringssl/include/openssl/blake2.h +63 -0
  583. package/runtime/third_party/boringssl/include/openssl/blowfish.h +58 -0
  584. package/runtime/third_party/boringssl/include/openssl/bn.h +986 -0
  585. package/runtime/third_party/boringssl/include/openssl/buf.h +95 -0
  586. package/runtime/third_party/boringssl/include/openssl/buffer.h +18 -0
  587. package/runtime/third_party/boringssl/include/openssl/bytestring.h +798 -0
  588. package/runtime/third_party/boringssl/include/openssl/cast.h +91 -0
  589. package/runtime/third_party/boringssl/include/openssl/chacha.h +47 -0
  590. package/runtime/third_party/boringssl/include/openssl/cipher.h +819 -0
  591. package/runtime/third_party/boringssl/include/openssl/cmac.h +91 -0
  592. package/runtime/third_party/boringssl/include/openssl/cms.h +147 -0
  593. package/runtime/third_party/boringssl/include/openssl/conf.h +136 -0
  594. package/runtime/third_party/boringssl/include/openssl/configuration.h +18 -0
  595. package/runtime/third_party/boringssl/include/openssl/cpu.h +18 -0
  596. package/runtime/third_party/boringssl/include/openssl/crypto.h +235 -0
  597. package/runtime/third_party/boringssl/include/openssl/ctrdrbg.h +116 -0
  598. package/runtime/third_party/boringssl/include/openssl/curve25519.h +309 -0
  599. package/runtime/third_party/boringssl/include/openssl/des.h +134 -0
  600. package/runtime/third_party/boringssl/include/openssl/dh.h +336 -0
  601. package/runtime/third_party/boringssl/include/openssl/digest.h +399 -0
  602. package/runtime/third_party/boringssl/include/openssl/dsa.h +392 -0
  603. package/runtime/third_party/boringssl/include/openssl/dtls1.h +16 -0
  604. package/runtime/third_party/boringssl/include/openssl/e_os2.h +18 -0
  605. package/runtime/third_party/boringssl/include/openssl/ec.h +530 -0
  606. package/runtime/third_party/boringssl/include/openssl/ec_key.h +358 -0
  607. package/runtime/third_party/boringssl/include/openssl/ecdh.h +67 -0
  608. package/runtime/third_party/boringssl/include/openssl/ecdsa.h +242 -0
  609. package/runtime/third_party/boringssl/include/openssl/engine.h +109 -0
  610. package/runtime/third_party/boringssl/include/openssl/err.h +416 -0
  611. package/runtime/third_party/boringssl/include/openssl/evp.h +1645 -0
  612. package/runtime/third_party/boringssl/include/openssl/evp_errors.h +66 -0
  613. package/runtime/third_party/boringssl/include/openssl/ex_data.h +117 -0
  614. package/runtime/third_party/boringssl/include/openssl/hkdf.h +68 -0
  615. package/runtime/third_party/boringssl/include/openssl/hmac.h +151 -0
  616. package/runtime/third_party/boringssl/include/openssl/hpke.h +456 -0
  617. package/runtime/third_party/boringssl/include/openssl/hrss.h +108 -0
  618. package/runtime/third_party/boringssl/include/openssl/is_boringssl.h +16 -0
  619. package/runtime/third_party/boringssl/include/openssl/kdf.h +92 -0
  620. package/runtime/third_party/boringssl/include/openssl/lhash.h +18 -0
  621. package/runtime/third_party/boringssl/include/openssl/md4.h +73 -0
  622. package/runtime/third_party/boringssl/include/openssl/md5.h +67 -0
  623. package/runtime/third_party/boringssl/include/openssl/mem.h +215 -0
  624. package/runtime/third_party/boringssl/include/openssl/mldsa.h +486 -0
  625. package/runtime/third_party/boringssl/include/openssl/mlkem.h +222 -0
  626. package/runtime/third_party/boringssl/include/openssl/nid.h +5561 -0
  627. package/runtime/third_party/boringssl/include/openssl/obj.h +225 -0
  628. package/runtime/third_party/boringssl/include/openssl/obj_mac.h +18 -0
  629. package/runtime/third_party/boringssl/include/openssl/objects.h +18 -0
  630. package/runtime/third_party/boringssl/include/openssl/opensslconf.h +108 -0
  631. package/runtime/third_party/boringssl/include/openssl/opensslv.h +18 -0
  632. package/runtime/third_party/boringssl/include/openssl/ossl_typ.h +18 -0
  633. package/runtime/third_party/boringssl/include/openssl/params.h +42 -0
  634. package/runtime/third_party/boringssl/include/openssl/pem.h +769 -0
  635. package/runtime/third_party/boringssl/include/openssl/pkcs12.h +18 -0
  636. package/runtime/third_party/boringssl/include/openssl/pkcs7.h +239 -0
  637. package/runtime/third_party/boringssl/include/openssl/pkcs8.h +267 -0
  638. package/runtime/third_party/boringssl/include/openssl/poly1305.h +52 -0
  639. package/runtime/third_party/boringssl/include/openssl/pool.h +137 -0
  640. package/runtime/third_party/boringssl/include/openssl/posix_time.h +51 -0
  641. package/runtime/third_party/boringssl/include/openssl/prefix_symbols.h +8000 -0
  642. package/runtime/third_party/boringssl/include/openssl/prefix_symbols_internal_S.h +633 -0
  643. package/runtime/third_party/boringssl/include/openssl/prefix_symbols_internal_c.h +329 -0
  644. package/runtime/third_party/boringssl/include/openssl/rand.h +138 -0
  645. package/runtime/third_party/boringssl/include/openssl/rc4.h +54 -0
  646. package/runtime/third_party/boringssl/include/openssl/ripemd.h +71 -0
  647. package/runtime/third_party/boringssl/include/openssl/rsa.h +893 -0
  648. package/runtime/third_party/boringssl/include/openssl/safestack.h +16 -0
  649. package/runtime/third_party/boringssl/include/openssl/service_indicator.h +19 -0
  650. package/runtime/third_party/boringssl/include/openssl/sha.h +108 -0
  651. package/runtime/third_party/boringssl/include/openssl/sha2.h +201 -0
  652. package/runtime/third_party/boringssl/include/openssl/siphash.h +37 -0
  653. package/runtime/third_party/boringssl/include/openssl/slhdsa.h +250 -0
  654. package/runtime/third_party/boringssl/include/openssl/span.h +376 -0
  655. package/runtime/third_party/boringssl/include/openssl/srtp.h +18 -0
  656. package/runtime/third_party/boringssl/include/openssl/ssl.h +7211 -0
  657. package/runtime/third_party/boringssl/include/openssl/ssl3.h +171 -0
  658. package/runtime/third_party/boringssl/include/openssl/stack.h +688 -0
  659. package/runtime/third_party/boringssl/include/openssl/target.h +246 -0
  660. package/runtime/third_party/boringssl/include/openssl/thread.h +114 -0
  661. package/runtime/third_party/boringssl/include/openssl/time.h +22 -0
  662. package/runtime/third_party/boringssl/include/openssl/tls1.h +263 -0
  663. package/runtime/third_party/boringssl/include/openssl/tls_prf.h +47 -0
  664. package/runtime/third_party/boringssl/include/openssl/trust_token.h +349 -0
  665. package/runtime/third_party/boringssl/include/openssl/type_check.h +37 -0
  666. package/runtime/third_party/boringssl/include/openssl/types.h +18 -0
  667. package/runtime/third_party/boringssl/include/openssl/x509.h +5404 -0
  668. package/runtime/third_party/boringssl/include/openssl/x509_vfy.h +18 -0
  669. package/runtime/third_party/boringssl/include/openssl/x509v3.h +63 -0
  670. package/runtime/third_party/boringssl/include/openssl/x509v3_errors.h +84 -0
  671. package/runtime/third_party/boringssl/include/openssl/xwing.h +115 -0
  672. package/runtime/third_party/boringssl/sources.json +696 -0
  673. package/runtime/third_party/boringssl/ssl/bio_ssl.cc +196 -0
  674. package/runtime/third_party/boringssl/ssl/d1_both.cc +1137 -0
  675. package/runtime/third_party/boringssl/ssl/d1_lib.cc +245 -0
  676. package/runtime/third_party/boringssl/ssl/d1_pkt.cc +322 -0
  677. package/runtime/third_party/boringssl/ssl/d1_srtp.cc +128 -0
  678. package/runtime/third_party/boringssl/ssl/dtls_method.cc +216 -0
  679. package/runtime/third_party/boringssl/ssl/dtls_record.cc +586 -0
  680. package/runtime/third_party/boringssl/ssl/encrypted_client_hello.cc +1110 -0
  681. package/runtime/third_party/boringssl/ssl/extensions.cc +5368 -0
  682. package/runtime/third_party/boringssl/ssl/handoff.cc +625 -0
  683. package/runtime/third_party/boringssl/ssl/handshake.cc +694 -0
  684. package/runtime/third_party/boringssl/ssl/handshake_client.cc +1958 -0
  685. package/runtime/third_party/boringssl/ssl/handshake_server.cc +1875 -0
  686. package/runtime/third_party/boringssl/ssl/internal.h +4506 -0
  687. package/runtime/third_party/boringssl/ssl/s3_both.cc +555 -0
  688. package/runtime/third_party/boringssl/ssl/s3_lib.cc +88 -0
  689. package/runtime/third_party/boringssl/ssl/s3_pkt.cc +396 -0
  690. package/runtime/third_party/boringssl/ssl/ssl_aead_ctx.cc +416 -0
  691. package/runtime/third_party/boringssl/ssl/ssl_asn1.cc +851 -0
  692. package/runtime/third_party/boringssl/ssl/ssl_buffer.cc +304 -0
  693. package/runtime/third_party/boringssl/ssl/ssl_cert.cc +723 -0
  694. package/runtime/third_party/boringssl/ssl/ssl_cipher.cc +1762 -0
  695. package/runtime/third_party/boringssl/ssl/ssl_credential.cc +913 -0
  696. package/runtime/third_party/boringssl/ssl/ssl_file.cc +375 -0
  697. package/runtime/third_party/boringssl/ssl/ssl_key_share.cc +445 -0
  698. package/runtime/third_party/boringssl/ssl/ssl_lib.cc +4132 -0
  699. package/runtime/third_party/boringssl/ssl/ssl_privkey.cc +973 -0
  700. package/runtime/third_party/boringssl/ssl/ssl_session.cc +1273 -0
  701. package/runtime/third_party/boringssl/ssl/ssl_stat.cc +162 -0
  702. package/runtime/third_party/boringssl/ssl/ssl_transcript.cc +224 -0
  703. package/runtime/third_party/boringssl/ssl/ssl_versions.cc +436 -0
  704. package/runtime/third_party/boringssl/ssl/ssl_x509.cc +1229 -0
  705. package/runtime/third_party/boringssl/ssl/t1_enc.cc +266 -0
  706. package/runtime/third_party/boringssl/ssl/tls13_both.cc +764 -0
  707. package/runtime/third_party/boringssl/ssl/tls13_client.cc +1325 -0
  708. package/runtime/third_party/boringssl/ssl/tls13_enc.cc +746 -0
  709. package/runtime/third_party/boringssl/ssl/tls13_server.cc +1623 -0
  710. package/runtime/third_party/boringssl/ssl/tls_method.cc +266 -0
  711. package/runtime/third_party/boringssl/ssl/tls_record.cc +524 -0
  712. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_curve25519_adx_mul.S +178 -0
  713. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_curve25519_adx_square.S +146 -0
  714. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_p256_adx_mul.S +177 -0
  715. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_p256_adx_sqr.S +166 -0
  716. package/runtime/third_party/boringssl/third_party/fiat/bedrock_unverified_bareminimum.c.inc +47 -0
  717. package/runtime/third_party/boringssl/third_party/fiat/bedrock_unverified_platform.c.inc +137 -0
  718. package/runtime/third_party/boringssl/third_party/fiat/curve25519_32.h +1571 -0
  719. package/runtime/third_party/boringssl/third_party/fiat/curve25519_64.h +978 -0
  720. package/runtime/third_party/boringssl/third_party/fiat/curve25519_64_adx.h +700 -0
  721. package/runtime/third_party/boringssl/third_party/fiat/curve25519_64_msvc.h +1281 -0
  722. package/runtime/third_party/boringssl/third_party/fiat/p256_32.h +4760 -0
  723. package/runtime/third_party/boringssl/third_party/fiat/p256_64.h +1984 -0
  724. package/runtime/third_party/boringssl/third_party/fiat/p256_64_msvc.h +1939 -0
  725. package/runtime/third_party/boringssl/third_party/fiat/p256_field.c.inc +26 -0
  726. package/runtime/third_party/boringssl/third_party/fiat/p256_field_32.br.c.inc +71 -0
  727. package/runtime/third_party/boringssl/third_party/fiat/p256_field_64.br.c.inc +84 -0
  728. package/runtime/third_party/boringssl/third_party/fiat/p256_point.br.c.inc +112 -0
  729. package/runtime/third_party/v8-ieee754/README.md +2 -1
  730. package/runtime/third_party/v8-ieee754/convert.py +4 -0
  731. package/runtime/third_party/v8-ieee754/ieee754.c +1 -1
  732. package/runtime/third_party/bearssl/LICENSE.txt +0 -21
  733. package/runtime/third_party/bearssl/README.txt +0 -136
  734. package/runtime/third_party/bearssl/VERSION +0 -1
  735. package/runtime/third_party/bearssl/inc/bearssl.h +0 -183
  736. package/runtime/third_party/bearssl/inc/bearssl_aead.h +0 -1059
  737. package/runtime/third_party/bearssl/inc/bearssl_block.h +0 -2618
  738. package/runtime/third_party/bearssl/inc/bearssl_ec.h +0 -967
  739. package/runtime/third_party/bearssl/inc/bearssl_hash.h +0 -1346
  740. package/runtime/third_party/bearssl/inc/bearssl_hmac.h +0 -241
  741. package/runtime/third_party/bearssl/inc/bearssl_kdf.h +0 -284
  742. package/runtime/third_party/bearssl/inc/bearssl_pem.h +0 -294
  743. package/runtime/third_party/bearssl/inc/bearssl_prf.h +0 -150
  744. package/runtime/third_party/bearssl/inc/bearssl_rand.h +0 -397
  745. package/runtime/third_party/bearssl/inc/bearssl_rsa.h +0 -1655
  746. package/runtime/third_party/bearssl/inc/bearssl_ssl.h +0 -4296
  747. package/runtime/third_party/bearssl/inc/bearssl_x509.h +0 -1474
  748. package/runtime/third_party/bearssl/src/aead/ccm.c +0 -346
  749. package/runtime/third_party/bearssl/src/aead/eax.c +0 -525
  750. package/runtime/third_party/bearssl/src/aead/gcm.c +0 -318
  751. package/runtime/third_party/bearssl/src/codec/ccopy.c +0 -44
  752. package/runtime/third_party/bearssl/src/codec/dec16be.c +0 -38
  753. package/runtime/third_party/bearssl/src/codec/dec16le.c +0 -38
  754. package/runtime/third_party/bearssl/src/codec/dec32be.c +0 -38
  755. package/runtime/third_party/bearssl/src/codec/dec32le.c +0 -38
  756. package/runtime/third_party/bearssl/src/codec/dec64be.c +0 -38
  757. package/runtime/third_party/bearssl/src/codec/dec64le.c +0 -38
  758. package/runtime/third_party/bearssl/src/codec/enc16be.c +0 -38
  759. package/runtime/third_party/bearssl/src/codec/enc16le.c +0 -38
  760. package/runtime/third_party/bearssl/src/codec/enc32be.c +0 -38
  761. package/runtime/third_party/bearssl/src/codec/enc32le.c +0 -38
  762. package/runtime/third_party/bearssl/src/codec/enc64be.c +0 -38
  763. package/runtime/third_party/bearssl/src/codec/enc64le.c +0 -38
  764. package/runtime/third_party/bearssl/src/codec/pemdec.c +0 -526
  765. package/runtime/third_party/bearssl/src/codec/pemdec.t0 +0 -314
  766. package/runtime/third_party/bearssl/src/codec/pemenc.c +0 -173
  767. package/runtime/third_party/bearssl/src/config.h +0 -247
  768. package/runtime/third_party/bearssl/src/ec/ec_all_m15.c +0 -121
  769. package/runtime/third_party/bearssl/src/ec/ec_all_m31.c +0 -171
  770. package/runtime/third_party/bearssl/src/ec/ec_c25519_i15.c +0 -398
  771. package/runtime/third_party/bearssl/src/ec/ec_c25519_i31.c +0 -390
  772. package/runtime/third_party/bearssl/src/ec/ec_c25519_m15.c +0 -1478
  773. package/runtime/third_party/bearssl/src/ec/ec_c25519_m31.c +0 -800
  774. package/runtime/third_party/bearssl/src/ec/ec_c25519_m62.c +0 -605
  775. package/runtime/third_party/bearssl/src/ec/ec_c25519_m64.c +0 -831
  776. package/runtime/third_party/bearssl/src/ec/ec_curve25519.c +0 -46
  777. package/runtime/third_party/bearssl/src/ec/ec_default.c +0 -36
  778. package/runtime/third_party/bearssl/src/ec/ec_keygen.c +0 -86
  779. package/runtime/third_party/bearssl/src/ec/ec_p256_m15.c +0 -2124
  780. package/runtime/third_party/bearssl/src/ec/ec_p256_m31.c +0 -1469
  781. package/runtime/third_party/bearssl/src/ec/ec_p256_m62.c +0 -1765
  782. package/runtime/third_party/bearssl/src/ec/ec_p256_m64.c +0 -1781
  783. package/runtime/third_party/bearssl/src/ec/ec_prime_i15.c +0 -824
  784. package/runtime/third_party/bearssl/src/ec/ec_prime_i31.c +0 -826
  785. package/runtime/third_party/bearssl/src/ec/ec_pubkey.c +0 -85
  786. package/runtime/third_party/bearssl/src/ec/ec_secp256r1.c +0 -51
  787. package/runtime/third_party/bearssl/src/ec/ec_secp384r1.c +0 -57
  788. package/runtime/third_party/bearssl/src/ec/ec_secp521r1.c +0 -64
  789. package/runtime/third_party/bearssl/src/ec/ecdsa_atr.c +0 -134
  790. package/runtime/third_party/bearssl/src/ec/ecdsa_default_sign_asn1.c +0 -36
  791. package/runtime/third_party/bearssl/src/ec/ecdsa_default_sign_raw.c +0 -36
  792. package/runtime/third_party/bearssl/src/ec/ecdsa_default_vrfy_asn1.c +0 -36
  793. package/runtime/third_party/bearssl/src/ec/ecdsa_default_vrfy_raw.c +0 -36
  794. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_bits.c +0 -47
  795. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_sign_asn1.c +0 -45
  796. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_sign_raw.c +0 -174
  797. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_vrfy_asn1.c +0 -48
  798. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_vrfy_raw.c +0 -166
  799. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_bits.c +0 -47
  800. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_sign_asn1.c +0 -45
  801. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_sign_raw.c +0 -173
  802. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_vrfy_asn1.c +0 -48
  803. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_vrfy_raw.c +0 -165
  804. package/runtime/third_party/bearssl/src/ec/ecdsa_rta.c +0 -121
  805. package/runtime/third_party/bearssl/src/hash/dig_oid.c +0 -84
  806. package/runtime/third_party/bearssl/src/hash/dig_size.c +0 -50
  807. package/runtime/third_party/bearssl/src/hash/ghash_ctmul.c +0 -345
  808. package/runtime/third_party/bearssl/src/hash/ghash_ctmul32.c +0 -251
  809. package/runtime/third_party/bearssl/src/hash/ghash_ctmul64.c +0 -154
  810. package/runtime/third_party/bearssl/src/hash/ghash_pclmul.c +0 -389
  811. package/runtime/third_party/bearssl/src/hash/ghash_pwr8.c +0 -411
  812. package/runtime/third_party/bearssl/src/hash/md5.c +0 -208
  813. package/runtime/third_party/bearssl/src/hash/md5sha1.c +0 -141
  814. package/runtime/third_party/bearssl/src/hash/mgf1.c +0 -56
  815. package/runtime/third_party/bearssl/src/hash/multihash.c +0 -166
  816. package/runtime/third_party/bearssl/src/hash/sha1.c +0 -191
  817. package/runtime/third_party/bearssl/src/hash/sha2big.c +0 -285
  818. package/runtime/third_party/bearssl/src/hash/sha2small.c +0 -341
  819. package/runtime/third_party/bearssl/src/inner.h +0 -2577
  820. package/runtime/third_party/bearssl/src/int/i15_add.c +0 -46
  821. package/runtime/third_party/bearssl/src/int/i15_bitlen.c +0 -44
  822. package/runtime/third_party/bearssl/src/int/i15_decmod.c +0 -124
  823. package/runtime/third_party/bearssl/src/int/i15_decode.c +0 -56
  824. package/runtime/third_party/bearssl/src/int/i15_decred.c +0 -100
  825. package/runtime/third_party/bearssl/src/int/i15_encode.c +0 -56
  826. package/runtime/third_party/bearssl/src/int/i15_fmont.c +0 -59
  827. package/runtime/third_party/bearssl/src/int/i15_iszero.c +0 -39
  828. package/runtime/third_party/bearssl/src/int/i15_moddiv.c +0 -465
  829. package/runtime/third_party/bearssl/src/int/i15_modpow.c +0 -50
  830. package/runtime/third_party/bearssl/src/int/i15_modpow2.c +0 -160
  831. package/runtime/third_party/bearssl/src/int/i15_montmul.c +0 -184
  832. package/runtime/third_party/bearssl/src/int/i15_mulacc.c +0 -61
  833. package/runtime/third_party/bearssl/src/int/i15_muladd.c +0 -173
  834. package/runtime/third_party/bearssl/src/int/i15_ninv15.c +0 -38
  835. package/runtime/third_party/bearssl/src/int/i15_reduce.c +0 -66
  836. package/runtime/third_party/bearssl/src/int/i15_rshift.c +0 -47
  837. package/runtime/third_party/bearssl/src/int/i15_sub.c +0 -46
  838. package/runtime/third_party/bearssl/src/int/i15_tmont.c +0 -36
  839. package/runtime/third_party/bearssl/src/int/i31_add.c +0 -46
  840. package/runtime/third_party/bearssl/src/int/i31_bitlen.c +0 -44
  841. package/runtime/third_party/bearssl/src/int/i31_decmod.c +0 -124
  842. package/runtime/third_party/bearssl/src/int/i31_decode.c +0 -57
  843. package/runtime/third_party/bearssl/src/int/i31_decred.c +0 -103
  844. package/runtime/third_party/bearssl/src/int/i31_encode.c +0 -79
  845. package/runtime/third_party/bearssl/src/int/i31_fmont.c +0 -60
  846. package/runtime/third_party/bearssl/src/int/i31_iszero.c +0 -39
  847. package/runtime/third_party/bearssl/src/int/i31_moddiv.c +0 -488
  848. package/runtime/third_party/bearssl/src/int/i31_modpow.c +0 -65
  849. package/runtime/third_party/bearssl/src/int/i31_modpow2.c +0 -160
  850. package/runtime/third_party/bearssl/src/int/i31_montmul.c +0 -127
  851. package/runtime/third_party/bearssl/src/int/i31_mulacc.c +0 -74
  852. package/runtime/third_party/bearssl/src/int/i31_muladd.c +0 -157
  853. package/runtime/third_party/bearssl/src/int/i31_ninv31.c +0 -39
  854. package/runtime/third_party/bearssl/src/int/i31_reduce.c +0 -66
  855. package/runtime/third_party/bearssl/src/int/i31_rshift.c +0 -47
  856. package/runtime/third_party/bearssl/src/int/i31_sub.c +0 -46
  857. package/runtime/third_party/bearssl/src/int/i31_tmont.c +0 -36
  858. package/runtime/third_party/bearssl/src/int/i32_add.c +0 -51
  859. package/runtime/third_party/bearssl/src/int/i32_bitlen.c +0 -44
  860. package/runtime/third_party/bearssl/src/int/i32_decmod.c +0 -77
  861. package/runtime/third_party/bearssl/src/int/i32_decode.c +0 -63
  862. package/runtime/third_party/bearssl/src/int/i32_decred.c +0 -107
  863. package/runtime/third_party/bearssl/src/int/i32_div32.c +0 -56
  864. package/runtime/third_party/bearssl/src/int/i32_encode.c +0 -72
  865. package/runtime/third_party/bearssl/src/int/i32_fmont.c +0 -60
  866. package/runtime/third_party/bearssl/src/int/i32_iszero.c +0 -39
  867. package/runtime/third_party/bearssl/src/int/i32_modpow.c +0 -65
  868. package/runtime/third_party/bearssl/src/int/i32_montmul.c +0 -69
  869. package/runtime/third_party/bearssl/src/int/i32_mulacc.c +0 -56
  870. package/runtime/third_party/bearssl/src/int/i32_muladd.c +0 -138
  871. package/runtime/third_party/bearssl/src/int/i32_ninv32.c +0 -39
  872. package/runtime/third_party/bearssl/src/int/i32_reduce.c +0 -66
  873. package/runtime/third_party/bearssl/src/int/i32_sub.c +0 -51
  874. package/runtime/third_party/bearssl/src/int/i32_tmont.c +0 -36
  875. package/runtime/third_party/bearssl/src/int/i62_modpow2.c +0 -493
  876. package/runtime/third_party/bearssl/src/kdf/hkdf.c +0 -107
  877. package/runtime/third_party/bearssl/src/kdf/shake.c +0 -590
  878. package/runtime/third_party/bearssl/src/mac/hmac.c +0 -122
  879. package/runtime/third_party/bearssl/src/mac/hmac_ct.c +0 -193
  880. package/runtime/third_party/bearssl/src/rand/aesctr_drbg.c +0 -206
  881. package/runtime/third_party/bearssl/src/rand/hmac_drbg.c +0 -157
  882. package/runtime/third_party/bearssl/src/rand/sysrng.c +0 -252
  883. package/runtime/third_party/bearssl/src/rsa/rsa_default_keygen.c +0 -38
  884. package/runtime/third_party/bearssl/src/rsa/rsa_default_modulus.c +0 -36
  885. package/runtime/third_party/bearssl/src/rsa/rsa_default_oaep_decrypt.c +0 -38
  886. package/runtime/third_party/bearssl/src/rsa/rsa_default_oaep_encrypt.c +0 -38
  887. package/runtime/third_party/bearssl/src/rsa/rsa_default_pkcs1_sign.c +0 -38
  888. package/runtime/third_party/bearssl/src/rsa/rsa_default_pkcs1_vrfy.c +0 -38
  889. package/runtime/third_party/bearssl/src/rsa/rsa_default_priv.c +0 -38
  890. package/runtime/third_party/bearssl/src/rsa/rsa_default_privexp.c +0 -36
  891. package/runtime/third_party/bearssl/src/rsa/rsa_default_pss_sign.c +0 -38
  892. package/runtime/third_party/bearssl/src/rsa/rsa_default_pss_vrfy.c +0 -38
  893. package/runtime/third_party/bearssl/src/rsa/rsa_default_pub.c +0 -38
  894. package/runtime/third_party/bearssl/src/rsa/rsa_default_pubexp.c +0 -36
  895. package/runtime/third_party/bearssl/src/rsa/rsa_i15_keygen.c +0 -583
  896. package/runtime/third_party/bearssl/src/rsa/rsa_i15_modulus.c +0 -99
  897. package/runtime/third_party/bearssl/src/rsa/rsa_i15_oaep_decrypt.c +0 -41
  898. package/runtime/third_party/bearssl/src/rsa/rsa_i15_oaep_encrypt.c +0 -44
  899. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pkcs1_sign.c +0 -37
  900. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pkcs1_vrfy.c +0 -43
  901. package/runtime/third_party/bearssl/src/rsa/rsa_i15_priv.c +0 -209
  902. package/runtime/third_party/bearssl/src/rsa/rsa_i15_privexp.c +0 -320
  903. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pss_sign.c +0 -40
  904. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pss_vrfy.c +0 -44
  905. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pub.c +0 -113
  906. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pubexp.c +0 -152
  907. package/runtime/third_party/bearssl/src/rsa/rsa_i31_keygen.c +0 -37
  908. package/runtime/third_party/bearssl/src/rsa/rsa_i31_keygen_inner.c +0 -608
  909. package/runtime/third_party/bearssl/src/rsa/rsa_i31_modulus.c +0 -99
  910. package/runtime/third_party/bearssl/src/rsa/rsa_i31_oaep_decrypt.c +0 -41
  911. package/runtime/third_party/bearssl/src/rsa/rsa_i31_oaep_encrypt.c +0 -44
  912. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pkcs1_sign.c +0 -37
  913. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pkcs1_vrfy.c +0 -43
  914. package/runtime/third_party/bearssl/src/rsa/rsa_i31_priv.c +0 -203
  915. package/runtime/third_party/bearssl/src/rsa/rsa_i31_privexp.c +0 -318
  916. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pss_sign.c +0 -40
  917. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pss_vrfy.c +0 -44
  918. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pub.c +0 -106
  919. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pubexp.c +0 -152
  920. package/runtime/third_party/bearssl/src/rsa/rsa_i32_oaep_decrypt.c +0 -41
  921. package/runtime/third_party/bearssl/src/rsa/rsa_i32_oaep_encrypt.c +0 -44
  922. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pkcs1_sign.c +0 -37
  923. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pkcs1_vrfy.c +0 -43
  924. package/runtime/third_party/bearssl/src/rsa/rsa_i32_priv.c +0 -160
  925. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pss_sign.c +0 -40
  926. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pss_vrfy.c +0 -44
  927. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pub.c +0 -77
  928. package/runtime/third_party/bearssl/src/rsa/rsa_i62_keygen.c +0 -57
  929. package/runtime/third_party/bearssl/src/rsa/rsa_i62_oaep_decrypt.c +0 -61
  930. package/runtime/third_party/bearssl/src/rsa/rsa_i62_oaep_encrypt.c +0 -64
  931. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pkcs1_sign.c +0 -57
  932. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pkcs1_vrfy.c +0 -63
  933. package/runtime/third_party/bearssl/src/rsa/rsa_i62_priv.c +0 -223
  934. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pss_sign.c +0 -60
  935. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pss_vrfy.c +0 -64
  936. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pub.c +0 -125
  937. package/runtime/third_party/bearssl/src/rsa/rsa_oaep_pad.c +0 -112
  938. package/runtime/third_party/bearssl/src/rsa/rsa_oaep_unpad.c +0 -145
  939. package/runtime/third_party/bearssl/src/rsa/rsa_pkcs1_sig_pad.c +0 -100
  940. package/runtime/third_party/bearssl/src/rsa/rsa_pkcs1_sig_unpad.c +0 -121
  941. package/runtime/third_party/bearssl/src/rsa/rsa_pss_sig_pad.c +0 -106
  942. package/runtime/third_party/bearssl/src/rsa/rsa_pss_sig_unpad.c +0 -121
  943. package/runtime/third_party/bearssl/src/rsa/rsa_ssl_decrypt.c +0 -52
  944. package/runtime/third_party/bearssl/src/settings.c +0 -306
  945. package/runtime/third_party/bearssl/src/symcipher/aes_big_cbcdec.c +0 -69
  946. package/runtime/third_party/bearssl/src/symcipher/aes_big_cbcenc.c +0 -67
  947. package/runtime/third_party/bearssl/src/symcipher/aes_big_ctr.c +0 -84
  948. package/runtime/third_party/bearssl/src/symcipher/aes_big_ctrcbc.c +0 -142
  949. package/runtime/third_party/bearssl/src/symcipher/aes_big_dec.c +0 -254
  950. package/runtime/third_party/bearssl/src/symcipher/aes_big_enc.c +0 -157
  951. package/runtime/third_party/bearssl/src/symcipher/aes_common.c +0 -112
  952. package/runtime/third_party/bearssl/src/symcipher/aes_ct.c +0 -328
  953. package/runtime/third_party/bearssl/src/symcipher/aes_ct64.c +0 -398
  954. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_cbcdec.c +0 -104
  955. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_cbcenc.c +0 -81
  956. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_ctr.c +0 -114
  957. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_ctrcbc.c +0 -433
  958. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_dec.c +0 -159
  959. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_enc.c +0 -115
  960. package/runtime/third_party/bearssl/src/symcipher/aes_ct_cbcdec.c +0 -111
  961. package/runtime/third_party/bearssl/src/symcipher/aes_ct_cbcenc.c +0 -91
  962. package/runtime/third_party/bearssl/src/symcipher/aes_ct_ctr.c +0 -116
  963. package/runtime/third_party/bearssl/src/symcipher/aes_ct_ctrcbc.c +0 -422
  964. package/runtime/third_party/bearssl/src/symcipher/aes_ct_dec.c +0 -170
  965. package/runtime/third_party/bearssl/src/symcipher/aes_ct_enc.c +0 -112
  966. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8.c +0 -445
  967. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_cbcdec.c +0 -670
  968. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_cbcenc.c +0 -417
  969. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_ctr.c +0 -717
  970. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_ctrcbc.c +0 -946
  971. package/runtime/third_party/bearssl/src/symcipher/aes_small_cbcdec.c +0 -69
  972. package/runtime/third_party/bearssl/src/symcipher/aes_small_cbcenc.c +0 -67
  973. package/runtime/third_party/bearssl/src/symcipher/aes_small_ctr.c +0 -84
  974. package/runtime/third_party/bearssl/src/symcipher/aes_small_ctrcbc.c +0 -142
  975. package/runtime/third_party/bearssl/src/symcipher/aes_small_dec.c +0 -176
  976. package/runtime/third_party/bearssl/src/symcipher/aes_small_enc.c +0 -129
  977. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni.c +0 -240
  978. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_cbcdec.c +0 -223
  979. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_cbcenc.c +0 -122
  980. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_ctr.c +0 -211
  981. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_ctrcbc.c +0 -596
  982. package/runtime/third_party/bearssl/src/symcipher/chacha20_ct.c +0 -106
  983. package/runtime/third_party/bearssl/src/symcipher/chacha20_sse2.c +0 -237
  984. package/runtime/third_party/bearssl/src/symcipher/des_ct.c +0 -411
  985. package/runtime/third_party/bearssl/src/symcipher/des_ct_cbcdec.c +0 -87
  986. package/runtime/third_party/bearssl/src/symcipher/des_ct_cbcenc.c +0 -69
  987. package/runtime/third_party/bearssl/src/symcipher/des_support.c +0 -166
  988. package/runtime/third_party/bearssl/src/symcipher/des_tab.c +0 -310
  989. package/runtime/third_party/bearssl/src/symcipher/des_tab_cbcdec.c +0 -85
  990. package/runtime/third_party/bearssl/src/symcipher/des_tab_cbcenc.c +0 -67
  991. package/runtime/third_party/bearssl/src/symcipher/poly1305_ctmul.c +0 -260
  992. package/runtime/third_party/bearssl/src/symcipher/poly1305_ctmul32.c +0 -297
  993. package/runtime/third_party/bearssl/src/symcipher/poly1305_ctmulq.c +0 -475
  994. package/runtime/third_party/bearssl/src/symcipher/poly1305_i15.c +0 -221
  995. package/runtime/third_party/bearssl/src/x509/asn1.t0 +0 -757
  996. package/runtime/third_party/bearssl/src/x509/asn1enc.c +0 -93
  997. package/runtime/third_party/bearssl/src/x509/encode_ec_pk8der.c +0 -110
  998. package/runtime/third_party/bearssl/src/x509/encode_ec_rawder.c +0 -161
  999. package/runtime/third_party/bearssl/src/x509/encode_rsa_pk8der.c +0 -97
  1000. package/runtime/third_party/bearssl/src/x509/encode_rsa_rawder.c +0 -96
  1001. package/runtime/third_party/bearssl/src/x509/skey_decoder.c +0 -653
  1002. package/runtime/third_party/bearssl/src/x509/skey_decoder.t0 +0 -376
  1003. package/runtime/third_party/bearssl/src/x509/x509_decoder.c +0 -776
  1004. package/runtime/third_party/bearssl/src/x509/x509_decoder.t0 +0 -324
  1005. package/runtime/third_party/bearssl/src/x509/x509_knownkey.c +0 -105
  1006. package/runtime/third_party/bearssl/src/x509/x509_minimal.c +0 -1722
  1007. package/runtime/third_party/bearssl/src/x509/x509_minimal.t0 +0 -1526
  1008. package/runtime/third_party/bearssl/src/x509/x509_minimal_full.c +0 -59
@@ -0,0 +1,1000 @@
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 <openssl/rsa.h>
16
+
17
+ #include <assert.h>
18
+ #include <limits.h>
19
+ #include <string.h>
20
+
21
+ #include <utility>
22
+
23
+ #include <openssl/bn.h>
24
+ #include <openssl/err.h>
25
+ #include <openssl/mem.h>
26
+
27
+ #include "../../bcm_support.h"
28
+ #include "../../internal.h"
29
+ #include "../../mem_internal.h"
30
+ #include "../bn/internal.h"
31
+ #include "../delocate.h"
32
+ #include "../service_indicator/internal.h"
33
+ #include "internal.h"
34
+
35
+
36
+ using namespace bssl;
37
+
38
+ static_assert(OPENSSL_RSA_MAX_MODULUS_BITS <=
39
+ BN_MONTGOMERY_MAX_WORDS * BN_BITS2,
40
+ "Max RSA size too big for Montgomery arithmetic");
41
+
42
+ int bssl::rsa_check_public_key(const RSA *rsa) {
43
+ auto *impl = FromOpaque(rsa);
44
+
45
+ if (impl->n == nullptr) {
46
+ OPENSSL_PUT_ERROR(RSA, RSA_R_VALUE_MISSING);
47
+ return 0;
48
+ }
49
+
50
+ unsigned n_bits = BN_num_bits(impl->n.get());
51
+ if (n_bits > OPENSSL_RSA_MAX_MODULUS_BITS) {
52
+ OPENSSL_PUT_ERROR(RSA, RSA_R_MODULUS_TOO_LARGE);
53
+ return 0;
54
+ }
55
+
56
+ if (n_bits < OPENSSL_RSA_MIN_MODULUS_BITS) {
57
+ OPENSSL_PUT_ERROR(RSA, RSA_R_KEY_SIZE_TOO_SMALL);
58
+ return 0;
59
+ }
60
+
61
+ // RSA moduli must be positive and odd. In addition to being necessary for RSA
62
+ // in general, we cannot setup Montgomery reduction with even moduli.
63
+ if (!BN_is_odd(impl->n.get()) || BN_is_negative(impl->n.get())) {
64
+ OPENSSL_PUT_ERROR(RSA, RSA_R_BAD_RSA_PARAMETERS);
65
+ return 0;
66
+ }
67
+
68
+ static const unsigned kMaxExponentBits = 33;
69
+ if (impl->e != nullptr) {
70
+ // Reject e = 1, negative e, and even e. e must be odd to be relatively
71
+ // prime with phi(n).
72
+ unsigned e_bits = BN_num_bits(impl->e.get());
73
+ if (e_bits < 2 || BN_is_negative(impl->e.get()) ||
74
+ !BN_is_odd(impl->e.get())) {
75
+ OPENSSL_PUT_ERROR(RSA, RSA_R_BAD_E_VALUE);
76
+ return 0;
77
+ }
78
+ if (impl->flags & RSA_FLAG_LARGE_PUBLIC_EXPONENT) {
79
+ // The caller has requested disabling DoS protections. Still, e must be
80
+ // less than n.
81
+ if (BN_ucmp(impl->n.get(), impl->e.get()) <= 0) {
82
+ OPENSSL_PUT_ERROR(RSA, RSA_R_BAD_E_VALUE);
83
+ return 0;
84
+ }
85
+ } else {
86
+ // Mitigate DoS attacks by limiting the exponent size. 33 bits was chosen
87
+ // as the limit based on the recommendations in [1] and [2]. Windows
88
+ // CryptoAPI doesn't support values larger than 32 bits [3], so it is
89
+ // unlikely that exponents larger than 32 bits are being used for anything
90
+ // Windows commonly does.
91
+ //
92
+ // [1] https://www.imperialviolet.org/2012/03/16/rsae.html
93
+ // [2] https://www.imperialviolet.org/2012/03/17/rsados.html
94
+ // [3] https://msdn.microsoft.com/en-us/library/aa387685(VS.85).aspx
95
+ if (e_bits > kMaxExponentBits) {
96
+ OPENSSL_PUT_ERROR(RSA, RSA_R_BAD_E_VALUE);
97
+ return 0;
98
+ }
99
+
100
+ // The upper bound on `e_bits` and lower bound on `n_bits` imply e is
101
+ // bounded by n.
102
+ assert(BN_ucmp(impl->n.get(), impl->e.get()) > 0);
103
+ }
104
+ } else if (!(impl->flags & RSA_FLAG_NO_PUBLIC_EXPONENT)) {
105
+ OPENSSL_PUT_ERROR(RSA, RSA_R_VALUE_MISSING);
106
+ return 0;
107
+ }
108
+
109
+ return 1;
110
+ }
111
+
112
+ static int ensure_fixed_copy(UniquePtr<BIGNUM> *out, const BIGNUM *in,
113
+ int width) {
114
+ if (*out != nullptr) {
115
+ return 1;
116
+ }
117
+ UniquePtr<BIGNUM> copy(BN_dup(in));
118
+ if (copy == nullptr || !bn_resize_words(copy.get(), width)) {
119
+ return 0;
120
+ }
121
+ bn_secret(copy.get());
122
+ *out = std::move(copy);
123
+ return 1;
124
+ }
125
+
126
+ // freeze_private_key finishes initializing `rsa`'s private key components.
127
+ // After this function has returned, `rsa` may not be changed. This is needed
128
+ // because `RSA` is a public struct and, additionally, OpenSSL 1.1.0 opaquified
129
+ // it wrong (see https://github.com/openssl/openssl/issues/5158).
130
+ static int freeze_private_key(RSAImpl *rsa, BN_CTX *ctx) {
131
+ rsa->lock.LockRead();
132
+ int frozen = rsa->private_key_frozen;
133
+ rsa->lock.UnlockRead();
134
+ if (frozen) {
135
+ return 1;
136
+ }
137
+
138
+ const BIGNUM *n_fixed;
139
+ MutexWriteLock lock(&rsa->lock);
140
+ if (rsa->private_key_frozen) {
141
+ return 1;
142
+ }
143
+
144
+ // Check the public components are within DoS bounds.
145
+ if (!rsa_check_public_key(rsa)) {
146
+ return 0;
147
+ }
148
+
149
+ // Pre-compute various intermediate values, as well as copies of private
150
+ // exponents with correct widths. Note that other threads may concurrently
151
+ // read from `rsa->n`, `rsa->e`, etc., so any fixes must be in separate
152
+ // copies. We use `mont_n->N`, `mont_p->N`, and `mont_q->N` as copies of `n`,
153
+ // `p`, and `q` with the correct minimal widths.
154
+
155
+ if (rsa->mont_n == nullptr) {
156
+ rsa->mont_n.reset(BN_MONT_CTX_new_for_modulus(rsa->n.get(), ctx));
157
+ if (rsa->mont_n == nullptr) {
158
+ return 0;
159
+ }
160
+ }
161
+ n_fixed = &rsa->mont_n->N;
162
+
163
+ // The only public upper-bound of `rsa->d` is the bit length of `rsa->n`. The
164
+ // ASN.1 serialization of RSA private keys unfortunately leaks the byte length
165
+ // of `rsa->d`, but normalize it so we only leak it once, rather than per
166
+ // operation.
167
+ if (rsa->d != nullptr &&
168
+ !ensure_fixed_copy(&rsa->d_fixed, rsa->d.get(), n_fixed->width)) {
169
+ return 0;
170
+ }
171
+
172
+ if (rsa->e != nullptr && rsa->p != nullptr && rsa->q != nullptr) {
173
+ // TODO: p and q are also CONSTTIME_SECRET but not yet marked as such
174
+ // because the Montgomery code does things like test whether or not values
175
+ // are zero. So the secret marking probably needs to happen inside that
176
+ // code.
177
+
178
+ if (rsa->mont_p == nullptr) {
179
+ rsa->mont_p.reset(BN_MONT_CTX_new_consttime(rsa->p.get(), ctx));
180
+ if (rsa->mont_p == nullptr) {
181
+ return 0;
182
+ }
183
+ }
184
+
185
+ if (rsa->mont_q == nullptr) {
186
+ rsa->mont_q.reset(BN_MONT_CTX_new_consttime(rsa->q.get(), ctx));
187
+ if (rsa->mont_q == nullptr) {
188
+ return 0;
189
+ }
190
+ }
191
+
192
+ if (rsa->dmp1 != nullptr && rsa->dmq1 != nullptr && rsa->iqmp != nullptr) {
193
+ // CRT components are only publicly bounded by their corresponding
194
+ // moduli's bit lengths.
195
+ const BIGNUM *p_fixed = &rsa->mont_p->N;
196
+ const BIGNUM *q_fixed = &rsa->mont_q->N;
197
+ if (!ensure_fixed_copy(&rsa->dmp1_fixed, rsa->dmp1.get(),
198
+ p_fixed->width) ||
199
+ !ensure_fixed_copy(&rsa->dmq1_fixed, rsa->dmq1.get(),
200
+ q_fixed->width)) {
201
+ return 0;
202
+ }
203
+
204
+ // Compute `iqmp_mont`, which is `iqmp` in Montgomery form and with the
205
+ // correct bit width.
206
+ if (rsa->iqmp_mont == nullptr) {
207
+ UniquePtr<BIGNUM> iqmp_mont(BN_new());
208
+ if (iqmp_mont == nullptr ||
209
+ !BN_to_montgomery(iqmp_mont.get(), rsa->iqmp.get(),
210
+ rsa->mont_p.get(), ctx)) {
211
+ return 0;
212
+ }
213
+ rsa->iqmp_mont = std::move(iqmp_mont);
214
+ bn_secret(rsa->iqmp_mont.get());
215
+ }
216
+ }
217
+ }
218
+
219
+ rsa->private_key_frozen = 1;
220
+ return 1;
221
+ }
222
+
223
+ void bssl::rsa_invalidate_key(RSA *rsa) {
224
+ auto *impl = FromOpaque(rsa);
225
+ impl->private_key_frozen = 0;
226
+ impl->mont_n = nullptr;
227
+ impl->mont_p = nullptr;
228
+ impl->mont_q = nullptr;
229
+ impl->d_fixed = nullptr;
230
+ impl->dmp1_fixed = nullptr;
231
+ impl->dmq1_fixed = nullptr;
232
+ impl->iqmp_mont = nullptr;
233
+ }
234
+
235
+ int bssl::rsa_default_sign_raw(RSA *rsa, size_t *out_len, uint8_t *out,
236
+ size_t max_out, const uint8_t *in, size_t in_len,
237
+ int padding) {
238
+ const unsigned rsa_size = RSA_size(rsa);
239
+ uint8_t *buf = nullptr;
240
+ int i, ret = 0;
241
+
242
+ if (max_out < rsa_size) {
243
+ OPENSSL_PUT_ERROR(RSA, RSA_R_OUTPUT_BUFFER_TOO_SMALL);
244
+ return 0;
245
+ }
246
+
247
+ buf = reinterpret_cast<uint8_t *>(OPENSSL_malloc(rsa_size));
248
+ if (buf == nullptr) {
249
+ goto err;
250
+ }
251
+
252
+ switch (padding) {
253
+ case RSA_PKCS1_PADDING:
254
+ i = RSA_padding_add_PKCS1_type_1(buf, rsa_size, in, in_len);
255
+ break;
256
+ case RSA_NO_PADDING:
257
+ i = RSA_padding_add_none(buf, rsa_size, in, in_len);
258
+ break;
259
+ default:
260
+ OPENSSL_PUT_ERROR(RSA, RSA_R_UNKNOWN_PADDING_TYPE);
261
+ goto err;
262
+ }
263
+
264
+ if (i <= 0) {
265
+ goto err;
266
+ }
267
+
268
+ if (!rsa_private_transform_no_self_test(rsa, out, buf, rsa_size)) {
269
+ goto err;
270
+ }
271
+
272
+ CONSTTIME_DECLASSIFY(out, rsa_size);
273
+ *out_len = rsa_size;
274
+ ret = 1;
275
+
276
+ err:
277
+ OPENSSL_free(buf);
278
+
279
+ return ret;
280
+ }
281
+
282
+
283
+ static int rsa_mod_exp_crt(BIGNUM *r0, const BIGNUM *I, RSAImpl *rsa,
284
+ BN_CTX *ctx);
285
+
286
+ int bssl::rsa_verify_raw_no_self_test(RSA *rsa, size_t *out_len, uint8_t *out,
287
+ size_t max_out, const uint8_t *in,
288
+ size_t in_len, int padding) {
289
+ auto *impl = FromOpaque(rsa);
290
+
291
+ if (impl->n == nullptr || impl->e == nullptr) {
292
+ OPENSSL_PUT_ERROR(RSA, RSA_R_VALUE_MISSING);
293
+ return 0;
294
+ }
295
+
296
+ if (!rsa_check_public_key(rsa)) {
297
+ return 0;
298
+ }
299
+
300
+ const unsigned rsa_size = RSA_size(rsa);
301
+ if (max_out < rsa_size) {
302
+ OPENSSL_PUT_ERROR(RSA, RSA_R_OUTPUT_BUFFER_TOO_SMALL);
303
+ return 0;
304
+ }
305
+
306
+ if (in_len != rsa_size) {
307
+ OPENSSL_PUT_ERROR(RSA, RSA_R_DATA_LEN_NOT_EQUAL_TO_MOD_LEN);
308
+ return 0;
309
+ }
310
+
311
+ UniquePtr<BN_CTX> ctx(BN_CTX_new());
312
+ if (ctx == nullptr) {
313
+ return 0;
314
+ }
315
+
316
+ int ret = 0;
317
+ uint8_t *buf = nullptr;
318
+ BN_CTXScope scope(ctx.get());
319
+ BIGNUM *f = BN_CTX_get(ctx.get());
320
+ BIGNUM *result = BN_CTX_get(ctx.get());
321
+ if (f == nullptr || result == nullptr) {
322
+ goto err;
323
+ }
324
+
325
+ if (padding == RSA_NO_PADDING) {
326
+ buf = out;
327
+ } else {
328
+ // Allocate a temporary buffer to hold the padded plaintext.
329
+ buf = reinterpret_cast<uint8_t *>(OPENSSL_malloc(rsa_size));
330
+ if (buf == nullptr) {
331
+ goto err;
332
+ }
333
+ }
334
+
335
+ if (BN_bin2bn(in, in_len, f) == nullptr) {
336
+ goto err;
337
+ }
338
+
339
+ if (BN_ucmp(f, impl->n.get()) >= 0) {
340
+ OPENSSL_PUT_ERROR(RSA, RSA_R_DATA_TOO_LARGE_FOR_MODULUS);
341
+ goto err;
342
+ }
343
+
344
+ if (!BN_MONT_CTX_set_locked(&impl->mont_n, &impl->lock, impl->n.get(),
345
+ ctx.get()) ||
346
+ !BN_mod_exp_mont(result, f, impl->e.get(), &impl->mont_n->N, ctx.get(),
347
+ impl->mont_n.get())) {
348
+ goto err;
349
+ }
350
+
351
+ if (!BN_bn2bin_padded(buf, rsa_size, result)) {
352
+ OPENSSL_PUT_ERROR(RSA, ERR_R_INTERNAL_ERROR);
353
+ goto err;
354
+ }
355
+
356
+ switch (padding) {
357
+ case RSA_PKCS1_PADDING:
358
+ ret =
359
+ RSA_padding_check_PKCS1_type_1(out, out_len, rsa_size, buf, rsa_size);
360
+ break;
361
+ case RSA_NO_PADDING:
362
+ ret = 1;
363
+ *out_len = rsa_size;
364
+ break;
365
+ default:
366
+ OPENSSL_PUT_ERROR(RSA, RSA_R_UNKNOWN_PADDING_TYPE);
367
+ goto err;
368
+ }
369
+
370
+ if (!ret) {
371
+ OPENSSL_PUT_ERROR(RSA, RSA_R_PADDING_CHECK_FAILED);
372
+ goto err;
373
+ }
374
+
375
+ err:
376
+ if (buf != out) {
377
+ OPENSSL_free(buf);
378
+ }
379
+ return ret;
380
+ }
381
+
382
+ int RSA_verify_raw(RSA *rsa, size_t *out_len, uint8_t *out, size_t max_out,
383
+ const uint8_t *in, size_t in_len, int padding) {
384
+ boringssl_ensure_rsa_verify_self_test();
385
+ return rsa_verify_raw_no_self_test(rsa, out_len, out, max_out, in, in_len,
386
+ padding);
387
+ }
388
+
389
+ int bssl::rsa_default_private_transform(RSA *rsa, uint8_t *out,
390
+ const uint8_t *in, size_t len) {
391
+ auto *impl = FromOpaque(rsa);
392
+
393
+ if (impl->n == nullptr || impl->d == nullptr) {
394
+ OPENSSL_PUT_ERROR(RSA, RSA_R_VALUE_MISSING);
395
+ return 0;
396
+ }
397
+
398
+ UniquePtr<BN_CTX> ctx(BN_CTX_new());
399
+ if (ctx == nullptr) {
400
+ return 0;
401
+ }
402
+ BN_CTXScope scope(ctx.get());
403
+ BIGNUM *f = BN_CTX_get(ctx.get());
404
+ BIGNUM *result = BN_CTX_get(ctx.get());
405
+ if (f == nullptr || result == nullptr) {
406
+ return 0;
407
+ }
408
+
409
+ // The caller should have ensured this.
410
+ assert(len == BN_num_bytes(impl->n.get()));
411
+ if (BN_bin2bn(in, len, f) == nullptr) {
412
+ return 0;
413
+ }
414
+
415
+ // The input to the RSA private transform may be secret, but padding is
416
+ // expected to construct a value within range, so we can leak this comparison.
417
+ if (constant_time_declassify_int(BN_ucmp(f, impl->n.get()) >= 0)) {
418
+ // Usually the padding functions would catch this.
419
+ OPENSSL_PUT_ERROR(RSA, RSA_R_DATA_TOO_LARGE_FOR_MODULUS);
420
+ return 0;
421
+ }
422
+
423
+ if (!freeze_private_key(impl, ctx.get())) {
424
+ OPENSSL_PUT_ERROR(RSA, ERR_R_INTERNAL_ERROR);
425
+ return 0;
426
+ }
427
+
428
+ if (impl->e == nullptr && (impl->flags & RSA_FLAG_NO_PUBLIC_EXPONENT) == 0) {
429
+ // Unless the private key was specifically created with an API like
430
+ // `RSA_new_private_key_no_e`, don't allow RSA keys to be missing the public
431
+ // exponent, which disables some fault attack mitigations. (It should not be
432
+ // possible to construct such an `RSA` object in the public API.)
433
+ OPENSSL_PUT_ERROR(RSA, RSA_R_NO_PUBLIC_EXPONENT);
434
+ return 0;
435
+ }
436
+
437
+ if (impl->p != nullptr && impl->q != nullptr && impl->e != nullptr &&
438
+ impl->dmp1 != nullptr && impl->dmq1 != nullptr && impl->iqmp != nullptr &&
439
+ // Require that we can reduce `f` by `impl->p` and `impl->q` in constant
440
+ // time, which requires primes be the same size, rounded to the Montgomery
441
+ // coefficient. (See `mod_montgomery`.) This is not required by RFC 8017,
442
+ // but it is true for keys generated by us and all common implementations.
443
+ bn_less_than_montgomery_R(impl->q.get(), impl->mont_p.get()) &&
444
+ bn_less_than_montgomery_R(impl->p.get(), impl->mont_q.get())) {
445
+ if (!rsa_mod_exp_crt(result, f, impl, ctx.get())) {
446
+ return 0;
447
+ }
448
+ } else if (!BN_mod_exp_mont_consttime(result, f, impl->d_fixed.get(),
449
+ impl->n.get(), ctx.get(),
450
+ impl->mont_n.get())) {
451
+ return 0;
452
+ }
453
+
454
+ // Verify the result to protect against fault attacks as described in the
455
+ // 1997 paper "On the Importance of Checking Cryptographic Protocols for
456
+ // Faults" by Dan Boneh, Richard A. DeMillo, and Richard J. Lipton. Some
457
+ // implementations do this only when the CRT is used, but we do it in all
458
+ // cases. Section 6 of the aforementioned paper describes an attack that
459
+ // works when the CRT isn't used. That attack is much less likely to succeed
460
+ // than the CRT attack, but there have likely been improvements since 1997.
461
+ //
462
+ // This check is cheap assuming `e` is small, which we require in
463
+ // `rsa_check_public_key`.
464
+ if (impl->e != nullptr) {
465
+ BIGNUM *vrfy = BN_CTX_get(ctx.get());
466
+ if (vrfy == nullptr ||
467
+ !BN_mod_exp_mont(vrfy, result, impl->e.get(), impl->n.get(), ctx.get(),
468
+ impl->mont_n.get()) ||
469
+ !constant_time_declassify_int(BN_equal_consttime(vrfy, f))) {
470
+ OPENSSL_PUT_ERROR(RSA, ERR_R_INTERNAL_ERROR);
471
+ return 0;
472
+ }
473
+ }
474
+
475
+ // The computation should have left `result` as a maximally-wide number, so
476
+ // that it and serializing does not leak information about the magnitude of
477
+ // the result.
478
+ //
479
+ // See Falko Strenzke, "Manger's Attack revisited", ICICS 2010.
480
+ assert(result->width == impl->mont_n->N.width);
481
+ bn_assert_fits_in_bytes(result, len);
482
+ if (!BN_bn2bin_padded(out, len, result)) {
483
+ OPENSSL_PUT_ERROR(RSA, ERR_R_INTERNAL_ERROR);
484
+ return 0;
485
+ }
486
+
487
+ return 1;
488
+ }
489
+
490
+ // mod_montgomery sets `r` to `I` mod `p`. `I` must already be fully reduced
491
+ // modulo `p` times `q`. It returns one on success and zero on error.
492
+ static int mod_montgomery(BIGNUM *r, const BIGNUM *I, const BIGNUM *p,
493
+ const BN_MONT_CTX *mont_p, const BIGNUM *q,
494
+ BN_CTX *ctx) {
495
+ // Reducing in constant-time with Montgomery reduction requires I <= p * R. We
496
+ // have I < p * q, so this follows if q < R. The caller should have checked
497
+ // this already.
498
+ if (!bn_less_than_montgomery_R(q, mont_p)) {
499
+ OPENSSL_PUT_ERROR(RSA, ERR_R_INTERNAL_ERROR);
500
+ return 0;
501
+ }
502
+
503
+ if ( // Reduce mod p with Montgomery reduction. This computes I * R^-1 mod p.
504
+ !BN_from_montgomery(r, I, mont_p, ctx) ||
505
+ // Multiply by R² and do another Montgomery reduction to compute
506
+ // I * R^-1 * R² * R^-1 = I mod p.
507
+ !BN_to_montgomery(r, r, mont_p, ctx)) {
508
+ return 0;
509
+ }
510
+
511
+ // By precomputing R³ mod p (normally `BN_MONT_CTX` only uses R² mod p) and
512
+ // adjusting the API for `BN_mod_exp_mont_consttime`, we could instead compute
513
+ // I * R mod p here and save a reduction per prime. But this would require
514
+ // changing the RSAZ code and may not be worth it. Note that the RSAZ code
515
+ // uses a different radix, so it uses R' = 2^1044. There we'd actually want
516
+ // R² * R', and would further benefit from a precomputed R'². It currently
517
+ // converts `mont_p->RR` to R'².
518
+ return 1;
519
+ }
520
+
521
+ static int rsa_mod_exp_crt(BIGNUM *r0, const BIGNUM *I, RSAImpl *rsa,
522
+ BN_CTX *ctx) {
523
+ assert(ctx != nullptr);
524
+
525
+ assert(rsa->n != nullptr);
526
+ assert(rsa->e != nullptr);
527
+ assert(rsa->d != nullptr);
528
+ assert(rsa->p != nullptr);
529
+ assert(rsa->q != nullptr);
530
+ assert(rsa->dmp1 != nullptr);
531
+ assert(rsa->dmq1 != nullptr);
532
+ assert(rsa->iqmp != nullptr);
533
+
534
+ BN_CTXScope scope(ctx);
535
+ BIGNUM *r1 = BN_CTX_get(ctx);
536
+ BIGNUM *m1 = BN_CTX_get(ctx);
537
+ if (r1 == nullptr || m1 == nullptr) {
538
+ return 0;
539
+ }
540
+
541
+ // Use the minimal-width versions of `n`, `p`, and `q`. Either works, but if
542
+ // someone gives us non-minimal values, these will be slightly more efficient
543
+ // on the non-Montgomery operations.
544
+ BIGNUM *n = &rsa->mont_n->N;
545
+ BIGNUM *p = &rsa->mont_p->N;
546
+ BIGNUM *q = &rsa->mont_q->N;
547
+
548
+ // This is a pre-condition for `mod_montgomery`. It was already checked by the
549
+ // caller.
550
+ declassify_assert(BN_ucmp(I, n) < 0);
551
+
552
+ if ( // `m1` is the result modulo `q`.
553
+ !mod_montgomery(r1, I, q, rsa->mont_q.get(), p, ctx) ||
554
+ !BN_mod_exp_mont_consttime(m1, r1, rsa->dmq1_fixed.get(), q, ctx,
555
+ rsa->mont_q.get()) ||
556
+ // `r0` is the result modulo `p`.
557
+ !mod_montgomery(r1, I, p, rsa->mont_p.get(), q, ctx) ||
558
+ !BN_mod_exp_mont_consttime(r0, r1, rsa->dmp1_fixed.get(), p, ctx,
559
+ rsa->mont_p.get()) ||
560
+ // Compute r0 = r0 - m1 mod p. `m1` is reduced mod `q`, not `p`, so we
561
+ // just run `mod_montgomery` again for srsaicity. This could be more
562
+ // efficient with more cases: if `p > q`, `m1` is already reduced. If
563
+ // `p < q` but they have the same bit width, `bn_reduce_once` suffices.
564
+ // However, compared to over 2048 Montgomery multiplications above, this
565
+ // difference is not measurable.
566
+ !mod_montgomery(r1, m1, p, rsa->mont_p.get(), q, ctx) ||
567
+ !bn_mod_sub_consttime(r0, r0, r1, p, ctx) ||
568
+ // r0 = r0 * iqmp mod p. We use Montgomery multiplication to compute this
569
+ // in constant time. `iqmp_mont` is in Montgomery form and r0 is not, so
570
+ // the result is taken out of Montgomery form.
571
+ !BN_mod_mul_montgomery(r0, r0, rsa->iqmp_mont.get(), rsa->mont_p.get(),
572
+ ctx) ||
573
+ // r0 = r0 * q + m1 gives the final result. Reducing modulo q gives m1, so
574
+ // it is correct mod p. Reducing modulo p gives (r0-m1)*iqmp*q + m1 = r0,
575
+ // so it is correct mod q. Finally, the result is bounded by [m1, n + m1),
576
+ // and the result is at least `m1`, so this must be the unique answer in
577
+ // [0, n).
578
+ !bn_mul_consttime(r0, r0, q, ctx) || //
579
+ !bn_uadd_consttime(r0, r0, m1)) {
580
+ return 0;
581
+ }
582
+
583
+ // The result should be bounded by `n`, but fixed-width operations may
584
+ // bound the width slightly higher, so fix it. This trips constant-time checks
585
+ // because a naive data flow analysis does not realize the excess words are
586
+ // publicly zero.
587
+ declassify_assert(BN_cmp(r0, n) < 0);
588
+ bn_assert_fits_in_bytes(r0, BN_num_bytes(n));
589
+ if (!bn_resize_words(r0, n->width)) {
590
+ return 0;
591
+ }
592
+
593
+ return 1;
594
+ }
595
+
596
+ static int ensure_bignum(UniquePtr<BIGNUM> *out) {
597
+ if (*out == nullptr) {
598
+ out->reset(BN_new());
599
+ }
600
+ return *out != nullptr;
601
+ }
602
+
603
+ // generate_prime sets `out` to a prime with length `bits` such that `out`-1 is
604
+ // relatively prime to `e`. If `p` is non-NULL, `out` will also not be close to
605
+ // `p`. `pow2_bits_100` must be 2^(bits-100).
606
+ //
607
+ // This function fails with probability around 2^-21.
608
+ static int generate_prime(BIGNUM *out, int bits, const BIGNUM *e,
609
+ const BIGNUM *p, const BIGNUM *pow2_bits_100,
610
+ BN_CTX *ctx, BN_GENCB *cb) {
611
+ if (bits < 128 || (bits % BN_BITS2) != 0) {
612
+ OPENSSL_PUT_ERROR(RSA, ERR_R_INTERNAL_ERROR);
613
+ return 0;
614
+ }
615
+ assert(BN_is_pow2(pow2_bits_100));
616
+ assert(BN_is_bit_set(pow2_bits_100, bits - 100));
617
+
618
+ // See FIPS 186-5 appendix A.1.3, steps 4 and 5. Note `bits` here is nlen/2.
619
+
620
+ // Use the limit from steps 4.7 and 5.8 for most values of `e`. When `e` is 3,
621
+ // the 186-5 limit is too low, so we use a higher one. Note this case is not
622
+ // reachable from `RSA_generate_key_fips`.
623
+ //
624
+ // `limit` determines the failure probability. We must find a prime that is
625
+ // not 1 mod `e`. By the prime number theorem, we'll find one with probability
626
+ // p = (e-1)/e * 2/(ln(2)*bits). Note the second term is doubled because we
627
+ // discard even numbers.
628
+ //
629
+ // The failure probability is thus (1-p)^limit. To convert that to a power of
630
+ // two, we take logs. -log_2((1-p)^limit) = -limit * ln(1-p) / ln(2).
631
+ //
632
+ // >>> def f(bits, e, limit):
633
+ // ... p = (e-1.0)/e * 2.0/(math.log(2)*bits)
634
+ // ... return -limit * math.log(1 - p) / math.log(2)
635
+ // ...
636
+ // >>> f(1024, 65537, 5*1024)
637
+ // 20.842750558272634
638
+ // >>> f(1536, 65537, 5*1536)
639
+ // 20.83294549602474
640
+ // >>> f(2048, 65537, 5*2048)
641
+ // 20.828047576234948
642
+ // >>> f(1024, 3, 8*1024)
643
+ // 22.222147925962307
644
+ // >>> f(1536, 3, 8*1536)
645
+ // 22.21518251065506
646
+ // >>> f(2048, 3, 8*2048)
647
+ // 22.211701985875937
648
+ if (bits >= INT_MAX / 32) {
649
+ OPENSSL_PUT_ERROR(RSA, RSA_R_MODULUS_TOO_LARGE);
650
+ return 0;
651
+ }
652
+ int limit = BN_is_word(e, 3) ? bits * 8 : bits * 5;
653
+
654
+ int tries = 0, rand_tries = 0;
655
+ BN_CTXScope scope(ctx);
656
+ BIGNUM *tmp = BN_CTX_get(ctx);
657
+ if (tmp == nullptr) {
658
+ return 0;
659
+ }
660
+
661
+ for (;;) {
662
+ // Generate a random number of length `bits` where the bottom bit is set and
663
+ // top two bits are set (steps 4.2–4.4 and 5.2–5.4):
664
+ //
665
+ // - Setting the top two bits is permitted by steps 4.2.1 and 5.2.1. Doing
666
+ // so implements steps 4.4 and 5.4 by making this case impossible because
667
+ // √2 < 1.5.
668
+ //
669
+ // - Setting the bottom bit implements steps 4.3 and 5.3.
670
+ if (!BN_rand(out, bits, BN_RAND_TOP_TWO, BN_RAND_BOTTOM_ODD) ||
671
+ !BN_GENCB_call(cb, BN_GENCB_GENERATED, rand_tries++)) {
672
+ return 0;
673
+ }
674
+
675
+ if (p != nullptr) {
676
+ // If `p` and `out` are too close, try again (step 5.5).
677
+ if (!bn_abs_sub_consttime(tmp, out, p, ctx)) {
678
+ return 0;
679
+ }
680
+ if (BN_cmp(tmp, pow2_bits_100) <= 0) {
681
+ continue;
682
+ }
683
+ }
684
+
685
+ // RSA key generation's bottleneck is discarding composites. If it fails
686
+ // trial division, do not bother computing a GCD or performing Miller-Rabin.
687
+ if (!bn_odd_number_is_obviously_composite(out)) {
688
+ // Check gcd(out-1, e) is one (steps 4.5 and 5.6). Leaking the final
689
+ // result of this comparison is safe because, if not relatively prime, the
690
+ // value will be discarded.
691
+ int relatively_prime;
692
+ if (!bn_usub_consttime(tmp, out, BN_value_one()) ||
693
+ !bn_is_relatively_prime(&relatively_prime, tmp, e, ctx)) {
694
+ return 0;
695
+ }
696
+ if (constant_time_declassify_int(relatively_prime)) {
697
+ // Test `out` for primality (steps 4.5.1 and 5.6.1).
698
+ int is_probable_prime;
699
+ if (!BN_primality_test(&is_probable_prime, out,
700
+ BN_prime_checks_for_generation, ctx, 0, cb)) {
701
+ return 0;
702
+ }
703
+ if (is_probable_prime) {
704
+ return 1;
705
+ }
706
+ }
707
+ }
708
+
709
+ // If we've tried too many times to find a prime, abort (steps 4.7 and 5.8).
710
+ tries++;
711
+ if (tries >= limit) {
712
+ OPENSSL_PUT_ERROR(RSA, RSA_R_TOO_MANY_ITERATIONS);
713
+ return 0;
714
+ }
715
+ if (!BN_GENCB_call(cb, 2, tries)) {
716
+ return 0;
717
+ }
718
+ }
719
+ }
720
+
721
+ // rsa_generate_key_impl generates an RSA key using a generalized version of
722
+ // FIPS 186-5 appendix A.1.3. `RSA_generate_key_fips` performs additional checks
723
+ // for FIPS-compliant key generation.
724
+ //
725
+ // This function returns one on success and zero on failure. It has a failure
726
+ // probability of about 2^-20.
727
+ static int rsa_generate_key_impl(RSAImpl *rsa, int bits, const BIGNUM *e_value,
728
+ BN_GENCB *cb) {
729
+ if (bits > OPENSSL_RSA_MAX_MODULUS_BITS) {
730
+ OPENSSL_PUT_ERROR(RSA, RSA_R_MODULUS_TOO_LARGE);
731
+ return 0;
732
+ }
733
+
734
+ // Always generate RSA keys which are a multiple of 128 bits. Round `bits`
735
+ // down as needed.
736
+ bits &= ~127;
737
+
738
+ // Reject excessively small keys.
739
+ if (bits < OPENSSL_RSA_MIN_MODULUS_BITS) {
740
+ OPENSSL_PUT_ERROR(RSA, RSA_R_KEY_SIZE_TOO_SMALL);
741
+ return 0;
742
+ }
743
+
744
+ // Reject excessively large public exponents. Windows CryptoAPI and Go don't
745
+ // support values larger than 32 bits, so match their limits for generating
746
+ // keys. (`rsa_check_public_key` uses a slightly more conservative value, but
747
+ // we don't need to support generating such keys.)
748
+ // https://github.com/golang/go/issues/3161
749
+ // https://msdn.microsoft.com/en-us/library/aa387685(VS.85).aspx
750
+ if (BN_num_bits(e_value) > 32) {
751
+ OPENSSL_PUT_ERROR(RSA, RSA_R_BAD_E_VALUE);
752
+ return 0;
753
+ }
754
+
755
+ // The smallest reasonable RSA exponent is 3, and it definitely must be odd.
756
+ // Catching these here prevents endless loops or slow computation when trying
757
+ // to generate keys later, and results in a better error code.
758
+ if (
759
+ // Would fail in `bn_lcm_consttime` as it only allows positive integers.
760
+ BN_is_negative(e_value) ||
761
+ // Would fail in `generate_prime` as only one `rsa->p`-1 is coprime with
762
+ // an even `e_value` and that one is a little bit short. (The R in RSA
763
+ // doesn't stand for Rabin.)
764
+ !BN_is_odd(e_value) ||
765
+ // Would loop endlessly because it'll always compute an `rsa->d` exponent
766
+ // of 1, which is too small.
767
+ BN_is_one(e_value)) {
768
+ OPENSSL_PUT_ERROR(RSA, RSA_R_BAD_E_VALUE);
769
+ return 0;
770
+ }
771
+
772
+ UniquePtr<BN_CTX> ctx(BN_CTX_new());
773
+ if (ctx == nullptr) {
774
+ OPENSSL_PUT_ERROR(RSA, ERR_LIB_BN);
775
+ return 0;
776
+ }
777
+
778
+ int prime_bits = bits / 2;
779
+ BN_CTXScope scope(ctx.get());
780
+ BIGNUM *totient = BN_CTX_get(ctx.get());
781
+ BIGNUM *pm1 = BN_CTX_get(ctx.get());
782
+ BIGNUM *qm1 = BN_CTX_get(ctx.get());
783
+ BIGNUM *pow2_prime_bits_100 = BN_CTX_get(ctx.get());
784
+ BIGNUM *pow2_prime_bits = BN_CTX_get(ctx.get());
785
+ if (totient == nullptr || pm1 == nullptr || qm1 == nullptr ||
786
+ pow2_prime_bits_100 == nullptr || pow2_prime_bits == nullptr ||
787
+ !BN_set_bit(pow2_prime_bits_100, prime_bits - 100) ||
788
+ !BN_set_bit(pow2_prime_bits, prime_bits)) {
789
+ OPENSSL_PUT_ERROR(RSA, ERR_LIB_BN);
790
+ return 0;
791
+ }
792
+
793
+ // We need the RSA components non-null.
794
+ if (!ensure_bignum(&rsa->n) || //
795
+ !ensure_bignum(&rsa->d) || //
796
+ !ensure_bignum(&rsa->e) || //
797
+ !ensure_bignum(&rsa->p) || //
798
+ !ensure_bignum(&rsa->q) || //
799
+ !ensure_bignum(&rsa->dmp1) || //
800
+ !ensure_bignum(&rsa->dmq1) || //
801
+ !ensure_bignum(&rsa->iqmp)) {
802
+ OPENSSL_PUT_ERROR(RSA, ERR_LIB_BN);
803
+ return 0;
804
+ }
805
+
806
+ if (!BN_copy(rsa->e.get(), e_value)) {
807
+ OPENSSL_PUT_ERROR(RSA, ERR_LIB_BN);
808
+ return 0;
809
+ }
810
+
811
+ do {
812
+ // Generate p and q, each of size `prime_bits`, using the steps outlined in
813
+ // appendix FIPS 186-5 appendix C.3.3.
814
+ //
815
+ // Each call to `generate_prime` fails with probability p = 2^-21. The
816
+ // probability that either call fails is 1 - (1-p)², which is around 2^-20.
817
+ if (!generate_prime(rsa->p.get(), prime_bits, rsa->e.get(), nullptr,
818
+ pow2_prime_bits_100, ctx.get(), cb) ||
819
+ !BN_GENCB_call(cb, 3, 0) ||
820
+ !generate_prime(rsa->q.get(), prime_bits, rsa->e.get(), rsa->p.get(),
821
+ pow2_prime_bits_100, ctx.get(), cb) ||
822
+ !BN_GENCB_call(cb, 3, 1)) {
823
+ OPENSSL_PUT_ERROR(RSA, ERR_LIB_BN);
824
+ return 0;
825
+ }
826
+
827
+ if (BN_cmp(rsa->p.get(), rsa->q.get()) < 0) {
828
+ std::swap(rsa->p, rsa->q);
829
+ }
830
+
831
+ // Calculate d = e^(-1) (mod lcm(p-1, q-1)), per FIPS 186-5. This differs
832
+ // from typical RSA rsaementations which use (p-1)*(q-1).
833
+ //
834
+ // Note this means the size of d might reveal information about p-1 and
835
+ // q-1. However, we do operations with Chinese Remainder Theorem, so we only
836
+ // use d (mod p-1) and d (mod q-1) as exponents. Using a minimal totient
837
+ // does not affect those two values.
838
+ int no_inverse;
839
+ if (!bn_usub_consttime(pm1, rsa->p.get(), BN_value_one()) ||
840
+ !bn_usub_consttime(qm1, rsa->q.get(), BN_value_one()) ||
841
+ !bn_lcm_consttime(totient, pm1, qm1, ctx.get()) ||
842
+ !bn_mod_inverse_consttime(rsa->d.get(), &no_inverse, rsa->e.get(),
843
+ totient, ctx.get())) {
844
+ OPENSSL_PUT_ERROR(RSA, ERR_LIB_BN);
845
+ return 0;
846
+ }
847
+
848
+ // Retry if `rsa->d` <= 2^`prime_bits`. See appendix A.3.1's guidance on
849
+ // values for d. When we retry, p and q are discarded, so it is safe to leak
850
+ // this comparison.
851
+ } while (
852
+ constant_time_declassify_int(BN_cmp(rsa->d.get(), pow2_prime_bits) <= 0));
853
+
854
+ assert(BN_num_bits(pm1) == (unsigned)prime_bits);
855
+ assert(BN_num_bits(qm1) == (unsigned)prime_bits);
856
+ if ( // Calculate n.
857
+ !bn_mul_consttime(rsa->n.get(), rsa->p.get(), rsa->q.get(), ctx.get()) ||
858
+ // Calculate d mod (p-1).
859
+ !bn_div_consttime(nullptr, rsa->dmp1.get(), rsa->d.get(), pm1, prime_bits,
860
+ ctx.get()) ||
861
+ // Calculate d mod (q-1)
862
+ !bn_div_consttime(nullptr, rsa->dmq1.get(), rsa->d.get(), qm1, prime_bits,
863
+ ctx.get())) {
864
+ OPENSSL_PUT_ERROR(RSA, ERR_LIB_BN);
865
+ return 0;
866
+ }
867
+ bn_set_minimal_width(rsa->n.get());
868
+
869
+ // `rsa->n` is computed from the private key, but is public.
870
+ bn_declassify(rsa->n.get());
871
+
872
+ // Calculate q^-1 mod p.
873
+ rsa->mont_p.reset(BN_MONT_CTX_new_consttime(rsa->p.get(), ctx.get()));
874
+ if (rsa->mont_p == nullptr || //
875
+ !bn_mod_inverse_secret_prime(rsa->iqmp.get(), rsa->q.get(), rsa->p.get(),
876
+ ctx.get(), rsa->mont_p.get())) {
877
+ OPENSSL_PUT_ERROR(RSA, ERR_LIB_BN);
878
+ return 0;
879
+ }
880
+
881
+ // Sanity-check that `rsa->n` has the specified size. This is rsaied by
882
+ // `generate_prime`'s bounds.
883
+ if (BN_num_bits(rsa->n.get()) != (unsigned)bits) {
884
+ OPENSSL_PUT_ERROR(RSA, ERR_R_INTERNAL_ERROR);
885
+ return 0;
886
+ }
887
+
888
+ // The key generation process is complex and thus error-prone. It could be
889
+ // disastrous to generate and then use a bad key so double-check that the key
890
+ // makes sense. Also, while `rsa` is mutable, fill in the cached components.
891
+ if (!RSA_check_key(rsa) || !freeze_private_key(rsa, ctx.get())) {
892
+ OPENSSL_PUT_ERROR(RSA, RSA_R_INTERNAL_ERROR);
893
+ return 0;
894
+ }
895
+
896
+ return 1;
897
+ }
898
+
899
+ static int RSA_generate_key_ex_maybe_fips(RSAImpl *rsa, int bits,
900
+ const BIGNUM *e_value, BN_GENCB *cb,
901
+ int check_fips) {
902
+ boringssl_ensure_rsa_sign_self_test();
903
+ boringssl_ensure_rsa_verify_self_test();
904
+
905
+ if (rsa == nullptr) {
906
+ OPENSSL_PUT_ERROR(EC, ERR_R_PASSED_NULL_PARAMETER);
907
+ return 0;
908
+ }
909
+
910
+ UniquePtr<RSAImpl> tmp;
911
+
912
+ // `rsa_generate_key_impl`'s 2^-20 failure probability is too high at scale,
913
+ // so we run the FIPS algorithm four times, bringing it down to 2^-80. We
914
+ // should just adjust the retry limit, but FIPS 186-5 prescribes that value
915
+ // and thus results in unnecessary complexity.
916
+ int failures = 0;
917
+ do {
918
+ ERR_clear_error();
919
+ // Generate into scratch space, to avoid leaving partial work on failure.
920
+ tmp.reset(FromOpaque(RSA_new()));
921
+ if (tmp == nullptr) {
922
+ return 0;
923
+ }
924
+
925
+ if (rsa_generate_key_impl(tmp.get(), bits, e_value, cb)) {
926
+ break;
927
+ }
928
+
929
+ tmp = nullptr;
930
+ failures++;
931
+
932
+ // Only retry on `RSA_R_TOO_MANY_ITERATIONS`. This is so a caller-induced
933
+ // failure in `BN_GENCB_call` is still fatal.
934
+ } while (failures < 4 && ERR_equals(ERR_peek_error(), ERR_LIB_RSA,
935
+ RSA_R_TOO_MANY_ITERATIONS));
936
+
937
+ if (tmp == nullptr || (check_fips && !RSA_check_fips(tmp.get()))) {
938
+ return 0;
939
+ }
940
+
941
+ rsa_invalidate_key(rsa);
942
+ rsa->n = std::move(tmp->n);
943
+ rsa->e = std::move(tmp->e);
944
+ rsa->d = std::move(tmp->d);
945
+ rsa->p = std::move(tmp->p);
946
+ rsa->q = std::move(tmp->q);
947
+ rsa->dmp1 = std::move(tmp->dmp1);
948
+ rsa->dmq1 = std::move(tmp->dmq1);
949
+ rsa->iqmp = std::move(tmp->iqmp);
950
+ rsa->mont_n = std::move(tmp->mont_n);
951
+ rsa->mont_p = std::move(tmp->mont_p);
952
+ rsa->mont_q = std::move(tmp->mont_q);
953
+ rsa->d_fixed = std::move(tmp->d_fixed);
954
+ rsa->dmp1_fixed = std::move(tmp->dmp1_fixed);
955
+ rsa->dmq1_fixed = std::move(tmp->dmq1_fixed);
956
+ rsa->iqmp_mont = std::move(tmp->iqmp_mont);
957
+ rsa->private_key_frozen = tmp->private_key_frozen;
958
+ return 1;
959
+ }
960
+
961
+ int RSA_generate_key_ex(RSA *rsa, int bits, const BIGNUM *e_value,
962
+ BN_GENCB *cb) {
963
+ return RSA_generate_key_ex_maybe_fips(FromOpaque(rsa), bits, e_value, cb,
964
+ /*check_fips=*/0);
965
+ }
966
+
967
+ int RSA_generate_key_fips(RSA *rsa, int bits, BN_GENCB *cb) {
968
+ // FIPS 186-4 allowed 2048-bit and 3072-bit RSA keys (1024-bit and 1536-bit
969
+ // primes, respectively) with the prime generation method we use.
970
+ // Subsequently, IG A.14 stated that larger modulus sizes can be used and ACVP
971
+ // testing supports 4096 bits, and FIPS 186-5 allowed all key sizes at least
972
+ // 2048.
973
+ if (bits != 2048 && bits != 3072 && bits != 4096) {
974
+ OPENSSL_PUT_ERROR(RSA, RSA_R_BAD_RSA_PARAMETERS);
975
+ return 0;
976
+ }
977
+
978
+ BIGNUM *e = BN_new();
979
+ int ret = e != nullptr && BN_set_word(e, RSA_F4) &&
980
+ RSA_generate_key_ex_maybe_fips(FromOpaque(rsa), bits, e, cb,
981
+ /*check_fips=*/1);
982
+ BN_free(e);
983
+
984
+ if (ret) {
985
+ FIPS_service_indicator_update_state();
986
+ }
987
+ return ret;
988
+ }
989
+
990
+ BSSL_NAMESPACE_BEGIN
991
+
992
+ DEFINE_METHOD_FUNCTION(RSA_METHOD, RSA_default_method) {
993
+ // All of the methods are NULL to make it easier for the compiler/linker to
994
+ // drop unused functions. The wrapper functions will select the appropriate
995
+ // `rsa_default_*` implementation.
996
+ OPENSSL_memset(out, 0, sizeof(RSA_METHOD));
997
+ out->common.is_static = 1;
998
+ }
999
+
1000
+ BSSL_NAMESPACE_END