visaljs 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1007) hide show
  1. package/cli.js +393 -62
  2. package/node/include/js_node.h +28 -5
  3. package/node/include/js_uv.h +36 -0
  4. package/node/prelude/crypto.js +7 -10
  5. package/node/prelude/dns.js +99 -0
  6. package/node/prelude/dns_promises.js +10 -0
  7. package/node/prelude/http.js +1039 -195
  8. package/node/prelude/internal/crypto/asym.js +39 -12
  9. package/node/prelude/internal/crypto/dh_groups.js +12 -0
  10. package/node/prelude/internal/crypto/diffiehellman.js +354 -0
  11. package/node/prelude/internal/crypto/hash.js +1 -1
  12. package/node/prelude/internal/crypto/key_type.js +3 -0
  13. package/node/prelude/internal/crypto/keys.js +39 -9
  14. package/node/prelude/internal/http_agent.js +249 -0
  15. package/node/prelude/internal/net.js +33 -0
  16. package/node/prelude/internal/socketaddress.js +249 -0
  17. package/node/prelude/internal/tls/common.js +306 -0
  18. package/node/prelude/internal/tls/wrap.js +1217 -0
  19. package/node/prelude/internal/tls/x509.js +394 -0
  20. package/node/prelude/net.js +1083 -50
  21. package/node/prelude/stream.js +6 -0
  22. package/node/prelude/tls.js +141 -0
  23. package/node/prelude/util.js +5 -2
  24. package/node/prelude/util_types.js +85 -0
  25. package/node/src/host_http.c +268 -270
  26. package/node/src/host_loop.c +84 -0
  27. package/node/src/host_net.c +495 -0
  28. package/node/src/host_sys.c +16 -0
  29. package/package.json +1 -1
  30. package/runtime/include/js_builtins.h +16 -0
  31. package/runtime/include/js_console.h +2 -0
  32. package/runtime/include/js_core.def +23 -0
  33. package/runtime/include/js_crypto.h +23 -0
  34. package/runtime/include/js_generator.h +2 -3
  35. package/runtime/include/js_promise.h +0 -2
  36. package/runtime/src/async_iter.c +4 -1
  37. package/runtime/src/boringssl_support.cc +34 -0
  38. package/runtime/src/builtin_table.c +8 -0
  39. package/runtime/src/components.c +10 -0
  40. package/runtime/src/console.c +6 -18
  41. package/runtime/src/core_all.c +1 -0
  42. package/runtime/src/crypto_asym.c +450 -241
  43. package/runtime/src/crypto_bn.c +91 -0
  44. package/runtime/src/crypto_cipher.c +153 -75
  45. package/runtime/src/crypto_hash.c +68 -53
  46. package/runtime/src/crypto_internal.h +55 -26
  47. package/runtime/src/crypto_pkey.c +198 -61
  48. package/runtime/src/crypto_subtle.c +42 -16
  49. package/runtime/src/crypto_tls.c +678 -0
  50. package/runtime/src/generator.c +8 -1
  51. package/runtime/src/global.c +2 -4
  52. package/runtime/src/internal.h +0 -1
  53. package/runtime/src/jobs.c +2 -1
  54. package/runtime/src/promise.c +4 -1
  55. package/runtime/src/tls_roots.gen.h +3215 -0
  56. package/runtime/src/util_types.c +52 -0
  57. package/runtime/src/weak.c +2 -1
  58. package/runtime/third_party/boringssl/LICENSE +238 -0
  59. package/runtime/third_party/boringssl/README.md +46 -0
  60. package/runtime/third_party/boringssl/VERSION +1 -0
  61. package/runtime/third_party/boringssl/crypto/aes/aes.cc +44 -0
  62. package/runtime/third_party/boringssl/crypto/armv8_feature_parsing.h +67 -0
  63. package/runtime/third_party/boringssl/crypto/asn1/a_bitstr.cc +297 -0
  64. package/runtime/third_party/boringssl/crypto/asn1/a_bool.cc +50 -0
  65. package/runtime/third_party/boringssl/crypto/asn1/a_d2i_fp.cc +47 -0
  66. package/runtime/third_party/boringssl/crypto/asn1/a_dup.cc +42 -0
  67. package/runtime/third_party/boringssl/crypto/asn1/a_gentm.cc +130 -0
  68. package/runtime/third_party/boringssl/crypto/asn1/a_i2d_fp.cc +44 -0
  69. package/runtime/third_party/boringssl/crypto/asn1/a_int.cc +467 -0
  70. package/runtime/third_party/boringssl/crypto/asn1/a_mbstr.cc +242 -0
  71. package/runtime/third_party/boringssl/crypto/asn1/a_object.cc +191 -0
  72. package/runtime/third_party/boringssl/crypto/asn1/a_octet.cc +32 -0
  73. package/runtime/third_party/boringssl/crypto/asn1/a_strex.cc +411 -0
  74. package/runtime/third_party/boringssl/crypto/asn1/a_strnid.cc +208 -0
  75. package/runtime/third_party/boringssl/crypto/asn1/a_time.cc +248 -0
  76. package/runtime/third_party/boringssl/crypto/asn1/a_type.cc +467 -0
  77. package/runtime/third_party/boringssl/crypto/asn1/a_utctm.cc +128 -0
  78. package/runtime/third_party/boringssl/crypto/asn1/asn1_lib.cc +453 -0
  79. package/runtime/third_party/boringssl/crypto/asn1/asn1_par.cc +61 -0
  80. package/runtime/third_party/boringssl/crypto/asn1/asn_pack.cc +56 -0
  81. package/runtime/third_party/boringssl/crypto/asn1/f_int.cc +63 -0
  82. package/runtime/third_party/boringssl/crypto/asn1/f_string.cc +52 -0
  83. package/runtime/third_party/boringssl/crypto/asn1/internal.h +430 -0
  84. package/runtime/third_party/boringssl/crypto/asn1/posix_time.cc +244 -0
  85. package/runtime/third_party/boringssl/crypto/asn1/tasn_dec.cc +611 -0
  86. package/runtime/third_party/boringssl/crypto/asn1/tasn_enc.cc +348 -0
  87. package/runtime/third_party/boringssl/crypto/asn1/tasn_fre.cc +163 -0
  88. package/runtime/third_party/boringssl/crypto/asn1/tasn_new.cc +274 -0
  89. package/runtime/third_party/boringssl/crypto/asn1/tasn_typ.cc +92 -0
  90. package/runtime/third_party/boringssl/crypto/asn1/tasn_utl.cc +218 -0
  91. package/runtime/third_party/boringssl/crypto/base64/base64.cc +433 -0
  92. package/runtime/third_party/boringssl/crypto/bcm_support.h +62 -0
  93. package/runtime/third_party/boringssl/crypto/bio/bio.cc +715 -0
  94. package/runtime/third_party/boringssl/crypto/bio/bio_mem.cc +260 -0
  95. package/runtime/third_party/boringssl/crypto/bio/connect.cc +463 -0
  96. package/runtime/third_party/boringssl/crypto/bio/errno.cc +52 -0
  97. package/runtime/third_party/boringssl/crypto/bio/fd.cc +193 -0
  98. package/runtime/third_party/boringssl/crypto/bio/file.cc +283 -0
  99. package/runtime/third_party/boringssl/crypto/bio/hexdump.cc +154 -0
  100. package/runtime/third_party/boringssl/crypto/bio/internal.h +128 -0
  101. package/runtime/third_party/boringssl/crypto/bio/pair.cc +426 -0
  102. package/runtime/third_party/boringssl/crypto/bio/printf.cc +59 -0
  103. package/runtime/third_party/boringssl/crypto/bio/socket.cc +210 -0
  104. package/runtime/third_party/boringssl/crypto/bio/socket_helper.cc +179 -0
  105. package/runtime/third_party/boringssl/crypto/blake2/blake2.cc +173 -0
  106. package/runtime/third_party/boringssl/crypto/bn/bn_asn1.cc +57 -0
  107. package/runtime/third_party/boringssl/crypto/bn/convert.cc +409 -0
  108. package/runtime/third_party/boringssl/crypto/bn/div.cc +102 -0
  109. package/runtime/third_party/boringssl/crypto/bn/exponentiation.cc +168 -0
  110. package/runtime/third_party/boringssl/crypto/bn/sqrt.cc +93 -0
  111. package/runtime/third_party/boringssl/crypto/buf/buf.cc +119 -0
  112. package/runtime/third_party/boringssl/crypto/bytestring/asn1_compat.cc +54 -0
  113. package/runtime/third_party/boringssl/crypto/bytestring/ber.cc +268 -0
  114. package/runtime/third_party/boringssl/crypto/bytestring/cbb.cc +787 -0
  115. package/runtime/third_party/boringssl/crypto/bytestring/cbs.cc +977 -0
  116. package/runtime/third_party/boringssl/crypto/bytestring/internal.h +134 -0
  117. package/runtime/third_party/boringssl/crypto/bytestring/unicode.cc +156 -0
  118. package/runtime/third_party/boringssl/crypto/chacha/chacha.cc +226 -0
  119. package/runtime/third_party/boringssl/crypto/chacha/internal.h +103 -0
  120. package/runtime/third_party/boringssl/crypto/cipher/derive_key.cc +106 -0
  121. package/runtime/third_party/boringssl/crypto/cipher/e_aesctrhmac.cc +294 -0
  122. package/runtime/third_party/boringssl/crypto/cipher/e_aeseax.cc +351 -0
  123. package/runtime/third_party/boringssl/crypto/cipher/e_aesgcmsiv.cc +918 -0
  124. package/runtime/third_party/boringssl/crypto/cipher/e_chacha20poly1305.cc +404 -0
  125. package/runtime/third_party/boringssl/crypto/cipher/e_des.cc +214 -0
  126. package/runtime/third_party/boringssl/crypto/cipher/e_null.cc +55 -0
  127. package/runtime/third_party/boringssl/crypto/cipher/e_rc2.cc +432 -0
  128. package/runtime/third_party/boringssl/crypto/cipher/e_rc4.cc +56 -0
  129. package/runtime/third_party/boringssl/crypto/cipher/e_tls.cc +615 -0
  130. package/runtime/third_party/boringssl/crypto/cipher/get_cipher.cc +85 -0
  131. package/runtime/third_party/boringssl/crypto/cipher/internal.h +399 -0
  132. package/runtime/third_party/boringssl/crypto/cipher/tls_cbc.cc +476 -0
  133. package/runtime/third_party/boringssl/crypto/cms/cms.cc +178 -0
  134. package/runtime/third_party/boringssl/crypto/conf/conf.cc +637 -0
  135. package/runtime/third_party/boringssl/crypto/conf/internal.h +54 -0
  136. package/runtime/third_party/boringssl/crypto/cpu_aarch64_apple.cc +76 -0
  137. package/runtime/third_party/boringssl/crypto/cpu_aarch64_fuchsia.cc +58 -0
  138. package/runtime/third_party/boringssl/crypto/cpu_aarch64_linux.cc +66 -0
  139. package/runtime/third_party/boringssl/crypto/cpu_aarch64_openbsd.cc +45 -0
  140. package/runtime/third_party/boringssl/crypto/cpu_aarch64_sysreg.cc +66 -0
  141. package/runtime/third_party/boringssl/crypto/cpu_aarch64_win.cc +52 -0
  142. package/runtime/third_party/boringssl/crypto/cpu_arm_freebsd.cc +55 -0
  143. package/runtime/third_party/boringssl/crypto/cpu_arm_linux.cc +173 -0
  144. package/runtime/third_party/boringssl/crypto/cpu_arm_linux.h +141 -0
  145. package/runtime/third_party/boringssl/crypto/cpu_intel.cc +287 -0
  146. package/runtime/third_party/boringssl/crypto/crypto.cc +152 -0
  147. package/runtime/third_party/boringssl/crypto/curve25519/asm/x25519-asm-arm.S +2124 -0
  148. package/runtime/third_party/boringssl/crypto/curve25519/cpace.cc +227 -0
  149. package/runtime/third_party/boringssl/crypto/curve25519/curve25519.cc +2436 -0
  150. package/runtime/third_party/boringssl/crypto/curve25519/curve25519_64_adx.cc +18 -0
  151. package/runtime/third_party/boringssl/crypto/curve25519/curve25519_tables.h +3264 -0
  152. package/runtime/third_party/boringssl/crypto/curve25519/internal.h +202 -0
  153. package/runtime/third_party/boringssl/crypto/curve25519/spake25519.cc +532 -0
  154. package/runtime/third_party/boringssl/crypto/des/des.cc +837 -0
  155. package/runtime/third_party/boringssl/crypto/des/internal.h +144 -0
  156. package/runtime/third_party/boringssl/crypto/dh/dh_asn1.cc +109 -0
  157. package/runtime/third_party/boringssl/crypto/dh/params.cc +411 -0
  158. package/runtime/third_party/boringssl/crypto/digest/digest_extra.cc +361 -0
  159. package/runtime/third_party/boringssl/crypto/dsa/dsa.cc +922 -0
  160. package/runtime/third_party/boringssl/crypto/dsa/dsa_asn1.cc +306 -0
  161. package/runtime/third_party/boringssl/crypto/dsa/internal.h +56 -0
  162. package/runtime/third_party/boringssl/crypto/ec/ec_asn1.cc +542 -0
  163. package/runtime/third_party/boringssl/crypto/ec/ec_derive.cc +94 -0
  164. package/runtime/third_party/boringssl/crypto/ec/hash_to_curve.cc +773 -0
  165. package/runtime/third_party/boringssl/crypto/ec/internal.h +114 -0
  166. package/runtime/third_party/boringssl/crypto/ecdh/ecdh.cc +75 -0
  167. package/runtime/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.cc +337 -0
  168. package/runtime/third_party/boringssl/crypto/ecdsa/ecdsa_p1363.cc +54 -0
  169. package/runtime/third_party/boringssl/crypto/engine/engine.cc +95 -0
  170. package/runtime/third_party/boringssl/crypto/err/err.cc +820 -0
  171. package/runtime/third_party/boringssl/crypto/err/internal.h +45 -0
  172. package/runtime/third_party/boringssl/crypto/evp/evp.cc +454 -0
  173. package/runtime/third_party/boringssl/crypto/evp/evp_asn1.cc +439 -0
  174. package/runtime/third_party/boringssl/crypto/evp/evp_ctx.cc +541 -0
  175. package/runtime/third_party/boringssl/crypto/evp/evp_kem.cc +101 -0
  176. package/runtime/third_party/boringssl/crypto/evp/internal.h +427 -0
  177. package/runtime/third_party/boringssl/crypto/evp/p_dh.cc +326 -0
  178. package/runtime/third_party/boringssl/crypto/evp/p_dsa.cc +333 -0
  179. package/runtime/third_party/boringssl/crypto/evp/p_ec.cc +736 -0
  180. package/runtime/third_party/boringssl/crypto/evp/p_ed25519.cc +359 -0
  181. package/runtime/third_party/boringssl/crypto/evp/p_hkdf.cc +204 -0
  182. package/runtime/third_party/boringssl/crypto/evp/p_mldsa.cc +549 -0
  183. package/runtime/third_party/boringssl/crypto/evp/p_mlkem.cc +510 -0
  184. package/runtime/third_party/boringssl/crypto/evp/p_rsa.cc +1185 -0
  185. package/runtime/third_party/boringssl/crypto/evp/p_x25519.cc +371 -0
  186. package/runtime/third_party/boringssl/crypto/evp/p_xwing.cc +300 -0
  187. package/runtime/third_party/boringssl/crypto/evp/pbkdf.cc +105 -0
  188. package/runtime/third_party/boringssl/crypto/evp/print.cc +287 -0
  189. package/runtime/third_party/boringssl/crypto/evp/scrypt.cc +218 -0
  190. package/runtime/third_party/boringssl/crypto/evp/sign.cc +95 -0
  191. package/runtime/third_party/boringssl/crypto/ex_data.cc +140 -0
  192. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/aes.cc.inc +208 -0
  193. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/aes_nohw.cc.inc +1279 -0
  194. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/cbc.cc.inc +132 -0
  195. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/cfb.cc.inc +168 -0
  196. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/ctr.cc.inc +102 -0
  197. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/gcm.cc.inc +614 -0
  198. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/gcm_nohw.cc.inc +304 -0
  199. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/internal.h +590 -0
  200. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/key_wrap.cc.inc +211 -0
  201. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/mode_wrappers.cc.inc +97 -0
  202. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/ofb.cc.inc +55 -0
  203. package/runtime/third_party/boringssl/crypto/fipsmodule/bcm.cc +288 -0
  204. package/runtime/third_party/boringssl/crypto/fipsmodule/bcm_interface.h +953 -0
  205. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/add.cc.inc +276 -0
  206. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/asm/x86_64-gcc.cc.inc +573 -0
  207. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/bn.cc.inc +377 -0
  208. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/bytes.cc.inc +230 -0
  209. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/cmp.cc.inc +161 -0
  210. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/ctx.cc.inc +127 -0
  211. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/div.cc.inc +738 -0
  212. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/div_extra.cc.inc +90 -0
  213. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.cc.inc +743 -0
  214. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/gcd.cc.inc +281 -0
  215. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/gcd_extra.cc.inc +327 -0
  216. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/generic.cc.inc +579 -0
  217. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/internal.h +810 -0
  218. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/jacobi.cc.inc +101 -0
  219. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/montgomery.cc.inc +408 -0
  220. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/montgomery_inv.cc.inc +179 -0
  221. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/mul.cc.inc +347 -0
  222. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/prime.cc.inc +931 -0
  223. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/random.cc.inc +261 -0
  224. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.cc.inc +144 -0
  225. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.h +109 -0
  226. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/shift.cc.inc +317 -0
  227. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/sqrt.cc.inc +370 -0
  228. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/aead.cc.inc +619 -0
  229. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/cipher.cc.inc +837 -0
  230. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.cc.inc +1240 -0
  231. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/e_aesccm.cc.inc +440 -0
  232. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/internal.h +461 -0
  233. package/runtime/third_party/boringssl/crypto/fipsmodule/cmac/cmac.cc.inc +293 -0
  234. package/runtime/third_party/boringssl/crypto/fipsmodule/delocate.h +95 -0
  235. package/runtime/third_party/boringssl/crypto/fipsmodule/dh/check.cc.inc +198 -0
  236. package/runtime/third_party/boringssl/crypto/fipsmodule/dh/dh.cc.inc +401 -0
  237. package/runtime/third_party/boringssl/crypto/fipsmodule/dh/internal.h +63 -0
  238. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/digest.cc.inc +221 -0
  239. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/digests.cc.inc +184 -0
  240. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/internal.h +72 -0
  241. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/md32_common.h +166 -0
  242. package/runtime/third_party/boringssl/crypto/fipsmodule/digestsign/digestsign.cc.inc +230 -0
  243. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/builtin_curves.h +277 -0
  244. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/ec.cc.inc +1024 -0
  245. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/ec_key.cc.inc +536 -0
  246. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.cc.inc +379 -0
  247. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/felem.cc.inc +250 -0
  248. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/internal.h +752 -0
  249. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/oct.cc.inc +174 -0
  250. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256-nistz-table.h +9502 -0
  251. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256-nistz.cc.inc +740 -0
  252. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256-nistz.h +207 -0
  253. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256.cc.inc +578 -0
  254. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256_table.h +297 -0
  255. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/scalar.cc.inc +184 -0
  256. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/simple.cc.inc +246 -0
  257. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/simple_mul.cc.inc +274 -0
  258. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/util.cc.inc +258 -0
  259. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/wnaf.cc.inc +224 -0
  260. package/runtime/third_party/boringssl/crypto/fipsmodule/ecdh/ecdh.cc.inc +91 -0
  261. package/runtime/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.cc.inc +288 -0
  262. package/runtime/third_party/boringssl/crypto/fipsmodule/ecdsa/internal.h +57 -0
  263. package/runtime/third_party/boringssl/crypto/fipsmodule/entropy/internal.h +38 -0
  264. package/runtime/third_party/boringssl/crypto/fipsmodule/entropy/jitter.cc.inc +487 -0
  265. package/runtime/third_party/boringssl/crypto/fipsmodule/entropy/sha512.cc.inc +329 -0
  266. package/runtime/third_party/boringssl/crypto/fipsmodule/fips_shared_support.cc +28 -0
  267. package/runtime/third_party/boringssl/crypto/fipsmodule/hkdf/hkdf.cc.inc +114 -0
  268. package/runtime/third_party/boringssl/crypto/fipsmodule/hmac/hmac.cc.inc +218 -0
  269. package/runtime/third_party/boringssl/crypto/fipsmodule/keccak/internal.h +165 -0
  270. package/runtime/third_party/boringssl/crypto/fipsmodule/keccak/keccak.cc.inc +647 -0
  271. package/runtime/third_party/boringssl/crypto/fipsmodule/mldsa/fips_known_values.inc +1345 -0
  272. package/runtime/third_party/boringssl/crypto/fipsmodule/mldsa/mldsa.cc.inc +3323 -0
  273. package/runtime/third_party/boringssl/crypto/fipsmodule/mlkem/fips_known_values.inc +411 -0
  274. package/runtime/third_party/boringssl/crypto/fipsmodule/mlkem/mlkem.cc.inc +1856 -0
  275. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/android_entropy_client.cc.inc +82 -0
  276. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/ctrdrbg.cc.inc +401 -0
  277. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/internal.h +99 -0
  278. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/rand.cc.inc +486 -0
  279. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/internal.h +167 -0
  280. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/padding.cc.inc +371 -0
  281. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/rsa.cc.inc +996 -0
  282. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.cc.inc +1000 -0
  283. package/runtime/third_party/boringssl/crypto/fipsmodule/self_check/fips.cc.inc +129 -0
  284. package/runtime/third_party/boringssl/crypto/fipsmodule/self_check/self_check.cc.inc +1093 -0
  285. package/runtime/third_party/boringssl/crypto/fipsmodule/service_indicator/internal.h +112 -0
  286. package/runtime/third_party/boringssl/crypto/fipsmodule/service_indicator/service_indicator.cc.inc +330 -0
  287. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/internal.h +205 -0
  288. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/sha1.cc.inc +404 -0
  289. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/sha256.cc.inc +315 -0
  290. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/sha512.cc.inc +473 -0
  291. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/address.h +144 -0
  292. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/fips_known_values.inc +674 -0
  293. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/fors.cc.inc +179 -0
  294. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/fors.h +48 -0
  295. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/merkle.cc.inc +164 -0
  296. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/merkle.h +58 -0
  297. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/params.h +178 -0
  298. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +690 -0
  299. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/thash.cc.inc +326 -0
  300. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/thash.h +71 -0
  301. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/wots.cc.inc +172 -0
  302. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/wots.h +40 -0
  303. package/runtime/third_party/boringssl/crypto/fipsmodule/tls/internal.h +33 -0
  304. package/runtime/third_party/boringssl/crypto/fipsmodule/tls/kdf.cc.inc +180 -0
  305. package/runtime/third_party/boringssl/crypto/fuzzer_mode.cc +30 -0
  306. package/runtime/third_party/boringssl/crypto/hpke/hpke.cc +1514 -0
  307. package/runtime/third_party/boringssl/crypto/hrss/asm/poly_rq_mul.S +8489 -0
  308. package/runtime/third_party/boringssl/crypto/hrss/hrss.cc +2189 -0
  309. package/runtime/third_party/boringssl/crypto/hrss/internal.h +64 -0
  310. package/runtime/third_party/boringssl/crypto/internal.h +1767 -0
  311. package/runtime/third_party/boringssl/crypto/lhash/internal.h +222 -0
  312. package/runtime/third_party/boringssl/crypto/lhash/lhash.cc +312 -0
  313. package/runtime/third_party/boringssl/crypto/md4/md4.cc +207 -0
  314. package/runtime/third_party/boringssl/crypto/md5/internal.h +34 -0
  315. package/runtime/third_party/boringssl/crypto/md5/md5.cc +255 -0
  316. package/runtime/third_party/boringssl/crypto/mem.cc +577 -0
  317. package/runtime/third_party/boringssl/crypto/mem_internal.h +706 -0
  318. package/runtime/third_party/boringssl/crypto/mldsa/mldsa.cc +296 -0
  319. package/runtime/third_party/boringssl/crypto/mlkem/mlkem.cc +108 -0
  320. package/runtime/third_party/boringssl/crypto/obj/obj.cc +494 -0
  321. package/runtime/third_party/boringssl/crypto/obj/obj_dat.h +11722 -0
  322. package/runtime/third_party/boringssl/crypto/obj/obj_xref.cc +83 -0
  323. package/runtime/third_party/boringssl/crypto/params_internal.h +30 -0
  324. package/runtime/third_party/boringssl/crypto/pem/internal.h +135 -0
  325. package/runtime/third_party/boringssl/crypto/pem/pem_all.cc +153 -0
  326. package/runtime/third_party/boringssl/crypto/pem/pem_info.cc +250 -0
  327. package/runtime/third_party/boringssl/crypto/pem/pem_lib.cc +707 -0
  328. package/runtime/third_party/boringssl/crypto/pem/pem_oth.cc +45 -0
  329. package/runtime/third_party/boringssl/crypto/pem/pem_pk8.cc +211 -0
  330. package/runtime/third_party/boringssl/crypto/pem/pem_pkey.cc +147 -0
  331. package/runtime/third_party/boringssl/crypto/pem/pem_x509.cc +25 -0
  332. package/runtime/third_party/boringssl/crypto/pem/pem_xaux.cc +25 -0
  333. package/runtime/third_party/boringssl/crypto/pkcs7/internal.h +67 -0
  334. package/runtime/third_party/boringssl/crypto/pkcs7/pkcs7.cc +198 -0
  335. package/runtime/third_party/boringssl/crypto/pkcs7/pkcs7_x509.cc +527 -0
  336. package/runtime/third_party/boringssl/crypto/pkcs8/internal.h +98 -0
  337. package/runtime/third_party/boringssl/crypto/pkcs8/p5_pbev2.cc +286 -0
  338. package/runtime/third_party/boringssl/crypto/pkcs8/pkcs8.cc +473 -0
  339. package/runtime/third_party/boringssl/crypto/pkcs8/pkcs8_x509.cc +1328 -0
  340. package/runtime/third_party/boringssl/crypto/poly1305/internal.h +54 -0
  341. package/runtime/third_party/boringssl/crypto/poly1305/poly1305.cc +315 -0
  342. package/runtime/third_party/boringssl/crypto/poly1305/poly1305_arm.cc +294 -0
  343. package/runtime/third_party/boringssl/crypto/poly1305/poly1305_arm_asm.S +2017 -0
  344. package/runtime/third_party/boringssl/crypto/poly1305/poly1305_vec.cc +853 -0
  345. package/runtime/third_party/boringssl/crypto/pool/internal.h +95 -0
  346. package/runtime/third_party/boringssl/crypto/pool/pool.cc +282 -0
  347. package/runtime/third_party/boringssl/crypto/rand/deterministic.cc +58 -0
  348. package/runtime/third_party/boringssl/crypto/rand/fork_detect.cc +222 -0
  349. package/runtime/third_party/boringssl/crypto/rand/forkunsafe.cc +44 -0
  350. package/runtime/third_party/boringssl/crypto/rand/getentropy.cc +53 -0
  351. package/runtime/third_party/boringssl/crypto/rand/internal.h +67 -0
  352. package/runtime/third_party/boringssl/crypto/rand/ios.cc +35 -0
  353. package/runtime/third_party/boringssl/crypto/rand/rand.cc +79 -0
  354. package/runtime/third_party/boringssl/crypto/rand/trusty.cc +39 -0
  355. package/runtime/third_party/boringssl/crypto/rand/urandom.cc +149 -0
  356. package/runtime/third_party/boringssl/crypto/rand/windows.cc +91 -0
  357. package/runtime/third_party/boringssl/crypto/rc4/rc4.cc +56 -0
  358. package/runtime/third_party/boringssl/crypto/refcount.cc +49 -0
  359. package/runtime/third_party/boringssl/crypto/rsa/internal.h +51 -0
  360. package/runtime/third_party/boringssl/crypto/rsa/rsa_asn1.cc +404 -0
  361. package/runtime/third_party/boringssl/crypto/rsa/rsa_crypt.cc +530 -0
  362. package/runtime/third_party/boringssl/crypto/rsa/rsa_extra.cc +30 -0
  363. package/runtime/third_party/boringssl/crypto/rsa/rsa_print.cc +25 -0
  364. package/runtime/third_party/boringssl/crypto/sha/sha1.cc +55 -0
  365. package/runtime/third_party/boringssl/crypto/sha/sha256.cc +89 -0
  366. package/runtime/third_party/boringssl/crypto/sha/sha512.cc +106 -0
  367. package/runtime/third_party/boringssl/crypto/siphash/siphash.cc +81 -0
  368. package/runtime/third_party/boringssl/crypto/slhdsa/slhdsa.cc +167 -0
  369. package/runtime/third_party/boringssl/crypto/spake2plus/internal.h +204 -0
  370. package/runtime/third_party/boringssl/crypto/spake2plus/spake2plus.cc +501 -0
  371. package/runtime/third_party/boringssl/crypto/stack/stack.cc +462 -0
  372. package/runtime/third_party/boringssl/crypto/thread.cc +68 -0
  373. package/runtime/third_party/boringssl/crypto/thread_none.cc +48 -0
  374. package/runtime/third_party/boringssl/crypto/thread_pthread.cc +138 -0
  375. package/runtime/third_party/boringssl/crypto/thread_win.cc +227 -0
  376. package/runtime/third_party/boringssl/crypto/trust_token/internal.h +405 -0
  377. package/runtime/third_party/boringssl/crypto/trust_token/pmbtoken.cc +1672 -0
  378. package/runtime/third_party/boringssl/crypto/trust_token/trust_token.cc +701 -0
  379. package/runtime/third_party/boringssl/crypto/trust_token/voprf.cc +1266 -0
  380. package/runtime/third_party/boringssl/crypto/x509/a_digest.cc +52 -0
  381. package/runtime/third_party/boringssl/crypto/x509/a_sign.cc +100 -0
  382. package/runtime/third_party/boringssl/crypto/x509/a_verify.cc +77 -0
  383. package/runtime/third_party/boringssl/crypto/x509/algorithm.cc +167 -0
  384. package/runtime/third_party/boringssl/crypto/x509/asn1_gen.cc +540 -0
  385. package/runtime/third_party/boringssl/crypto/x509/by_dir.cc +301 -0
  386. package/runtime/third_party/boringssl/crypto/x509/by_file.cc +226 -0
  387. package/runtime/third_party/boringssl/crypto/x509/i2d_pr.cc +37 -0
  388. package/runtime/third_party/boringssl/crypto/x509/internal.h +697 -0
  389. package/runtime/third_party/boringssl/crypto/x509/name_print.cc +187 -0
  390. package/runtime/third_party/boringssl/crypto/x509/policy.cc +686 -0
  391. package/runtime/third_party/boringssl/crypto/x509/rsa_pss.cc +187 -0
  392. package/runtime/third_party/boringssl/crypto/x509/t_crl.cc +106 -0
  393. package/runtime/third_party/boringssl/crypto/x509/t_req.cc +206 -0
  394. package/runtime/third_party/boringssl/crypto/x509/t_x509.cc +292 -0
  395. package/runtime/third_party/boringssl/crypto/x509/t_x509a.cc +81 -0
  396. package/runtime/third_party/boringssl/crypto/x509/v3_akey.cc +174 -0
  397. package/runtime/third_party/boringssl/crypto/x509/v3_akeya.cc +31 -0
  398. package/runtime/third_party/boringssl/crypto/x509/v3_alt.cc +636 -0
  399. package/runtime/third_party/boringssl/crypto/x509/v3_bcons.cc +96 -0
  400. package/runtime/third_party/boringssl/crypto/x509/v3_bitst.cc +100 -0
  401. package/runtime/third_party/boringssl/crypto/x509/v3_conf.cc +369 -0
  402. package/runtime/third_party/boringssl/crypto/x509/v3_cpols.cc +417 -0
  403. package/runtime/third_party/boringssl/crypto/x509/v3_crld.cc +471 -0
  404. package/runtime/third_party/boringssl/crypto/x509/v3_enum.cc +74 -0
  405. package/runtime/third_party/boringssl/crypto/x509/v3_extku.cc +97 -0
  406. package/runtime/third_party/boringssl/crypto/x509/v3_genn.cc +238 -0
  407. package/runtime/third_party/boringssl/crypto/x509/v3_ia5.cc +83 -0
  408. package/runtime/third_party/boringssl/crypto/x509/v3_info.cc +162 -0
  409. package/runtime/third_party/boringssl/crypto/x509/v3_int.cc +83 -0
  410. package/runtime/third_party/boringssl/crypto/x509/v3_lib.cc +349 -0
  411. package/runtime/third_party/boringssl/crypto/x509/v3_ncons.cc +798 -0
  412. package/runtime/third_party/boringssl/crypto/x509/v3_ocsp.cc +92 -0
  413. package/runtime/third_party/boringssl/crypto/x509/v3_pcons.cc +102 -0
  414. package/runtime/third_party/boringssl/crypto/x509/v3_pmaps.cc +110 -0
  415. package/runtime/third_party/boringssl/crypto/x509/v3_prn.cc +183 -0
  416. package/runtime/third_party/boringssl/crypto/x509/v3_purp.cc +580 -0
  417. package/runtime/third_party/boringssl/crypto/x509/v3_skey.cc +128 -0
  418. package/runtime/third_party/boringssl/crypto/x509/v3_utl.cc +1311 -0
  419. package/runtime/third_party/boringssl/crypto/x509/x509.cc +47 -0
  420. package/runtime/third_party/boringssl/crypto/x509/x509_att.cc +188 -0
  421. package/runtime/third_party/boringssl/crypto/x509/x509_cmp.cc +243 -0
  422. package/runtime/third_party/boringssl/crypto/x509/x509_d2.cc +66 -0
  423. package/runtime/third_party/boringssl/crypto/x509/x509_def.cc +42 -0
  424. package/runtime/third_party/boringssl/crypto/x509/x509_ext.cc +161 -0
  425. package/runtime/third_party/boringssl/crypto/x509/x509_lu.cc +570 -0
  426. package/runtime/third_party/boringssl/crypto/x509/x509_mtc.cc +598 -0
  427. package/runtime/third_party/boringssl/crypto/x509/x509_obj.cc +169 -0
  428. package/runtime/third_party/boringssl/crypto/x509/x509_req.cc +248 -0
  429. package/runtime/third_party/boringssl/crypto/x509/x509_set.cc +166 -0
  430. package/runtime/third_party/boringssl/crypto/x509/x509_trs.cc +123 -0
  431. package/runtime/third_party/boringssl/crypto/x509/x509_txt.cc +147 -0
  432. package/runtime/third_party/boringssl/crypto/x509/x509_v3.cc +249 -0
  433. package/runtime/third_party/boringssl/crypto/x509/x509_vfy.cc +1531 -0
  434. package/runtime/third_party/boringssl/crypto/x509/x509_vpm.cc +449 -0
  435. package/runtime/third_party/boringssl/crypto/x509/x509cset.cc +222 -0
  436. package/runtime/third_party/boringssl/crypto/x509/x509name.cc +377 -0
  437. package/runtime/third_party/boringssl/crypto/x509/x509rset.cc +55 -0
  438. package/runtime/third_party/boringssl/crypto/x509/x509spki.cc +91 -0
  439. package/runtime/third_party/boringssl/crypto/x509/x_algor.cc +223 -0
  440. package/runtime/third_party/boringssl/crypto/x509/x_all.cc +352 -0
  441. package/runtime/third_party/boringssl/crypto/x509/x_attrib.cc +61 -0
  442. package/runtime/third_party/boringssl/crypto/x509/x_crl.cc +325 -0
  443. package/runtime/third_party/boringssl/crypto/x509/x_exten.cc +42 -0
  444. package/runtime/third_party/boringssl/crypto/x509/x_name.cc +407 -0
  445. package/runtime/third_party/boringssl/crypto/x509/x_pubkey.cc +199 -0
  446. package/runtime/third_party/boringssl/crypto/x509/x_req.cc +80 -0
  447. package/runtime/third_party/boringssl/crypto/x509/x_sig.cc +51 -0
  448. package/runtime/third_party/boringssl/crypto/x509/x_spki.cc +44 -0
  449. package/runtime/third_party/boringssl/crypto/x509/x_x509.cc +495 -0
  450. package/runtime/third_party/boringssl/crypto/x509/x_x509a.cc +169 -0
  451. package/runtime/third_party/boringssl/crypto/xwing/xwing.cc +257 -0
  452. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx2-x86_64-apple.S +1326 -0
  453. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx2-x86_64-linux.S +1327 -0
  454. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx512-x86_64-apple.S +1252 -0
  455. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx512-x86_64-linux.S +1253 -0
  456. package/runtime/third_party/boringssl/gen/bcm/aesni-gcm-x86_64-apple.S +873 -0
  457. package/runtime/third_party/boringssl/gen/bcm/aesni-gcm-x86_64-linux.S +885 -0
  458. package/runtime/third_party/boringssl/gen/bcm/aesni-x86-apple.S +2490 -0
  459. package/runtime/third_party/boringssl/gen/bcm/aesni-x86-linux.S +2530 -0
  460. package/runtime/third_party/boringssl/gen/bcm/aesni-x86_64-apple.S +2413 -0
  461. package/runtime/third_party/boringssl/gen/bcm/aesni-x86_64-linux.S +2397 -0
  462. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv7-linux.S +784 -0
  463. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv8-apple.S +792 -0
  464. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv8-linux.S +786 -0
  465. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv8-win.S +798 -0
  466. package/runtime/third_party/boringssl/gen/bcm/aesv8-gcm-armv8-apple.S +2912 -0
  467. package/runtime/third_party/boringssl/gen/bcm/aesv8-gcm-armv8-linux.S +2907 -0
  468. package/runtime/third_party/boringssl/gen/bcm/aesv8-gcm-armv8-win.S +2915 -0
  469. package/runtime/third_party/boringssl/gen/bcm/armv4-mont-linux.S +932 -0
  470. package/runtime/third_party/boringssl/gen/bcm/armv8-mont-apple.S +1440 -0
  471. package/runtime/third_party/boringssl/gen/bcm/armv8-mont-linux.S +1440 -0
  472. package/runtime/third_party/boringssl/gen/bcm/armv8-mont-win.S +1446 -0
  473. package/runtime/third_party/boringssl/gen/bcm/bn-586-apple.S +530 -0
  474. package/runtime/third_party/boringssl/gen/bcm/bn-586-linux.S +540 -0
  475. package/runtime/third_party/boringssl/gen/bcm/bn-armv8-apple.S +88 -0
  476. package/runtime/third_party/boringssl/gen/bcm/bn-armv8-linux.S +87 -0
  477. package/runtime/third_party/boringssl/gen/bcm/bn-armv8-win.S +87 -0
  478. package/runtime/third_party/boringssl/gen/bcm/bsaes-armv7-linux.S +1520 -0
  479. package/runtime/third_party/boringssl/gen/bcm/co-586-apple.S +1256 -0
  480. package/runtime/third_party/boringssl/gen/bcm/co-586-linux.S +1264 -0
  481. package/runtime/third_party/boringssl/gen/bcm/ghash-armv4-linux.S +242 -0
  482. package/runtime/third_party/boringssl/gen/bcm/ghash-neon-armv8-apple.S +337 -0
  483. package/runtime/third_party/boringssl/gen/bcm/ghash-neon-armv8-linux.S +335 -0
  484. package/runtime/third_party/boringssl/gen/bcm/ghash-neon-armv8-win.S +341 -0
  485. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86-apple.S +288 -0
  486. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86-linux.S +292 -0
  487. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86_64-apple.S +426 -0
  488. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86_64-linux.S +425 -0
  489. package/runtime/third_party/boringssl/gen/bcm/ghash-x86-apple.S +322 -0
  490. package/runtime/third_party/boringssl/gen/bcm/ghash-x86-linux.S +328 -0
  491. package/runtime/third_party/boringssl/gen/bcm/ghash-x86_64-apple.S +1134 -0
  492. package/runtime/third_party/boringssl/gen/bcm/ghash-x86_64-linux.S +1129 -0
  493. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv7-linux.S +244 -0
  494. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv8-apple.S +567 -0
  495. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv8-linux.S +563 -0
  496. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv8-win.S +571 -0
  497. package/runtime/third_party/boringssl/gen/bcm/p256-armv8-asm-apple.S +1744 -0
  498. package/runtime/third_party/boringssl/gen/bcm/p256-armv8-asm-linux.S +1725 -0
  499. package/runtime/third_party/boringssl/gen/bcm/p256-armv8-asm-win.S +1765 -0
  500. package/runtime/third_party/boringssl/gen/bcm/p256-x86_64-asm-apple.S +4544 -0
  501. package/runtime/third_party/boringssl/gen/bcm/p256-x86_64-asm-linux.S +4600 -0
  502. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-armv8-asm-apple.S +310 -0
  503. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-armv8-asm-linux.S +310 -0
  504. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-armv8-asm-win.S +310 -0
  505. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-x86_64-asm-apple.S +321 -0
  506. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-x86_64-asm-linux.S +335 -0
  507. package/runtime/third_party/boringssl/gen/bcm/rdrand-x86_64-apple.S +58 -0
  508. package/runtime/third_party/boringssl/gen/bcm/rdrand-x86_64-linux.S +57 -0
  509. package/runtime/third_party/boringssl/gen/bcm/rsaz-avx2-apple.S +1756 -0
  510. package/runtime/third_party/boringssl/gen/bcm/rsaz-avx2-linux.S +1751 -0
  511. package/runtime/third_party/boringssl/gen/bcm/sha1-586-apple.S +3782 -0
  512. package/runtime/third_party/boringssl/gen/bcm/sha1-586-linux.S +3788 -0
  513. package/runtime/third_party/boringssl/gen/bcm/sha1-armv4-large-linux.S +1479 -0
  514. package/runtime/third_party/boringssl/gen/bcm/sha1-armv8-apple.S +1219 -0
  515. package/runtime/third_party/boringssl/gen/bcm/sha1-armv8-linux.S +1218 -0
  516. package/runtime/third_party/boringssl/gen/bcm/sha1-armv8-win.S +1222 -0
  517. package/runtime/third_party/boringssl/gen/bcm/sha1-x86_64-apple.S +5454 -0
  518. package/runtime/third_party/boringssl/gen/bcm/sha1-x86_64-linux.S +5450 -0
  519. package/runtime/third_party/boringssl/gen/bcm/sha256-586-apple.S +5593 -0
  520. package/runtime/third_party/boringssl/gen/bcm/sha256-586-linux.S +5599 -0
  521. package/runtime/third_party/boringssl/gen/bcm/sha256-armv4-linux.S +2840 -0
  522. package/runtime/third_party/boringssl/gen/bcm/sha256-armv8-apple.S +1195 -0
  523. package/runtime/third_party/boringssl/gen/bcm/sha256-armv8-linux.S +1194 -0
  524. package/runtime/third_party/boringssl/gen/bcm/sha256-armv8-win.S +1198 -0
  525. package/runtime/third_party/boringssl/gen/bcm/sha256-x86_64-apple.S +4173 -0
  526. package/runtime/third_party/boringssl/gen/bcm/sha256-x86_64-linux.S +4170 -0
  527. package/runtime/third_party/boringssl/gen/bcm/sha512-586-apple.S +2406 -0
  528. package/runtime/third_party/boringssl/gen/bcm/sha512-586-linux.S +2410 -0
  529. package/runtime/third_party/boringssl/gen/bcm/sha512-armv4-linux.S +1857 -0
  530. package/runtime/third_party/boringssl/gen/bcm/sha512-armv8-apple.S +1598 -0
  531. package/runtime/third_party/boringssl/gen/bcm/sha512-armv8-linux.S +1597 -0
  532. package/runtime/third_party/boringssl/gen/bcm/sha512-armv8-win.S +1601 -0
  533. package/runtime/third_party/boringssl/gen/bcm/sha512-x86_64-apple.S +2979 -0
  534. package/runtime/third_party/boringssl/gen/bcm/sha512-x86_64-linux.S +2978 -0
  535. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv7-linux.S +1225 -0
  536. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv8-apple.S +1238 -0
  537. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv8-linux.S +1220 -0
  538. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv8-win.S +1256 -0
  539. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86-apple.S +680 -0
  540. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86-linux.S +706 -0
  541. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86_64-apple.S +1146 -0
  542. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86_64-linux.S +1133 -0
  543. package/runtime/third_party/boringssl/gen/bcm/x86-mont-apple.S +216 -0
  544. package/runtime/third_party/boringssl/gen/bcm/x86-mont-linux.S +218 -0
  545. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont-apple.S +1238 -0
  546. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont-linux.S +1237 -0
  547. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont5-apple.S +3644 -0
  548. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont5-linux.S +3628 -0
  549. package/runtime/third_party/boringssl/gen/boringssl_prefix_symbols_internal_x86_64_win_asm.inc +325 -0
  550. package/runtime/third_party/boringssl/gen/boringssl_prefix_symbols_internal_x86_win_asm.inc +325 -0
  551. package/runtime/third_party/boringssl/gen/crypto/aes128gcmsiv-x86_64-apple.S +3113 -0
  552. package/runtime/third_party/boringssl/gen/crypto/aes128gcmsiv-x86_64-linux.S +3091 -0
  553. package/runtime/third_party/boringssl/gen/crypto/chacha-armv4-linux.S +1450 -0
  554. package/runtime/third_party/boringssl/gen/crypto/chacha-armv8-apple.S +1969 -0
  555. package/runtime/third_party/boringssl/gen/crypto/chacha-armv8-linux.S +1967 -0
  556. package/runtime/third_party/boringssl/gen/crypto/chacha-armv8-win.S +1973 -0
  557. package/runtime/third_party/boringssl/gen/crypto/chacha-x86-apple.S +957 -0
  558. package/runtime/third_party/boringssl/gen/crypto/chacha-x86-linux.S +961 -0
  559. package/runtime/third_party/boringssl/gen/crypto/chacha-x86_64-apple.S +1608 -0
  560. package/runtime/third_party/boringssl/gen/crypto/chacha-x86_64-linux.S +1611 -0
  561. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_armv8-apple.S +3010 -0
  562. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_armv8-linux.S +3008 -0
  563. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_armv8-win.S +3014 -0
  564. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_x86_64-apple.S +8903 -0
  565. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_x86_64-linux.S +8940 -0
  566. package/runtime/third_party/boringssl/gen/crypto/err_data.cc +1578 -0
  567. package/runtime/third_party/boringssl/gen/crypto/md5-586-apple.S +684 -0
  568. package/runtime/third_party/boringssl/gen/crypto/md5-586-linux.S +686 -0
  569. package/runtime/third_party/boringssl/gen/crypto/md5-x86_64-apple.S +690 -0
  570. package/runtime/third_party/boringssl/gen/crypto/md5-x86_64-linux.S +695 -0
  571. package/runtime/third_party/boringssl/include/openssl/aead.h +650 -0
  572. package/runtime/third_party/boringssl/include/openssl/aes.h +173 -0
  573. package/runtime/third_party/boringssl/include/openssl/arm_arch.h +24 -0
  574. package/runtime/third_party/boringssl/include/openssl/asm_base.h +219 -0
  575. package/runtime/third_party/boringssl/include/openssl/asn1.h +2002 -0
  576. package/runtime/third_party/boringssl/include/openssl/asn1_mac.h +18 -0
  577. package/runtime/third_party/boringssl/include/openssl/asn1t.h +584 -0
  578. package/runtime/third_party/boringssl/include/openssl/base.h +548 -0
  579. package/runtime/third_party/boringssl/include/openssl/base64.h +156 -0
  580. package/runtime/third_party/boringssl/include/openssl/bio.h +1061 -0
  581. package/runtime/third_party/boringssl/include/openssl/blake2.h +63 -0
  582. package/runtime/third_party/boringssl/include/openssl/blowfish.h +58 -0
  583. package/runtime/third_party/boringssl/include/openssl/bn.h +986 -0
  584. package/runtime/third_party/boringssl/include/openssl/buf.h +95 -0
  585. package/runtime/third_party/boringssl/include/openssl/buffer.h +18 -0
  586. package/runtime/third_party/boringssl/include/openssl/bytestring.h +798 -0
  587. package/runtime/third_party/boringssl/include/openssl/cast.h +91 -0
  588. package/runtime/third_party/boringssl/include/openssl/chacha.h +47 -0
  589. package/runtime/third_party/boringssl/include/openssl/cipher.h +819 -0
  590. package/runtime/third_party/boringssl/include/openssl/cmac.h +91 -0
  591. package/runtime/third_party/boringssl/include/openssl/cms.h +147 -0
  592. package/runtime/third_party/boringssl/include/openssl/conf.h +136 -0
  593. package/runtime/third_party/boringssl/include/openssl/configuration.h +18 -0
  594. package/runtime/third_party/boringssl/include/openssl/cpu.h +18 -0
  595. package/runtime/third_party/boringssl/include/openssl/crypto.h +235 -0
  596. package/runtime/third_party/boringssl/include/openssl/ctrdrbg.h +116 -0
  597. package/runtime/third_party/boringssl/include/openssl/curve25519.h +309 -0
  598. package/runtime/third_party/boringssl/include/openssl/des.h +134 -0
  599. package/runtime/third_party/boringssl/include/openssl/dh.h +336 -0
  600. package/runtime/third_party/boringssl/include/openssl/digest.h +399 -0
  601. package/runtime/third_party/boringssl/include/openssl/dsa.h +392 -0
  602. package/runtime/third_party/boringssl/include/openssl/dtls1.h +16 -0
  603. package/runtime/third_party/boringssl/include/openssl/e_os2.h +18 -0
  604. package/runtime/third_party/boringssl/include/openssl/ec.h +530 -0
  605. package/runtime/third_party/boringssl/include/openssl/ec_key.h +358 -0
  606. package/runtime/third_party/boringssl/include/openssl/ecdh.h +67 -0
  607. package/runtime/third_party/boringssl/include/openssl/ecdsa.h +242 -0
  608. package/runtime/third_party/boringssl/include/openssl/engine.h +109 -0
  609. package/runtime/third_party/boringssl/include/openssl/err.h +416 -0
  610. package/runtime/third_party/boringssl/include/openssl/evp.h +1645 -0
  611. package/runtime/third_party/boringssl/include/openssl/evp_errors.h +66 -0
  612. package/runtime/third_party/boringssl/include/openssl/ex_data.h +117 -0
  613. package/runtime/third_party/boringssl/include/openssl/hkdf.h +68 -0
  614. package/runtime/third_party/boringssl/include/openssl/hmac.h +151 -0
  615. package/runtime/third_party/boringssl/include/openssl/hpke.h +456 -0
  616. package/runtime/third_party/boringssl/include/openssl/hrss.h +108 -0
  617. package/runtime/third_party/boringssl/include/openssl/is_boringssl.h +16 -0
  618. package/runtime/third_party/boringssl/include/openssl/kdf.h +92 -0
  619. package/runtime/third_party/boringssl/include/openssl/lhash.h +18 -0
  620. package/runtime/third_party/boringssl/include/openssl/md4.h +73 -0
  621. package/runtime/third_party/boringssl/include/openssl/md5.h +67 -0
  622. package/runtime/third_party/boringssl/include/openssl/mem.h +215 -0
  623. package/runtime/third_party/boringssl/include/openssl/mldsa.h +486 -0
  624. package/runtime/third_party/boringssl/include/openssl/mlkem.h +222 -0
  625. package/runtime/third_party/boringssl/include/openssl/nid.h +5561 -0
  626. package/runtime/third_party/boringssl/include/openssl/obj.h +225 -0
  627. package/runtime/third_party/boringssl/include/openssl/obj_mac.h +18 -0
  628. package/runtime/third_party/boringssl/include/openssl/objects.h +18 -0
  629. package/runtime/third_party/boringssl/include/openssl/opensslconf.h +108 -0
  630. package/runtime/third_party/boringssl/include/openssl/opensslv.h +18 -0
  631. package/runtime/third_party/boringssl/include/openssl/ossl_typ.h +18 -0
  632. package/runtime/third_party/boringssl/include/openssl/params.h +42 -0
  633. package/runtime/third_party/boringssl/include/openssl/pem.h +769 -0
  634. package/runtime/third_party/boringssl/include/openssl/pkcs12.h +18 -0
  635. package/runtime/third_party/boringssl/include/openssl/pkcs7.h +239 -0
  636. package/runtime/third_party/boringssl/include/openssl/pkcs8.h +267 -0
  637. package/runtime/third_party/boringssl/include/openssl/poly1305.h +52 -0
  638. package/runtime/third_party/boringssl/include/openssl/pool.h +137 -0
  639. package/runtime/third_party/boringssl/include/openssl/posix_time.h +51 -0
  640. package/runtime/third_party/boringssl/include/openssl/prefix_symbols.h +8000 -0
  641. package/runtime/third_party/boringssl/include/openssl/prefix_symbols_internal_S.h +633 -0
  642. package/runtime/third_party/boringssl/include/openssl/prefix_symbols_internal_c.h +329 -0
  643. package/runtime/third_party/boringssl/include/openssl/rand.h +138 -0
  644. package/runtime/third_party/boringssl/include/openssl/rc4.h +54 -0
  645. package/runtime/third_party/boringssl/include/openssl/ripemd.h +71 -0
  646. package/runtime/third_party/boringssl/include/openssl/rsa.h +893 -0
  647. package/runtime/third_party/boringssl/include/openssl/safestack.h +16 -0
  648. package/runtime/third_party/boringssl/include/openssl/service_indicator.h +19 -0
  649. package/runtime/third_party/boringssl/include/openssl/sha.h +108 -0
  650. package/runtime/third_party/boringssl/include/openssl/sha2.h +201 -0
  651. package/runtime/third_party/boringssl/include/openssl/siphash.h +37 -0
  652. package/runtime/third_party/boringssl/include/openssl/slhdsa.h +250 -0
  653. package/runtime/third_party/boringssl/include/openssl/span.h +376 -0
  654. package/runtime/third_party/boringssl/include/openssl/srtp.h +18 -0
  655. package/runtime/third_party/boringssl/include/openssl/ssl.h +7211 -0
  656. package/runtime/third_party/boringssl/include/openssl/ssl3.h +171 -0
  657. package/runtime/third_party/boringssl/include/openssl/stack.h +688 -0
  658. package/runtime/third_party/boringssl/include/openssl/target.h +246 -0
  659. package/runtime/third_party/boringssl/include/openssl/thread.h +114 -0
  660. package/runtime/third_party/boringssl/include/openssl/time.h +22 -0
  661. package/runtime/third_party/boringssl/include/openssl/tls1.h +263 -0
  662. package/runtime/third_party/boringssl/include/openssl/tls_prf.h +47 -0
  663. package/runtime/third_party/boringssl/include/openssl/trust_token.h +349 -0
  664. package/runtime/third_party/boringssl/include/openssl/type_check.h +37 -0
  665. package/runtime/third_party/boringssl/include/openssl/types.h +18 -0
  666. package/runtime/third_party/boringssl/include/openssl/x509.h +5404 -0
  667. package/runtime/third_party/boringssl/include/openssl/x509_vfy.h +18 -0
  668. package/runtime/third_party/boringssl/include/openssl/x509v3.h +63 -0
  669. package/runtime/third_party/boringssl/include/openssl/x509v3_errors.h +84 -0
  670. package/runtime/third_party/boringssl/include/openssl/xwing.h +115 -0
  671. package/runtime/third_party/boringssl/sources.json +696 -0
  672. package/runtime/third_party/boringssl/ssl/bio_ssl.cc +196 -0
  673. package/runtime/third_party/boringssl/ssl/d1_both.cc +1137 -0
  674. package/runtime/third_party/boringssl/ssl/d1_lib.cc +245 -0
  675. package/runtime/third_party/boringssl/ssl/d1_pkt.cc +322 -0
  676. package/runtime/third_party/boringssl/ssl/d1_srtp.cc +128 -0
  677. package/runtime/third_party/boringssl/ssl/dtls_method.cc +216 -0
  678. package/runtime/third_party/boringssl/ssl/dtls_record.cc +586 -0
  679. package/runtime/third_party/boringssl/ssl/encrypted_client_hello.cc +1110 -0
  680. package/runtime/third_party/boringssl/ssl/extensions.cc +5368 -0
  681. package/runtime/third_party/boringssl/ssl/handoff.cc +625 -0
  682. package/runtime/third_party/boringssl/ssl/handshake.cc +694 -0
  683. package/runtime/third_party/boringssl/ssl/handshake_client.cc +1958 -0
  684. package/runtime/third_party/boringssl/ssl/handshake_server.cc +1875 -0
  685. package/runtime/third_party/boringssl/ssl/internal.h +4506 -0
  686. package/runtime/third_party/boringssl/ssl/s3_both.cc +555 -0
  687. package/runtime/third_party/boringssl/ssl/s3_lib.cc +88 -0
  688. package/runtime/third_party/boringssl/ssl/s3_pkt.cc +396 -0
  689. package/runtime/third_party/boringssl/ssl/ssl_aead_ctx.cc +416 -0
  690. package/runtime/third_party/boringssl/ssl/ssl_asn1.cc +851 -0
  691. package/runtime/third_party/boringssl/ssl/ssl_buffer.cc +304 -0
  692. package/runtime/third_party/boringssl/ssl/ssl_cert.cc +723 -0
  693. package/runtime/third_party/boringssl/ssl/ssl_cipher.cc +1762 -0
  694. package/runtime/third_party/boringssl/ssl/ssl_credential.cc +913 -0
  695. package/runtime/third_party/boringssl/ssl/ssl_file.cc +375 -0
  696. package/runtime/third_party/boringssl/ssl/ssl_key_share.cc +445 -0
  697. package/runtime/third_party/boringssl/ssl/ssl_lib.cc +4132 -0
  698. package/runtime/third_party/boringssl/ssl/ssl_privkey.cc +973 -0
  699. package/runtime/third_party/boringssl/ssl/ssl_session.cc +1273 -0
  700. package/runtime/third_party/boringssl/ssl/ssl_stat.cc +162 -0
  701. package/runtime/third_party/boringssl/ssl/ssl_transcript.cc +224 -0
  702. package/runtime/third_party/boringssl/ssl/ssl_versions.cc +436 -0
  703. package/runtime/third_party/boringssl/ssl/ssl_x509.cc +1229 -0
  704. package/runtime/third_party/boringssl/ssl/t1_enc.cc +266 -0
  705. package/runtime/third_party/boringssl/ssl/tls13_both.cc +764 -0
  706. package/runtime/third_party/boringssl/ssl/tls13_client.cc +1325 -0
  707. package/runtime/third_party/boringssl/ssl/tls13_enc.cc +746 -0
  708. package/runtime/third_party/boringssl/ssl/tls13_server.cc +1623 -0
  709. package/runtime/third_party/boringssl/ssl/tls_method.cc +266 -0
  710. package/runtime/third_party/boringssl/ssl/tls_record.cc +524 -0
  711. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_curve25519_adx_mul.S +178 -0
  712. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_curve25519_adx_square.S +146 -0
  713. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_p256_adx_mul.S +177 -0
  714. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_p256_adx_sqr.S +166 -0
  715. package/runtime/third_party/boringssl/third_party/fiat/bedrock_unverified_bareminimum.c.inc +47 -0
  716. package/runtime/third_party/boringssl/third_party/fiat/bedrock_unverified_platform.c.inc +137 -0
  717. package/runtime/third_party/boringssl/third_party/fiat/curve25519_32.h +1571 -0
  718. package/runtime/third_party/boringssl/third_party/fiat/curve25519_64.h +978 -0
  719. package/runtime/third_party/boringssl/third_party/fiat/curve25519_64_adx.h +700 -0
  720. package/runtime/third_party/boringssl/third_party/fiat/curve25519_64_msvc.h +1281 -0
  721. package/runtime/third_party/boringssl/third_party/fiat/p256_32.h +4760 -0
  722. package/runtime/third_party/boringssl/third_party/fiat/p256_64.h +1984 -0
  723. package/runtime/third_party/boringssl/third_party/fiat/p256_64_msvc.h +1939 -0
  724. package/runtime/third_party/boringssl/third_party/fiat/p256_field.c.inc +26 -0
  725. package/runtime/third_party/boringssl/third_party/fiat/p256_field_32.br.c.inc +71 -0
  726. package/runtime/third_party/boringssl/third_party/fiat/p256_field_64.br.c.inc +84 -0
  727. package/runtime/third_party/boringssl/third_party/fiat/p256_point.br.c.inc +112 -0
  728. package/runtime/third_party/v8-ieee754/README.md +2 -1
  729. package/runtime/third_party/v8-ieee754/convert.py +4 -0
  730. package/runtime/third_party/v8-ieee754/ieee754.c +1 -1
  731. package/runtime/third_party/bearssl/LICENSE.txt +0 -21
  732. package/runtime/third_party/bearssl/README.txt +0 -136
  733. package/runtime/third_party/bearssl/VERSION +0 -1
  734. package/runtime/third_party/bearssl/inc/bearssl.h +0 -183
  735. package/runtime/third_party/bearssl/inc/bearssl_aead.h +0 -1059
  736. package/runtime/third_party/bearssl/inc/bearssl_block.h +0 -2618
  737. package/runtime/third_party/bearssl/inc/bearssl_ec.h +0 -967
  738. package/runtime/third_party/bearssl/inc/bearssl_hash.h +0 -1346
  739. package/runtime/third_party/bearssl/inc/bearssl_hmac.h +0 -241
  740. package/runtime/third_party/bearssl/inc/bearssl_kdf.h +0 -284
  741. package/runtime/third_party/bearssl/inc/bearssl_pem.h +0 -294
  742. package/runtime/third_party/bearssl/inc/bearssl_prf.h +0 -150
  743. package/runtime/third_party/bearssl/inc/bearssl_rand.h +0 -397
  744. package/runtime/third_party/bearssl/inc/bearssl_rsa.h +0 -1655
  745. package/runtime/third_party/bearssl/inc/bearssl_ssl.h +0 -4296
  746. package/runtime/third_party/bearssl/inc/bearssl_x509.h +0 -1474
  747. package/runtime/third_party/bearssl/src/aead/ccm.c +0 -346
  748. package/runtime/third_party/bearssl/src/aead/eax.c +0 -525
  749. package/runtime/third_party/bearssl/src/aead/gcm.c +0 -318
  750. package/runtime/third_party/bearssl/src/codec/ccopy.c +0 -44
  751. package/runtime/third_party/bearssl/src/codec/dec16be.c +0 -38
  752. package/runtime/third_party/bearssl/src/codec/dec16le.c +0 -38
  753. package/runtime/third_party/bearssl/src/codec/dec32be.c +0 -38
  754. package/runtime/third_party/bearssl/src/codec/dec32le.c +0 -38
  755. package/runtime/third_party/bearssl/src/codec/dec64be.c +0 -38
  756. package/runtime/third_party/bearssl/src/codec/dec64le.c +0 -38
  757. package/runtime/third_party/bearssl/src/codec/enc16be.c +0 -38
  758. package/runtime/third_party/bearssl/src/codec/enc16le.c +0 -38
  759. package/runtime/third_party/bearssl/src/codec/enc32be.c +0 -38
  760. package/runtime/third_party/bearssl/src/codec/enc32le.c +0 -38
  761. package/runtime/third_party/bearssl/src/codec/enc64be.c +0 -38
  762. package/runtime/third_party/bearssl/src/codec/enc64le.c +0 -38
  763. package/runtime/third_party/bearssl/src/codec/pemdec.c +0 -526
  764. package/runtime/third_party/bearssl/src/codec/pemdec.t0 +0 -314
  765. package/runtime/third_party/bearssl/src/codec/pemenc.c +0 -173
  766. package/runtime/third_party/bearssl/src/config.h +0 -247
  767. package/runtime/third_party/bearssl/src/ec/ec_all_m15.c +0 -121
  768. package/runtime/third_party/bearssl/src/ec/ec_all_m31.c +0 -171
  769. package/runtime/third_party/bearssl/src/ec/ec_c25519_i15.c +0 -398
  770. package/runtime/third_party/bearssl/src/ec/ec_c25519_i31.c +0 -390
  771. package/runtime/third_party/bearssl/src/ec/ec_c25519_m15.c +0 -1478
  772. package/runtime/third_party/bearssl/src/ec/ec_c25519_m31.c +0 -800
  773. package/runtime/third_party/bearssl/src/ec/ec_c25519_m62.c +0 -605
  774. package/runtime/third_party/bearssl/src/ec/ec_c25519_m64.c +0 -831
  775. package/runtime/third_party/bearssl/src/ec/ec_curve25519.c +0 -46
  776. package/runtime/third_party/bearssl/src/ec/ec_default.c +0 -36
  777. package/runtime/third_party/bearssl/src/ec/ec_keygen.c +0 -86
  778. package/runtime/third_party/bearssl/src/ec/ec_p256_m15.c +0 -2124
  779. package/runtime/third_party/bearssl/src/ec/ec_p256_m31.c +0 -1469
  780. package/runtime/third_party/bearssl/src/ec/ec_p256_m62.c +0 -1765
  781. package/runtime/third_party/bearssl/src/ec/ec_p256_m64.c +0 -1781
  782. package/runtime/third_party/bearssl/src/ec/ec_prime_i15.c +0 -824
  783. package/runtime/third_party/bearssl/src/ec/ec_prime_i31.c +0 -826
  784. package/runtime/third_party/bearssl/src/ec/ec_pubkey.c +0 -85
  785. package/runtime/third_party/bearssl/src/ec/ec_secp256r1.c +0 -51
  786. package/runtime/third_party/bearssl/src/ec/ec_secp384r1.c +0 -57
  787. package/runtime/third_party/bearssl/src/ec/ec_secp521r1.c +0 -64
  788. package/runtime/third_party/bearssl/src/ec/ecdsa_atr.c +0 -134
  789. package/runtime/third_party/bearssl/src/ec/ecdsa_default_sign_asn1.c +0 -36
  790. package/runtime/third_party/bearssl/src/ec/ecdsa_default_sign_raw.c +0 -36
  791. package/runtime/third_party/bearssl/src/ec/ecdsa_default_vrfy_asn1.c +0 -36
  792. package/runtime/third_party/bearssl/src/ec/ecdsa_default_vrfy_raw.c +0 -36
  793. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_bits.c +0 -47
  794. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_sign_asn1.c +0 -45
  795. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_sign_raw.c +0 -174
  796. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_vrfy_asn1.c +0 -48
  797. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_vrfy_raw.c +0 -166
  798. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_bits.c +0 -47
  799. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_sign_asn1.c +0 -45
  800. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_sign_raw.c +0 -173
  801. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_vrfy_asn1.c +0 -48
  802. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_vrfy_raw.c +0 -165
  803. package/runtime/third_party/bearssl/src/ec/ecdsa_rta.c +0 -121
  804. package/runtime/third_party/bearssl/src/hash/dig_oid.c +0 -84
  805. package/runtime/third_party/bearssl/src/hash/dig_size.c +0 -50
  806. package/runtime/third_party/bearssl/src/hash/ghash_ctmul.c +0 -345
  807. package/runtime/third_party/bearssl/src/hash/ghash_ctmul32.c +0 -251
  808. package/runtime/third_party/bearssl/src/hash/ghash_ctmul64.c +0 -154
  809. package/runtime/third_party/bearssl/src/hash/ghash_pclmul.c +0 -389
  810. package/runtime/third_party/bearssl/src/hash/ghash_pwr8.c +0 -411
  811. package/runtime/third_party/bearssl/src/hash/md5.c +0 -208
  812. package/runtime/third_party/bearssl/src/hash/md5sha1.c +0 -141
  813. package/runtime/third_party/bearssl/src/hash/mgf1.c +0 -56
  814. package/runtime/third_party/bearssl/src/hash/multihash.c +0 -166
  815. package/runtime/third_party/bearssl/src/hash/sha1.c +0 -191
  816. package/runtime/third_party/bearssl/src/hash/sha2big.c +0 -285
  817. package/runtime/third_party/bearssl/src/hash/sha2small.c +0 -341
  818. package/runtime/third_party/bearssl/src/inner.h +0 -2577
  819. package/runtime/third_party/bearssl/src/int/i15_add.c +0 -46
  820. package/runtime/third_party/bearssl/src/int/i15_bitlen.c +0 -44
  821. package/runtime/third_party/bearssl/src/int/i15_decmod.c +0 -124
  822. package/runtime/third_party/bearssl/src/int/i15_decode.c +0 -56
  823. package/runtime/third_party/bearssl/src/int/i15_decred.c +0 -100
  824. package/runtime/third_party/bearssl/src/int/i15_encode.c +0 -56
  825. package/runtime/third_party/bearssl/src/int/i15_fmont.c +0 -59
  826. package/runtime/third_party/bearssl/src/int/i15_iszero.c +0 -39
  827. package/runtime/third_party/bearssl/src/int/i15_moddiv.c +0 -465
  828. package/runtime/third_party/bearssl/src/int/i15_modpow.c +0 -50
  829. package/runtime/third_party/bearssl/src/int/i15_modpow2.c +0 -160
  830. package/runtime/third_party/bearssl/src/int/i15_montmul.c +0 -184
  831. package/runtime/third_party/bearssl/src/int/i15_mulacc.c +0 -61
  832. package/runtime/third_party/bearssl/src/int/i15_muladd.c +0 -173
  833. package/runtime/third_party/bearssl/src/int/i15_ninv15.c +0 -38
  834. package/runtime/third_party/bearssl/src/int/i15_reduce.c +0 -66
  835. package/runtime/third_party/bearssl/src/int/i15_rshift.c +0 -47
  836. package/runtime/third_party/bearssl/src/int/i15_sub.c +0 -46
  837. package/runtime/third_party/bearssl/src/int/i15_tmont.c +0 -36
  838. package/runtime/third_party/bearssl/src/int/i31_add.c +0 -46
  839. package/runtime/third_party/bearssl/src/int/i31_bitlen.c +0 -44
  840. package/runtime/third_party/bearssl/src/int/i31_decmod.c +0 -124
  841. package/runtime/third_party/bearssl/src/int/i31_decode.c +0 -57
  842. package/runtime/third_party/bearssl/src/int/i31_decred.c +0 -103
  843. package/runtime/third_party/bearssl/src/int/i31_encode.c +0 -79
  844. package/runtime/third_party/bearssl/src/int/i31_fmont.c +0 -60
  845. package/runtime/third_party/bearssl/src/int/i31_iszero.c +0 -39
  846. package/runtime/third_party/bearssl/src/int/i31_moddiv.c +0 -488
  847. package/runtime/third_party/bearssl/src/int/i31_modpow.c +0 -65
  848. package/runtime/third_party/bearssl/src/int/i31_modpow2.c +0 -160
  849. package/runtime/third_party/bearssl/src/int/i31_montmul.c +0 -127
  850. package/runtime/third_party/bearssl/src/int/i31_mulacc.c +0 -74
  851. package/runtime/third_party/bearssl/src/int/i31_muladd.c +0 -157
  852. package/runtime/third_party/bearssl/src/int/i31_ninv31.c +0 -39
  853. package/runtime/third_party/bearssl/src/int/i31_reduce.c +0 -66
  854. package/runtime/third_party/bearssl/src/int/i31_rshift.c +0 -47
  855. package/runtime/third_party/bearssl/src/int/i31_sub.c +0 -46
  856. package/runtime/third_party/bearssl/src/int/i31_tmont.c +0 -36
  857. package/runtime/third_party/bearssl/src/int/i32_add.c +0 -51
  858. package/runtime/third_party/bearssl/src/int/i32_bitlen.c +0 -44
  859. package/runtime/third_party/bearssl/src/int/i32_decmod.c +0 -77
  860. package/runtime/third_party/bearssl/src/int/i32_decode.c +0 -63
  861. package/runtime/third_party/bearssl/src/int/i32_decred.c +0 -107
  862. package/runtime/third_party/bearssl/src/int/i32_div32.c +0 -56
  863. package/runtime/third_party/bearssl/src/int/i32_encode.c +0 -72
  864. package/runtime/third_party/bearssl/src/int/i32_fmont.c +0 -60
  865. package/runtime/third_party/bearssl/src/int/i32_iszero.c +0 -39
  866. package/runtime/third_party/bearssl/src/int/i32_modpow.c +0 -65
  867. package/runtime/third_party/bearssl/src/int/i32_montmul.c +0 -69
  868. package/runtime/third_party/bearssl/src/int/i32_mulacc.c +0 -56
  869. package/runtime/third_party/bearssl/src/int/i32_muladd.c +0 -138
  870. package/runtime/third_party/bearssl/src/int/i32_ninv32.c +0 -39
  871. package/runtime/third_party/bearssl/src/int/i32_reduce.c +0 -66
  872. package/runtime/third_party/bearssl/src/int/i32_sub.c +0 -51
  873. package/runtime/third_party/bearssl/src/int/i32_tmont.c +0 -36
  874. package/runtime/third_party/bearssl/src/int/i62_modpow2.c +0 -493
  875. package/runtime/third_party/bearssl/src/kdf/hkdf.c +0 -107
  876. package/runtime/third_party/bearssl/src/kdf/shake.c +0 -590
  877. package/runtime/third_party/bearssl/src/mac/hmac.c +0 -122
  878. package/runtime/third_party/bearssl/src/mac/hmac_ct.c +0 -193
  879. package/runtime/third_party/bearssl/src/rand/aesctr_drbg.c +0 -206
  880. package/runtime/third_party/bearssl/src/rand/hmac_drbg.c +0 -157
  881. package/runtime/third_party/bearssl/src/rand/sysrng.c +0 -252
  882. package/runtime/third_party/bearssl/src/rsa/rsa_default_keygen.c +0 -38
  883. package/runtime/third_party/bearssl/src/rsa/rsa_default_modulus.c +0 -36
  884. package/runtime/third_party/bearssl/src/rsa/rsa_default_oaep_decrypt.c +0 -38
  885. package/runtime/third_party/bearssl/src/rsa/rsa_default_oaep_encrypt.c +0 -38
  886. package/runtime/third_party/bearssl/src/rsa/rsa_default_pkcs1_sign.c +0 -38
  887. package/runtime/third_party/bearssl/src/rsa/rsa_default_pkcs1_vrfy.c +0 -38
  888. package/runtime/third_party/bearssl/src/rsa/rsa_default_priv.c +0 -38
  889. package/runtime/third_party/bearssl/src/rsa/rsa_default_privexp.c +0 -36
  890. package/runtime/third_party/bearssl/src/rsa/rsa_default_pss_sign.c +0 -38
  891. package/runtime/third_party/bearssl/src/rsa/rsa_default_pss_vrfy.c +0 -38
  892. package/runtime/third_party/bearssl/src/rsa/rsa_default_pub.c +0 -38
  893. package/runtime/third_party/bearssl/src/rsa/rsa_default_pubexp.c +0 -36
  894. package/runtime/third_party/bearssl/src/rsa/rsa_i15_keygen.c +0 -583
  895. package/runtime/third_party/bearssl/src/rsa/rsa_i15_modulus.c +0 -99
  896. package/runtime/third_party/bearssl/src/rsa/rsa_i15_oaep_decrypt.c +0 -41
  897. package/runtime/third_party/bearssl/src/rsa/rsa_i15_oaep_encrypt.c +0 -44
  898. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pkcs1_sign.c +0 -37
  899. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pkcs1_vrfy.c +0 -43
  900. package/runtime/third_party/bearssl/src/rsa/rsa_i15_priv.c +0 -209
  901. package/runtime/third_party/bearssl/src/rsa/rsa_i15_privexp.c +0 -320
  902. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pss_sign.c +0 -40
  903. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pss_vrfy.c +0 -44
  904. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pub.c +0 -113
  905. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pubexp.c +0 -152
  906. package/runtime/third_party/bearssl/src/rsa/rsa_i31_keygen.c +0 -37
  907. package/runtime/third_party/bearssl/src/rsa/rsa_i31_keygen_inner.c +0 -608
  908. package/runtime/third_party/bearssl/src/rsa/rsa_i31_modulus.c +0 -99
  909. package/runtime/third_party/bearssl/src/rsa/rsa_i31_oaep_decrypt.c +0 -41
  910. package/runtime/third_party/bearssl/src/rsa/rsa_i31_oaep_encrypt.c +0 -44
  911. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pkcs1_sign.c +0 -37
  912. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pkcs1_vrfy.c +0 -43
  913. package/runtime/third_party/bearssl/src/rsa/rsa_i31_priv.c +0 -203
  914. package/runtime/third_party/bearssl/src/rsa/rsa_i31_privexp.c +0 -318
  915. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pss_sign.c +0 -40
  916. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pss_vrfy.c +0 -44
  917. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pub.c +0 -106
  918. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pubexp.c +0 -152
  919. package/runtime/third_party/bearssl/src/rsa/rsa_i32_oaep_decrypt.c +0 -41
  920. package/runtime/third_party/bearssl/src/rsa/rsa_i32_oaep_encrypt.c +0 -44
  921. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pkcs1_sign.c +0 -37
  922. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pkcs1_vrfy.c +0 -43
  923. package/runtime/third_party/bearssl/src/rsa/rsa_i32_priv.c +0 -160
  924. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pss_sign.c +0 -40
  925. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pss_vrfy.c +0 -44
  926. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pub.c +0 -77
  927. package/runtime/third_party/bearssl/src/rsa/rsa_i62_keygen.c +0 -57
  928. package/runtime/third_party/bearssl/src/rsa/rsa_i62_oaep_decrypt.c +0 -61
  929. package/runtime/third_party/bearssl/src/rsa/rsa_i62_oaep_encrypt.c +0 -64
  930. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pkcs1_sign.c +0 -57
  931. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pkcs1_vrfy.c +0 -63
  932. package/runtime/third_party/bearssl/src/rsa/rsa_i62_priv.c +0 -223
  933. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pss_sign.c +0 -60
  934. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pss_vrfy.c +0 -64
  935. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pub.c +0 -125
  936. package/runtime/third_party/bearssl/src/rsa/rsa_oaep_pad.c +0 -112
  937. package/runtime/third_party/bearssl/src/rsa/rsa_oaep_unpad.c +0 -145
  938. package/runtime/third_party/bearssl/src/rsa/rsa_pkcs1_sig_pad.c +0 -100
  939. package/runtime/third_party/bearssl/src/rsa/rsa_pkcs1_sig_unpad.c +0 -121
  940. package/runtime/third_party/bearssl/src/rsa/rsa_pss_sig_pad.c +0 -106
  941. package/runtime/third_party/bearssl/src/rsa/rsa_pss_sig_unpad.c +0 -121
  942. package/runtime/third_party/bearssl/src/rsa/rsa_ssl_decrypt.c +0 -52
  943. package/runtime/third_party/bearssl/src/settings.c +0 -306
  944. package/runtime/third_party/bearssl/src/symcipher/aes_big_cbcdec.c +0 -69
  945. package/runtime/third_party/bearssl/src/symcipher/aes_big_cbcenc.c +0 -67
  946. package/runtime/third_party/bearssl/src/symcipher/aes_big_ctr.c +0 -84
  947. package/runtime/third_party/bearssl/src/symcipher/aes_big_ctrcbc.c +0 -142
  948. package/runtime/third_party/bearssl/src/symcipher/aes_big_dec.c +0 -254
  949. package/runtime/third_party/bearssl/src/symcipher/aes_big_enc.c +0 -157
  950. package/runtime/third_party/bearssl/src/symcipher/aes_common.c +0 -112
  951. package/runtime/third_party/bearssl/src/symcipher/aes_ct.c +0 -328
  952. package/runtime/third_party/bearssl/src/symcipher/aes_ct64.c +0 -398
  953. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_cbcdec.c +0 -104
  954. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_cbcenc.c +0 -81
  955. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_ctr.c +0 -114
  956. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_ctrcbc.c +0 -433
  957. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_dec.c +0 -159
  958. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_enc.c +0 -115
  959. package/runtime/third_party/bearssl/src/symcipher/aes_ct_cbcdec.c +0 -111
  960. package/runtime/third_party/bearssl/src/symcipher/aes_ct_cbcenc.c +0 -91
  961. package/runtime/third_party/bearssl/src/symcipher/aes_ct_ctr.c +0 -116
  962. package/runtime/third_party/bearssl/src/symcipher/aes_ct_ctrcbc.c +0 -422
  963. package/runtime/third_party/bearssl/src/symcipher/aes_ct_dec.c +0 -170
  964. package/runtime/third_party/bearssl/src/symcipher/aes_ct_enc.c +0 -112
  965. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8.c +0 -445
  966. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_cbcdec.c +0 -670
  967. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_cbcenc.c +0 -417
  968. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_ctr.c +0 -717
  969. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_ctrcbc.c +0 -946
  970. package/runtime/third_party/bearssl/src/symcipher/aes_small_cbcdec.c +0 -69
  971. package/runtime/third_party/bearssl/src/symcipher/aes_small_cbcenc.c +0 -67
  972. package/runtime/third_party/bearssl/src/symcipher/aes_small_ctr.c +0 -84
  973. package/runtime/third_party/bearssl/src/symcipher/aes_small_ctrcbc.c +0 -142
  974. package/runtime/third_party/bearssl/src/symcipher/aes_small_dec.c +0 -176
  975. package/runtime/third_party/bearssl/src/symcipher/aes_small_enc.c +0 -129
  976. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni.c +0 -240
  977. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_cbcdec.c +0 -223
  978. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_cbcenc.c +0 -122
  979. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_ctr.c +0 -211
  980. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_ctrcbc.c +0 -596
  981. package/runtime/third_party/bearssl/src/symcipher/chacha20_ct.c +0 -106
  982. package/runtime/third_party/bearssl/src/symcipher/chacha20_sse2.c +0 -237
  983. package/runtime/third_party/bearssl/src/symcipher/des_ct.c +0 -411
  984. package/runtime/third_party/bearssl/src/symcipher/des_ct_cbcdec.c +0 -87
  985. package/runtime/third_party/bearssl/src/symcipher/des_ct_cbcenc.c +0 -69
  986. package/runtime/third_party/bearssl/src/symcipher/des_support.c +0 -166
  987. package/runtime/third_party/bearssl/src/symcipher/des_tab.c +0 -310
  988. package/runtime/third_party/bearssl/src/symcipher/des_tab_cbcdec.c +0 -85
  989. package/runtime/third_party/bearssl/src/symcipher/des_tab_cbcenc.c +0 -67
  990. package/runtime/third_party/bearssl/src/symcipher/poly1305_ctmul.c +0 -260
  991. package/runtime/third_party/bearssl/src/symcipher/poly1305_ctmul32.c +0 -297
  992. package/runtime/third_party/bearssl/src/symcipher/poly1305_ctmulq.c +0 -475
  993. package/runtime/third_party/bearssl/src/symcipher/poly1305_i15.c +0 -221
  994. package/runtime/third_party/bearssl/src/x509/asn1.t0 +0 -757
  995. package/runtime/third_party/bearssl/src/x509/asn1enc.c +0 -93
  996. package/runtime/third_party/bearssl/src/x509/encode_ec_pk8der.c +0 -110
  997. package/runtime/third_party/bearssl/src/x509/encode_ec_rawder.c +0 -161
  998. package/runtime/third_party/bearssl/src/x509/encode_rsa_pk8der.c +0 -97
  999. package/runtime/third_party/bearssl/src/x509/encode_rsa_rawder.c +0 -96
  1000. package/runtime/third_party/bearssl/src/x509/skey_decoder.c +0 -653
  1001. package/runtime/third_party/bearssl/src/x509/skey_decoder.t0 +0 -376
  1002. package/runtime/third_party/bearssl/src/x509/x509_decoder.c +0 -776
  1003. package/runtime/third_party/bearssl/src/x509/x509_decoder.t0 +0 -324
  1004. package/runtime/third_party/bearssl/src/x509/x509_knownkey.c +0 -105
  1005. package/runtime/third_party/bearssl/src/x509/x509_minimal.c +0 -1722
  1006. package/runtime/third_party/bearssl/src/x509/x509_minimal.t0 +0 -1526
  1007. package/runtime/third_party/bearssl/src/x509/x509_minimal_full.c +0 -59
@@ -0,0 +1,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