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,1253 @@
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(__ELF__)
7
+ .section .rodata
8
+
9
+ .align 64
10
+ aes_gcm_avx512_constants:
11
+
12
+ // A shuffle mask that reflects the bytes of 16-byte blocks
13
+ .Lbswap_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
+ .Lgfpoly:
24
+ .quad 1, 0xc200000000000000
25
+
26
+ // Same as above, but with the (1 << 64) bit set.
27
+ .Lgfpoly_and_internal_carrybit:
28
+ .quad 1, 0xc200000000000001
29
+
30
+ // Values needed to prepare the initial vector of counter blocks.
31
+ .Lctr_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
+ .Linc_4blocks:
39
+ .quad 4, 0
40
+
41
+ .text
42
+ .globl gcm_init_vpclmulqdq_avx512
43
+ .hidden gcm_init_vpclmulqdq_avx512
44
+ .type gcm_init_vpclmulqdq_avx512,@function
45
+ .align 32
46
+ gcm_init_vpclmulqdq_avx512:
47
+ .cfi_startproc
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,.Lgfpoly_and_internal_carrybit(%rip),%xmm0,%xmm3
77
+
78
+ // Load the gfpoly constant.
79
+ vbroadcasti32x4 .Lgfpoly(%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
+ .Lprecompute_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 .Lprecompute_next
142
+
143
+ vzeroupper // This is needed after using ymm or zmm registers.
144
+ ret
145
+
146
+ .cfi_endproc
147
+ .size gcm_init_vpclmulqdq_avx512, . - gcm_init_vpclmulqdq_avx512
148
+ .globl gcm_gmult_vpclmulqdq_avx512
149
+ .hidden gcm_gmult_vpclmulqdq_avx512
150
+ .type gcm_gmult_vpclmulqdq_avx512,@function
151
+ .align 32
152
+ gcm_gmult_vpclmulqdq_avx512:
153
+ .cfi_startproc
154
+
155
+ _CET_ENDBR
156
+
157
+
158
+
159
+ vmovdqu (%rdi),%xmm0
160
+ vmovdqu .Lbswap_mask(%rip),%xmm1
161
+ vmovdqu 256-16(%rsi),%xmm2
162
+ vmovdqu .Lgfpoly(%rip),%xmm3
163
+ vpshufb %xmm1,%xmm0,%xmm0
164
+
165
+ vpclmulqdq $0x00,%xmm2,%xmm0,%xmm4 // LO = a_L * b_L
166
+ vpclmulqdq $0x01,%xmm2,%xmm0,%xmm5 // MI_0 = a_L * b_H
167
+ vpclmulqdq $0x10,%xmm2,%xmm0,%xmm6 // MI_1 = a_H * b_L
168
+ vpxord %xmm6,%xmm5,%xmm5 // MI = MI_0 + MI_1
169
+ vpclmulqdq $0x01,%xmm4,%xmm3,%xmm6 // LO_L*(x^63 + x^62 + x^57)
170
+ vpshufd $0x4e,%xmm4,%xmm4 // Swap halves of LO
171
+ vpternlogd $0x96,%xmm6,%xmm4,%xmm5 // Fold LO into MI
172
+ vpclmulqdq $0x11,%xmm2,%xmm0,%xmm0 // HI = a_H * b_H
173
+ vpclmulqdq $0x01,%xmm5,%xmm3,%xmm4 // MI_L*(x^63 + x^62 + x^57)
174
+ vpshufd $0x4e,%xmm5,%xmm5 // Swap halves of MI
175
+ vpternlogd $0x96,%xmm4,%xmm5,%xmm0 // Fold MI into HI
176
+
177
+
178
+ vpshufb %xmm1,%xmm0,%xmm0
179
+ vmovdqu %xmm0,(%rdi)
180
+
181
+ // No need for vzeroupper, since only xmm registers were used.
182
+ ret
183
+
184
+ .cfi_endproc
185
+ .size gcm_gmult_vpclmulqdq_avx512, . - gcm_gmult_vpclmulqdq_avx512
186
+ .globl gcm_ghash_vpclmulqdq_avx512
187
+ .hidden gcm_ghash_vpclmulqdq_avx512
188
+ .type gcm_ghash_vpclmulqdq_avx512,@function
189
+ .align 32
190
+ gcm_ghash_vpclmulqdq_avx512:
191
+ .cfi_startproc
192
+
193
+ _CET_ENDBR
194
+
195
+
196
+
197
+ // Load the bswap_mask and gfpoly constants. Since AADLEN is usually small,
198
+ // usually only 128-bit vectors will be used. So as an optimization, don't
199
+ // broadcast these constants to all 128-bit lanes quite yet.
200
+ vmovdqu .Lbswap_mask(%rip),%xmm4
201
+ vmovdqu .Lgfpoly(%rip),%xmm10
202
+
203
+ // Load the GHASH accumulator.
204
+ vmovdqu (%rdi),%xmm5
205
+ vpshufb %xmm4,%xmm5,%xmm5
206
+
207
+ // Optimize for AADLEN < 64 by checking for AADLEN < 64 before AADLEN < 256.
208
+ cmpq $64,%rcx
209
+ jb .Laad_blockbyblock
210
+
211
+ // AADLEN >= 64, so we'll operate on full vectors. Broadcast bswap_mask and
212
+ // gfpoly to all 128-bit lanes.
213
+ vshufi64x2 $0,%zmm4,%zmm4,%zmm4
214
+ vshufi64x2 $0,%zmm10,%zmm10,%zmm10
215
+
216
+ // Load the lowest set of key powers.
217
+ vmovdqu8 256-64(%rsi),%zmm9
218
+
219
+ cmpq $256,%rcx
220
+ jb .Laad_loop_1x
221
+
222
+ // AADLEN >= 256. Load the higher key powers.
223
+ vmovdqu8 256-256(%rsi),%zmm6
224
+ vmovdqu8 256-192(%rsi),%zmm7
225
+ vmovdqu8 256-128(%rsi),%zmm8
226
+
227
+ // Update GHASH with 256 bytes of AAD at a time.
228
+ .Laad_loop_4x:
229
+ vmovdqu8 0(%rdx),%zmm0
230
+ vmovdqu8 64(%rdx),%zmm1
231
+ vmovdqu8 128(%rdx),%zmm2
232
+ vmovdqu8 192(%rdx),%zmm3
233
+ vpshufb %zmm4,%zmm0,%zmm0
234
+ vpxord %zmm5,%zmm0,%zmm0
235
+ vpshufb %zmm4,%zmm1,%zmm1
236
+ vpshufb %zmm4,%zmm2,%zmm2
237
+ vpshufb %zmm4,%zmm3,%zmm3
238
+ vpclmulqdq $0x00,%zmm6,%zmm0,%zmm5 // LO_0
239
+ vpclmulqdq $0x00,%zmm7,%zmm1,%zmm11 // LO_1
240
+ vpclmulqdq $0x00,%zmm8,%zmm2,%zmm12 // LO_2
241
+ vpxord %zmm11,%zmm5,%zmm5 // sum(LO_{1,0})
242
+ vpclmulqdq $0x00,%zmm9,%zmm3,%zmm13 // LO_3
243
+ vpternlogd $0x96,%zmm13,%zmm12,%zmm5 // LO = sum(LO_{3,2,1,0})
244
+ vpclmulqdq $0x01,%zmm6,%zmm0,%zmm11 // MI_0
245
+ vpclmulqdq $0x01,%zmm7,%zmm1,%zmm12 // MI_1
246
+ vpclmulqdq $0x01,%zmm8,%zmm2,%zmm13 // MI_2
247
+ vpternlogd $0x96,%zmm13,%zmm12,%zmm11 // sum(MI_{2,1,0})
248
+ vpclmulqdq $0x01,%zmm9,%zmm3,%zmm12 // MI_3
249
+ vpclmulqdq $0x10,%zmm6,%zmm0,%zmm13 // MI_4
250
+ vpternlogd $0x96,%zmm13,%zmm12,%zmm11 // sum(MI_{4,3,2,1,0})
251
+ vpclmulqdq $0x10,%zmm7,%zmm1,%zmm12 // MI_5
252
+ vpclmulqdq $0x10,%zmm8,%zmm2,%zmm13 // MI_6
253
+ vpternlogd $0x96,%zmm13,%zmm12,%zmm11 // sum(MI_{6,5,4,3,2,1,0})
254
+ vpclmulqdq $0x01,%zmm5,%zmm10,%zmm13 // LO_L*(x^63 + x^62 + x^57)
255
+ vpclmulqdq $0x10,%zmm9,%zmm3,%zmm12 // MI_7
256
+ vpxord %zmm12,%zmm11,%zmm11 // MI = sum(MI_{7,6,5,4,3,2,1,0})
257
+ vpshufd $0x4e,%zmm5,%zmm5 // Swap halves of LO
258
+ vpclmulqdq $0x11,%zmm6,%zmm0,%zmm0 // HI_0
259
+ vpclmulqdq $0x11,%zmm7,%zmm1,%zmm1 // HI_1
260
+ vpclmulqdq $0x11,%zmm8,%zmm2,%zmm2 // HI_2
261
+ vpternlogd $0x96,%zmm13,%zmm5,%zmm11 // Fold LO into MI
262
+ vpclmulqdq $0x11,%zmm9,%zmm3,%zmm3 // HI_3
263
+ vpternlogd $0x96,%zmm2,%zmm1,%zmm0 // sum(HI_{2,1,0})
264
+ vpclmulqdq $0x01,%zmm11,%zmm10,%zmm12 // MI_L*(x^63 + x^62 + x^57)
265
+ vpxord %zmm3,%zmm0,%zmm5 // HI = sum(HI_{3,2,1,0})
266
+ vpshufd $0x4e,%zmm11,%zmm11 // Swap halves of MI
267
+ vpternlogd $0x96,%zmm12,%zmm11,%zmm5 // Fold MI into HI
268
+ vextracti32x4 $1,%zmm5,%xmm0
269
+ vextracti32x4 $2,%zmm5,%xmm1
270
+ vextracti32x4 $3,%zmm5,%xmm2
271
+ vpxord %xmm0,%xmm5,%xmm5
272
+ vpternlogd $0x96,%xmm1,%xmm2,%xmm5
273
+
274
+ addq $256,%rdx
275
+ subq $256,%rcx
276
+ cmpq $256,%rcx
277
+ jae .Laad_loop_4x
278
+
279
+ // Update GHASH with 64 bytes of AAD at a time.
280
+ cmpq $64,%rcx
281
+ jb .Laad_large_done
282
+ .Laad_loop_1x:
283
+ vmovdqu8 (%rdx),%zmm0
284
+ vpshufb %zmm4,%zmm0,%zmm0
285
+ vpxord %zmm0,%zmm5,%zmm5
286
+ vpclmulqdq $0x00,%zmm9,%zmm5,%zmm0 // LO = a_L * b_L
287
+ vpclmulqdq $0x01,%zmm9,%zmm5,%zmm1 // MI_0 = a_L * b_H
288
+ vpclmulqdq $0x10,%zmm9,%zmm5,%zmm2 // MI_1 = a_H * b_L
289
+ vpxord %zmm2,%zmm1,%zmm1 // MI = MI_0 + MI_1
290
+ vpclmulqdq $0x01,%zmm0,%zmm10,%zmm2 // LO_L*(x^63 + x^62 + x^57)
291
+ vpshufd $0x4e,%zmm0,%zmm0 // Swap halves of LO
292
+ vpternlogd $0x96,%zmm2,%zmm0,%zmm1 // Fold LO into MI
293
+ vpclmulqdq $0x11,%zmm9,%zmm5,%zmm5 // HI = a_H * b_H
294
+ vpclmulqdq $0x01,%zmm1,%zmm10,%zmm0 // MI_L*(x^63 + x^62 + x^57)
295
+ vpshufd $0x4e,%zmm1,%zmm1 // Swap halves of MI
296
+ vpternlogd $0x96,%zmm0,%zmm1,%zmm5 // Fold MI into HI
297
+
298
+ vextracti32x4 $1,%zmm5,%xmm0
299
+ vextracti32x4 $2,%zmm5,%xmm1
300
+ vextracti32x4 $3,%zmm5,%xmm2
301
+ vpxord %xmm0,%xmm5,%xmm5
302
+ vpternlogd $0x96,%xmm1,%xmm2,%xmm5
303
+
304
+ addq $64,%rdx
305
+ subq $64,%rcx
306
+ cmpq $64,%rcx
307
+ jae .Laad_loop_1x
308
+
309
+ .Laad_large_done:
310
+
311
+ // GHASH the remaining data 16 bytes at a time, using xmm registers only.
312
+ .Laad_blockbyblock:
313
+ testq %rcx,%rcx
314
+ jz .Laad_done
315
+ vmovdqu 256-16(%rsi),%xmm9
316
+ .Laad_loop_blockbyblock:
317
+ vmovdqu (%rdx),%xmm0
318
+ vpshufb %xmm4,%xmm0,%xmm0
319
+ vpxor %xmm0,%xmm5,%xmm5
320
+ vpclmulqdq $0x00,%xmm9,%xmm5,%xmm0 // LO = a_L * b_L
321
+ vpclmulqdq $0x01,%xmm9,%xmm5,%xmm1 // MI_0 = a_L * b_H
322
+ vpclmulqdq $0x10,%xmm9,%xmm5,%xmm2 // MI_1 = a_H * b_L
323
+ vpxord %xmm2,%xmm1,%xmm1 // MI = MI_0 + MI_1
324
+ vpclmulqdq $0x01,%xmm0,%xmm10,%xmm2 // LO_L*(x^63 + x^62 + x^57)
325
+ vpshufd $0x4e,%xmm0,%xmm0 // Swap halves of LO
326
+ vpternlogd $0x96,%xmm2,%xmm0,%xmm1 // Fold LO into MI
327
+ vpclmulqdq $0x11,%xmm9,%xmm5,%xmm5 // HI = a_H * b_H
328
+ vpclmulqdq $0x01,%xmm1,%xmm10,%xmm0 // MI_L*(x^63 + x^62 + x^57)
329
+ vpshufd $0x4e,%xmm1,%xmm1 // Swap halves of MI
330
+ vpternlogd $0x96,%xmm0,%xmm1,%xmm5 // Fold MI into HI
331
+
332
+ addq $16,%rdx
333
+ subq $16,%rcx
334
+ jnz .Laad_loop_blockbyblock
335
+
336
+ .Laad_done:
337
+ // Store the updated GHASH accumulator back to memory.
338
+ vpshufb %xmm4,%xmm5,%xmm5
339
+ vmovdqu %xmm5,(%rdi)
340
+
341
+ vzeroupper // This is needed after using ymm or zmm registers.
342
+ ret
343
+
344
+ .cfi_endproc
345
+ .size gcm_ghash_vpclmulqdq_avx512, . - gcm_ghash_vpclmulqdq_avx512
346
+ .globl aes_gcm_enc_update_vaes_avx512
347
+ .hidden aes_gcm_enc_update_vaes_avx512
348
+ .type aes_gcm_enc_update_vaes_avx512,@function
349
+ .align 32
350
+ aes_gcm_enc_update_vaes_avx512:
351
+ .cfi_startproc
352
+
353
+ _CET_ENDBR
354
+ pushq %r12
355
+ .cfi_adjust_cfa_offset 8
356
+ .cfi_offset %r12,-16
357
+
358
+ movq 16(%rsp),%r12 // arg7
359
+ #ifdef BORINGSSL_DISPATCH_TEST
360
+ .extern BORINGSSL_function_hit
361
+ .hidden BORINGSSL_function_hit
362
+ movb $1,BORINGSSL_function_hit+7(%rip)
363
+ #endif
364
+ // Load some constants.
365
+ vbroadcasti32x4 .Lbswap_mask(%rip),%zmm8
366
+ vbroadcasti32x4 .Lgfpoly(%rip),%zmm31
367
+
368
+ // Load the GHASH accumulator and the starting counter.
369
+ // BoringSSL passes these values in big endian format.
370
+ vmovdqu (%r12),%xmm10
371
+ vpshufb %xmm8,%xmm10,%xmm10
372
+ vbroadcasti32x4 (%r8),%zmm12
373
+ vpshufb %zmm8,%zmm12,%zmm12
374
+
375
+ // Load the AES key length in bytes. BoringSSL stores number of rounds
376
+ // minus 1, so convert using: AESKEYLEN = 4 * aeskey->rounds - 20.
377
+ movl 240(%rcx),%r10d
378
+ leal -20(,%r10,4),%r10d
379
+
380
+ // Make RNDKEYLAST_PTR point to the last AES round key. This is the
381
+ // round key with index 10, 12, or 14 for AES-128, AES-192, or AES-256
382
+ // respectively. Then load the zero-th and last round keys.
383
+ leaq 96(%rcx,%r10,4),%r11
384
+ vbroadcasti32x4 (%rcx),%zmm13
385
+ vbroadcasti32x4 (%r11),%zmm14
386
+
387
+ // Finish initializing LE_CTR by adding [0, 1, 2, 3] to its low words.
388
+ vpaddd .Lctr_pattern(%rip),%zmm12,%zmm12
389
+
390
+ // Load 4 into all 128-bit lanes of LE_CTR_INC.
391
+ vbroadcasti32x4 .Linc_4blocks(%rip),%zmm11
392
+
393
+ // If there are at least 256 bytes of data, then continue into the loop
394
+ // that processes 256 bytes of data at a time. Otherwise skip it.
395
+ cmpq $256,%rdx
396
+ jb .Lcrypt_loop_4x_done__func1
397
+
398
+ // Load powers of the hash key.
399
+ vmovdqu8 256-256(%r9),%zmm27
400
+ vmovdqu8 256-192(%r9),%zmm28
401
+ vmovdqu8 256-128(%r9),%zmm29
402
+ vmovdqu8 256-64(%r9),%zmm30
403
+ // Encrypt the first 4 vectors of plaintext blocks. Leave the resulting
404
+ // ciphertext in GHASHDATA[0-3] for GHASH.
405
+ // Increment le_ctr four times to generate four vectors of little-endian
406
+ // counter blocks, swap each to big-endian, and store them in aesdata[0-3].
407
+ vpshufb %zmm8,%zmm12,%zmm0
408
+ vpaddd %zmm11,%zmm12,%zmm12
409
+ vpshufb %zmm8,%zmm12,%zmm1
410
+ vpaddd %zmm11,%zmm12,%zmm12
411
+ vpshufb %zmm8,%zmm12,%zmm2
412
+ vpaddd %zmm11,%zmm12,%zmm12
413
+ vpshufb %zmm8,%zmm12,%zmm3
414
+ vpaddd %zmm11,%zmm12,%zmm12
415
+
416
+ // AES "round zero": XOR in the zero-th round key.
417
+ vpxord %zmm13,%zmm0,%zmm0
418
+ vpxord %zmm13,%zmm1,%zmm1
419
+ vpxord %zmm13,%zmm2,%zmm2
420
+ vpxord %zmm13,%zmm3,%zmm3
421
+
422
+ leaq 16(%rcx),%rax
423
+ .Lvaesenc_loop_first_4_vecs__func1:
424
+ vbroadcasti32x4 (%rax),%zmm9
425
+ vaesenc %zmm9,%zmm0,%zmm0
426
+ vaesenc %zmm9,%zmm1,%zmm1
427
+ vaesenc %zmm9,%zmm2,%zmm2
428
+ vaesenc %zmm9,%zmm3,%zmm3
429
+
430
+ addq $16,%rax
431
+ cmpq %rax,%r11
432
+ jne .Lvaesenc_loop_first_4_vecs__func1
433
+ vpxord 0(%rdi),%zmm14,%zmm4
434
+ vpxord 64(%rdi),%zmm14,%zmm5
435
+ vpxord 128(%rdi),%zmm14,%zmm6
436
+ vpxord 192(%rdi),%zmm14,%zmm7
437
+ vaesenclast %zmm4,%zmm0,%zmm4
438
+ vaesenclast %zmm5,%zmm1,%zmm5
439
+ vaesenclast %zmm6,%zmm2,%zmm6
440
+ vaesenclast %zmm7,%zmm3,%zmm7
441
+ vmovdqu8 %zmm4,0(%rsi)
442
+ vmovdqu8 %zmm5,64(%rsi)
443
+ vmovdqu8 %zmm6,128(%rsi)
444
+ vmovdqu8 %zmm7,192(%rsi)
445
+
446
+ addq $256,%rdi
447
+ addq $256,%rsi
448
+ subq $256,%rdx
449
+ cmpq $256,%rdx
450
+ jb .Lghash_last_ciphertext_4x__func1
451
+ // Cache as many additional AES round keys as possible.
452
+ vbroadcasti32x4 -144(%r11),%zmm15
453
+ vbroadcasti32x4 -128(%r11),%zmm16
454
+ vbroadcasti32x4 -112(%r11),%zmm17
455
+ vbroadcasti32x4 -96(%r11),%zmm18
456
+ vbroadcasti32x4 -80(%r11),%zmm19
457
+ vbroadcasti32x4 -64(%r11),%zmm20
458
+ vbroadcasti32x4 -48(%r11),%zmm21
459
+ vbroadcasti32x4 -32(%r11),%zmm22
460
+ vbroadcasti32x4 -16(%r11),%zmm23
461
+
462
+ .Lcrypt_loop_4x__func1:
463
+ // Start the AES encryption of the counter blocks.
464
+ // Increment le_ctr four times to generate four vectors of little-endian
465
+ // counter blocks, swap each to big-endian, and store them in aesdata[0-3].
466
+ vpshufb %zmm8,%zmm12,%zmm0
467
+ vpaddd %zmm11,%zmm12,%zmm12
468
+ vpshufb %zmm8,%zmm12,%zmm1
469
+ vpaddd %zmm11,%zmm12,%zmm12
470
+ vpshufb %zmm8,%zmm12,%zmm2
471
+ vpaddd %zmm11,%zmm12,%zmm12
472
+ vpshufb %zmm8,%zmm12,%zmm3
473
+ vpaddd %zmm11,%zmm12,%zmm12
474
+
475
+ // AES "round zero": XOR in the zero-th round key.
476
+ vpxord %zmm13,%zmm0,%zmm0
477
+ vpxord %zmm13,%zmm1,%zmm1
478
+ vpxord %zmm13,%zmm2,%zmm2
479
+ vpxord %zmm13,%zmm3,%zmm3
480
+
481
+ cmpl $24,%r10d
482
+ jl .Laes128__func1
483
+ je .Laes192__func1
484
+ // AES-256
485
+ vbroadcasti32x4 -208(%r11),%zmm9
486
+ vaesenc %zmm9,%zmm0,%zmm0
487
+ vaesenc %zmm9,%zmm1,%zmm1
488
+ vaesenc %zmm9,%zmm2,%zmm2
489
+ vaesenc %zmm9,%zmm3,%zmm3
490
+
491
+ vbroadcasti32x4 -192(%r11),%zmm9
492
+ vaesenc %zmm9,%zmm0,%zmm0
493
+ vaesenc %zmm9,%zmm1,%zmm1
494
+ vaesenc %zmm9,%zmm2,%zmm2
495
+ vaesenc %zmm9,%zmm3,%zmm3
496
+
497
+ .Laes192__func1:
498
+ vbroadcasti32x4 -176(%r11),%zmm9
499
+ vaesenc %zmm9,%zmm0,%zmm0
500
+ vaesenc %zmm9,%zmm1,%zmm1
501
+ vaesenc %zmm9,%zmm2,%zmm2
502
+ vaesenc %zmm9,%zmm3,%zmm3
503
+
504
+ vbroadcasti32x4 -160(%r11),%zmm9
505
+ vaesenc %zmm9,%zmm0,%zmm0
506
+ vaesenc %zmm9,%zmm1,%zmm1
507
+ vaesenc %zmm9,%zmm2,%zmm2
508
+ vaesenc %zmm9,%zmm3,%zmm3
509
+
510
+ .Laes128__func1:
511
+
512
+ // Prefetch the source data 512 bytes ahead into the L1 data cache, to
513
+ // improve performance when the hardware prefetcher is disabled. Assumes the
514
+ // L1 data cache line size is 64 bytes (de facto standard on x86_64).
515
+ prefetcht0 512+0(%rdi)
516
+ prefetcht0 512+64(%rdi)
517
+ prefetcht0 512+128(%rdi)
518
+ prefetcht0 512+192(%rdi)
519
+
520
+ // Finish the AES encryption of the counter blocks in AESDATA[0-3],
521
+ // interleaved with the GHASH update of the ciphertext blocks in
522
+ // GHASHDATA[0-3].
523
+ vpshufb %zmm8,%zmm4,%zmm4
524
+ vpxord %zmm10,%zmm4,%zmm4
525
+ vpshufb %zmm8,%zmm5,%zmm5
526
+ vpshufb %zmm8,%zmm6,%zmm6
527
+
528
+ vaesenc %zmm15,%zmm0,%zmm0
529
+ vaesenc %zmm15,%zmm1,%zmm1
530
+ vaesenc %zmm15,%zmm2,%zmm2
531
+ vaesenc %zmm15,%zmm3,%zmm3
532
+
533
+ vpshufb %zmm8,%zmm7,%zmm7
534
+ vpclmulqdq $0x00,%zmm27,%zmm4,%zmm10 // LO_0
535
+ vpclmulqdq $0x00,%zmm28,%zmm5,%zmm24 // LO_1
536
+ vpclmulqdq $0x00,%zmm29,%zmm6,%zmm25 // LO_2
537
+
538
+ vaesenc %zmm16,%zmm0,%zmm0
539
+ vaesenc %zmm16,%zmm1,%zmm1
540
+ vaesenc %zmm16,%zmm2,%zmm2
541
+ vaesenc %zmm16,%zmm3,%zmm3
542
+
543
+ vpxord %zmm24,%zmm10,%zmm10 // sum(LO_{1,0})
544
+ vpclmulqdq $0x00,%zmm30,%zmm7,%zmm26 // LO_3
545
+ vpternlogd $0x96,%zmm26,%zmm25,%zmm10 // LO = sum(LO_{3,2,1,0})
546
+ vpclmulqdq $0x01,%zmm27,%zmm4,%zmm24 // MI_0
547
+
548
+ vaesenc %zmm17,%zmm0,%zmm0
549
+ vaesenc %zmm17,%zmm1,%zmm1
550
+ vaesenc %zmm17,%zmm2,%zmm2
551
+ vaesenc %zmm17,%zmm3,%zmm3
552
+
553
+ vpclmulqdq $0x01,%zmm28,%zmm5,%zmm25 // MI_1
554
+ vpclmulqdq $0x01,%zmm29,%zmm6,%zmm26 // MI_2
555
+ vpternlogd $0x96,%zmm26,%zmm25,%zmm24 // sum(MI_{2,1,0})
556
+ vpclmulqdq $0x01,%zmm30,%zmm7,%zmm25 // MI_3
557
+
558
+ vaesenc %zmm18,%zmm0,%zmm0
559
+ vaesenc %zmm18,%zmm1,%zmm1
560
+ vaesenc %zmm18,%zmm2,%zmm2
561
+ vaesenc %zmm18,%zmm3,%zmm3
562
+
563
+ vpclmulqdq $0x10,%zmm27,%zmm4,%zmm26 // MI_4
564
+ vpternlogd $0x96,%zmm26,%zmm25,%zmm24 // sum(MI_{4,3,2,1,0})
565
+ vpclmulqdq $0x10,%zmm28,%zmm5,%zmm25 // MI_5
566
+ vpclmulqdq $0x10,%zmm29,%zmm6,%zmm26 // MI_6
567
+
568
+ vaesenc %zmm19,%zmm0,%zmm0
569
+ vaesenc %zmm19,%zmm1,%zmm1
570
+ vaesenc %zmm19,%zmm2,%zmm2
571
+ vaesenc %zmm19,%zmm3,%zmm3
572
+
573
+ vpternlogd $0x96,%zmm26,%zmm25,%zmm24 // sum(MI_{6,5,4,3,2,1,0})
574
+ vpclmulqdq $0x01,%zmm10,%zmm31,%zmm26 // LO_L*(x^63 + x^62 + x^57)
575
+ vpclmulqdq $0x10,%zmm30,%zmm7,%zmm25 // MI_7
576
+ vpxord %zmm25,%zmm24,%zmm24 // MI = sum(MI_{7,6,5,4,3,2,1,0})
577
+
578
+ vaesenc %zmm20,%zmm0,%zmm0
579
+ vaesenc %zmm20,%zmm1,%zmm1
580
+ vaesenc %zmm20,%zmm2,%zmm2
581
+ vaesenc %zmm20,%zmm3,%zmm3
582
+
583
+ vpshufd $0x4e,%zmm10,%zmm10 // Swap halves of LO
584
+ vpclmulqdq $0x11,%zmm27,%zmm4,%zmm4 // HI_0
585
+ vpclmulqdq $0x11,%zmm28,%zmm5,%zmm5 // HI_1
586
+ vpclmulqdq $0x11,%zmm29,%zmm6,%zmm6 // HI_2
587
+
588
+ vaesenc %zmm21,%zmm0,%zmm0
589
+ vaesenc %zmm21,%zmm1,%zmm1
590
+ vaesenc %zmm21,%zmm2,%zmm2
591
+ vaesenc %zmm21,%zmm3,%zmm3
592
+
593
+ vpternlogd $0x96,%zmm26,%zmm10,%zmm24 // Fold LO into MI
594
+ vpclmulqdq $0x11,%zmm30,%zmm7,%zmm7 // HI_3
595
+ vpternlogd $0x96,%zmm6,%zmm5,%zmm4 // sum(HI_{2,1,0})
596
+ vpclmulqdq $0x01,%zmm24,%zmm31,%zmm25 // MI_L*(x^63 + x^62 + x^57)
597
+
598
+ vaesenc %zmm22,%zmm0,%zmm0
599
+ vaesenc %zmm22,%zmm1,%zmm1
600
+ vaesenc %zmm22,%zmm2,%zmm2
601
+ vaesenc %zmm22,%zmm3,%zmm3
602
+
603
+ vpxord %zmm7,%zmm4,%zmm10 // HI = sum(HI_{3,2,1,0})
604
+ vpshufd $0x4e,%zmm24,%zmm24 // Swap halves of MI
605
+ vpternlogd $0x96,%zmm25,%zmm24,%zmm10 // Fold MI into HI
606
+
607
+ vaesenc %zmm23,%zmm0,%zmm0
608
+ vaesenc %zmm23,%zmm1,%zmm1
609
+ vaesenc %zmm23,%zmm2,%zmm2
610
+ vaesenc %zmm23,%zmm3,%zmm3
611
+
612
+
613
+ vextracti32x4 $1,%zmm10,%xmm4
614
+ vextracti32x4 $2,%zmm10,%xmm5
615
+ vextracti32x4 $3,%zmm10,%xmm6
616
+ vpxord %xmm4,%xmm10,%xmm10
617
+ vpternlogd $0x96,%xmm5,%xmm6,%xmm10
618
+
619
+ vpxord 0(%rdi),%zmm14,%zmm4
620
+ vpxord 64(%rdi),%zmm14,%zmm5
621
+ vpxord 128(%rdi),%zmm14,%zmm6
622
+ vpxord 192(%rdi),%zmm14,%zmm7
623
+ vaesenclast %zmm4,%zmm0,%zmm4
624
+ vaesenclast %zmm5,%zmm1,%zmm5
625
+ vaesenclast %zmm6,%zmm2,%zmm6
626
+ vaesenclast %zmm7,%zmm3,%zmm7
627
+ vmovdqu8 %zmm4,0(%rsi)
628
+ vmovdqu8 %zmm5,64(%rsi)
629
+ vmovdqu8 %zmm6,128(%rsi)
630
+ vmovdqu8 %zmm7,192(%rsi)
631
+
632
+ addq $256,%rdi
633
+ addq $256,%rsi
634
+ subq $256,%rdx
635
+ cmpq $256,%rdx
636
+ jae .Lcrypt_loop_4x__func1
637
+ .Lghash_last_ciphertext_4x__func1:
638
+ vpshufb %zmm8,%zmm4,%zmm4
639
+ vpxord %zmm10,%zmm4,%zmm4
640
+ vpshufb %zmm8,%zmm5,%zmm5
641
+ vpshufb %zmm8,%zmm6,%zmm6
642
+ vpshufb %zmm8,%zmm7,%zmm7
643
+ vpclmulqdq $0x00,%zmm27,%zmm4,%zmm10 // LO_0
644
+ vpclmulqdq $0x00,%zmm28,%zmm5,%zmm24 // LO_1
645
+ vpclmulqdq $0x00,%zmm29,%zmm6,%zmm25 // LO_2
646
+ vpxord %zmm24,%zmm10,%zmm10 // sum(LO_{1,0})
647
+ vpclmulqdq $0x00,%zmm30,%zmm7,%zmm26 // LO_3
648
+ vpternlogd $0x96,%zmm26,%zmm25,%zmm10 // LO = sum(LO_{3,2,1,0})
649
+ vpclmulqdq $0x01,%zmm27,%zmm4,%zmm24 // MI_0
650
+ vpclmulqdq $0x01,%zmm28,%zmm5,%zmm25 // MI_1
651
+ vpclmulqdq $0x01,%zmm29,%zmm6,%zmm26 // MI_2
652
+ vpternlogd $0x96,%zmm26,%zmm25,%zmm24 // sum(MI_{2,1,0})
653
+ vpclmulqdq $0x01,%zmm30,%zmm7,%zmm25 // MI_3
654
+ vpclmulqdq $0x10,%zmm27,%zmm4,%zmm26 // MI_4
655
+ vpternlogd $0x96,%zmm26,%zmm25,%zmm24 // sum(MI_{4,3,2,1,0})
656
+ vpclmulqdq $0x10,%zmm28,%zmm5,%zmm25 // MI_5
657
+ vpclmulqdq $0x10,%zmm29,%zmm6,%zmm26 // MI_6
658
+ vpternlogd $0x96,%zmm26,%zmm25,%zmm24 // sum(MI_{6,5,4,3,2,1,0})
659
+ vpclmulqdq $0x01,%zmm10,%zmm31,%zmm26 // LO_L*(x^63 + x^62 + x^57)
660
+ vpclmulqdq $0x10,%zmm30,%zmm7,%zmm25 // MI_7
661
+ vpxord %zmm25,%zmm24,%zmm24 // MI = sum(MI_{7,6,5,4,3,2,1,0})
662
+ vpshufd $0x4e,%zmm10,%zmm10 // Swap halves of LO
663
+ vpclmulqdq $0x11,%zmm27,%zmm4,%zmm4 // HI_0
664
+ vpclmulqdq $0x11,%zmm28,%zmm5,%zmm5 // HI_1
665
+ vpclmulqdq $0x11,%zmm29,%zmm6,%zmm6 // HI_2
666
+ vpternlogd $0x96,%zmm26,%zmm10,%zmm24 // Fold LO into MI
667
+ vpclmulqdq $0x11,%zmm30,%zmm7,%zmm7 // HI_3
668
+ vpternlogd $0x96,%zmm6,%zmm5,%zmm4 // sum(HI_{2,1,0})
669
+ vpclmulqdq $0x01,%zmm24,%zmm31,%zmm25 // MI_L*(x^63 + x^62 + x^57)
670
+ vpxord %zmm7,%zmm4,%zmm10 // HI = sum(HI_{3,2,1,0})
671
+ vpshufd $0x4e,%zmm24,%zmm24 // Swap halves of MI
672
+ vpternlogd $0x96,%zmm25,%zmm24,%zmm10 // Fold MI into HI
673
+ vextracti32x4 $1,%zmm10,%xmm4
674
+ vextracti32x4 $2,%zmm10,%xmm5
675
+ vextracti32x4 $3,%zmm10,%xmm6
676
+ vpxord %xmm4,%xmm10,%xmm10
677
+ vpternlogd $0x96,%xmm5,%xmm6,%xmm10
678
+
679
+ .Lcrypt_loop_4x_done__func1:
680
+ // Check whether any data remains.
681
+ testq %rdx,%rdx
682
+ jz .Ldone__func1
683
+
684
+ // The data length isn't a multiple of 256 bytes. Process the remaining
685
+ // data of length 1 <= DATALEN < 256, up to one 64-byte vector at a time.
686
+ // Going one vector at a time may seem inefficient compared to having
687
+ // separate code paths for each possible number of vectors remaining.
688
+ // However, using a loop keeps the code size down, and it performs
689
+ // surprising well; modern CPUs will start executing the next iteration
690
+ // before the previous one finishes and also predict the number of loop
691
+ // iterations. For a similar reason, we roll up the AES rounds.
692
+ //
693
+ // On the last iteration, the remaining length may be less than 64 bytes.
694
+ // Handle this using masking.
695
+ //
696
+ // Since there are enough key powers available for all remaining data,
697
+ // there is no need to do a GHASH reduction after each iteration.
698
+ // Instead, multiply each remaining block by its own key power, and only
699
+ // do a GHASH reduction at the very end.
700
+
701
+ // Make POWERS_PTR point to the key powers [H^N, H^(N-1), ...] where N
702
+ // is the number of blocks that remain.
703
+ movq %rdx,%rax
704
+ negq %rax
705
+ andq $-16,%rax // -round_up(DATALEN, 16)
706
+ leaq 256(%r9,%rax,1),%r8
707
+ vpxor %xmm4,%xmm4,%xmm4
708
+ vpxor %xmm5,%xmm5,%xmm5
709
+ vpxor %xmm6,%xmm6,%xmm6
710
+
711
+ cmpq $64,%rdx
712
+ jb .Lpartial_vec__func1
713
+
714
+ .Lcrypt_loop_1x__func1:
715
+ // Process a full 64-byte vector.
716
+
717
+ // Encrypt a vector of counter blocks.
718
+ vpshufb %zmm8,%zmm12,%zmm0
719
+ vpaddd %zmm11,%zmm12,%zmm12
720
+ vpxord %zmm13,%zmm0,%zmm0
721
+ leaq 16(%rcx),%rax
722
+ .Lvaesenc_loop_tail_full_vec__func1:
723
+ vbroadcasti32x4 (%rax),%zmm9
724
+ vaesenc %zmm9,%zmm0,%zmm0
725
+ addq $16,%rax
726
+ cmpq %rax,%r11
727
+ jne .Lvaesenc_loop_tail_full_vec__func1
728
+ vaesenclast %zmm14,%zmm0,%zmm0
729
+
730
+ // XOR the data with the vector of keystream blocks.
731
+ vmovdqu8 (%rdi),%zmm1
732
+ vpxord %zmm1,%zmm0,%zmm0
733
+ vmovdqu8 %zmm0,(%rsi)
734
+
735
+ // Update GHASH with the ciphertext blocks, without reducing.
736
+ vmovdqu8 (%r8),%zmm30
737
+ vpshufb %zmm8,%zmm0,%zmm0
738
+ vpxord %zmm10,%zmm0,%zmm0
739
+ vpclmulqdq $0x00,%zmm30,%zmm0,%zmm7 // a_L * b_L
740
+ vpclmulqdq $0x01,%zmm30,%zmm0,%zmm1 // a_L * b_H
741
+ vpclmulqdq $0x10,%zmm30,%zmm0,%zmm2 // a_H * b_L
742
+ vpclmulqdq $0x11,%zmm30,%zmm0,%zmm3 // a_H * b_H
743
+ vpxord %zmm7,%zmm4,%zmm4
744
+ vpternlogd $0x96,%zmm2,%zmm1,%zmm5
745
+ vpxord %zmm3,%zmm6,%zmm6
746
+
747
+ vpxor %xmm10,%xmm10,%xmm10
748
+
749
+ addq $64,%r8
750
+ addq $64,%rdi
751
+ addq $64,%rsi
752
+ subq $64,%rdx
753
+ cmpq $64,%rdx
754
+ jae .Lcrypt_loop_1x__func1
755
+
756
+ testq %rdx,%rdx
757
+ jz .Lreduce__func1
758
+
759
+ .Lpartial_vec__func1:
760
+ // Process a partial vector of length 1 <= DATALEN < 64.
761
+
762
+ // Set the data mask %k1 to DATALEN 1's.
763
+ // Set the key powers mask %k2 to round_up(DATALEN, 16) 1's.
764
+ movq $-1,%rax
765
+ bzhiq %rdx,%rax,%rax
766
+ kmovq %rax,%k1
767
+ addq $15,%rdx
768
+ andq $-16,%rdx
769
+ movq $-1,%rax
770
+ bzhiq %rdx,%rax,%rax
771
+ kmovq %rax,%k2
772
+
773
+ // Encrypt one last vector of counter blocks. This does not need to be
774
+ // masked. The counter does not need to be incremented here.
775
+ vpshufb %zmm8,%zmm12,%zmm0
776
+ vpxord %zmm13,%zmm0,%zmm0
777
+ leaq 16(%rcx),%rax
778
+ .Lvaesenc_loop_tail_partialvec__func1:
779
+ vbroadcasti32x4 (%rax),%zmm9
780
+ vaesenc %zmm9,%zmm0,%zmm0
781
+ addq $16,%rax
782
+ cmpq %rax,%r11
783
+ jne .Lvaesenc_loop_tail_partialvec__func1
784
+ vaesenclast %zmm14,%zmm0,%zmm0
785
+
786
+ // XOR the data with the appropriate number of keystream bytes.
787
+ vmovdqu8 (%rdi),%zmm1{%k1}{z}
788
+ vpxord %zmm1,%zmm0,%zmm0
789
+ vmovdqu8 %zmm0,(%rsi){%k1}
790
+
791
+ // Update GHASH with the ciphertext block(s), without reducing.
792
+ //
793
+ // In the case of DATALEN < 64, the ciphertext is zero-padded to 64
794
+ // bytes. (If decrypting, it's done by the above masked load. If
795
+ // encrypting, it's done by the below masked register-to-register move.)
796
+ // Note that if DATALEN <= 48, there will be additional padding beyond
797
+ // the padding of the last block specified by GHASH itself; i.e., there
798
+ // may be whole block(s) that get processed by the GHASH multiplication
799
+ // and reduction instructions but should not actually be included in the
800
+ // GHASH. However, any such blocks are all-zeroes, and the values that
801
+ // they're multiplied with are also all-zeroes. Therefore they just add
802
+ // 0 * 0 = 0 to the final GHASH result, which makes no difference.
803
+ vmovdqu8 (%r8),%zmm30{%k2}{z}
804
+ vmovdqu8 %zmm0,%zmm1{%k1}{z}
805
+ vpshufb %zmm8,%zmm1,%zmm0
806
+ vpxord %zmm10,%zmm0,%zmm0
807
+ vpclmulqdq $0x00,%zmm30,%zmm0,%zmm7 // a_L * b_L
808
+ vpclmulqdq $0x01,%zmm30,%zmm0,%zmm1 // a_L * b_H
809
+ vpclmulqdq $0x10,%zmm30,%zmm0,%zmm2 // a_H * b_L
810
+ vpclmulqdq $0x11,%zmm30,%zmm0,%zmm3 // a_H * b_H
811
+ vpxord %zmm7,%zmm4,%zmm4
812
+ vpternlogd $0x96,%zmm2,%zmm1,%zmm5
813
+ vpxord %zmm3,%zmm6,%zmm6
814
+
815
+
816
+ .Lreduce__func1:
817
+ // Finally, do the GHASH reduction.
818
+ vpclmulqdq $0x01,%zmm4,%zmm31,%zmm0
819
+ vpshufd $0x4e,%zmm4,%zmm4
820
+ vpternlogd $0x96,%zmm0,%zmm4,%zmm5
821
+ vpclmulqdq $0x01,%zmm5,%zmm31,%zmm0
822
+ vpshufd $0x4e,%zmm5,%zmm5
823
+ vpternlogd $0x96,%zmm0,%zmm5,%zmm6
824
+
825
+ vextracti32x4 $1,%zmm6,%xmm0
826
+ vextracti32x4 $2,%zmm6,%xmm1
827
+ vextracti32x4 $3,%zmm6,%xmm2
828
+ vpxord %xmm0,%xmm6,%xmm10
829
+ vpternlogd $0x96,%xmm1,%xmm2,%xmm10
830
+
831
+
832
+ .Ldone__func1:
833
+ // Store the updated GHASH accumulator back to memory.
834
+ vpshufb %xmm8,%xmm10,%xmm10
835
+ vmovdqu %xmm10,(%r12)
836
+
837
+ vzeroupper // This is needed after using ymm or zmm registers.
838
+ popq %r12
839
+ .cfi_adjust_cfa_offset -8
840
+ .cfi_restore %r12
841
+ ret
842
+
843
+ .cfi_endproc
844
+ .size aes_gcm_enc_update_vaes_avx512, . - aes_gcm_enc_update_vaes_avx512
845
+ .globl aes_gcm_dec_update_vaes_avx512
846
+ .hidden aes_gcm_dec_update_vaes_avx512
847
+ .type aes_gcm_dec_update_vaes_avx512,@function
848
+ .align 32
849
+ aes_gcm_dec_update_vaes_avx512:
850
+ .cfi_startproc
851
+
852
+ _CET_ENDBR
853
+ pushq %r12
854
+ .cfi_adjust_cfa_offset 8
855
+ .cfi_offset %r12,-16
856
+
857
+ movq 16(%rsp),%r12 // arg7
858
+ // Load some constants.
859
+ vbroadcasti32x4 .Lbswap_mask(%rip),%zmm8
860
+ vbroadcasti32x4 .Lgfpoly(%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 .Lctr_pattern(%rip),%zmm12,%zmm12
883
+
884
+ // Load 4 into all 128-bit lanes of LE_CTR_INC.
885
+ vbroadcasti32x4 .Linc_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 .Lcrypt_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
+ .Lcrypt_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 .Laes128__func2
933
+ je .Laes192__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
+ .Laes192__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
+ .Laes128__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 .Lcrypt_loop_4x__func2
1087
+ .Lcrypt_loop_4x_done__func2:
1088
+ // Check whether any data remains.
1089
+ testq %rdx,%rdx
1090
+ jz .Ldone__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 .Lpartial_vec__func2
1121
+
1122
+ .Lcrypt_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
+ .Lvaesenc_loop_tail_full_vec__func2:
1131
+ vbroadcasti32x4 (%rax),%zmm9
1132
+ vaesenc %zmm9,%zmm0,%zmm0
1133
+ addq $16,%rax
1134
+ cmpq %rax,%r11
1135
+ jne .Lvaesenc_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 .Lcrypt_loop_1x__func2
1163
+
1164
+ testq %rdx,%rdx
1165
+ jz .Lreduce__func2
1166
+
1167
+ .Lpartial_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
+ .Lvaesenc_loop_tail_partialvec__func2:
1187
+ vbroadcasti32x4 (%rax),%zmm9
1188
+ vaesenc %zmm9,%zmm0,%zmm0
1189
+ addq $16,%rax
1190
+ cmpq %rax,%r11
1191
+ jne .Lvaesenc_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
+ .Lreduce__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
+ .Ldone__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
+ .cfi_adjust_cfa_offset -8
1248
+ .cfi_restore %r12
1249
+ ret
1250
+
1251
+ .cfi_endproc
1252
+ .size aes_gcm_dec_update_vaes_avx512, . - aes_gcm_dec_update_vaes_avx512
1253
+ #endif