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,1252 @@
1
+ // This file is generated from a similarly-named Perl script in the BoringSSL
2
+ // source tree. Do not edit by hand.
3
+
4
+ #include <openssl/asm_base.h>
5
+
6
+ #if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && defined(__APPLE__)
7
+ .section __DATA,__const
8
+
9
+ .p2align 6
10
+ aes_gcm_avx512_constants:
11
+
12
+ // A shuffle mask that reflects the bytes of 16-byte blocks
13
+ L$bswap_mask:
14
+ .quad 0x08090a0b0c0d0e0f, 0x0001020304050607
15
+
16
+ // This is the GHASH reducing polynomial without its constant term, i.e.
17
+ // x^128 + x^7 + x^2 + x, represented using the backwards mapping
18
+ // between bits and polynomial coefficients.
19
+ //
20
+ // Alternatively, it can be interpreted as the naturally-ordered
21
+ // representation of the polynomial x^127 + x^126 + x^121 + 1, i.e. the
22
+ // "reversed" GHASH reducing polynomial without its x^128 term.
23
+ L$gfpoly:
24
+ .quad 1, 0xc200000000000000
25
+
26
+ // Same as above, but with the (1 << 64) bit set.
27
+ L$gfpoly_and_internal_carrybit:
28
+ .quad 1, 0xc200000000000001
29
+
30
+ // Values needed to prepare the initial vector of counter blocks.
31
+ L$ctr_pattern:
32
+ .quad 0, 0
33
+ .quad 1, 0
34
+ .quad 2, 0
35
+ .quad 3, 0
36
+
37
+ // The number of AES blocks per vector, as a 128-bit value.
38
+ L$inc_4blocks:
39
+ .quad 4, 0
40
+
41
+ .text
42
+ .globl _gcm_init_vpclmulqdq_avx512
43
+ .private_extern _gcm_init_vpclmulqdq_avx512
44
+
45
+ .p2align 5
46
+ _gcm_init_vpclmulqdq_avx512:
47
+
48
+
49
+ _CET_ENDBR
50
+ // Get pointer to lowest set of key powers (located at end of array).
51
+ leaq 256-64(%rdi),%r8
52
+
53
+ // Load the byte-reflected hash subkey. BoringSSL provides it in
54
+ // byte-reflected form except the two halves are in the wrong order.
55
+ vpshufd $0x4e,(%rsi),%xmm3
56
+
57
+ // Finish preprocessing the first key power, H^1. Since this GHASH
58
+ // implementation operates directly on values with the backwards bit
59
+ // order specified by the GCM standard, it's necessary to preprocess the
60
+ // raw key as follows. First, reflect its bytes. Second, multiply it
61
+ // by x^-1 mod x^128 + x^7 + x^2 + x + 1 (if using the backwards
62
+ // interpretation of polynomial coefficients), which can also be
63
+ // interpreted as multiplication by x mod x^128 + x^127 + x^126 + x^121
64
+ // + 1 using the alternative, natural interpretation of polynomial
65
+ // coefficients. For details, see the comment above _ghash_mul.
66
+ //
67
+ // Either way, for the multiplication the concrete operation performed
68
+ // is a left shift of the 128-bit value by 1 bit, then an XOR with (0xc2
69
+ // << 120) | 1 if a 1 bit was carried out. However, there's no 128-bit
70
+ // wide shift instruction, so instead double each of the two 64-bit
71
+ // halves and incorporate the internal carry bit into the value XOR'd.
72
+ vpshufd $0xd3,%xmm3,%xmm0
73
+ vpsrad $31,%xmm0,%xmm0
74
+ vpaddq %xmm3,%xmm3,%xmm3
75
+ // H_CUR_XMM ^= TMP0_XMM & gfpoly_and_internal_carrybit
76
+ vpternlogd $0x78,L$gfpoly_and_internal_carrybit(%rip),%xmm0,%xmm3
77
+
78
+ // Load the gfpoly constant.
79
+ vbroadcasti32x4 L$gfpoly(%rip),%zmm5
80
+
81
+ // Square H^1 to get H^2.
82
+ //
83
+ // Note that as with H^1, all higher key powers also need an extra
84
+ // factor of x^-1 (or x using the natural interpretation). Nothing
85
+ // special needs to be done to make this happen, though: H^1 * H^1 would
86
+ // end up with two factors of x^-1, but the multiplication consumes one.
87
+ // So the product H^2 ends up with the desired one factor of x^-1.
88
+ vpclmulqdq $0x00,%xmm3,%xmm3,%xmm0 // LO = a_L * a_L
89
+ vpclmulqdq $0x11,%xmm3,%xmm3,%xmm4 // HI = a_H * a_H
90
+ vpclmulqdq $0x01,%xmm0,%xmm5,%xmm1 // LO_L*(x^63 + x^62 + x^57)
91
+ vpshufd $0x4e,%xmm0,%xmm0 // Swap halves of LO
92
+ vpxor %xmm0,%xmm1,%xmm1 // Fold LO into MI
93
+ vpclmulqdq $0x01,%xmm1,%xmm5,%xmm0 // MI_L*(x^63 + x^62 + x^57)
94
+ vpshufd $0x4e,%xmm1,%xmm1 // Swap halves of MI
95
+ vpternlogd $0x96,%xmm0,%xmm1,%xmm4 // Fold MI into HI
96
+
97
+
98
+ // Create H_CUR_YMM = [H^2, H^1] and H_INC_YMM = [H^2, H^2].
99
+ vinserti128 $1,%xmm3,%ymm4,%ymm3
100
+ vinserti128 $1,%xmm4,%ymm4,%ymm4
101
+
102
+ // Create H_CUR = [H^4, H^3, H^2, H^1] and H_INC = [H^4, H^4, H^4, H^4].
103
+ vpclmulqdq $0x00,%ymm4,%ymm3,%ymm0 // LO = a_L * b_L
104
+ vpclmulqdq $0x01,%ymm4,%ymm3,%ymm1 // MI_0 = a_L * b_H
105
+ vpclmulqdq $0x10,%ymm4,%ymm3,%ymm2 // MI_1 = a_H * b_L
106
+ vpxord %ymm2,%ymm1,%ymm1 // MI = MI_0 + MI_1
107
+ vpclmulqdq $0x01,%ymm0,%ymm5,%ymm2 // LO_L*(x^63 + x^62 + x^57)
108
+ vpshufd $0x4e,%ymm0,%ymm0 // Swap halves of LO
109
+ vpternlogd $0x96,%ymm2,%ymm0,%ymm1 // Fold LO into MI
110
+ vpclmulqdq $0x11,%ymm4,%ymm3,%ymm4 // HI = a_H * b_H
111
+ vpclmulqdq $0x01,%ymm1,%ymm5,%ymm0 // MI_L*(x^63 + x^62 + x^57)
112
+ vpshufd $0x4e,%ymm1,%ymm1 // Swap halves of MI
113
+ vpternlogd $0x96,%ymm0,%ymm1,%ymm4 // Fold MI into HI
114
+
115
+ vinserti64x4 $1,%ymm3,%zmm4,%zmm3
116
+ vshufi64x2 $0,%zmm4,%zmm4,%zmm4
117
+
118
+ // Store the lowest set of key powers.
119
+ vmovdqu8 %zmm3,(%r8)
120
+
121
+ // Compute and store the remaining key powers.
122
+ // Repeatedly multiply [H^(i+3), H^(i+2), H^(i+1), H^i] by
123
+ // [H^4, H^4, H^4, H^4] to get [H^(i+7), H^(i+6), H^(i+5), H^(i+4)].
124
+ movl $3,%eax
125
+ L$precompute_next:
126
+ subq $64,%r8
127
+ vpclmulqdq $0x00,%zmm4,%zmm3,%zmm0 // LO = a_L * b_L
128
+ vpclmulqdq $0x01,%zmm4,%zmm3,%zmm1 // MI_0 = a_L * b_H
129
+ vpclmulqdq $0x10,%zmm4,%zmm3,%zmm2 // MI_1 = a_H * b_L
130
+ vpxord %zmm2,%zmm1,%zmm1 // MI = MI_0 + MI_1
131
+ vpclmulqdq $0x01,%zmm0,%zmm5,%zmm2 // LO_L*(x^63 + x^62 + x^57)
132
+ vpshufd $0x4e,%zmm0,%zmm0 // Swap halves of LO
133
+ vpternlogd $0x96,%zmm2,%zmm0,%zmm1 // Fold LO into MI
134
+ vpclmulqdq $0x11,%zmm4,%zmm3,%zmm3 // HI = a_H * b_H
135
+ vpclmulqdq $0x01,%zmm1,%zmm5,%zmm0 // MI_L*(x^63 + x^62 + x^57)
136
+ vpshufd $0x4e,%zmm1,%zmm1 // Swap halves of MI
137
+ vpternlogd $0x96,%zmm0,%zmm1,%zmm3 // Fold MI into HI
138
+
139
+ vmovdqu8 %zmm3,(%r8)
140
+ decl %eax
141
+ jnz L$precompute_next
142
+
143
+ vzeroupper // This is needed after using ymm or zmm registers.
144
+ ret
145
+
146
+
147
+
148
+ .globl _gcm_gmult_vpclmulqdq_avx512
149
+ .private_extern _gcm_gmult_vpclmulqdq_avx512
150
+
151
+ .p2align 5
152
+ .alt_entry _gcm_gmult_vpclmulqdq_avx512
153
+ _gcm_gmult_vpclmulqdq_avx512:
154
+
155
+
156
+ _CET_ENDBR
157
+
158
+
159
+
160
+ vmovdqu (%rdi),%xmm0
161
+ vmovdqu L$bswap_mask(%rip),%xmm1
162
+ vmovdqu 256-16(%rsi),%xmm2
163
+ vmovdqu L$gfpoly(%rip),%xmm3
164
+ vpshufb %xmm1,%xmm0,%xmm0
165
+
166
+ vpclmulqdq $0x00,%xmm2,%xmm0,%xmm4 // LO = a_L * b_L
167
+ vpclmulqdq $0x01,%xmm2,%xmm0,%xmm5 // MI_0 = a_L * b_H
168
+ vpclmulqdq $0x10,%xmm2,%xmm0,%xmm6 // MI_1 = a_H * b_L
169
+ vpxord %xmm6,%xmm5,%xmm5 // MI = MI_0 + MI_1
170
+ vpclmulqdq $0x01,%xmm4,%xmm3,%xmm6 // LO_L*(x^63 + x^62 + x^57)
171
+ vpshufd $0x4e,%xmm4,%xmm4 // Swap halves of LO
172
+ vpternlogd $0x96,%xmm6,%xmm4,%xmm5 // Fold LO into MI
173
+ vpclmulqdq $0x11,%xmm2,%xmm0,%xmm0 // HI = a_H * b_H
174
+ vpclmulqdq $0x01,%xmm5,%xmm3,%xmm4 // MI_L*(x^63 + x^62 + x^57)
175
+ vpshufd $0x4e,%xmm5,%xmm5 // Swap halves of MI
176
+ vpternlogd $0x96,%xmm4,%xmm5,%xmm0 // Fold MI into HI
177
+
178
+
179
+ vpshufb %xmm1,%xmm0,%xmm0
180
+ vmovdqu %xmm0,(%rdi)
181
+
182
+ // No need for vzeroupper, since only xmm registers were used.
183
+ ret
184
+
185
+
186
+
187
+ .globl _gcm_ghash_vpclmulqdq_avx512
188
+ .private_extern _gcm_ghash_vpclmulqdq_avx512
189
+
190
+ .p2align 5
191
+ .alt_entry _gcm_ghash_vpclmulqdq_avx512
192
+ _gcm_ghash_vpclmulqdq_avx512:
193
+
194
+
195
+ _CET_ENDBR
196
+
197
+
198
+
199
+ // Load the bswap_mask and gfpoly constants. Since AADLEN is usually small,
200
+ // usually only 128-bit vectors will be used. So as an optimization, don't
201
+ // broadcast these constants to all 128-bit lanes quite yet.
202
+ vmovdqu L$bswap_mask(%rip),%xmm4
203
+ vmovdqu L$gfpoly(%rip),%xmm10
204
+
205
+ // Load the GHASH accumulator.
206
+ vmovdqu (%rdi),%xmm5
207
+ vpshufb %xmm4,%xmm5,%xmm5
208
+
209
+ // Optimize for AADLEN < 64 by checking for AADLEN < 64 before AADLEN < 256.
210
+ cmpq $64,%rcx
211
+ jb L$aad_blockbyblock
212
+
213
+ // AADLEN >= 64, so we'll operate on full vectors. Broadcast bswap_mask and
214
+ // gfpoly to all 128-bit lanes.
215
+ vshufi64x2 $0,%zmm4,%zmm4,%zmm4
216
+ vshufi64x2 $0,%zmm10,%zmm10,%zmm10
217
+
218
+ // Load the lowest set of key powers.
219
+ vmovdqu8 256-64(%rsi),%zmm9
220
+
221
+ cmpq $256,%rcx
222
+ jb L$aad_loop_1x
223
+
224
+ // AADLEN >= 256. Load the higher key powers.
225
+ vmovdqu8 256-256(%rsi),%zmm6
226
+ vmovdqu8 256-192(%rsi),%zmm7
227
+ vmovdqu8 256-128(%rsi),%zmm8
228
+
229
+ // Update GHASH with 256 bytes of AAD at a time.
230
+ L$aad_loop_4x:
231
+ vmovdqu8 0(%rdx),%zmm0
232
+ vmovdqu8 64(%rdx),%zmm1
233
+ vmovdqu8 128(%rdx),%zmm2
234
+ vmovdqu8 192(%rdx),%zmm3
235
+ vpshufb %zmm4,%zmm0,%zmm0
236
+ vpxord %zmm5,%zmm0,%zmm0
237
+ vpshufb %zmm4,%zmm1,%zmm1
238
+ vpshufb %zmm4,%zmm2,%zmm2
239
+ vpshufb %zmm4,%zmm3,%zmm3
240
+ vpclmulqdq $0x00,%zmm6,%zmm0,%zmm5 // LO_0
241
+ vpclmulqdq $0x00,%zmm7,%zmm1,%zmm11 // LO_1
242
+ vpclmulqdq $0x00,%zmm8,%zmm2,%zmm12 // LO_2
243
+ vpxord %zmm11,%zmm5,%zmm5 // sum(LO_{1,0})
244
+ vpclmulqdq $0x00,%zmm9,%zmm3,%zmm13 // LO_3
245
+ vpternlogd $0x96,%zmm13,%zmm12,%zmm5 // LO = sum(LO_{3,2,1,0})
246
+ vpclmulqdq $0x01,%zmm6,%zmm0,%zmm11 // MI_0
247
+ vpclmulqdq $0x01,%zmm7,%zmm1,%zmm12 // MI_1
248
+ vpclmulqdq $0x01,%zmm8,%zmm2,%zmm13 // MI_2
249
+ vpternlogd $0x96,%zmm13,%zmm12,%zmm11 // sum(MI_{2,1,0})
250
+ vpclmulqdq $0x01,%zmm9,%zmm3,%zmm12 // MI_3
251
+ vpclmulqdq $0x10,%zmm6,%zmm0,%zmm13 // MI_4
252
+ vpternlogd $0x96,%zmm13,%zmm12,%zmm11 // sum(MI_{4,3,2,1,0})
253
+ vpclmulqdq $0x10,%zmm7,%zmm1,%zmm12 // MI_5
254
+ vpclmulqdq $0x10,%zmm8,%zmm2,%zmm13 // MI_6
255
+ vpternlogd $0x96,%zmm13,%zmm12,%zmm11 // sum(MI_{6,5,4,3,2,1,0})
256
+ vpclmulqdq $0x01,%zmm5,%zmm10,%zmm13 // LO_L*(x^63 + x^62 + x^57)
257
+ vpclmulqdq $0x10,%zmm9,%zmm3,%zmm12 // MI_7
258
+ vpxord %zmm12,%zmm11,%zmm11 // MI = sum(MI_{7,6,5,4,3,2,1,0})
259
+ vpshufd $0x4e,%zmm5,%zmm5 // Swap halves of LO
260
+ vpclmulqdq $0x11,%zmm6,%zmm0,%zmm0 // HI_0
261
+ vpclmulqdq $0x11,%zmm7,%zmm1,%zmm1 // HI_1
262
+ vpclmulqdq $0x11,%zmm8,%zmm2,%zmm2 // HI_2
263
+ vpternlogd $0x96,%zmm13,%zmm5,%zmm11 // Fold LO into MI
264
+ vpclmulqdq $0x11,%zmm9,%zmm3,%zmm3 // HI_3
265
+ vpternlogd $0x96,%zmm2,%zmm1,%zmm0 // sum(HI_{2,1,0})
266
+ vpclmulqdq $0x01,%zmm11,%zmm10,%zmm12 // MI_L*(x^63 + x^62 + x^57)
267
+ vpxord %zmm3,%zmm0,%zmm5 // HI = sum(HI_{3,2,1,0})
268
+ vpshufd $0x4e,%zmm11,%zmm11 // Swap halves of MI
269
+ vpternlogd $0x96,%zmm12,%zmm11,%zmm5 // Fold MI into HI
270
+ vextracti32x4 $1,%zmm5,%xmm0
271
+ vextracti32x4 $2,%zmm5,%xmm1
272
+ vextracti32x4 $3,%zmm5,%xmm2
273
+ vpxord %xmm0,%xmm5,%xmm5
274
+ vpternlogd $0x96,%xmm1,%xmm2,%xmm5
275
+
276
+ addq $256,%rdx
277
+ subq $256,%rcx
278
+ cmpq $256,%rcx
279
+ jae L$aad_loop_4x
280
+
281
+ // Update GHASH with 64 bytes of AAD at a time.
282
+ cmpq $64,%rcx
283
+ jb L$aad_large_done
284
+ L$aad_loop_1x:
285
+ vmovdqu8 (%rdx),%zmm0
286
+ vpshufb %zmm4,%zmm0,%zmm0
287
+ vpxord %zmm0,%zmm5,%zmm5
288
+ vpclmulqdq $0x00,%zmm9,%zmm5,%zmm0 // LO = a_L * b_L
289
+ vpclmulqdq $0x01,%zmm9,%zmm5,%zmm1 // MI_0 = a_L * b_H
290
+ vpclmulqdq $0x10,%zmm9,%zmm5,%zmm2 // MI_1 = a_H * b_L
291
+ vpxord %zmm2,%zmm1,%zmm1 // MI = MI_0 + MI_1
292
+ vpclmulqdq $0x01,%zmm0,%zmm10,%zmm2 // LO_L*(x^63 + x^62 + x^57)
293
+ vpshufd $0x4e,%zmm0,%zmm0 // Swap halves of LO
294
+ vpternlogd $0x96,%zmm2,%zmm0,%zmm1 // Fold LO into MI
295
+ vpclmulqdq $0x11,%zmm9,%zmm5,%zmm5 // HI = a_H * b_H
296
+ vpclmulqdq $0x01,%zmm1,%zmm10,%zmm0 // MI_L*(x^63 + x^62 + x^57)
297
+ vpshufd $0x4e,%zmm1,%zmm1 // Swap halves of MI
298
+ vpternlogd $0x96,%zmm0,%zmm1,%zmm5 // Fold MI into HI
299
+
300
+ vextracti32x4 $1,%zmm5,%xmm0
301
+ vextracti32x4 $2,%zmm5,%xmm1
302
+ vextracti32x4 $3,%zmm5,%xmm2
303
+ vpxord %xmm0,%xmm5,%xmm5
304
+ vpternlogd $0x96,%xmm1,%xmm2,%xmm5
305
+
306
+ addq $64,%rdx
307
+ subq $64,%rcx
308
+ cmpq $64,%rcx
309
+ jae L$aad_loop_1x
310
+
311
+ L$aad_large_done:
312
+
313
+ // GHASH the remaining data 16 bytes at a time, using xmm registers only.
314
+ L$aad_blockbyblock:
315
+ testq %rcx,%rcx
316
+ jz L$aad_done
317
+ vmovdqu 256-16(%rsi),%xmm9
318
+ L$aad_loop_blockbyblock:
319
+ vmovdqu (%rdx),%xmm0
320
+ vpshufb %xmm4,%xmm0,%xmm0
321
+ vpxor %xmm0,%xmm5,%xmm5
322
+ vpclmulqdq $0x00,%xmm9,%xmm5,%xmm0 // LO = a_L * b_L
323
+ vpclmulqdq $0x01,%xmm9,%xmm5,%xmm1 // MI_0 = a_L * b_H
324
+ vpclmulqdq $0x10,%xmm9,%xmm5,%xmm2 // MI_1 = a_H * b_L
325
+ vpxord %xmm2,%xmm1,%xmm1 // MI = MI_0 + MI_1
326
+ vpclmulqdq $0x01,%xmm0,%xmm10,%xmm2 // LO_L*(x^63 + x^62 + x^57)
327
+ vpshufd $0x4e,%xmm0,%xmm0 // Swap halves of LO
328
+ vpternlogd $0x96,%xmm2,%xmm0,%xmm1 // Fold LO into MI
329
+ vpclmulqdq $0x11,%xmm9,%xmm5,%xmm5 // HI = a_H * b_H
330
+ vpclmulqdq $0x01,%xmm1,%xmm10,%xmm0 // MI_L*(x^63 + x^62 + x^57)
331
+ vpshufd $0x4e,%xmm1,%xmm1 // Swap halves of MI
332
+ vpternlogd $0x96,%xmm0,%xmm1,%xmm5 // Fold MI into HI
333
+
334
+ addq $16,%rdx
335
+ subq $16,%rcx
336
+ jnz L$aad_loop_blockbyblock
337
+
338
+ L$aad_done:
339
+ // Store the updated GHASH accumulator back to memory.
340
+ vpshufb %xmm4,%xmm5,%xmm5
341
+ vmovdqu %xmm5,(%rdi)
342
+
343
+ vzeroupper // This is needed after using ymm or zmm registers.
344
+ ret
345
+
346
+
347
+
348
+ .globl _aes_gcm_enc_update_vaes_avx512
349
+ .private_extern _aes_gcm_enc_update_vaes_avx512
350
+
351
+ .p2align 5
352
+ .alt_entry _aes_gcm_enc_update_vaes_avx512
353
+ _aes_gcm_enc_update_vaes_avx512:
354
+
355
+
356
+ _CET_ENDBR
357
+ pushq %r12
358
+
359
+
360
+ movq 16(%rsp),%r12 // arg7
361
+ #ifdef BORINGSSL_DISPATCH_TEST
362
+
363
+ movb $1,_BORINGSSL_function_hit+7(%rip)
364
+ #endif
365
+ // Load some constants.
366
+ vbroadcasti32x4 L$bswap_mask(%rip),%zmm8
367
+ vbroadcasti32x4 L$gfpoly(%rip),%zmm31
368
+
369
+ // Load the GHASH accumulator and the starting counter.
370
+ // BoringSSL passes these values in big endian format.
371
+ vmovdqu (%r12),%xmm10
372
+ vpshufb %xmm8,%xmm10,%xmm10
373
+ vbroadcasti32x4 (%r8),%zmm12
374
+ vpshufb %zmm8,%zmm12,%zmm12
375
+
376
+ // Load the AES key length in bytes. BoringSSL stores number of rounds
377
+ // minus 1, so convert using: AESKEYLEN = 4 * aeskey->rounds - 20.
378
+ movl 240(%rcx),%r10d
379
+ leal -20(,%r10,4),%r10d
380
+
381
+ // Make RNDKEYLAST_PTR point to the last AES round key. This is the
382
+ // round key with index 10, 12, or 14 for AES-128, AES-192, or AES-256
383
+ // respectively. Then load the zero-th and last round keys.
384
+ leaq 96(%rcx,%r10,4),%r11
385
+ vbroadcasti32x4 (%rcx),%zmm13
386
+ vbroadcasti32x4 (%r11),%zmm14
387
+
388
+ // Finish initializing LE_CTR by adding [0, 1, 2, 3] to its low words.
389
+ vpaddd L$ctr_pattern(%rip),%zmm12,%zmm12
390
+
391
+ // Load 4 into all 128-bit lanes of LE_CTR_INC.
392
+ vbroadcasti32x4 L$inc_4blocks(%rip),%zmm11
393
+
394
+ // If there are at least 256 bytes of data, then continue into the loop
395
+ // that processes 256 bytes of data at a time. Otherwise skip it.
396
+ cmpq $256,%rdx
397
+ jb L$crypt_loop_4x_done__func1
398
+
399
+ // Load powers of the hash key.
400
+ vmovdqu8 256-256(%r9),%zmm27
401
+ vmovdqu8 256-192(%r9),%zmm28
402
+ vmovdqu8 256-128(%r9),%zmm29
403
+ vmovdqu8 256-64(%r9),%zmm30
404
+ // Encrypt the first 4 vectors of plaintext blocks. Leave the resulting
405
+ // ciphertext in GHASHDATA[0-3] for GHASH.
406
+ // Increment le_ctr four times to generate four vectors of little-endian
407
+ // counter blocks, swap each to big-endian, and store them in aesdata[0-3].
408
+ vpshufb %zmm8,%zmm12,%zmm0
409
+ vpaddd %zmm11,%zmm12,%zmm12
410
+ vpshufb %zmm8,%zmm12,%zmm1
411
+ vpaddd %zmm11,%zmm12,%zmm12
412
+ vpshufb %zmm8,%zmm12,%zmm2
413
+ vpaddd %zmm11,%zmm12,%zmm12
414
+ vpshufb %zmm8,%zmm12,%zmm3
415
+ vpaddd %zmm11,%zmm12,%zmm12
416
+
417
+ // AES "round zero": XOR in the zero-th round key.
418
+ vpxord %zmm13,%zmm0,%zmm0
419
+ vpxord %zmm13,%zmm1,%zmm1
420
+ vpxord %zmm13,%zmm2,%zmm2
421
+ vpxord %zmm13,%zmm3,%zmm3
422
+
423
+ leaq 16(%rcx),%rax
424
+ L$vaesenc_loop_first_4_vecs__func1:
425
+ vbroadcasti32x4 (%rax),%zmm9
426
+ vaesenc %zmm9,%zmm0,%zmm0
427
+ vaesenc %zmm9,%zmm1,%zmm1
428
+ vaesenc %zmm9,%zmm2,%zmm2
429
+ vaesenc %zmm9,%zmm3,%zmm3
430
+
431
+ addq $16,%rax
432
+ cmpq %rax,%r11
433
+ jne L$vaesenc_loop_first_4_vecs__func1
434
+ vpxord 0(%rdi),%zmm14,%zmm4
435
+ vpxord 64(%rdi),%zmm14,%zmm5
436
+ vpxord 128(%rdi),%zmm14,%zmm6
437
+ vpxord 192(%rdi),%zmm14,%zmm7
438
+ vaesenclast %zmm4,%zmm0,%zmm4
439
+ vaesenclast %zmm5,%zmm1,%zmm5
440
+ vaesenclast %zmm6,%zmm2,%zmm6
441
+ vaesenclast %zmm7,%zmm3,%zmm7
442
+ vmovdqu8 %zmm4,0(%rsi)
443
+ vmovdqu8 %zmm5,64(%rsi)
444
+ vmovdqu8 %zmm6,128(%rsi)
445
+ vmovdqu8 %zmm7,192(%rsi)
446
+
447
+ addq $256,%rdi
448
+ addq $256,%rsi
449
+ subq $256,%rdx
450
+ cmpq $256,%rdx
451
+ jb L$ghash_last_ciphertext_4x__func1
452
+ // Cache as many additional AES round keys as possible.
453
+ vbroadcasti32x4 -144(%r11),%zmm15
454
+ vbroadcasti32x4 -128(%r11),%zmm16
455
+ vbroadcasti32x4 -112(%r11),%zmm17
456
+ vbroadcasti32x4 -96(%r11),%zmm18
457
+ vbroadcasti32x4 -80(%r11),%zmm19
458
+ vbroadcasti32x4 -64(%r11),%zmm20
459
+ vbroadcasti32x4 -48(%r11),%zmm21
460
+ vbroadcasti32x4 -32(%r11),%zmm22
461
+ vbroadcasti32x4 -16(%r11),%zmm23
462
+
463
+ L$crypt_loop_4x__func1:
464
+ // Start the AES encryption of the counter blocks.
465
+ // Increment le_ctr four times to generate four vectors of little-endian
466
+ // counter blocks, swap each to big-endian, and store them in aesdata[0-3].
467
+ vpshufb %zmm8,%zmm12,%zmm0
468
+ vpaddd %zmm11,%zmm12,%zmm12
469
+ vpshufb %zmm8,%zmm12,%zmm1
470
+ vpaddd %zmm11,%zmm12,%zmm12
471
+ vpshufb %zmm8,%zmm12,%zmm2
472
+ vpaddd %zmm11,%zmm12,%zmm12
473
+ vpshufb %zmm8,%zmm12,%zmm3
474
+ vpaddd %zmm11,%zmm12,%zmm12
475
+
476
+ // AES "round zero": XOR in the zero-th round key.
477
+ vpxord %zmm13,%zmm0,%zmm0
478
+ vpxord %zmm13,%zmm1,%zmm1
479
+ vpxord %zmm13,%zmm2,%zmm2
480
+ vpxord %zmm13,%zmm3,%zmm3
481
+
482
+ cmpl $24,%r10d
483
+ jl L$aes128__func1
484
+ je L$aes192__func1
485
+ // AES-256
486
+ vbroadcasti32x4 -208(%r11),%zmm9
487
+ vaesenc %zmm9,%zmm0,%zmm0
488
+ vaesenc %zmm9,%zmm1,%zmm1
489
+ vaesenc %zmm9,%zmm2,%zmm2
490
+ vaesenc %zmm9,%zmm3,%zmm3
491
+
492
+ vbroadcasti32x4 -192(%r11),%zmm9
493
+ vaesenc %zmm9,%zmm0,%zmm0
494
+ vaesenc %zmm9,%zmm1,%zmm1
495
+ vaesenc %zmm9,%zmm2,%zmm2
496
+ vaesenc %zmm9,%zmm3,%zmm3
497
+
498
+ L$aes192__func1:
499
+ vbroadcasti32x4 -176(%r11),%zmm9
500
+ vaesenc %zmm9,%zmm0,%zmm0
501
+ vaesenc %zmm9,%zmm1,%zmm1
502
+ vaesenc %zmm9,%zmm2,%zmm2
503
+ vaesenc %zmm9,%zmm3,%zmm3
504
+
505
+ vbroadcasti32x4 -160(%r11),%zmm9
506
+ vaesenc %zmm9,%zmm0,%zmm0
507
+ vaesenc %zmm9,%zmm1,%zmm1
508
+ vaesenc %zmm9,%zmm2,%zmm2
509
+ vaesenc %zmm9,%zmm3,%zmm3
510
+
511
+ L$aes128__func1:
512
+
513
+ // Prefetch the source data 512 bytes ahead into the L1 data cache, to
514
+ // improve performance when the hardware prefetcher is disabled. Assumes the
515
+ // L1 data cache line size is 64 bytes (de facto standard on x86_64).
516
+ prefetcht0 512+0(%rdi)
517
+ prefetcht0 512+64(%rdi)
518
+ prefetcht0 512+128(%rdi)
519
+ prefetcht0 512+192(%rdi)
520
+
521
+ // Finish the AES encryption of the counter blocks in AESDATA[0-3],
522
+ // interleaved with the GHASH update of the ciphertext blocks in
523
+ // GHASHDATA[0-3].
524
+ vpshufb %zmm8,%zmm4,%zmm4
525
+ vpxord %zmm10,%zmm4,%zmm4
526
+ vpshufb %zmm8,%zmm5,%zmm5
527
+ vpshufb %zmm8,%zmm6,%zmm6
528
+
529
+ vaesenc %zmm15,%zmm0,%zmm0
530
+ vaesenc %zmm15,%zmm1,%zmm1
531
+ vaesenc %zmm15,%zmm2,%zmm2
532
+ vaesenc %zmm15,%zmm3,%zmm3
533
+
534
+ vpshufb %zmm8,%zmm7,%zmm7
535
+ vpclmulqdq $0x00,%zmm27,%zmm4,%zmm10 // LO_0
536
+ vpclmulqdq $0x00,%zmm28,%zmm5,%zmm24 // LO_1
537
+ vpclmulqdq $0x00,%zmm29,%zmm6,%zmm25 // LO_2
538
+
539
+ vaesenc %zmm16,%zmm0,%zmm0
540
+ vaesenc %zmm16,%zmm1,%zmm1
541
+ vaesenc %zmm16,%zmm2,%zmm2
542
+ vaesenc %zmm16,%zmm3,%zmm3
543
+
544
+ vpxord %zmm24,%zmm10,%zmm10 // sum(LO_{1,0})
545
+ vpclmulqdq $0x00,%zmm30,%zmm7,%zmm26 // LO_3
546
+ vpternlogd $0x96,%zmm26,%zmm25,%zmm10 // LO = sum(LO_{3,2,1,0})
547
+ vpclmulqdq $0x01,%zmm27,%zmm4,%zmm24 // MI_0
548
+
549
+ vaesenc %zmm17,%zmm0,%zmm0
550
+ vaesenc %zmm17,%zmm1,%zmm1
551
+ vaesenc %zmm17,%zmm2,%zmm2
552
+ vaesenc %zmm17,%zmm3,%zmm3
553
+
554
+ vpclmulqdq $0x01,%zmm28,%zmm5,%zmm25 // MI_1
555
+ vpclmulqdq $0x01,%zmm29,%zmm6,%zmm26 // MI_2
556
+ vpternlogd $0x96,%zmm26,%zmm25,%zmm24 // sum(MI_{2,1,0})
557
+ vpclmulqdq $0x01,%zmm30,%zmm7,%zmm25 // MI_3
558
+
559
+ vaesenc %zmm18,%zmm0,%zmm0
560
+ vaesenc %zmm18,%zmm1,%zmm1
561
+ vaesenc %zmm18,%zmm2,%zmm2
562
+ vaesenc %zmm18,%zmm3,%zmm3
563
+
564
+ vpclmulqdq $0x10,%zmm27,%zmm4,%zmm26 // MI_4
565
+ vpternlogd $0x96,%zmm26,%zmm25,%zmm24 // sum(MI_{4,3,2,1,0})
566
+ vpclmulqdq $0x10,%zmm28,%zmm5,%zmm25 // MI_5
567
+ vpclmulqdq $0x10,%zmm29,%zmm6,%zmm26 // MI_6
568
+
569
+ vaesenc %zmm19,%zmm0,%zmm0
570
+ vaesenc %zmm19,%zmm1,%zmm1
571
+ vaesenc %zmm19,%zmm2,%zmm2
572
+ vaesenc %zmm19,%zmm3,%zmm3
573
+
574
+ vpternlogd $0x96,%zmm26,%zmm25,%zmm24 // sum(MI_{6,5,4,3,2,1,0})
575
+ vpclmulqdq $0x01,%zmm10,%zmm31,%zmm26 // LO_L*(x^63 + x^62 + x^57)
576
+ vpclmulqdq $0x10,%zmm30,%zmm7,%zmm25 // MI_7
577
+ vpxord %zmm25,%zmm24,%zmm24 // MI = sum(MI_{7,6,5,4,3,2,1,0})
578
+
579
+ vaesenc %zmm20,%zmm0,%zmm0
580
+ vaesenc %zmm20,%zmm1,%zmm1
581
+ vaesenc %zmm20,%zmm2,%zmm2
582
+ vaesenc %zmm20,%zmm3,%zmm3
583
+
584
+ vpshufd $0x4e,%zmm10,%zmm10 // Swap halves of LO
585
+ vpclmulqdq $0x11,%zmm27,%zmm4,%zmm4 // HI_0
586
+ vpclmulqdq $0x11,%zmm28,%zmm5,%zmm5 // HI_1
587
+ vpclmulqdq $0x11,%zmm29,%zmm6,%zmm6 // HI_2
588
+
589
+ vaesenc %zmm21,%zmm0,%zmm0
590
+ vaesenc %zmm21,%zmm1,%zmm1
591
+ vaesenc %zmm21,%zmm2,%zmm2
592
+ vaesenc %zmm21,%zmm3,%zmm3
593
+
594
+ vpternlogd $0x96,%zmm26,%zmm10,%zmm24 // Fold LO into MI
595
+ vpclmulqdq $0x11,%zmm30,%zmm7,%zmm7 // HI_3
596
+ vpternlogd $0x96,%zmm6,%zmm5,%zmm4 // sum(HI_{2,1,0})
597
+ vpclmulqdq $0x01,%zmm24,%zmm31,%zmm25 // MI_L*(x^63 + x^62 + x^57)
598
+
599
+ vaesenc %zmm22,%zmm0,%zmm0
600
+ vaesenc %zmm22,%zmm1,%zmm1
601
+ vaesenc %zmm22,%zmm2,%zmm2
602
+ vaesenc %zmm22,%zmm3,%zmm3
603
+
604
+ vpxord %zmm7,%zmm4,%zmm10 // HI = sum(HI_{3,2,1,0})
605
+ vpshufd $0x4e,%zmm24,%zmm24 // Swap halves of MI
606
+ vpternlogd $0x96,%zmm25,%zmm24,%zmm10 // Fold MI into HI
607
+
608
+ vaesenc %zmm23,%zmm0,%zmm0
609
+ vaesenc %zmm23,%zmm1,%zmm1
610
+ vaesenc %zmm23,%zmm2,%zmm2
611
+ vaesenc %zmm23,%zmm3,%zmm3
612
+
613
+
614
+ vextracti32x4 $1,%zmm10,%xmm4
615
+ vextracti32x4 $2,%zmm10,%xmm5
616
+ vextracti32x4 $3,%zmm10,%xmm6
617
+ vpxord %xmm4,%xmm10,%xmm10
618
+ vpternlogd $0x96,%xmm5,%xmm6,%xmm10
619
+
620
+ vpxord 0(%rdi),%zmm14,%zmm4
621
+ vpxord 64(%rdi),%zmm14,%zmm5
622
+ vpxord 128(%rdi),%zmm14,%zmm6
623
+ vpxord 192(%rdi),%zmm14,%zmm7
624
+ vaesenclast %zmm4,%zmm0,%zmm4
625
+ vaesenclast %zmm5,%zmm1,%zmm5
626
+ vaesenclast %zmm6,%zmm2,%zmm6
627
+ vaesenclast %zmm7,%zmm3,%zmm7
628
+ vmovdqu8 %zmm4,0(%rsi)
629
+ vmovdqu8 %zmm5,64(%rsi)
630
+ vmovdqu8 %zmm6,128(%rsi)
631
+ vmovdqu8 %zmm7,192(%rsi)
632
+
633
+ addq $256,%rdi
634
+ addq $256,%rsi
635
+ subq $256,%rdx
636
+ cmpq $256,%rdx
637
+ jae L$crypt_loop_4x__func1
638
+ L$ghash_last_ciphertext_4x__func1:
639
+ vpshufb %zmm8,%zmm4,%zmm4
640
+ vpxord %zmm10,%zmm4,%zmm4
641
+ vpshufb %zmm8,%zmm5,%zmm5
642
+ vpshufb %zmm8,%zmm6,%zmm6
643
+ vpshufb %zmm8,%zmm7,%zmm7
644
+ vpclmulqdq $0x00,%zmm27,%zmm4,%zmm10 // LO_0
645
+ vpclmulqdq $0x00,%zmm28,%zmm5,%zmm24 // LO_1
646
+ vpclmulqdq $0x00,%zmm29,%zmm6,%zmm25 // LO_2
647
+ vpxord %zmm24,%zmm10,%zmm10 // sum(LO_{1,0})
648
+ vpclmulqdq $0x00,%zmm30,%zmm7,%zmm26 // LO_3
649
+ vpternlogd $0x96,%zmm26,%zmm25,%zmm10 // LO = sum(LO_{3,2,1,0})
650
+ vpclmulqdq $0x01,%zmm27,%zmm4,%zmm24 // MI_0
651
+ vpclmulqdq $0x01,%zmm28,%zmm5,%zmm25 // MI_1
652
+ vpclmulqdq $0x01,%zmm29,%zmm6,%zmm26 // MI_2
653
+ vpternlogd $0x96,%zmm26,%zmm25,%zmm24 // sum(MI_{2,1,0})
654
+ vpclmulqdq $0x01,%zmm30,%zmm7,%zmm25 // MI_3
655
+ vpclmulqdq $0x10,%zmm27,%zmm4,%zmm26 // MI_4
656
+ vpternlogd $0x96,%zmm26,%zmm25,%zmm24 // sum(MI_{4,3,2,1,0})
657
+ vpclmulqdq $0x10,%zmm28,%zmm5,%zmm25 // MI_5
658
+ vpclmulqdq $0x10,%zmm29,%zmm6,%zmm26 // MI_6
659
+ vpternlogd $0x96,%zmm26,%zmm25,%zmm24 // sum(MI_{6,5,4,3,2,1,0})
660
+ vpclmulqdq $0x01,%zmm10,%zmm31,%zmm26 // LO_L*(x^63 + x^62 + x^57)
661
+ vpclmulqdq $0x10,%zmm30,%zmm7,%zmm25 // MI_7
662
+ vpxord %zmm25,%zmm24,%zmm24 // MI = sum(MI_{7,6,5,4,3,2,1,0})
663
+ vpshufd $0x4e,%zmm10,%zmm10 // Swap halves of LO
664
+ vpclmulqdq $0x11,%zmm27,%zmm4,%zmm4 // HI_0
665
+ vpclmulqdq $0x11,%zmm28,%zmm5,%zmm5 // HI_1
666
+ vpclmulqdq $0x11,%zmm29,%zmm6,%zmm6 // HI_2
667
+ vpternlogd $0x96,%zmm26,%zmm10,%zmm24 // Fold LO into MI
668
+ vpclmulqdq $0x11,%zmm30,%zmm7,%zmm7 // HI_3
669
+ vpternlogd $0x96,%zmm6,%zmm5,%zmm4 // sum(HI_{2,1,0})
670
+ vpclmulqdq $0x01,%zmm24,%zmm31,%zmm25 // MI_L*(x^63 + x^62 + x^57)
671
+ vpxord %zmm7,%zmm4,%zmm10 // HI = sum(HI_{3,2,1,0})
672
+ vpshufd $0x4e,%zmm24,%zmm24 // Swap halves of MI
673
+ vpternlogd $0x96,%zmm25,%zmm24,%zmm10 // Fold MI into HI
674
+ vextracti32x4 $1,%zmm10,%xmm4
675
+ vextracti32x4 $2,%zmm10,%xmm5
676
+ vextracti32x4 $3,%zmm10,%xmm6
677
+ vpxord %xmm4,%xmm10,%xmm10
678
+ vpternlogd $0x96,%xmm5,%xmm6,%xmm10
679
+
680
+ L$crypt_loop_4x_done__func1:
681
+ // Check whether any data remains.
682
+ testq %rdx,%rdx
683
+ jz L$done__func1
684
+
685
+ // The data length isn't a multiple of 256 bytes. Process the remaining
686
+ // data of length 1 <= DATALEN < 256, up to one 64-byte vector at a time.
687
+ // Going one vector at a time may seem inefficient compared to having
688
+ // separate code paths for each possible number of vectors remaining.
689
+ // However, using a loop keeps the code size down, and it performs
690
+ // surprising well; modern CPUs will start executing the next iteration
691
+ // before the previous one finishes and also predict the number of loop
692
+ // iterations. For a similar reason, we roll up the AES rounds.
693
+ //
694
+ // On the last iteration, the remaining length may be less than 64 bytes.
695
+ // Handle this using masking.
696
+ //
697
+ // Since there are enough key powers available for all remaining data,
698
+ // there is no need to do a GHASH reduction after each iteration.
699
+ // Instead, multiply each remaining block by its own key power, and only
700
+ // do a GHASH reduction at the very end.
701
+
702
+ // Make POWERS_PTR point to the key powers [H^N, H^(N-1), ...] where N
703
+ // is the number of blocks that remain.
704
+ movq %rdx,%rax
705
+ negq %rax
706
+ andq $-16,%rax // -round_up(DATALEN, 16)
707
+ leaq 256(%r9,%rax,1),%r8
708
+ vpxor %xmm4,%xmm4,%xmm4
709
+ vpxor %xmm5,%xmm5,%xmm5
710
+ vpxor %xmm6,%xmm6,%xmm6
711
+
712
+ cmpq $64,%rdx
713
+ jb L$partial_vec__func1
714
+
715
+ L$crypt_loop_1x__func1:
716
+ // Process a full 64-byte vector.
717
+
718
+ // Encrypt a vector of counter blocks.
719
+ vpshufb %zmm8,%zmm12,%zmm0
720
+ vpaddd %zmm11,%zmm12,%zmm12
721
+ vpxord %zmm13,%zmm0,%zmm0
722
+ leaq 16(%rcx),%rax
723
+ L$vaesenc_loop_tail_full_vec__func1:
724
+ vbroadcasti32x4 (%rax),%zmm9
725
+ vaesenc %zmm9,%zmm0,%zmm0
726
+ addq $16,%rax
727
+ cmpq %rax,%r11
728
+ jne L$vaesenc_loop_tail_full_vec__func1
729
+ vaesenclast %zmm14,%zmm0,%zmm0
730
+
731
+ // XOR the data with the vector of keystream blocks.
732
+ vmovdqu8 (%rdi),%zmm1
733
+ vpxord %zmm1,%zmm0,%zmm0
734
+ vmovdqu8 %zmm0,(%rsi)
735
+
736
+ // Update GHASH with the ciphertext blocks, without reducing.
737
+ vmovdqu8 (%r8),%zmm30
738
+ vpshufb %zmm8,%zmm0,%zmm0
739
+ vpxord %zmm10,%zmm0,%zmm0
740
+ vpclmulqdq $0x00,%zmm30,%zmm0,%zmm7 // a_L * b_L
741
+ vpclmulqdq $0x01,%zmm30,%zmm0,%zmm1 // a_L * b_H
742
+ vpclmulqdq $0x10,%zmm30,%zmm0,%zmm2 // a_H * b_L
743
+ vpclmulqdq $0x11,%zmm30,%zmm0,%zmm3 // a_H * b_H
744
+ vpxord %zmm7,%zmm4,%zmm4
745
+ vpternlogd $0x96,%zmm2,%zmm1,%zmm5
746
+ vpxord %zmm3,%zmm6,%zmm6
747
+
748
+ vpxor %xmm10,%xmm10,%xmm10
749
+
750
+ addq $64,%r8
751
+ addq $64,%rdi
752
+ addq $64,%rsi
753
+ subq $64,%rdx
754
+ cmpq $64,%rdx
755
+ jae L$crypt_loop_1x__func1
756
+
757
+ testq %rdx,%rdx
758
+ jz L$reduce__func1
759
+
760
+ L$partial_vec__func1:
761
+ // Process a partial vector of length 1 <= DATALEN < 64.
762
+
763
+ // Set the data mask %k1 to DATALEN 1's.
764
+ // Set the key powers mask %k2 to round_up(DATALEN, 16) 1's.
765
+ movq $-1,%rax
766
+ bzhiq %rdx,%rax,%rax
767
+ kmovq %rax,%k1
768
+ addq $15,%rdx
769
+ andq $-16,%rdx
770
+ movq $-1,%rax
771
+ bzhiq %rdx,%rax,%rax
772
+ kmovq %rax,%k2
773
+
774
+ // Encrypt one last vector of counter blocks. This does not need to be
775
+ // masked. The counter does not need to be incremented here.
776
+ vpshufb %zmm8,%zmm12,%zmm0
777
+ vpxord %zmm13,%zmm0,%zmm0
778
+ leaq 16(%rcx),%rax
779
+ L$vaesenc_loop_tail_partialvec__func1:
780
+ vbroadcasti32x4 (%rax),%zmm9
781
+ vaesenc %zmm9,%zmm0,%zmm0
782
+ addq $16,%rax
783
+ cmpq %rax,%r11
784
+ jne L$vaesenc_loop_tail_partialvec__func1
785
+ vaesenclast %zmm14,%zmm0,%zmm0
786
+
787
+ // XOR the data with the appropriate number of keystream bytes.
788
+ vmovdqu8 (%rdi),%zmm1{%k1}{z}
789
+ vpxord %zmm1,%zmm0,%zmm0
790
+ vmovdqu8 %zmm0,(%rsi){%k1}
791
+
792
+ // Update GHASH with the ciphertext block(s), without reducing.
793
+ //
794
+ // In the case of DATALEN < 64, the ciphertext is zero-padded to 64
795
+ // bytes. (If decrypting, it's done by the above masked load. If
796
+ // encrypting, it's done by the below masked register-to-register move.)
797
+ // Note that if DATALEN <= 48, there will be additional padding beyond
798
+ // the padding of the last block specified by GHASH itself; i.e., there
799
+ // may be whole block(s) that get processed by the GHASH multiplication
800
+ // and reduction instructions but should not actually be included in the
801
+ // GHASH. However, any such blocks are all-zeroes, and the values that
802
+ // they're multiplied with are also all-zeroes. Therefore they just add
803
+ // 0 * 0 = 0 to the final GHASH result, which makes no difference.
804
+ vmovdqu8 (%r8),%zmm30{%k2}{z}
805
+ vmovdqu8 %zmm0,%zmm1{%k1}{z}
806
+ vpshufb %zmm8,%zmm1,%zmm0
807
+ vpxord %zmm10,%zmm0,%zmm0
808
+ vpclmulqdq $0x00,%zmm30,%zmm0,%zmm7 // a_L * b_L
809
+ vpclmulqdq $0x01,%zmm30,%zmm0,%zmm1 // a_L * b_H
810
+ vpclmulqdq $0x10,%zmm30,%zmm0,%zmm2 // a_H * b_L
811
+ vpclmulqdq $0x11,%zmm30,%zmm0,%zmm3 // a_H * b_H
812
+ vpxord %zmm7,%zmm4,%zmm4
813
+ vpternlogd $0x96,%zmm2,%zmm1,%zmm5
814
+ vpxord %zmm3,%zmm6,%zmm6
815
+
816
+
817
+ L$reduce__func1:
818
+ // Finally, do the GHASH reduction.
819
+ vpclmulqdq $0x01,%zmm4,%zmm31,%zmm0
820
+ vpshufd $0x4e,%zmm4,%zmm4
821
+ vpternlogd $0x96,%zmm0,%zmm4,%zmm5
822
+ vpclmulqdq $0x01,%zmm5,%zmm31,%zmm0
823
+ vpshufd $0x4e,%zmm5,%zmm5
824
+ vpternlogd $0x96,%zmm0,%zmm5,%zmm6
825
+
826
+ vextracti32x4 $1,%zmm6,%xmm0
827
+ vextracti32x4 $2,%zmm6,%xmm1
828
+ vextracti32x4 $3,%zmm6,%xmm2
829
+ vpxord %xmm0,%xmm6,%xmm10
830
+ vpternlogd $0x96,%xmm1,%xmm2,%xmm10
831
+
832
+
833
+ L$done__func1:
834
+ // Store the updated GHASH accumulator back to memory.
835
+ vpshufb %xmm8,%xmm10,%xmm10
836
+ vmovdqu %xmm10,(%r12)
837
+
838
+ vzeroupper // This is needed after using ymm or zmm registers.
839
+ popq %r12
840
+
841
+ ret
842
+
843
+
844
+
845
+ .globl _aes_gcm_dec_update_vaes_avx512
846
+ .private_extern _aes_gcm_dec_update_vaes_avx512
847
+
848
+ .p2align 5
849
+ .alt_entry _aes_gcm_dec_update_vaes_avx512
850
+ _aes_gcm_dec_update_vaes_avx512:
851
+
852
+
853
+ _CET_ENDBR
854
+ pushq %r12
855
+
856
+
857
+ movq 16(%rsp),%r12 // arg7
858
+ // Load some constants.
859
+ vbroadcasti32x4 L$bswap_mask(%rip),%zmm8
860
+ vbroadcasti32x4 L$gfpoly(%rip),%zmm31
861
+
862
+ // Load the GHASH accumulator and the starting counter.
863
+ // BoringSSL passes these values in big endian format.
864
+ vmovdqu (%r12),%xmm10
865
+ vpshufb %xmm8,%xmm10,%xmm10
866
+ vbroadcasti32x4 (%r8),%zmm12
867
+ vpshufb %zmm8,%zmm12,%zmm12
868
+
869
+ // Load the AES key length in bytes. BoringSSL stores number of rounds
870
+ // minus 1, so convert using: AESKEYLEN = 4 * aeskey->rounds - 20.
871
+ movl 240(%rcx),%r10d
872
+ leal -20(,%r10,4),%r10d
873
+
874
+ // Make RNDKEYLAST_PTR point to the last AES round key. This is the
875
+ // round key with index 10, 12, or 14 for AES-128, AES-192, or AES-256
876
+ // respectively. Then load the zero-th and last round keys.
877
+ leaq 96(%rcx,%r10,4),%r11
878
+ vbroadcasti32x4 (%rcx),%zmm13
879
+ vbroadcasti32x4 (%r11),%zmm14
880
+
881
+ // Finish initializing LE_CTR by adding [0, 1, 2, 3] to its low words.
882
+ vpaddd L$ctr_pattern(%rip),%zmm12,%zmm12
883
+
884
+ // Load 4 into all 128-bit lanes of LE_CTR_INC.
885
+ vbroadcasti32x4 L$inc_4blocks(%rip),%zmm11
886
+
887
+ // If there are at least 256 bytes of data, then continue into the loop
888
+ // that processes 256 bytes of data at a time. Otherwise skip it.
889
+ cmpq $256,%rdx
890
+ jb L$crypt_loop_4x_done__func2
891
+
892
+ // Load powers of the hash key.
893
+ vmovdqu8 256-256(%r9),%zmm27
894
+ vmovdqu8 256-192(%r9),%zmm28
895
+ vmovdqu8 256-128(%r9),%zmm29
896
+ vmovdqu8 256-64(%r9),%zmm30
897
+ // Cache as many additional AES round keys as possible.
898
+ vbroadcasti32x4 -144(%r11),%zmm15
899
+ vbroadcasti32x4 -128(%r11),%zmm16
900
+ vbroadcasti32x4 -112(%r11),%zmm17
901
+ vbroadcasti32x4 -96(%r11),%zmm18
902
+ vbroadcasti32x4 -80(%r11),%zmm19
903
+ vbroadcasti32x4 -64(%r11),%zmm20
904
+ vbroadcasti32x4 -48(%r11),%zmm21
905
+ vbroadcasti32x4 -32(%r11),%zmm22
906
+ vbroadcasti32x4 -16(%r11),%zmm23
907
+
908
+ L$crypt_loop_4x__func2:
909
+ vmovdqu8 0(%rdi),%zmm4
910
+ vmovdqu8 64(%rdi),%zmm5
911
+ vmovdqu8 128(%rdi),%zmm6
912
+ vmovdqu8 192(%rdi),%zmm7
913
+ // Start the AES encryption of the counter blocks.
914
+ // Increment le_ctr four times to generate four vectors of little-endian
915
+ // counter blocks, swap each to big-endian, and store them in aesdata[0-3].
916
+ vpshufb %zmm8,%zmm12,%zmm0
917
+ vpaddd %zmm11,%zmm12,%zmm12
918
+ vpshufb %zmm8,%zmm12,%zmm1
919
+ vpaddd %zmm11,%zmm12,%zmm12
920
+ vpshufb %zmm8,%zmm12,%zmm2
921
+ vpaddd %zmm11,%zmm12,%zmm12
922
+ vpshufb %zmm8,%zmm12,%zmm3
923
+ vpaddd %zmm11,%zmm12,%zmm12
924
+
925
+ // AES "round zero": XOR in the zero-th round key.
926
+ vpxord %zmm13,%zmm0,%zmm0
927
+ vpxord %zmm13,%zmm1,%zmm1
928
+ vpxord %zmm13,%zmm2,%zmm2
929
+ vpxord %zmm13,%zmm3,%zmm3
930
+
931
+ cmpl $24,%r10d
932
+ jl L$aes128__func2
933
+ je L$aes192__func2
934
+ // AES-256
935
+ vbroadcasti32x4 -208(%r11),%zmm9
936
+ vaesenc %zmm9,%zmm0,%zmm0
937
+ vaesenc %zmm9,%zmm1,%zmm1
938
+ vaesenc %zmm9,%zmm2,%zmm2
939
+ vaesenc %zmm9,%zmm3,%zmm3
940
+
941
+ vbroadcasti32x4 -192(%r11),%zmm9
942
+ vaesenc %zmm9,%zmm0,%zmm0
943
+ vaesenc %zmm9,%zmm1,%zmm1
944
+ vaesenc %zmm9,%zmm2,%zmm2
945
+ vaesenc %zmm9,%zmm3,%zmm3
946
+
947
+ L$aes192__func2:
948
+ vbroadcasti32x4 -176(%r11),%zmm9
949
+ vaesenc %zmm9,%zmm0,%zmm0
950
+ vaesenc %zmm9,%zmm1,%zmm1
951
+ vaesenc %zmm9,%zmm2,%zmm2
952
+ vaesenc %zmm9,%zmm3,%zmm3
953
+
954
+ vbroadcasti32x4 -160(%r11),%zmm9
955
+ vaesenc %zmm9,%zmm0,%zmm0
956
+ vaesenc %zmm9,%zmm1,%zmm1
957
+ vaesenc %zmm9,%zmm2,%zmm2
958
+ vaesenc %zmm9,%zmm3,%zmm3
959
+
960
+ L$aes128__func2:
961
+
962
+ // Prefetch the source data 512 bytes ahead into the L1 data cache, to
963
+ // improve performance when the hardware prefetcher is disabled. Assumes the
964
+ // L1 data cache line size is 64 bytes (de facto standard on x86_64).
965
+ prefetcht0 512+0(%rdi)
966
+ prefetcht0 512+64(%rdi)
967
+ prefetcht0 512+128(%rdi)
968
+ prefetcht0 512+192(%rdi)
969
+
970
+ // Finish the AES encryption of the counter blocks in AESDATA[0-3],
971
+ // interleaved with the GHASH update of the ciphertext blocks in
972
+ // GHASHDATA[0-3].
973
+ vpshufb %zmm8,%zmm4,%zmm4
974
+ vpxord %zmm10,%zmm4,%zmm4
975
+ vpshufb %zmm8,%zmm5,%zmm5
976
+ vpshufb %zmm8,%zmm6,%zmm6
977
+
978
+ vaesenc %zmm15,%zmm0,%zmm0
979
+ vaesenc %zmm15,%zmm1,%zmm1
980
+ vaesenc %zmm15,%zmm2,%zmm2
981
+ vaesenc %zmm15,%zmm3,%zmm3
982
+
983
+ vpshufb %zmm8,%zmm7,%zmm7
984
+ vpclmulqdq $0x00,%zmm27,%zmm4,%zmm10 // LO_0
985
+ vpclmulqdq $0x00,%zmm28,%zmm5,%zmm24 // LO_1
986
+ vpclmulqdq $0x00,%zmm29,%zmm6,%zmm25 // LO_2
987
+
988
+ vaesenc %zmm16,%zmm0,%zmm0
989
+ vaesenc %zmm16,%zmm1,%zmm1
990
+ vaesenc %zmm16,%zmm2,%zmm2
991
+ vaesenc %zmm16,%zmm3,%zmm3
992
+
993
+ vpxord %zmm24,%zmm10,%zmm10 // sum(LO_{1,0})
994
+ vpclmulqdq $0x00,%zmm30,%zmm7,%zmm26 // LO_3
995
+ vpternlogd $0x96,%zmm26,%zmm25,%zmm10 // LO = sum(LO_{3,2,1,0})
996
+ vpclmulqdq $0x01,%zmm27,%zmm4,%zmm24 // MI_0
997
+
998
+ vaesenc %zmm17,%zmm0,%zmm0
999
+ vaesenc %zmm17,%zmm1,%zmm1
1000
+ vaesenc %zmm17,%zmm2,%zmm2
1001
+ vaesenc %zmm17,%zmm3,%zmm3
1002
+
1003
+ vpclmulqdq $0x01,%zmm28,%zmm5,%zmm25 // MI_1
1004
+ vpclmulqdq $0x01,%zmm29,%zmm6,%zmm26 // MI_2
1005
+ vpternlogd $0x96,%zmm26,%zmm25,%zmm24 // sum(MI_{2,1,0})
1006
+ vpclmulqdq $0x01,%zmm30,%zmm7,%zmm25 // MI_3
1007
+
1008
+ vaesenc %zmm18,%zmm0,%zmm0
1009
+ vaesenc %zmm18,%zmm1,%zmm1
1010
+ vaesenc %zmm18,%zmm2,%zmm2
1011
+ vaesenc %zmm18,%zmm3,%zmm3
1012
+
1013
+ vpclmulqdq $0x10,%zmm27,%zmm4,%zmm26 // MI_4
1014
+ vpternlogd $0x96,%zmm26,%zmm25,%zmm24 // sum(MI_{4,3,2,1,0})
1015
+ vpclmulqdq $0x10,%zmm28,%zmm5,%zmm25 // MI_5
1016
+ vpclmulqdq $0x10,%zmm29,%zmm6,%zmm26 // MI_6
1017
+
1018
+ vaesenc %zmm19,%zmm0,%zmm0
1019
+ vaesenc %zmm19,%zmm1,%zmm1
1020
+ vaesenc %zmm19,%zmm2,%zmm2
1021
+ vaesenc %zmm19,%zmm3,%zmm3
1022
+
1023
+ vpternlogd $0x96,%zmm26,%zmm25,%zmm24 // sum(MI_{6,5,4,3,2,1,0})
1024
+ vpclmulqdq $0x01,%zmm10,%zmm31,%zmm26 // LO_L*(x^63 + x^62 + x^57)
1025
+ vpclmulqdq $0x10,%zmm30,%zmm7,%zmm25 // MI_7
1026
+ vpxord %zmm25,%zmm24,%zmm24 // MI = sum(MI_{7,6,5,4,3,2,1,0})
1027
+
1028
+ vaesenc %zmm20,%zmm0,%zmm0
1029
+ vaesenc %zmm20,%zmm1,%zmm1
1030
+ vaesenc %zmm20,%zmm2,%zmm2
1031
+ vaesenc %zmm20,%zmm3,%zmm3
1032
+
1033
+ vpshufd $0x4e,%zmm10,%zmm10 // Swap halves of LO
1034
+ vpclmulqdq $0x11,%zmm27,%zmm4,%zmm4 // HI_0
1035
+ vpclmulqdq $0x11,%zmm28,%zmm5,%zmm5 // HI_1
1036
+ vpclmulqdq $0x11,%zmm29,%zmm6,%zmm6 // HI_2
1037
+
1038
+ vaesenc %zmm21,%zmm0,%zmm0
1039
+ vaesenc %zmm21,%zmm1,%zmm1
1040
+ vaesenc %zmm21,%zmm2,%zmm2
1041
+ vaesenc %zmm21,%zmm3,%zmm3
1042
+
1043
+ vpternlogd $0x96,%zmm26,%zmm10,%zmm24 // Fold LO into MI
1044
+ vpclmulqdq $0x11,%zmm30,%zmm7,%zmm7 // HI_3
1045
+ vpternlogd $0x96,%zmm6,%zmm5,%zmm4 // sum(HI_{2,1,0})
1046
+ vpclmulqdq $0x01,%zmm24,%zmm31,%zmm25 // MI_L*(x^63 + x^62 + x^57)
1047
+
1048
+ vaesenc %zmm22,%zmm0,%zmm0
1049
+ vaesenc %zmm22,%zmm1,%zmm1
1050
+ vaesenc %zmm22,%zmm2,%zmm2
1051
+ vaesenc %zmm22,%zmm3,%zmm3
1052
+
1053
+ vpxord %zmm7,%zmm4,%zmm10 // HI = sum(HI_{3,2,1,0})
1054
+ vpshufd $0x4e,%zmm24,%zmm24 // Swap halves of MI
1055
+ vpternlogd $0x96,%zmm25,%zmm24,%zmm10 // Fold MI into HI
1056
+
1057
+ vaesenc %zmm23,%zmm0,%zmm0
1058
+ vaesenc %zmm23,%zmm1,%zmm1
1059
+ vaesenc %zmm23,%zmm2,%zmm2
1060
+ vaesenc %zmm23,%zmm3,%zmm3
1061
+
1062
+
1063
+ vextracti32x4 $1,%zmm10,%xmm4
1064
+ vextracti32x4 $2,%zmm10,%xmm5
1065
+ vextracti32x4 $3,%zmm10,%xmm6
1066
+ vpxord %xmm4,%xmm10,%xmm10
1067
+ vpternlogd $0x96,%xmm5,%xmm6,%xmm10
1068
+
1069
+ vpxord 0(%rdi),%zmm14,%zmm4
1070
+ vpxord 64(%rdi),%zmm14,%zmm5
1071
+ vpxord 128(%rdi),%zmm14,%zmm6
1072
+ vpxord 192(%rdi),%zmm14,%zmm7
1073
+ vaesenclast %zmm4,%zmm0,%zmm4
1074
+ vaesenclast %zmm5,%zmm1,%zmm5
1075
+ vaesenclast %zmm6,%zmm2,%zmm6
1076
+ vaesenclast %zmm7,%zmm3,%zmm7
1077
+ vmovdqu8 %zmm4,0(%rsi)
1078
+ vmovdqu8 %zmm5,64(%rsi)
1079
+ vmovdqu8 %zmm6,128(%rsi)
1080
+ vmovdqu8 %zmm7,192(%rsi)
1081
+
1082
+ addq $256,%rdi
1083
+ addq $256,%rsi
1084
+ subq $256,%rdx
1085
+ cmpq $256,%rdx
1086
+ jae L$crypt_loop_4x__func2
1087
+ L$crypt_loop_4x_done__func2:
1088
+ // Check whether any data remains.
1089
+ testq %rdx,%rdx
1090
+ jz L$done__func2
1091
+
1092
+ // The data length isn't a multiple of 256 bytes. Process the remaining
1093
+ // data of length 1 <= DATALEN < 256, up to one 64-byte vector at a time.
1094
+ // Going one vector at a time may seem inefficient compared to having
1095
+ // separate code paths for each possible number of vectors remaining.
1096
+ // However, using a loop keeps the code size down, and it performs
1097
+ // surprising well; modern CPUs will start executing the next iteration
1098
+ // before the previous one finishes and also predict the number of loop
1099
+ // iterations. For a similar reason, we roll up the AES rounds.
1100
+ //
1101
+ // On the last iteration, the remaining length may be less than 64 bytes.
1102
+ // Handle this using masking.
1103
+ //
1104
+ // Since there are enough key powers available for all remaining data,
1105
+ // there is no need to do a GHASH reduction after each iteration.
1106
+ // Instead, multiply each remaining block by its own key power, and only
1107
+ // do a GHASH reduction at the very end.
1108
+
1109
+ // Make POWERS_PTR point to the key powers [H^N, H^(N-1), ...] where N
1110
+ // is the number of blocks that remain.
1111
+ movq %rdx,%rax
1112
+ negq %rax
1113
+ andq $-16,%rax // -round_up(DATALEN, 16)
1114
+ leaq 256(%r9,%rax,1),%r8
1115
+ vpxor %xmm4,%xmm4,%xmm4
1116
+ vpxor %xmm5,%xmm5,%xmm5
1117
+ vpxor %xmm6,%xmm6,%xmm6
1118
+
1119
+ cmpq $64,%rdx
1120
+ jb L$partial_vec__func2
1121
+
1122
+ L$crypt_loop_1x__func2:
1123
+ // Process a full 64-byte vector.
1124
+
1125
+ // Encrypt a vector of counter blocks.
1126
+ vpshufb %zmm8,%zmm12,%zmm0
1127
+ vpaddd %zmm11,%zmm12,%zmm12
1128
+ vpxord %zmm13,%zmm0,%zmm0
1129
+ leaq 16(%rcx),%rax
1130
+ L$vaesenc_loop_tail_full_vec__func2:
1131
+ vbroadcasti32x4 (%rax),%zmm9
1132
+ vaesenc %zmm9,%zmm0,%zmm0
1133
+ addq $16,%rax
1134
+ cmpq %rax,%r11
1135
+ jne L$vaesenc_loop_tail_full_vec__func2
1136
+ vaesenclast %zmm14,%zmm0,%zmm0
1137
+
1138
+ // XOR the data with the vector of keystream blocks.
1139
+ vmovdqu8 (%rdi),%zmm1
1140
+ vpxord %zmm1,%zmm0,%zmm0
1141
+ vmovdqu8 %zmm0,(%rsi)
1142
+
1143
+ // Update GHASH with the ciphertext blocks, without reducing.
1144
+ vmovdqu8 (%r8),%zmm30
1145
+ vpshufb %zmm8,%zmm1,%zmm0
1146
+ vpxord %zmm10,%zmm0,%zmm0
1147
+ vpclmulqdq $0x00,%zmm30,%zmm0,%zmm7 // a_L * b_L
1148
+ vpclmulqdq $0x01,%zmm30,%zmm0,%zmm1 // a_L * b_H
1149
+ vpclmulqdq $0x10,%zmm30,%zmm0,%zmm2 // a_H * b_L
1150
+ vpclmulqdq $0x11,%zmm30,%zmm0,%zmm3 // a_H * b_H
1151
+ vpxord %zmm7,%zmm4,%zmm4
1152
+ vpternlogd $0x96,%zmm2,%zmm1,%zmm5
1153
+ vpxord %zmm3,%zmm6,%zmm6
1154
+
1155
+ vpxor %xmm10,%xmm10,%xmm10
1156
+
1157
+ addq $64,%r8
1158
+ addq $64,%rdi
1159
+ addq $64,%rsi
1160
+ subq $64,%rdx
1161
+ cmpq $64,%rdx
1162
+ jae L$crypt_loop_1x__func2
1163
+
1164
+ testq %rdx,%rdx
1165
+ jz L$reduce__func2
1166
+
1167
+ L$partial_vec__func2:
1168
+ // Process a partial vector of length 1 <= DATALEN < 64.
1169
+
1170
+ // Set the data mask %k1 to DATALEN 1's.
1171
+ // Set the key powers mask %k2 to round_up(DATALEN, 16) 1's.
1172
+ movq $-1,%rax
1173
+ bzhiq %rdx,%rax,%rax
1174
+ kmovq %rax,%k1
1175
+ addq $15,%rdx
1176
+ andq $-16,%rdx
1177
+ movq $-1,%rax
1178
+ bzhiq %rdx,%rax,%rax
1179
+ kmovq %rax,%k2
1180
+
1181
+ // Encrypt one last vector of counter blocks. This does not need to be
1182
+ // masked. The counter does not need to be incremented here.
1183
+ vpshufb %zmm8,%zmm12,%zmm0
1184
+ vpxord %zmm13,%zmm0,%zmm0
1185
+ leaq 16(%rcx),%rax
1186
+ L$vaesenc_loop_tail_partialvec__func2:
1187
+ vbroadcasti32x4 (%rax),%zmm9
1188
+ vaesenc %zmm9,%zmm0,%zmm0
1189
+ addq $16,%rax
1190
+ cmpq %rax,%r11
1191
+ jne L$vaesenc_loop_tail_partialvec__func2
1192
+ vaesenclast %zmm14,%zmm0,%zmm0
1193
+
1194
+ // XOR the data with the appropriate number of keystream bytes.
1195
+ vmovdqu8 (%rdi),%zmm1{%k1}{z}
1196
+ vpxord %zmm1,%zmm0,%zmm0
1197
+ vmovdqu8 %zmm0,(%rsi){%k1}
1198
+
1199
+ // Update GHASH with the ciphertext block(s), without reducing.
1200
+ //
1201
+ // In the case of DATALEN < 64, the ciphertext is zero-padded to 64
1202
+ // bytes. (If decrypting, it's done by the above masked load. If
1203
+ // encrypting, it's done by the below masked register-to-register move.)
1204
+ // Note that if DATALEN <= 48, there will be additional padding beyond
1205
+ // the padding of the last block specified by GHASH itself; i.e., there
1206
+ // may be whole block(s) that get processed by the GHASH multiplication
1207
+ // and reduction instructions but should not actually be included in the
1208
+ // GHASH. However, any such blocks are all-zeroes, and the values that
1209
+ // they're multiplied with are also all-zeroes. Therefore they just add
1210
+ // 0 * 0 = 0 to the final GHASH result, which makes no difference.
1211
+ vmovdqu8 (%r8),%zmm30{%k2}{z}
1212
+
1213
+ vpshufb %zmm8,%zmm1,%zmm0
1214
+ vpxord %zmm10,%zmm0,%zmm0
1215
+ vpclmulqdq $0x00,%zmm30,%zmm0,%zmm7 // a_L * b_L
1216
+ vpclmulqdq $0x01,%zmm30,%zmm0,%zmm1 // a_L * b_H
1217
+ vpclmulqdq $0x10,%zmm30,%zmm0,%zmm2 // a_H * b_L
1218
+ vpclmulqdq $0x11,%zmm30,%zmm0,%zmm3 // a_H * b_H
1219
+ vpxord %zmm7,%zmm4,%zmm4
1220
+ vpternlogd $0x96,%zmm2,%zmm1,%zmm5
1221
+ vpxord %zmm3,%zmm6,%zmm6
1222
+
1223
+
1224
+ L$reduce__func2:
1225
+ // Finally, do the GHASH reduction.
1226
+ vpclmulqdq $0x01,%zmm4,%zmm31,%zmm0
1227
+ vpshufd $0x4e,%zmm4,%zmm4
1228
+ vpternlogd $0x96,%zmm0,%zmm4,%zmm5
1229
+ vpclmulqdq $0x01,%zmm5,%zmm31,%zmm0
1230
+ vpshufd $0x4e,%zmm5,%zmm5
1231
+ vpternlogd $0x96,%zmm0,%zmm5,%zmm6
1232
+
1233
+ vextracti32x4 $1,%zmm6,%xmm0
1234
+ vextracti32x4 $2,%zmm6,%xmm1
1235
+ vextracti32x4 $3,%zmm6,%xmm2
1236
+ vpxord %xmm0,%xmm6,%xmm10
1237
+ vpternlogd $0x96,%xmm1,%xmm2,%xmm10
1238
+
1239
+
1240
+ L$done__func2:
1241
+ // Store the updated GHASH accumulator back to memory.
1242
+ vpshufb %xmm8,%xmm10,%xmm10
1243
+ vmovdqu %xmm10,(%r12)
1244
+
1245
+ vzeroupper // This is needed after using ymm or zmm registers.
1246
+ popq %r12
1247
+
1248
+ ret
1249
+
1250
+
1251
+
1252
+ #endif