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,3091 @@
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 16
10
+ one:
11
+ .quad 1,0
12
+ two:
13
+ .quad 2,0
14
+ three:
15
+ .quad 3,0
16
+ four:
17
+ .quad 4,0
18
+ five:
19
+ .quad 5,0
20
+ six:
21
+ .quad 6,0
22
+ seven:
23
+ .quad 7,0
24
+ eight:
25
+ .quad 8,0
26
+
27
+ OR_MASK:
28
+ .long 0x00000000,0x00000000,0x00000000,0x80000000
29
+ poly:
30
+ .quad 0x1, 0xc200000000000000
31
+ mask:
32
+ .long 0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d
33
+ con1:
34
+ .long 1,1,1,1
35
+ con2:
36
+ .long 0x1b,0x1b,0x1b,0x1b
37
+ con3:
38
+ .byte -1,-1,-1,-1,-1,-1,-1,-1,4,5,6,7,4,5,6,7
39
+ and_mask:
40
+ .long 0,0xffffffff, 0xffffffff, 0xffffffff
41
+ .text
42
+ .type GFMUL,@function
43
+ .align 16
44
+ GFMUL:
45
+ .cfi_startproc
46
+ vpclmulqdq $0x00,%xmm1,%xmm0,%xmm2
47
+ vpclmulqdq $0x11,%xmm1,%xmm0,%xmm5
48
+ vpclmulqdq $0x10,%xmm1,%xmm0,%xmm3
49
+ vpclmulqdq $0x01,%xmm1,%xmm0,%xmm4
50
+ vpxor %xmm4,%xmm3,%xmm3
51
+ vpslldq $8,%xmm3,%xmm4
52
+ vpsrldq $8,%xmm3,%xmm3
53
+ vpxor %xmm4,%xmm2,%xmm2
54
+ vpxor %xmm3,%xmm5,%xmm5
55
+
56
+ vpclmulqdq $0x10,poly(%rip),%xmm2,%xmm3
57
+ vpshufd $78,%xmm2,%xmm4
58
+ vpxor %xmm4,%xmm3,%xmm2
59
+
60
+ vpclmulqdq $0x10,poly(%rip),%xmm2,%xmm3
61
+ vpshufd $78,%xmm2,%xmm4
62
+ vpxor %xmm4,%xmm3,%xmm2
63
+
64
+ vpxor %xmm5,%xmm2,%xmm0
65
+ ret
66
+ .cfi_endproc
67
+ .size GFMUL, .-GFMUL
68
+ .globl aesgcmsiv_htable_init
69
+ .hidden aesgcmsiv_htable_init
70
+ .type aesgcmsiv_htable_init,@function
71
+ .align 16
72
+ aesgcmsiv_htable_init:
73
+ .cfi_startproc
74
+ _CET_ENDBR
75
+ vmovdqa (%rsi),%xmm0
76
+ vmovdqa %xmm0,%xmm1
77
+ vmovdqa %xmm0,(%rdi) // H
78
+ call GFMUL
79
+ vmovdqa %xmm0,16(%rdi) // H^2
80
+ call GFMUL
81
+ vmovdqa %xmm0,32(%rdi) // H^3
82
+ call GFMUL
83
+ vmovdqa %xmm0,48(%rdi) // H^4
84
+ call GFMUL
85
+ vmovdqa %xmm0,64(%rdi) // H^5
86
+ call GFMUL
87
+ vmovdqa %xmm0,80(%rdi) // H^6
88
+ call GFMUL
89
+ vmovdqa %xmm0,96(%rdi) // H^7
90
+ call GFMUL
91
+ vmovdqa %xmm0,112(%rdi) // H^8
92
+ ret
93
+ .cfi_endproc
94
+ .size aesgcmsiv_htable_init, .-aesgcmsiv_htable_init
95
+ .globl aesgcmsiv_htable6_init
96
+ .hidden aesgcmsiv_htable6_init
97
+ .type aesgcmsiv_htable6_init,@function
98
+ .align 16
99
+ aesgcmsiv_htable6_init:
100
+ .cfi_startproc
101
+ _CET_ENDBR
102
+ vmovdqa (%rsi),%xmm0
103
+ vmovdqa %xmm0,%xmm1
104
+ vmovdqa %xmm0,(%rdi) // H
105
+ call GFMUL
106
+ vmovdqa %xmm0,16(%rdi) // H^2
107
+ call GFMUL
108
+ vmovdqa %xmm0,32(%rdi) // H^3
109
+ call GFMUL
110
+ vmovdqa %xmm0,48(%rdi) // H^4
111
+ call GFMUL
112
+ vmovdqa %xmm0,64(%rdi) // H^5
113
+ call GFMUL
114
+ vmovdqa %xmm0,80(%rdi) // H^6
115
+ ret
116
+ .cfi_endproc
117
+ .size aesgcmsiv_htable6_init, .-aesgcmsiv_htable6_init
118
+ .globl aesgcmsiv_htable_polyval
119
+ .hidden aesgcmsiv_htable_polyval
120
+ .type aesgcmsiv_htable_polyval,@function
121
+ .align 16
122
+ aesgcmsiv_htable_polyval:
123
+ .cfi_startproc
124
+ _CET_ENDBR
125
+ testq %rdx,%rdx
126
+ jnz .Lhtable_polyval_start
127
+ ret
128
+
129
+ .Lhtable_polyval_start:
130
+ vzeroall
131
+
132
+ // We hash 8 blocks each iteration. If the total number of blocks is not a
133
+ // multiple of 8, we first hash the leading n%8 blocks.
134
+ movq %rdx,%r11
135
+ andq $127,%r11
136
+
137
+ jz .Lhtable_polyval_no_prefix
138
+
139
+ vpxor %xmm9,%xmm9,%xmm9
140
+ vmovdqa (%rcx),%xmm1
141
+ subq %r11,%rdx
142
+
143
+ subq $16,%r11
144
+
145
+ // hash first prefix block
146
+ vmovdqu (%rsi),%xmm0
147
+ vpxor %xmm1,%xmm0,%xmm0
148
+
149
+ vpclmulqdq $0x01,(%rdi,%r11,1),%xmm0,%xmm5
150
+ vpclmulqdq $0x00,(%rdi,%r11,1),%xmm0,%xmm3
151
+ vpclmulqdq $0x11,(%rdi,%r11,1),%xmm0,%xmm4
152
+ vpclmulqdq $0x10,(%rdi,%r11,1),%xmm0,%xmm6
153
+ vpxor %xmm6,%xmm5,%xmm5
154
+
155
+ leaq 16(%rsi),%rsi
156
+ testq %r11,%r11
157
+ jnz .Lhtable_polyval_prefix_loop
158
+ jmp .Lhtable_polyval_prefix_complete
159
+
160
+ // hash remaining prefix blocks (up to 7 total prefix blocks)
161
+ .align 64
162
+ .Lhtable_polyval_prefix_loop:
163
+ subq $16,%r11
164
+
165
+ vmovdqu (%rsi),%xmm0 // next data block
166
+
167
+ vpclmulqdq $0x00,(%rdi,%r11,1),%xmm0,%xmm6
168
+ vpxor %xmm6,%xmm3,%xmm3
169
+ vpclmulqdq $0x11,(%rdi,%r11,1),%xmm0,%xmm6
170
+ vpxor %xmm6,%xmm4,%xmm4
171
+ vpclmulqdq $0x01,(%rdi,%r11,1),%xmm0,%xmm6
172
+ vpxor %xmm6,%xmm5,%xmm5
173
+ vpclmulqdq $0x10,(%rdi,%r11,1),%xmm0,%xmm6
174
+ vpxor %xmm6,%xmm5,%xmm5
175
+
176
+ testq %r11,%r11
177
+
178
+ leaq 16(%rsi),%rsi
179
+
180
+ jnz .Lhtable_polyval_prefix_loop
181
+
182
+ .Lhtable_polyval_prefix_complete:
183
+ vpsrldq $8,%xmm5,%xmm6
184
+ vpslldq $8,%xmm5,%xmm5
185
+
186
+ vpxor %xmm6,%xmm4,%xmm9
187
+ vpxor %xmm5,%xmm3,%xmm1
188
+
189
+ jmp .Lhtable_polyval_main_loop
190
+
191
+ .Lhtable_polyval_no_prefix:
192
+ // At this point we know the number of blocks is a multiple of 8. However,
193
+ // the reduction in the main loop includes a multiplication by x^(-128). In
194
+ // order to counter this, the existing tag needs to be multiplied by x^128.
195
+ // In practice, this just means that it is loaded into %xmm9, not %xmm1.
196
+ vpxor %xmm1,%xmm1,%xmm1
197
+ vmovdqa (%rcx),%xmm9
198
+
199
+ .align 64
200
+ .Lhtable_polyval_main_loop:
201
+ subq $0x80,%rdx
202
+ jb .Lhtable_polyval_out
203
+
204
+ vmovdqu 112(%rsi),%xmm0 // Ii
205
+
206
+ vpclmulqdq $0x01,(%rdi),%xmm0,%xmm5
207
+ vpclmulqdq $0x00,(%rdi),%xmm0,%xmm3
208
+ vpclmulqdq $0x11,(%rdi),%xmm0,%xmm4
209
+ vpclmulqdq $0x10,(%rdi),%xmm0,%xmm6
210
+ vpxor %xmm6,%xmm5,%xmm5
211
+
212
+ // ########################################################
213
+ vmovdqu 96(%rsi),%xmm0
214
+ vpclmulqdq $0x01,16(%rdi),%xmm0,%xmm6
215
+ vpxor %xmm6,%xmm5,%xmm5
216
+ vpclmulqdq $0x00,16(%rdi),%xmm0,%xmm6
217
+ vpxor %xmm6,%xmm3,%xmm3
218
+ vpclmulqdq $0x11,16(%rdi),%xmm0,%xmm6
219
+ vpxor %xmm6,%xmm4,%xmm4
220
+ vpclmulqdq $0x10,16(%rdi),%xmm0,%xmm6
221
+ vpxor %xmm6,%xmm5,%xmm5
222
+
223
+
224
+ // ########################################################
225
+ vmovdqu 80(%rsi),%xmm0
226
+
227
+ vpclmulqdq $0x10,poly(%rip),%xmm1,%xmm7 // reduction stage 1a
228
+ vpalignr $8,%xmm1,%xmm1,%xmm1
229
+
230
+ vpclmulqdq $0x01,32(%rdi),%xmm0,%xmm6
231
+ vpxor %xmm6,%xmm5,%xmm5
232
+ vpclmulqdq $0x00,32(%rdi),%xmm0,%xmm6
233
+ vpxor %xmm6,%xmm3,%xmm3
234
+ vpclmulqdq $0x11,32(%rdi),%xmm0,%xmm6
235
+ vpxor %xmm6,%xmm4,%xmm4
236
+ vpclmulqdq $0x10,32(%rdi),%xmm0,%xmm6
237
+ vpxor %xmm6,%xmm5,%xmm5
238
+
239
+
240
+ vpxor %xmm7,%xmm1,%xmm1 // reduction stage 1b
241
+ // ########################################################
242
+ vmovdqu 64(%rsi),%xmm0
243
+
244
+ vpclmulqdq $0x01,48(%rdi),%xmm0,%xmm6
245
+ vpxor %xmm6,%xmm5,%xmm5
246
+ vpclmulqdq $0x00,48(%rdi),%xmm0,%xmm6
247
+ vpxor %xmm6,%xmm3,%xmm3
248
+ vpclmulqdq $0x11,48(%rdi),%xmm0,%xmm6
249
+ vpxor %xmm6,%xmm4,%xmm4
250
+ vpclmulqdq $0x10,48(%rdi),%xmm0,%xmm6
251
+ vpxor %xmm6,%xmm5,%xmm5
252
+
253
+ // ########################################################
254
+ vmovdqu 48(%rsi),%xmm0
255
+
256
+ vpclmulqdq $0x10,poly(%rip),%xmm1,%xmm7 // reduction stage 2a
257
+ vpalignr $8,%xmm1,%xmm1,%xmm1
258
+
259
+ vpclmulqdq $0x01,64(%rdi),%xmm0,%xmm6
260
+ vpxor %xmm6,%xmm5,%xmm5
261
+ vpclmulqdq $0x00,64(%rdi),%xmm0,%xmm6
262
+ vpxor %xmm6,%xmm3,%xmm3
263
+ vpclmulqdq $0x11,64(%rdi),%xmm0,%xmm6
264
+ vpxor %xmm6,%xmm4,%xmm4
265
+ vpclmulqdq $0x10,64(%rdi),%xmm0,%xmm6
266
+ vpxor %xmm6,%xmm5,%xmm5
267
+
268
+
269
+ vpxor %xmm7,%xmm1,%xmm1 // reduction stage 2b
270
+ // ########################################################
271
+ vmovdqu 32(%rsi),%xmm0
272
+
273
+ vpclmulqdq $0x01,80(%rdi),%xmm0,%xmm6
274
+ vpxor %xmm6,%xmm5,%xmm5
275
+ vpclmulqdq $0x00,80(%rdi),%xmm0,%xmm6
276
+ vpxor %xmm6,%xmm3,%xmm3
277
+ vpclmulqdq $0x11,80(%rdi),%xmm0,%xmm6
278
+ vpxor %xmm6,%xmm4,%xmm4
279
+ vpclmulqdq $0x10,80(%rdi),%xmm0,%xmm6
280
+ vpxor %xmm6,%xmm5,%xmm5
281
+
282
+
283
+ vpxor %xmm9,%xmm1,%xmm1 // reduction finalize
284
+ // ########################################################
285
+ vmovdqu 16(%rsi),%xmm0
286
+
287
+ vpclmulqdq $0x01,96(%rdi),%xmm0,%xmm6
288
+ vpxor %xmm6,%xmm5,%xmm5
289
+ vpclmulqdq $0x00,96(%rdi),%xmm0,%xmm6
290
+ vpxor %xmm6,%xmm3,%xmm3
291
+ vpclmulqdq $0x11,96(%rdi),%xmm0,%xmm6
292
+ vpxor %xmm6,%xmm4,%xmm4
293
+ vpclmulqdq $0x10,96(%rdi),%xmm0,%xmm6
294
+ vpxor %xmm6,%xmm5,%xmm5
295
+
296
+ // ########################################################
297
+ vmovdqu 0(%rsi),%xmm0
298
+ vpxor %xmm1,%xmm0,%xmm0
299
+
300
+ vpclmulqdq $0x01,112(%rdi),%xmm0,%xmm6
301
+ vpxor %xmm6,%xmm5,%xmm5
302
+ vpclmulqdq $0x00,112(%rdi),%xmm0,%xmm6
303
+ vpxor %xmm6,%xmm3,%xmm3
304
+ vpclmulqdq $0x11,112(%rdi),%xmm0,%xmm6
305
+ vpxor %xmm6,%xmm4,%xmm4
306
+ vpclmulqdq $0x10,112(%rdi),%xmm0,%xmm6
307
+ vpxor %xmm6,%xmm5,%xmm5
308
+
309
+ // ########################################################
310
+ vpsrldq $8,%xmm5,%xmm6
311
+ vpslldq $8,%xmm5,%xmm5
312
+
313
+ vpxor %xmm6,%xmm4,%xmm9
314
+ vpxor %xmm5,%xmm3,%xmm1
315
+
316
+ leaq 128(%rsi),%rsi
317
+ jmp .Lhtable_polyval_main_loop
318
+
319
+ // ########################################################
320
+
321
+ .Lhtable_polyval_out:
322
+ vpclmulqdq $0x10,poly(%rip),%xmm1,%xmm6
323
+ vpalignr $8,%xmm1,%xmm1,%xmm1
324
+ vpxor %xmm6,%xmm1,%xmm1
325
+
326
+ vpclmulqdq $0x10,poly(%rip),%xmm1,%xmm6
327
+ vpalignr $8,%xmm1,%xmm1,%xmm1
328
+ vpxor %xmm6,%xmm1,%xmm1
329
+ vpxor %xmm9,%xmm1,%xmm1
330
+
331
+ vmovdqu %xmm1,(%rcx)
332
+ vzeroupper
333
+ ret
334
+ .cfi_endproc
335
+ .size aesgcmsiv_htable_polyval,.-aesgcmsiv_htable_polyval
336
+ .globl aesgcmsiv_polyval_horner
337
+ .hidden aesgcmsiv_polyval_horner
338
+ .type aesgcmsiv_polyval_horner,@function
339
+ .align 16
340
+ aesgcmsiv_polyval_horner:
341
+ .cfi_startproc
342
+ _CET_ENDBR
343
+ testq %rcx,%rcx
344
+ jnz .Lpolyval_horner_start
345
+ ret
346
+
347
+ .Lpolyval_horner_start:
348
+ // We will start with L GFMULS for POLYVAL(BIG_BUFFER)
349
+ // RES = GFMUL(RES, H)
350
+
351
+ xorq %r10,%r10
352
+ shlq $4,%rcx // L contains number of bytes to process
353
+
354
+ vmovdqa (%rsi),%xmm1
355
+ vmovdqa (%rdi),%xmm0
356
+
357
+ .Lpolyval_horner_loop:
358
+ vpxor (%rdx,%r10,1),%xmm0,%xmm0 // RES = RES + Xi
359
+ call GFMUL // RES = RES * H
360
+
361
+ addq $16,%r10
362
+ cmpq %r10,%rcx
363
+ jne .Lpolyval_horner_loop
364
+
365
+ // calculation of T is complete. RES=T
366
+ vmovdqa %xmm0,(%rdi)
367
+ ret
368
+ .cfi_endproc
369
+ .size aesgcmsiv_polyval_horner,.-aesgcmsiv_polyval_horner
370
+ .globl aes128gcmsiv_aes_ks
371
+ .hidden aes128gcmsiv_aes_ks
372
+ .type aes128gcmsiv_aes_ks,@function
373
+ .align 16
374
+ aes128gcmsiv_aes_ks:
375
+ .cfi_startproc
376
+ _CET_ENDBR
377
+ vmovdqu (%rdi),%xmm1 // xmm1 = user key
378
+ vmovdqa %xmm1,(%rsi) // rsi points to output
379
+
380
+ vmovdqa con1(%rip),%xmm0
381
+ vmovdqa mask(%rip),%xmm15
382
+
383
+ movq $8,%rax
384
+
385
+ .Lks128_loop:
386
+ addq $16,%rsi // rsi points for next key
387
+ subq $1,%rax
388
+ vpshufb %xmm15,%xmm1,%xmm2 // xmm2 = shuffled user key
389
+ vaesenclast %xmm0,%xmm2,%xmm2
390
+ vpslld $1,%xmm0,%xmm0
391
+ vpslldq $4,%xmm1,%xmm3
392
+ vpxor %xmm3,%xmm1,%xmm1
393
+ vpslldq $4,%xmm3,%xmm3
394
+ vpxor %xmm3,%xmm1,%xmm1
395
+ vpslldq $4,%xmm3,%xmm3
396
+ vpxor %xmm3,%xmm1,%xmm1
397
+ vpxor %xmm2,%xmm1,%xmm1
398
+ vmovdqa %xmm1,(%rsi)
399
+ jne .Lks128_loop
400
+
401
+ vmovdqa con2(%rip),%xmm0
402
+ vpshufb %xmm15,%xmm1,%xmm2
403
+ vaesenclast %xmm0,%xmm2,%xmm2
404
+ vpslld $1,%xmm0,%xmm0
405
+ vpslldq $4,%xmm1,%xmm3
406
+ vpxor %xmm3,%xmm1,%xmm1
407
+ vpslldq $4,%xmm3,%xmm3
408
+ vpxor %xmm3,%xmm1,%xmm1
409
+ vpslldq $4,%xmm3,%xmm3
410
+ vpxor %xmm3,%xmm1,%xmm1
411
+ vpxor %xmm2,%xmm1,%xmm1
412
+ vmovdqa %xmm1,16(%rsi)
413
+
414
+ vpshufb %xmm15,%xmm1,%xmm2
415
+ vaesenclast %xmm0,%xmm2,%xmm2
416
+ vpslldq $4,%xmm1,%xmm3
417
+ vpxor %xmm3,%xmm1,%xmm1
418
+ vpslldq $4,%xmm3,%xmm3
419
+ vpxor %xmm3,%xmm1,%xmm1
420
+ vpslldq $4,%xmm3,%xmm3
421
+ vpxor %xmm3,%xmm1,%xmm1
422
+ vpxor %xmm2,%xmm1,%xmm1
423
+ vmovdqa %xmm1,32(%rsi)
424
+ ret
425
+ .cfi_endproc
426
+ .size aes128gcmsiv_aes_ks,.-aes128gcmsiv_aes_ks
427
+ .globl aes256gcmsiv_aes_ks
428
+ .hidden aes256gcmsiv_aes_ks
429
+ .type aes256gcmsiv_aes_ks,@function
430
+ .align 16
431
+ aes256gcmsiv_aes_ks:
432
+ .cfi_startproc
433
+ _CET_ENDBR
434
+ vmovdqu (%rdi),%xmm1
435
+ vmovdqu 16(%rdi),%xmm3
436
+ vmovdqa %xmm1,(%rsi)
437
+ vmovdqa %xmm3,16(%rsi)
438
+ vmovdqa con1(%rip),%xmm0
439
+ vmovdqa mask(%rip),%xmm15
440
+ vpxor %xmm14,%xmm14,%xmm14
441
+ movq $6,%rax
442
+
443
+ .Lks256_loop:
444
+ addq $32,%rsi
445
+ subq $1,%rax
446
+ vpshufb %xmm15,%xmm3,%xmm2
447
+ vaesenclast %xmm0,%xmm2,%xmm2
448
+ vpslld $1,%xmm0,%xmm0
449
+ vpsllq $32,%xmm1,%xmm4
450
+ vpxor %xmm4,%xmm1,%xmm1
451
+ vpshufb con3(%rip),%xmm1,%xmm4
452
+ vpxor %xmm4,%xmm1,%xmm1
453
+ vpxor %xmm2,%xmm1,%xmm1
454
+ vmovdqa %xmm1,(%rsi)
455
+ vpshufd $0xff,%xmm1,%xmm2
456
+ vaesenclast %xmm14,%xmm2,%xmm2
457
+ vpsllq $32,%xmm3,%xmm4
458
+ vpxor %xmm4,%xmm3,%xmm3
459
+ vpshufb con3(%rip),%xmm3,%xmm4
460
+ vpxor %xmm4,%xmm3,%xmm3
461
+ vpxor %xmm2,%xmm3,%xmm3
462
+ vmovdqa %xmm3,16(%rsi)
463
+ jne .Lks256_loop
464
+
465
+ vpshufb %xmm15,%xmm3,%xmm2
466
+ vaesenclast %xmm0,%xmm2,%xmm2
467
+ vpsllq $32,%xmm1,%xmm4
468
+ vpxor %xmm4,%xmm1,%xmm1
469
+ vpshufb con3(%rip),%xmm1,%xmm4
470
+ vpxor %xmm4,%xmm1,%xmm1
471
+ vpxor %xmm2,%xmm1,%xmm1
472
+ vmovdqa %xmm1,32(%rsi)
473
+ ret
474
+ .cfi_endproc
475
+ .globl aes128gcmsiv_aes_ks_enc_x1
476
+ .hidden aes128gcmsiv_aes_ks_enc_x1
477
+ .type aes128gcmsiv_aes_ks_enc_x1,@function
478
+ .align 16
479
+ aes128gcmsiv_aes_ks_enc_x1:
480
+ .cfi_startproc
481
+ _CET_ENDBR
482
+ vmovdqa (%rcx),%xmm1 // xmm1 = first 16 bytes of random key
483
+ vmovdqa 0(%rdi),%xmm4
484
+
485
+ vmovdqa %xmm1,(%rdx) // KEY[0] = first 16 bytes of random key
486
+ vpxor %xmm1,%xmm4,%xmm4
487
+
488
+ vmovdqa con1(%rip),%xmm0 // xmm0 = 1,1,1,1
489
+ vmovdqa mask(%rip),%xmm15 // xmm15 = mask
490
+
491
+ vpshufb %xmm15,%xmm1,%xmm2 //
492
+ vaesenclast %xmm0,%xmm2,%xmm2
493
+ vpslld $1,%xmm0,%xmm0
494
+ vpsllq $32,%xmm1,%xmm3 //
495
+ vpxor %xmm3,%xmm1,%xmm1
496
+ vpshufb con3(%rip),%xmm1,%xmm3
497
+ vpxor %xmm3,%xmm1,%xmm1
498
+ vpxor %xmm2,%xmm1,%xmm1
499
+
500
+ vaesenc %xmm1,%xmm4,%xmm4
501
+ vmovdqa %xmm1,16(%rdx)
502
+
503
+ vpshufb %xmm15,%xmm1,%xmm2 //
504
+ vaesenclast %xmm0,%xmm2,%xmm2
505
+ vpslld $1,%xmm0,%xmm0
506
+ vpsllq $32,%xmm1,%xmm3 //
507
+ vpxor %xmm3,%xmm1,%xmm1
508
+ vpshufb con3(%rip),%xmm1,%xmm3
509
+ vpxor %xmm3,%xmm1,%xmm1
510
+ vpxor %xmm2,%xmm1,%xmm1
511
+
512
+ vaesenc %xmm1,%xmm4,%xmm4
513
+ vmovdqa %xmm1,32(%rdx)
514
+
515
+ vpshufb %xmm15,%xmm1,%xmm2 //
516
+ vaesenclast %xmm0,%xmm2,%xmm2
517
+ vpslld $1,%xmm0,%xmm0
518
+ vpsllq $32,%xmm1,%xmm3 //
519
+ vpxor %xmm3,%xmm1,%xmm1
520
+ vpshufb con3(%rip),%xmm1,%xmm3
521
+ vpxor %xmm3,%xmm1,%xmm1
522
+ vpxor %xmm2,%xmm1,%xmm1
523
+
524
+ vaesenc %xmm1,%xmm4,%xmm4
525
+ vmovdqa %xmm1,48(%rdx)
526
+
527
+ vpshufb %xmm15,%xmm1,%xmm2 //
528
+ vaesenclast %xmm0,%xmm2,%xmm2
529
+ vpslld $1,%xmm0,%xmm0
530
+ vpsllq $32,%xmm1,%xmm3 //
531
+ vpxor %xmm3,%xmm1,%xmm1
532
+ vpshufb con3(%rip),%xmm1,%xmm3
533
+ vpxor %xmm3,%xmm1,%xmm1
534
+ vpxor %xmm2,%xmm1,%xmm1
535
+
536
+ vaesenc %xmm1,%xmm4,%xmm4
537
+ vmovdqa %xmm1,64(%rdx)
538
+
539
+ vpshufb %xmm15,%xmm1,%xmm2 //
540
+ vaesenclast %xmm0,%xmm2,%xmm2
541
+ vpslld $1,%xmm0,%xmm0
542
+ vpsllq $32,%xmm1,%xmm3 //
543
+ vpxor %xmm3,%xmm1,%xmm1
544
+ vpshufb con3(%rip),%xmm1,%xmm3
545
+ vpxor %xmm3,%xmm1,%xmm1
546
+ vpxor %xmm2,%xmm1,%xmm1
547
+
548
+ vaesenc %xmm1,%xmm4,%xmm4
549
+ vmovdqa %xmm1,80(%rdx)
550
+
551
+ vpshufb %xmm15,%xmm1,%xmm2 //
552
+ vaesenclast %xmm0,%xmm2,%xmm2
553
+ vpslld $1,%xmm0,%xmm0
554
+ vpsllq $32,%xmm1,%xmm3 //
555
+ vpxor %xmm3,%xmm1,%xmm1
556
+ vpshufb con3(%rip),%xmm1,%xmm3
557
+ vpxor %xmm3,%xmm1,%xmm1
558
+ vpxor %xmm2,%xmm1,%xmm1
559
+
560
+ vaesenc %xmm1,%xmm4,%xmm4
561
+ vmovdqa %xmm1,96(%rdx)
562
+
563
+ vpshufb %xmm15,%xmm1,%xmm2 //
564
+ vaesenclast %xmm0,%xmm2,%xmm2
565
+ vpslld $1,%xmm0,%xmm0
566
+ vpsllq $32,%xmm1,%xmm3 //
567
+ vpxor %xmm3,%xmm1,%xmm1
568
+ vpshufb con3(%rip),%xmm1,%xmm3
569
+ vpxor %xmm3,%xmm1,%xmm1
570
+ vpxor %xmm2,%xmm1,%xmm1
571
+
572
+ vaesenc %xmm1,%xmm4,%xmm4
573
+ vmovdqa %xmm1,112(%rdx)
574
+
575
+ vpshufb %xmm15,%xmm1,%xmm2 //
576
+ vaesenclast %xmm0,%xmm2,%xmm2
577
+ vpslld $1,%xmm0,%xmm0
578
+ vpsllq $32,%xmm1,%xmm3 //
579
+ vpxor %xmm3,%xmm1,%xmm1
580
+ vpshufb con3(%rip),%xmm1,%xmm3
581
+ vpxor %xmm3,%xmm1,%xmm1
582
+ vpxor %xmm2,%xmm1,%xmm1
583
+
584
+ vaesenc %xmm1,%xmm4,%xmm4
585
+ vmovdqa %xmm1,128(%rdx)
586
+
587
+
588
+ vmovdqa con2(%rip),%xmm0
589
+
590
+ vpshufb %xmm15,%xmm1,%xmm2 //
591
+ vaesenclast %xmm0,%xmm2,%xmm2
592
+ vpslld $1,%xmm0,%xmm0
593
+ vpsllq $32,%xmm1,%xmm3 //
594
+ vpxor %xmm3,%xmm1,%xmm1
595
+ vpshufb con3(%rip),%xmm1,%xmm3
596
+ vpxor %xmm3,%xmm1,%xmm1
597
+ vpxor %xmm2,%xmm1,%xmm1
598
+
599
+ vaesenc %xmm1,%xmm4,%xmm4
600
+ vmovdqa %xmm1,144(%rdx)
601
+
602
+ vpshufb %xmm15,%xmm1,%xmm2 //
603
+ vaesenclast %xmm0,%xmm2,%xmm2
604
+ vpsllq $32,%xmm1,%xmm3 //
605
+ vpxor %xmm3,%xmm1,%xmm1
606
+ vpshufb con3(%rip),%xmm1,%xmm3
607
+ vpxor %xmm3,%xmm1,%xmm1
608
+ vpxor %xmm2,%xmm1,%xmm1
609
+
610
+ vaesenclast %xmm1,%xmm4,%xmm4
611
+ vmovdqa %xmm1,160(%rdx)
612
+
613
+
614
+ vmovdqa %xmm4,0(%rsi)
615
+ ret
616
+ .cfi_endproc
617
+ .size aes128gcmsiv_aes_ks_enc_x1,.-aes128gcmsiv_aes_ks_enc_x1
618
+ .globl aes128gcmsiv_kdf
619
+ .hidden aes128gcmsiv_kdf
620
+ .type aes128gcmsiv_kdf,@function
621
+ .align 16
622
+ aes128gcmsiv_kdf:
623
+ .cfi_startproc
624
+ _CET_ENDBR
625
+ // parameter 1: %rdi Pointer to NONCE
626
+ // parameter 2: %rsi Pointer to CT
627
+ // parameter 4: %rdx Pointer to keys
628
+
629
+ vmovdqa (%rdx),%xmm1 // xmm1 = first 16 bytes of random key
630
+ vmovdqa 0(%rdi),%xmm9
631
+ vmovdqa and_mask(%rip),%xmm12
632
+ vmovdqa one(%rip),%xmm13
633
+ vpshufd $0x90,%xmm9,%xmm9
634
+ vpand %xmm12,%xmm9,%xmm9
635
+ vpaddd %xmm13,%xmm9,%xmm10
636
+ vpaddd %xmm13,%xmm10,%xmm11
637
+ vpaddd %xmm13,%xmm11,%xmm12
638
+
639
+ vpxor %xmm1,%xmm9,%xmm9
640
+ vpxor %xmm1,%xmm10,%xmm10
641
+ vpxor %xmm1,%xmm11,%xmm11
642
+ vpxor %xmm1,%xmm12,%xmm12
643
+
644
+ vmovdqa 16(%rdx),%xmm1
645
+ vaesenc %xmm1,%xmm9,%xmm9
646
+ vaesenc %xmm1,%xmm10,%xmm10
647
+ vaesenc %xmm1,%xmm11,%xmm11
648
+ vaesenc %xmm1,%xmm12,%xmm12
649
+
650
+ vmovdqa 32(%rdx),%xmm2
651
+ vaesenc %xmm2,%xmm9,%xmm9
652
+ vaesenc %xmm2,%xmm10,%xmm10
653
+ vaesenc %xmm2,%xmm11,%xmm11
654
+ vaesenc %xmm2,%xmm12,%xmm12
655
+
656
+ vmovdqa 48(%rdx),%xmm1
657
+ vaesenc %xmm1,%xmm9,%xmm9
658
+ vaesenc %xmm1,%xmm10,%xmm10
659
+ vaesenc %xmm1,%xmm11,%xmm11
660
+ vaesenc %xmm1,%xmm12,%xmm12
661
+
662
+ vmovdqa 64(%rdx),%xmm2
663
+ vaesenc %xmm2,%xmm9,%xmm9
664
+ vaesenc %xmm2,%xmm10,%xmm10
665
+ vaesenc %xmm2,%xmm11,%xmm11
666
+ vaesenc %xmm2,%xmm12,%xmm12
667
+
668
+ vmovdqa 80(%rdx),%xmm1
669
+ vaesenc %xmm1,%xmm9,%xmm9
670
+ vaesenc %xmm1,%xmm10,%xmm10
671
+ vaesenc %xmm1,%xmm11,%xmm11
672
+ vaesenc %xmm1,%xmm12,%xmm12
673
+
674
+ vmovdqa 96(%rdx),%xmm2
675
+ vaesenc %xmm2,%xmm9,%xmm9
676
+ vaesenc %xmm2,%xmm10,%xmm10
677
+ vaesenc %xmm2,%xmm11,%xmm11
678
+ vaesenc %xmm2,%xmm12,%xmm12
679
+
680
+ vmovdqa 112(%rdx),%xmm1
681
+ vaesenc %xmm1,%xmm9,%xmm9
682
+ vaesenc %xmm1,%xmm10,%xmm10
683
+ vaesenc %xmm1,%xmm11,%xmm11
684
+ vaesenc %xmm1,%xmm12,%xmm12
685
+
686
+ vmovdqa 128(%rdx),%xmm2
687
+ vaesenc %xmm2,%xmm9,%xmm9
688
+ vaesenc %xmm2,%xmm10,%xmm10
689
+ vaesenc %xmm2,%xmm11,%xmm11
690
+ vaesenc %xmm2,%xmm12,%xmm12
691
+
692
+ vmovdqa 144(%rdx),%xmm1
693
+ vaesenc %xmm1,%xmm9,%xmm9
694
+ vaesenc %xmm1,%xmm10,%xmm10
695
+ vaesenc %xmm1,%xmm11,%xmm11
696
+ vaesenc %xmm1,%xmm12,%xmm12
697
+
698
+ vmovdqa 160(%rdx),%xmm2
699
+ vaesenclast %xmm2,%xmm9,%xmm9
700
+ vaesenclast %xmm2,%xmm10,%xmm10
701
+ vaesenclast %xmm2,%xmm11,%xmm11
702
+ vaesenclast %xmm2,%xmm12,%xmm12
703
+
704
+
705
+ vmovdqa %xmm9,0(%rsi)
706
+ vmovdqa %xmm10,16(%rsi)
707
+ vmovdqa %xmm11,32(%rsi)
708
+ vmovdqa %xmm12,48(%rsi)
709
+ ret
710
+ .cfi_endproc
711
+ .size aes128gcmsiv_kdf,.-aes128gcmsiv_kdf
712
+ .globl aes128gcmsiv_enc_msg_x4
713
+ .hidden aes128gcmsiv_enc_msg_x4
714
+ .type aes128gcmsiv_enc_msg_x4,@function
715
+ .align 16
716
+ aes128gcmsiv_enc_msg_x4:
717
+ .cfi_startproc
718
+ _CET_ENDBR
719
+ testq %r8,%r8
720
+ jnz .L128_enc_msg_x4_start
721
+ ret
722
+
723
+ .L128_enc_msg_x4_start:
724
+ pushq %r12
725
+ .cfi_adjust_cfa_offset 8
726
+ .cfi_offset %r12,-16
727
+ pushq %r13
728
+ .cfi_adjust_cfa_offset 8
729
+ .cfi_offset %r13,-24
730
+
731
+ shrq $4,%r8 // LEN = num of blocks
732
+ movq %r8,%r10
733
+ shlq $62,%r10
734
+ shrq $62,%r10
735
+
736
+ // make IV from TAG
737
+ vmovdqa (%rdx),%xmm15
738
+ vpor OR_MASK(%rip),%xmm15,%xmm15 // IV = [1]TAG[126...32][00..00]
739
+
740
+ vmovdqu four(%rip),%xmm4 // Register to increment counters
741
+ vmovdqa %xmm15,%xmm0 // CTR1 = TAG[1][127...32][00..00]
742
+ vpaddd one(%rip),%xmm15,%xmm1 // CTR2 = TAG[1][127...32][00..01]
743
+ vpaddd two(%rip),%xmm15,%xmm2 // CTR3 = TAG[1][127...32][00..02]
744
+ vpaddd three(%rip),%xmm15,%xmm3 // CTR4 = TAG[1][127...32][00..03]
745
+
746
+ shrq $2,%r8
747
+ je .L128_enc_msg_x4_check_remainder
748
+
749
+ subq $64,%rsi
750
+ subq $64,%rdi
751
+
752
+ .L128_enc_msg_x4_loop1:
753
+ addq $64,%rsi
754
+ addq $64,%rdi
755
+
756
+ vmovdqa %xmm0,%xmm5
757
+ vmovdqa %xmm1,%xmm6
758
+ vmovdqa %xmm2,%xmm7
759
+ vmovdqa %xmm3,%xmm8
760
+
761
+ vpxor (%rcx),%xmm5,%xmm5
762
+ vpxor (%rcx),%xmm6,%xmm6
763
+ vpxor (%rcx),%xmm7,%xmm7
764
+ vpxor (%rcx),%xmm8,%xmm8
765
+
766
+ vmovdqu 16(%rcx),%xmm12
767
+ vaesenc %xmm12,%xmm5,%xmm5
768
+ vaesenc %xmm12,%xmm6,%xmm6
769
+ vaesenc %xmm12,%xmm7,%xmm7
770
+ vaesenc %xmm12,%xmm8,%xmm8
771
+
772
+ vpaddd %xmm4,%xmm0,%xmm0
773
+ vmovdqu 32(%rcx),%xmm12
774
+ vaesenc %xmm12,%xmm5,%xmm5
775
+ vaesenc %xmm12,%xmm6,%xmm6
776
+ vaesenc %xmm12,%xmm7,%xmm7
777
+ vaesenc %xmm12,%xmm8,%xmm8
778
+
779
+ vpaddd %xmm4,%xmm1,%xmm1
780
+ vmovdqu 48(%rcx),%xmm12
781
+ vaesenc %xmm12,%xmm5,%xmm5
782
+ vaesenc %xmm12,%xmm6,%xmm6
783
+ vaesenc %xmm12,%xmm7,%xmm7
784
+ vaesenc %xmm12,%xmm8,%xmm8
785
+
786
+ vpaddd %xmm4,%xmm2,%xmm2
787
+ vmovdqu 64(%rcx),%xmm12
788
+ vaesenc %xmm12,%xmm5,%xmm5
789
+ vaesenc %xmm12,%xmm6,%xmm6
790
+ vaesenc %xmm12,%xmm7,%xmm7
791
+ vaesenc %xmm12,%xmm8,%xmm8
792
+
793
+ vpaddd %xmm4,%xmm3,%xmm3
794
+
795
+ vmovdqu 80(%rcx),%xmm12
796
+ vaesenc %xmm12,%xmm5,%xmm5
797
+ vaesenc %xmm12,%xmm6,%xmm6
798
+ vaesenc %xmm12,%xmm7,%xmm7
799
+ vaesenc %xmm12,%xmm8,%xmm8
800
+
801
+ vmovdqu 96(%rcx),%xmm12
802
+ vaesenc %xmm12,%xmm5,%xmm5
803
+ vaesenc %xmm12,%xmm6,%xmm6
804
+ vaesenc %xmm12,%xmm7,%xmm7
805
+ vaesenc %xmm12,%xmm8,%xmm8
806
+
807
+ vmovdqu 112(%rcx),%xmm12
808
+ vaesenc %xmm12,%xmm5,%xmm5
809
+ vaesenc %xmm12,%xmm6,%xmm6
810
+ vaesenc %xmm12,%xmm7,%xmm7
811
+ vaesenc %xmm12,%xmm8,%xmm8
812
+
813
+ vmovdqu 128(%rcx),%xmm12
814
+ vaesenc %xmm12,%xmm5,%xmm5
815
+ vaesenc %xmm12,%xmm6,%xmm6
816
+ vaesenc %xmm12,%xmm7,%xmm7
817
+ vaesenc %xmm12,%xmm8,%xmm8
818
+
819
+ vmovdqu 144(%rcx),%xmm12
820
+ vaesenc %xmm12,%xmm5,%xmm5
821
+ vaesenc %xmm12,%xmm6,%xmm6
822
+ vaesenc %xmm12,%xmm7,%xmm7
823
+ vaesenc %xmm12,%xmm8,%xmm8
824
+
825
+ vmovdqu 160(%rcx),%xmm12
826
+ vaesenclast %xmm12,%xmm5,%xmm5
827
+ vaesenclast %xmm12,%xmm6,%xmm6
828
+ vaesenclast %xmm12,%xmm7,%xmm7
829
+ vaesenclast %xmm12,%xmm8,%xmm8
830
+
831
+
832
+ // XOR with Plaintext
833
+ vpxor 0(%rdi),%xmm5,%xmm5
834
+ vpxor 16(%rdi),%xmm6,%xmm6
835
+ vpxor 32(%rdi),%xmm7,%xmm7
836
+ vpxor 48(%rdi),%xmm8,%xmm8
837
+
838
+ subq $1,%r8
839
+
840
+ vmovdqu %xmm5,0(%rsi)
841
+ vmovdqu %xmm6,16(%rsi)
842
+ vmovdqu %xmm7,32(%rsi)
843
+ vmovdqu %xmm8,48(%rsi)
844
+
845
+ jne .L128_enc_msg_x4_loop1
846
+
847
+ addq $64,%rsi
848
+ addq $64,%rdi
849
+
850
+ .L128_enc_msg_x4_check_remainder:
851
+ cmpq $0,%r10
852
+ je .L128_enc_msg_x4_out
853
+
854
+ .L128_enc_msg_x4_loop2:
855
+ // enc each block separately
856
+ // CTR1 is the highest counter (even if no LOOP done)
857
+ vmovdqa %xmm0,%xmm5
858
+ vpaddd one(%rip),%xmm0,%xmm0 // inc counter
859
+
860
+ vpxor (%rcx),%xmm5,%xmm5
861
+ vaesenc 16(%rcx),%xmm5,%xmm5
862
+ vaesenc 32(%rcx),%xmm5,%xmm5
863
+ vaesenc 48(%rcx),%xmm5,%xmm5
864
+ vaesenc 64(%rcx),%xmm5,%xmm5
865
+ vaesenc 80(%rcx),%xmm5,%xmm5
866
+ vaesenc 96(%rcx),%xmm5,%xmm5
867
+ vaesenc 112(%rcx),%xmm5,%xmm5
868
+ vaesenc 128(%rcx),%xmm5,%xmm5
869
+ vaesenc 144(%rcx),%xmm5,%xmm5
870
+ vaesenclast 160(%rcx),%xmm5,%xmm5
871
+
872
+ // XOR with plaintext
873
+ vpxor (%rdi),%xmm5,%xmm5
874
+ vmovdqu %xmm5,(%rsi)
875
+
876
+ addq $16,%rdi
877
+ addq $16,%rsi
878
+
879
+ subq $1,%r10
880
+ jne .L128_enc_msg_x4_loop2
881
+
882
+ .L128_enc_msg_x4_out:
883
+ popq %r13
884
+ .cfi_adjust_cfa_offset -8
885
+ .cfi_restore %r13
886
+ popq %r12
887
+ .cfi_adjust_cfa_offset -8
888
+ .cfi_restore %r12
889
+ ret
890
+ .cfi_endproc
891
+ .size aes128gcmsiv_enc_msg_x4,.-aes128gcmsiv_enc_msg_x4
892
+ .globl aes128gcmsiv_enc_msg_x8
893
+ .hidden aes128gcmsiv_enc_msg_x8
894
+ .type aes128gcmsiv_enc_msg_x8,@function
895
+ .align 16
896
+ aes128gcmsiv_enc_msg_x8:
897
+ .cfi_startproc
898
+ _CET_ENDBR
899
+ testq %r8,%r8
900
+ jnz .L128_enc_msg_x8_start
901
+ ret
902
+
903
+ .L128_enc_msg_x8_start:
904
+ pushq %r12
905
+ .cfi_adjust_cfa_offset 8
906
+ .cfi_offset %r12,-16
907
+ pushq %r13
908
+ .cfi_adjust_cfa_offset 8
909
+ .cfi_offset %r13,-24
910
+ pushq %rbp
911
+ .cfi_adjust_cfa_offset 8
912
+ .cfi_offset %rbp,-32
913
+ movq %rsp,%rbp
914
+ .cfi_def_cfa_register rbp
915
+
916
+ // Place in stack
917
+ subq $128,%rsp
918
+ andq $-64,%rsp
919
+
920
+ shrq $4,%r8 // LEN = num of blocks
921
+ movq %r8,%r10
922
+ shlq $61,%r10
923
+ shrq $61,%r10
924
+
925
+ // make IV from TAG
926
+ vmovdqu (%rdx),%xmm1
927
+ vpor OR_MASK(%rip),%xmm1,%xmm1 // TMP1= IV = [1]TAG[126...32][00..00]
928
+
929
+ // store counter8 in the stack
930
+ vpaddd seven(%rip),%xmm1,%xmm0
931
+ vmovdqu %xmm0,(%rsp) // CTR8 = TAG[127...32][00..07]
932
+ vpaddd one(%rip),%xmm1,%xmm9 // CTR2 = TAG[127...32][00..01]
933
+ vpaddd two(%rip),%xmm1,%xmm10 // CTR3 = TAG[127...32][00..02]
934
+ vpaddd three(%rip),%xmm1,%xmm11 // CTR4 = TAG[127...32][00..03]
935
+ vpaddd four(%rip),%xmm1,%xmm12 // CTR5 = TAG[127...32][00..04]
936
+ vpaddd five(%rip),%xmm1,%xmm13 // CTR6 = TAG[127...32][00..05]
937
+ vpaddd six(%rip),%xmm1,%xmm14 // CTR7 = TAG[127...32][00..06]
938
+ vmovdqa %xmm1,%xmm0 // CTR1 = TAG[127...32][00..00]
939
+
940
+ shrq $3,%r8
941
+ je .L128_enc_msg_x8_check_remainder
942
+
943
+ subq $128,%rsi
944
+ subq $128,%rdi
945
+
946
+ .L128_enc_msg_x8_loop1:
947
+ addq $128,%rsi
948
+ addq $128,%rdi
949
+
950
+ vmovdqa %xmm0,%xmm1
951
+ vmovdqa %xmm9,%xmm2
952
+ vmovdqa %xmm10,%xmm3
953
+ vmovdqa %xmm11,%xmm4
954
+ vmovdqa %xmm12,%xmm5
955
+ vmovdqa %xmm13,%xmm6
956
+ vmovdqa %xmm14,%xmm7
957
+ // move from stack
958
+ vmovdqu (%rsp),%xmm8
959
+
960
+ vpxor (%rcx),%xmm1,%xmm1
961
+ vpxor (%rcx),%xmm2,%xmm2
962
+ vpxor (%rcx),%xmm3,%xmm3
963
+ vpxor (%rcx),%xmm4,%xmm4
964
+ vpxor (%rcx),%xmm5,%xmm5
965
+ vpxor (%rcx),%xmm6,%xmm6
966
+ vpxor (%rcx),%xmm7,%xmm7
967
+ vpxor (%rcx),%xmm8,%xmm8
968
+
969
+ vmovdqu 16(%rcx),%xmm15
970
+ vaesenc %xmm15,%xmm1,%xmm1
971
+ vaesenc %xmm15,%xmm2,%xmm2
972
+ vaesenc %xmm15,%xmm3,%xmm3
973
+ vaesenc %xmm15,%xmm4,%xmm4
974
+ vaesenc %xmm15,%xmm5,%xmm5
975
+ vaesenc %xmm15,%xmm6,%xmm6
976
+ vaesenc %xmm15,%xmm7,%xmm7
977
+ vaesenc %xmm15,%xmm8,%xmm8
978
+
979
+ vmovdqu (%rsp),%xmm14 // deal with CTR8
980
+ vpaddd eight(%rip),%xmm14,%xmm14
981
+ vmovdqu %xmm14,(%rsp)
982
+ vmovdqu 32(%rcx),%xmm15
983
+ vaesenc %xmm15,%xmm1,%xmm1
984
+ vaesenc %xmm15,%xmm2,%xmm2
985
+ vaesenc %xmm15,%xmm3,%xmm3
986
+ vaesenc %xmm15,%xmm4,%xmm4
987
+ vaesenc %xmm15,%xmm5,%xmm5
988
+ vaesenc %xmm15,%xmm6,%xmm6
989
+ vaesenc %xmm15,%xmm7,%xmm7
990
+ vaesenc %xmm15,%xmm8,%xmm8
991
+
992
+ vpsubd one(%rip),%xmm14,%xmm14
993
+ vmovdqu 48(%rcx),%xmm15
994
+ vaesenc %xmm15,%xmm1,%xmm1
995
+ vaesenc %xmm15,%xmm2,%xmm2
996
+ vaesenc %xmm15,%xmm3,%xmm3
997
+ vaesenc %xmm15,%xmm4,%xmm4
998
+ vaesenc %xmm15,%xmm5,%xmm5
999
+ vaesenc %xmm15,%xmm6,%xmm6
1000
+ vaesenc %xmm15,%xmm7,%xmm7
1001
+ vaesenc %xmm15,%xmm8,%xmm8
1002
+
1003
+ vpaddd eight(%rip),%xmm0,%xmm0
1004
+ vmovdqu 64(%rcx),%xmm15
1005
+ vaesenc %xmm15,%xmm1,%xmm1
1006
+ vaesenc %xmm15,%xmm2,%xmm2
1007
+ vaesenc %xmm15,%xmm3,%xmm3
1008
+ vaesenc %xmm15,%xmm4,%xmm4
1009
+ vaesenc %xmm15,%xmm5,%xmm5
1010
+ vaesenc %xmm15,%xmm6,%xmm6
1011
+ vaesenc %xmm15,%xmm7,%xmm7
1012
+ vaesenc %xmm15,%xmm8,%xmm8
1013
+
1014
+ vpaddd eight(%rip),%xmm9,%xmm9
1015
+ vmovdqu 80(%rcx),%xmm15
1016
+ vaesenc %xmm15,%xmm1,%xmm1
1017
+ vaesenc %xmm15,%xmm2,%xmm2
1018
+ vaesenc %xmm15,%xmm3,%xmm3
1019
+ vaesenc %xmm15,%xmm4,%xmm4
1020
+ vaesenc %xmm15,%xmm5,%xmm5
1021
+ vaesenc %xmm15,%xmm6,%xmm6
1022
+ vaesenc %xmm15,%xmm7,%xmm7
1023
+ vaesenc %xmm15,%xmm8,%xmm8
1024
+
1025
+ vpaddd eight(%rip),%xmm10,%xmm10
1026
+ vmovdqu 96(%rcx),%xmm15
1027
+ vaesenc %xmm15,%xmm1,%xmm1
1028
+ vaesenc %xmm15,%xmm2,%xmm2
1029
+ vaesenc %xmm15,%xmm3,%xmm3
1030
+ vaesenc %xmm15,%xmm4,%xmm4
1031
+ vaesenc %xmm15,%xmm5,%xmm5
1032
+ vaesenc %xmm15,%xmm6,%xmm6
1033
+ vaesenc %xmm15,%xmm7,%xmm7
1034
+ vaesenc %xmm15,%xmm8,%xmm8
1035
+
1036
+ vpaddd eight(%rip),%xmm11,%xmm11
1037
+ vmovdqu 112(%rcx),%xmm15
1038
+ vaesenc %xmm15,%xmm1,%xmm1
1039
+ vaesenc %xmm15,%xmm2,%xmm2
1040
+ vaesenc %xmm15,%xmm3,%xmm3
1041
+ vaesenc %xmm15,%xmm4,%xmm4
1042
+ vaesenc %xmm15,%xmm5,%xmm5
1043
+ vaesenc %xmm15,%xmm6,%xmm6
1044
+ vaesenc %xmm15,%xmm7,%xmm7
1045
+ vaesenc %xmm15,%xmm8,%xmm8
1046
+
1047
+ vpaddd eight(%rip),%xmm12,%xmm12
1048
+ vmovdqu 128(%rcx),%xmm15
1049
+ vaesenc %xmm15,%xmm1,%xmm1
1050
+ vaesenc %xmm15,%xmm2,%xmm2
1051
+ vaesenc %xmm15,%xmm3,%xmm3
1052
+ vaesenc %xmm15,%xmm4,%xmm4
1053
+ vaesenc %xmm15,%xmm5,%xmm5
1054
+ vaesenc %xmm15,%xmm6,%xmm6
1055
+ vaesenc %xmm15,%xmm7,%xmm7
1056
+ vaesenc %xmm15,%xmm8,%xmm8
1057
+
1058
+ vpaddd eight(%rip),%xmm13,%xmm13
1059
+ vmovdqu 144(%rcx),%xmm15
1060
+ vaesenc %xmm15,%xmm1,%xmm1
1061
+ vaesenc %xmm15,%xmm2,%xmm2
1062
+ vaesenc %xmm15,%xmm3,%xmm3
1063
+ vaesenc %xmm15,%xmm4,%xmm4
1064
+ vaesenc %xmm15,%xmm5,%xmm5
1065
+ vaesenc %xmm15,%xmm6,%xmm6
1066
+ vaesenc %xmm15,%xmm7,%xmm7
1067
+ vaesenc %xmm15,%xmm8,%xmm8
1068
+
1069
+ vmovdqu 160(%rcx),%xmm15
1070
+ vaesenclast %xmm15,%xmm1,%xmm1
1071
+ vaesenclast %xmm15,%xmm2,%xmm2
1072
+ vaesenclast %xmm15,%xmm3,%xmm3
1073
+ vaesenclast %xmm15,%xmm4,%xmm4
1074
+ vaesenclast %xmm15,%xmm5,%xmm5
1075
+ vaesenclast %xmm15,%xmm6,%xmm6
1076
+ vaesenclast %xmm15,%xmm7,%xmm7
1077
+ vaesenclast %xmm15,%xmm8,%xmm8
1078
+
1079
+
1080
+ // XOR with Plaintext
1081
+ vpxor 0(%rdi),%xmm1,%xmm1
1082
+ vpxor 16(%rdi),%xmm2,%xmm2
1083
+ vpxor 32(%rdi),%xmm3,%xmm3
1084
+ vpxor 48(%rdi),%xmm4,%xmm4
1085
+ vpxor 64(%rdi),%xmm5,%xmm5
1086
+ vpxor 80(%rdi),%xmm6,%xmm6
1087
+ vpxor 96(%rdi),%xmm7,%xmm7
1088
+ vpxor 112(%rdi),%xmm8,%xmm8
1089
+
1090
+ decq %r8
1091
+
1092
+ vmovdqu %xmm1,0(%rsi)
1093
+ vmovdqu %xmm2,16(%rsi)
1094
+ vmovdqu %xmm3,32(%rsi)
1095
+ vmovdqu %xmm4,48(%rsi)
1096
+ vmovdqu %xmm5,64(%rsi)
1097
+ vmovdqu %xmm6,80(%rsi)
1098
+ vmovdqu %xmm7,96(%rsi)
1099
+ vmovdqu %xmm8,112(%rsi)
1100
+
1101
+ jne .L128_enc_msg_x8_loop1
1102
+
1103
+ addq $128,%rsi
1104
+ addq $128,%rdi
1105
+
1106
+ .L128_enc_msg_x8_check_remainder:
1107
+ cmpq $0,%r10
1108
+ je .L128_enc_msg_x8_out
1109
+
1110
+ .L128_enc_msg_x8_loop2:
1111
+ // enc each block separately
1112
+ // CTR1 is the highest counter (even if no LOOP done)
1113
+ vmovdqa %xmm0,%xmm1
1114
+ vpaddd one(%rip),%xmm0,%xmm0 // inc counter
1115
+
1116
+ vpxor (%rcx),%xmm1,%xmm1
1117
+ vaesenc 16(%rcx),%xmm1,%xmm1
1118
+ vaesenc 32(%rcx),%xmm1,%xmm1
1119
+ vaesenc 48(%rcx),%xmm1,%xmm1
1120
+ vaesenc 64(%rcx),%xmm1,%xmm1
1121
+ vaesenc 80(%rcx),%xmm1,%xmm1
1122
+ vaesenc 96(%rcx),%xmm1,%xmm1
1123
+ vaesenc 112(%rcx),%xmm1,%xmm1
1124
+ vaesenc 128(%rcx),%xmm1,%xmm1
1125
+ vaesenc 144(%rcx),%xmm1,%xmm1
1126
+ vaesenclast 160(%rcx),%xmm1,%xmm1
1127
+
1128
+ // XOR with Plaintext
1129
+ vpxor (%rdi),%xmm1,%xmm1
1130
+
1131
+ vmovdqu %xmm1,(%rsi)
1132
+
1133
+ addq $16,%rdi
1134
+ addq $16,%rsi
1135
+
1136
+ decq %r10
1137
+ jne .L128_enc_msg_x8_loop2
1138
+
1139
+ .L128_enc_msg_x8_out:
1140
+ movq %rbp,%rsp
1141
+ .cfi_def_cfa_register %rsp
1142
+ popq %rbp
1143
+ .cfi_adjust_cfa_offset -8
1144
+ .cfi_restore %rbp
1145
+ popq %r13
1146
+ .cfi_adjust_cfa_offset -8
1147
+ .cfi_restore %r13
1148
+ popq %r12
1149
+ .cfi_adjust_cfa_offset -8
1150
+ .cfi_restore %r12
1151
+ ret
1152
+ .cfi_endproc
1153
+ .size aes128gcmsiv_enc_msg_x8,.-aes128gcmsiv_enc_msg_x8
1154
+ .globl aes128gcmsiv_dec
1155
+ .hidden aes128gcmsiv_dec
1156
+ .type aes128gcmsiv_dec,@function
1157
+ .align 16
1158
+ aes128gcmsiv_dec:
1159
+ .cfi_startproc
1160
+ _CET_ENDBR
1161
+ testq $~15,%r9
1162
+ jnz .L128_dec_start
1163
+ ret
1164
+
1165
+ .L128_dec_start:
1166
+ vzeroupper
1167
+ vmovdqa (%rdx),%xmm0
1168
+ // The claimed tag is provided after the current calculated tag value.
1169
+ // CTRBLKs is made from it.
1170
+ vmovdqu 16(%rdx),%xmm15
1171
+ vpor OR_MASK(%rip),%xmm15,%xmm15 // CTR = [1]TAG[126...32][00..00]
1172
+ movq %rdx,%rax
1173
+
1174
+ leaq 32(%rax),%rax
1175
+ leaq 32(%rcx),%rcx
1176
+
1177
+ andq $~15,%r9
1178
+
1179
+ // If less then 6 blocks, make singles
1180
+ cmpq $96,%r9
1181
+ jb .L128_dec_loop2
1182
+
1183
+ // Decrypt the first six blocks
1184
+ subq $96,%r9
1185
+ vmovdqa %xmm15,%xmm7
1186
+ vpaddd one(%rip),%xmm7,%xmm8
1187
+ vpaddd two(%rip),%xmm7,%xmm9
1188
+ vpaddd one(%rip),%xmm9,%xmm10
1189
+ vpaddd two(%rip),%xmm9,%xmm11
1190
+ vpaddd one(%rip),%xmm11,%xmm12
1191
+ vpaddd two(%rip),%xmm11,%xmm15
1192
+
1193
+ vpxor (%r8),%xmm7,%xmm7
1194
+ vpxor (%r8),%xmm8,%xmm8
1195
+ vpxor (%r8),%xmm9,%xmm9
1196
+ vpxor (%r8),%xmm10,%xmm10
1197
+ vpxor (%r8),%xmm11,%xmm11
1198
+ vpxor (%r8),%xmm12,%xmm12
1199
+
1200
+ vmovdqu 16(%r8),%xmm4
1201
+ vaesenc %xmm4,%xmm7,%xmm7
1202
+ vaesenc %xmm4,%xmm8,%xmm8
1203
+ vaesenc %xmm4,%xmm9,%xmm9
1204
+ vaesenc %xmm4,%xmm10,%xmm10
1205
+ vaesenc %xmm4,%xmm11,%xmm11
1206
+ vaesenc %xmm4,%xmm12,%xmm12
1207
+
1208
+ vmovdqu 32(%r8),%xmm4
1209
+ vaesenc %xmm4,%xmm7,%xmm7
1210
+ vaesenc %xmm4,%xmm8,%xmm8
1211
+ vaesenc %xmm4,%xmm9,%xmm9
1212
+ vaesenc %xmm4,%xmm10,%xmm10
1213
+ vaesenc %xmm4,%xmm11,%xmm11
1214
+ vaesenc %xmm4,%xmm12,%xmm12
1215
+
1216
+ vmovdqu 48(%r8),%xmm4
1217
+ vaesenc %xmm4,%xmm7,%xmm7
1218
+ vaesenc %xmm4,%xmm8,%xmm8
1219
+ vaesenc %xmm4,%xmm9,%xmm9
1220
+ vaesenc %xmm4,%xmm10,%xmm10
1221
+ vaesenc %xmm4,%xmm11,%xmm11
1222
+ vaesenc %xmm4,%xmm12,%xmm12
1223
+
1224
+ vmovdqu 64(%r8),%xmm4
1225
+ vaesenc %xmm4,%xmm7,%xmm7
1226
+ vaesenc %xmm4,%xmm8,%xmm8
1227
+ vaesenc %xmm4,%xmm9,%xmm9
1228
+ vaesenc %xmm4,%xmm10,%xmm10
1229
+ vaesenc %xmm4,%xmm11,%xmm11
1230
+ vaesenc %xmm4,%xmm12,%xmm12
1231
+
1232
+ vmovdqu 80(%r8),%xmm4
1233
+ vaesenc %xmm4,%xmm7,%xmm7
1234
+ vaesenc %xmm4,%xmm8,%xmm8
1235
+ vaesenc %xmm4,%xmm9,%xmm9
1236
+ vaesenc %xmm4,%xmm10,%xmm10
1237
+ vaesenc %xmm4,%xmm11,%xmm11
1238
+ vaesenc %xmm4,%xmm12,%xmm12
1239
+
1240
+ vmovdqu 96(%r8),%xmm4
1241
+ vaesenc %xmm4,%xmm7,%xmm7
1242
+ vaesenc %xmm4,%xmm8,%xmm8
1243
+ vaesenc %xmm4,%xmm9,%xmm9
1244
+ vaesenc %xmm4,%xmm10,%xmm10
1245
+ vaesenc %xmm4,%xmm11,%xmm11
1246
+ vaesenc %xmm4,%xmm12,%xmm12
1247
+
1248
+ vmovdqu 112(%r8),%xmm4
1249
+ vaesenc %xmm4,%xmm7,%xmm7
1250
+ vaesenc %xmm4,%xmm8,%xmm8
1251
+ vaesenc %xmm4,%xmm9,%xmm9
1252
+ vaesenc %xmm4,%xmm10,%xmm10
1253
+ vaesenc %xmm4,%xmm11,%xmm11
1254
+ vaesenc %xmm4,%xmm12,%xmm12
1255
+
1256
+ vmovdqu 128(%r8),%xmm4
1257
+ vaesenc %xmm4,%xmm7,%xmm7
1258
+ vaesenc %xmm4,%xmm8,%xmm8
1259
+ vaesenc %xmm4,%xmm9,%xmm9
1260
+ vaesenc %xmm4,%xmm10,%xmm10
1261
+ vaesenc %xmm4,%xmm11,%xmm11
1262
+ vaesenc %xmm4,%xmm12,%xmm12
1263
+
1264
+ vmovdqu 144(%r8),%xmm4
1265
+ vaesenc %xmm4,%xmm7,%xmm7
1266
+ vaesenc %xmm4,%xmm8,%xmm8
1267
+ vaesenc %xmm4,%xmm9,%xmm9
1268
+ vaesenc %xmm4,%xmm10,%xmm10
1269
+ vaesenc %xmm4,%xmm11,%xmm11
1270
+ vaesenc %xmm4,%xmm12,%xmm12
1271
+
1272
+ vmovdqu 160(%r8),%xmm4
1273
+ vaesenclast %xmm4,%xmm7,%xmm7
1274
+ vaesenclast %xmm4,%xmm8,%xmm8
1275
+ vaesenclast %xmm4,%xmm9,%xmm9
1276
+ vaesenclast %xmm4,%xmm10,%xmm10
1277
+ vaesenclast %xmm4,%xmm11,%xmm11
1278
+ vaesenclast %xmm4,%xmm12,%xmm12
1279
+
1280
+ // XOR with CT
1281
+ vpxor 0(%rdi),%xmm7,%xmm7
1282
+ vpxor 16(%rdi),%xmm8,%xmm8
1283
+ vpxor 32(%rdi),%xmm9,%xmm9
1284
+ vpxor 48(%rdi),%xmm10,%xmm10
1285
+ vpxor 64(%rdi),%xmm11,%xmm11
1286
+ vpxor 80(%rdi),%xmm12,%xmm12
1287
+
1288
+ vmovdqu %xmm7,0(%rsi)
1289
+ vmovdqu %xmm8,16(%rsi)
1290
+ vmovdqu %xmm9,32(%rsi)
1291
+ vmovdqu %xmm10,48(%rsi)
1292
+ vmovdqu %xmm11,64(%rsi)
1293
+ vmovdqu %xmm12,80(%rsi)
1294
+
1295
+ addq $96,%rdi
1296
+ addq $96,%rsi
1297
+ jmp .L128_dec_loop1
1298
+
1299
+ // Decrypt 6 blocks each time while hashing previous 6 blocks
1300
+ .align 64
1301
+ .L128_dec_loop1:
1302
+ cmpq $96,%r9
1303
+ jb .L128_dec_finish_96
1304
+ subq $96,%r9
1305
+
1306
+ vmovdqa %xmm12,%xmm6
1307
+ vmovdqa %xmm11,16-32(%rax)
1308
+ vmovdqa %xmm10,32-32(%rax)
1309
+ vmovdqa %xmm9,48-32(%rax)
1310
+ vmovdqa %xmm8,64-32(%rax)
1311
+ vmovdqa %xmm7,80-32(%rax)
1312
+
1313
+ vmovdqa %xmm15,%xmm7
1314
+ vpaddd one(%rip),%xmm7,%xmm8
1315
+ vpaddd two(%rip),%xmm7,%xmm9
1316
+ vpaddd one(%rip),%xmm9,%xmm10
1317
+ vpaddd two(%rip),%xmm9,%xmm11
1318
+ vpaddd one(%rip),%xmm11,%xmm12
1319
+ vpaddd two(%rip),%xmm11,%xmm15
1320
+
1321
+ vmovdqa (%r8),%xmm4
1322
+ vpxor %xmm4,%xmm7,%xmm7
1323
+ vpxor %xmm4,%xmm8,%xmm8
1324
+ vpxor %xmm4,%xmm9,%xmm9
1325
+ vpxor %xmm4,%xmm10,%xmm10
1326
+ vpxor %xmm4,%xmm11,%xmm11
1327
+ vpxor %xmm4,%xmm12,%xmm12
1328
+
1329
+ vmovdqu 0-32(%rcx),%xmm4
1330
+ vpclmulqdq $0x11,%xmm4,%xmm6,%xmm2
1331
+ vpclmulqdq $0x00,%xmm4,%xmm6,%xmm3
1332
+ vpclmulqdq $0x01,%xmm4,%xmm6,%xmm1
1333
+ vpclmulqdq $0x10,%xmm4,%xmm6,%xmm4
1334
+ vpxor %xmm4,%xmm1,%xmm1
1335
+
1336
+ vmovdqu 16(%r8),%xmm4
1337
+ vaesenc %xmm4,%xmm7,%xmm7
1338
+ vaesenc %xmm4,%xmm8,%xmm8
1339
+ vaesenc %xmm4,%xmm9,%xmm9
1340
+ vaesenc %xmm4,%xmm10,%xmm10
1341
+ vaesenc %xmm4,%xmm11,%xmm11
1342
+ vaesenc %xmm4,%xmm12,%xmm12
1343
+
1344
+ vmovdqu -16(%rax),%xmm6
1345
+ vmovdqu -16(%rcx),%xmm13
1346
+
1347
+ vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
1348
+ vpxor %xmm4,%xmm1,%xmm1
1349
+ vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
1350
+ vpxor %xmm4,%xmm2,%xmm2
1351
+ vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
1352
+ vpxor %xmm4,%xmm3,%xmm3
1353
+ vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
1354
+ vpxor %xmm4,%xmm1,%xmm1
1355
+
1356
+
1357
+ vmovdqu 32(%r8),%xmm4
1358
+ vaesenc %xmm4,%xmm7,%xmm7
1359
+ vaesenc %xmm4,%xmm8,%xmm8
1360
+ vaesenc %xmm4,%xmm9,%xmm9
1361
+ vaesenc %xmm4,%xmm10,%xmm10
1362
+ vaesenc %xmm4,%xmm11,%xmm11
1363
+ vaesenc %xmm4,%xmm12,%xmm12
1364
+
1365
+ vmovdqu 0(%rax),%xmm6
1366
+ vmovdqu 0(%rcx),%xmm13
1367
+
1368
+ vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
1369
+ vpxor %xmm4,%xmm1,%xmm1
1370
+ vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
1371
+ vpxor %xmm4,%xmm2,%xmm2
1372
+ vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
1373
+ vpxor %xmm4,%xmm3,%xmm3
1374
+ vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
1375
+ vpxor %xmm4,%xmm1,%xmm1
1376
+
1377
+
1378
+ vmovdqu 48(%r8),%xmm4
1379
+ vaesenc %xmm4,%xmm7,%xmm7
1380
+ vaesenc %xmm4,%xmm8,%xmm8
1381
+ vaesenc %xmm4,%xmm9,%xmm9
1382
+ vaesenc %xmm4,%xmm10,%xmm10
1383
+ vaesenc %xmm4,%xmm11,%xmm11
1384
+ vaesenc %xmm4,%xmm12,%xmm12
1385
+
1386
+ vmovdqu 16(%rax),%xmm6
1387
+ vmovdqu 16(%rcx),%xmm13
1388
+
1389
+ vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
1390
+ vpxor %xmm4,%xmm1,%xmm1
1391
+ vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
1392
+ vpxor %xmm4,%xmm2,%xmm2
1393
+ vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
1394
+ vpxor %xmm4,%xmm3,%xmm3
1395
+ vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
1396
+ vpxor %xmm4,%xmm1,%xmm1
1397
+
1398
+
1399
+ vmovdqu 64(%r8),%xmm4
1400
+ vaesenc %xmm4,%xmm7,%xmm7
1401
+ vaesenc %xmm4,%xmm8,%xmm8
1402
+ vaesenc %xmm4,%xmm9,%xmm9
1403
+ vaesenc %xmm4,%xmm10,%xmm10
1404
+ vaesenc %xmm4,%xmm11,%xmm11
1405
+ vaesenc %xmm4,%xmm12,%xmm12
1406
+
1407
+ vmovdqu 32(%rax),%xmm6
1408
+ vmovdqu 32(%rcx),%xmm13
1409
+
1410
+ vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
1411
+ vpxor %xmm4,%xmm1,%xmm1
1412
+ vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
1413
+ vpxor %xmm4,%xmm2,%xmm2
1414
+ vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
1415
+ vpxor %xmm4,%xmm3,%xmm3
1416
+ vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
1417
+ vpxor %xmm4,%xmm1,%xmm1
1418
+
1419
+
1420
+ vmovdqu 80(%r8),%xmm4
1421
+ vaesenc %xmm4,%xmm7,%xmm7
1422
+ vaesenc %xmm4,%xmm8,%xmm8
1423
+ vaesenc %xmm4,%xmm9,%xmm9
1424
+ vaesenc %xmm4,%xmm10,%xmm10
1425
+ vaesenc %xmm4,%xmm11,%xmm11
1426
+ vaesenc %xmm4,%xmm12,%xmm12
1427
+
1428
+ vmovdqu 96(%r8),%xmm4
1429
+ vaesenc %xmm4,%xmm7,%xmm7
1430
+ vaesenc %xmm4,%xmm8,%xmm8
1431
+ vaesenc %xmm4,%xmm9,%xmm9
1432
+ vaesenc %xmm4,%xmm10,%xmm10
1433
+ vaesenc %xmm4,%xmm11,%xmm11
1434
+ vaesenc %xmm4,%xmm12,%xmm12
1435
+
1436
+ vmovdqu 112(%r8),%xmm4
1437
+ vaesenc %xmm4,%xmm7,%xmm7
1438
+ vaesenc %xmm4,%xmm8,%xmm8
1439
+ vaesenc %xmm4,%xmm9,%xmm9
1440
+ vaesenc %xmm4,%xmm10,%xmm10
1441
+ vaesenc %xmm4,%xmm11,%xmm11
1442
+ vaesenc %xmm4,%xmm12,%xmm12
1443
+
1444
+
1445
+ vmovdqa 80-32(%rax),%xmm6
1446
+ vpxor %xmm0,%xmm6,%xmm6
1447
+ vmovdqu 80-32(%rcx),%xmm5
1448
+
1449
+ vpclmulqdq $0x01,%xmm5,%xmm6,%xmm4
1450
+ vpxor %xmm4,%xmm1,%xmm1
1451
+ vpclmulqdq $0x11,%xmm5,%xmm6,%xmm4
1452
+ vpxor %xmm4,%xmm2,%xmm2
1453
+ vpclmulqdq $0x00,%xmm5,%xmm6,%xmm4
1454
+ vpxor %xmm4,%xmm3,%xmm3
1455
+ vpclmulqdq $0x10,%xmm5,%xmm6,%xmm4
1456
+ vpxor %xmm4,%xmm1,%xmm1
1457
+
1458
+ vmovdqu 128(%r8),%xmm4
1459
+ vaesenc %xmm4,%xmm7,%xmm7
1460
+ vaesenc %xmm4,%xmm8,%xmm8
1461
+ vaesenc %xmm4,%xmm9,%xmm9
1462
+ vaesenc %xmm4,%xmm10,%xmm10
1463
+ vaesenc %xmm4,%xmm11,%xmm11
1464
+ vaesenc %xmm4,%xmm12,%xmm12
1465
+
1466
+
1467
+ vpsrldq $8,%xmm1,%xmm4
1468
+ vpxor %xmm4,%xmm2,%xmm5
1469
+ vpslldq $8,%xmm1,%xmm4
1470
+ vpxor %xmm4,%xmm3,%xmm0
1471
+
1472
+ vmovdqa poly(%rip),%xmm3
1473
+
1474
+ vmovdqu 144(%r8),%xmm4
1475
+ vaesenc %xmm4,%xmm7,%xmm7
1476
+ vaesenc %xmm4,%xmm8,%xmm8
1477
+ vaesenc %xmm4,%xmm9,%xmm9
1478
+ vaesenc %xmm4,%xmm10,%xmm10
1479
+ vaesenc %xmm4,%xmm11,%xmm11
1480
+ vaesenc %xmm4,%xmm12,%xmm12
1481
+
1482
+ vmovdqu 160(%r8),%xmm6
1483
+ vpalignr $8,%xmm0,%xmm0,%xmm2
1484
+ vpclmulqdq $0x10,%xmm3,%xmm0,%xmm0
1485
+ vpxor %xmm0,%xmm2,%xmm0
1486
+
1487
+ vpxor 0(%rdi),%xmm6,%xmm4
1488
+ vaesenclast %xmm4,%xmm7,%xmm7
1489
+ vpxor 16(%rdi),%xmm6,%xmm4
1490
+ vaesenclast %xmm4,%xmm8,%xmm8
1491
+ vpxor 32(%rdi),%xmm6,%xmm4
1492
+ vaesenclast %xmm4,%xmm9,%xmm9
1493
+ vpxor 48(%rdi),%xmm6,%xmm4
1494
+ vaesenclast %xmm4,%xmm10,%xmm10
1495
+ vpxor 64(%rdi),%xmm6,%xmm4
1496
+ vaesenclast %xmm4,%xmm11,%xmm11
1497
+ vpxor 80(%rdi),%xmm6,%xmm4
1498
+ vaesenclast %xmm4,%xmm12,%xmm12
1499
+
1500
+ vpalignr $8,%xmm0,%xmm0,%xmm2
1501
+ vpclmulqdq $0x10,%xmm3,%xmm0,%xmm0
1502
+ vpxor %xmm0,%xmm2,%xmm0
1503
+
1504
+ vmovdqu %xmm7,0(%rsi)
1505
+ vmovdqu %xmm8,16(%rsi)
1506
+ vmovdqu %xmm9,32(%rsi)
1507
+ vmovdqu %xmm10,48(%rsi)
1508
+ vmovdqu %xmm11,64(%rsi)
1509
+ vmovdqu %xmm12,80(%rsi)
1510
+
1511
+ vpxor %xmm5,%xmm0,%xmm0
1512
+
1513
+ leaq 96(%rdi),%rdi
1514
+ leaq 96(%rsi),%rsi
1515
+ jmp .L128_dec_loop1
1516
+
1517
+ .L128_dec_finish_96:
1518
+ vmovdqa %xmm12,%xmm6
1519
+ vmovdqa %xmm11,16-32(%rax)
1520
+ vmovdqa %xmm10,32-32(%rax)
1521
+ vmovdqa %xmm9,48-32(%rax)
1522
+ vmovdqa %xmm8,64-32(%rax)
1523
+ vmovdqa %xmm7,80-32(%rax)
1524
+
1525
+ vmovdqu 0-32(%rcx),%xmm4
1526
+ vpclmulqdq $0x10,%xmm4,%xmm6,%xmm1
1527
+ vpclmulqdq $0x11,%xmm4,%xmm6,%xmm2
1528
+ vpclmulqdq $0x00,%xmm4,%xmm6,%xmm3
1529
+ vpclmulqdq $0x01,%xmm4,%xmm6,%xmm4
1530
+ vpxor %xmm4,%xmm1,%xmm1
1531
+
1532
+ vmovdqu -16(%rax),%xmm6
1533
+ vmovdqu -16(%rcx),%xmm13
1534
+
1535
+ vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
1536
+ vpxor %xmm4,%xmm1,%xmm1
1537
+ vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
1538
+ vpxor %xmm4,%xmm2,%xmm2
1539
+ vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
1540
+ vpxor %xmm4,%xmm3,%xmm3
1541
+ vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
1542
+ vpxor %xmm4,%xmm1,%xmm1
1543
+
1544
+ vmovdqu 0(%rax),%xmm6
1545
+ vmovdqu 0(%rcx),%xmm13
1546
+
1547
+ vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
1548
+ vpxor %xmm4,%xmm1,%xmm1
1549
+ vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
1550
+ vpxor %xmm4,%xmm2,%xmm2
1551
+ vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
1552
+ vpxor %xmm4,%xmm3,%xmm3
1553
+ vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
1554
+ vpxor %xmm4,%xmm1,%xmm1
1555
+
1556
+ vmovdqu 16(%rax),%xmm6
1557
+ vmovdqu 16(%rcx),%xmm13
1558
+
1559
+ vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
1560
+ vpxor %xmm4,%xmm1,%xmm1
1561
+ vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
1562
+ vpxor %xmm4,%xmm2,%xmm2
1563
+ vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
1564
+ vpxor %xmm4,%xmm3,%xmm3
1565
+ vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
1566
+ vpxor %xmm4,%xmm1,%xmm1
1567
+
1568
+ vmovdqu 32(%rax),%xmm6
1569
+ vmovdqu 32(%rcx),%xmm13
1570
+
1571
+ vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
1572
+ vpxor %xmm4,%xmm1,%xmm1
1573
+ vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
1574
+ vpxor %xmm4,%xmm2,%xmm2
1575
+ vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
1576
+ vpxor %xmm4,%xmm3,%xmm3
1577
+ vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
1578
+ vpxor %xmm4,%xmm1,%xmm1
1579
+
1580
+
1581
+ vmovdqu 80-32(%rax),%xmm6
1582
+ vpxor %xmm0,%xmm6,%xmm6
1583
+ vmovdqu 80-32(%rcx),%xmm5
1584
+ vpclmulqdq $0x11,%xmm5,%xmm6,%xmm4
1585
+ vpxor %xmm4,%xmm2,%xmm2
1586
+ vpclmulqdq $0x00,%xmm5,%xmm6,%xmm4
1587
+ vpxor %xmm4,%xmm3,%xmm3
1588
+ vpclmulqdq $0x10,%xmm5,%xmm6,%xmm4
1589
+ vpxor %xmm4,%xmm1,%xmm1
1590
+ vpclmulqdq $0x01,%xmm5,%xmm6,%xmm4
1591
+ vpxor %xmm4,%xmm1,%xmm1
1592
+
1593
+ vpsrldq $8,%xmm1,%xmm4
1594
+ vpxor %xmm4,%xmm2,%xmm5
1595
+ vpslldq $8,%xmm1,%xmm4
1596
+ vpxor %xmm4,%xmm3,%xmm0
1597
+
1598
+ vmovdqa poly(%rip),%xmm3
1599
+
1600
+ vpalignr $8,%xmm0,%xmm0,%xmm2
1601
+ vpclmulqdq $0x10,%xmm3,%xmm0,%xmm0
1602
+ vpxor %xmm0,%xmm2,%xmm0
1603
+
1604
+ vpalignr $8,%xmm0,%xmm0,%xmm2
1605
+ vpclmulqdq $0x10,%xmm3,%xmm0,%xmm0
1606
+ vpxor %xmm0,%xmm2,%xmm0
1607
+
1608
+ vpxor %xmm5,%xmm0,%xmm0
1609
+
1610
+ .L128_dec_loop2:
1611
+ // Here we encrypt any remaining whole block
1612
+
1613
+ // if there are no whole blocks
1614
+ cmpq $16,%r9
1615
+ jb .L128_dec_out
1616
+ subq $16,%r9
1617
+
1618
+ vmovdqa %xmm15,%xmm2
1619
+ vpaddd one(%rip),%xmm15,%xmm15
1620
+
1621
+ vpxor 0(%r8),%xmm2,%xmm2
1622
+ vaesenc 16(%r8),%xmm2,%xmm2
1623
+ vaesenc 32(%r8),%xmm2,%xmm2
1624
+ vaesenc 48(%r8),%xmm2,%xmm2
1625
+ vaesenc 64(%r8),%xmm2,%xmm2
1626
+ vaesenc 80(%r8),%xmm2,%xmm2
1627
+ vaesenc 96(%r8),%xmm2,%xmm2
1628
+ vaesenc 112(%r8),%xmm2,%xmm2
1629
+ vaesenc 128(%r8),%xmm2,%xmm2
1630
+ vaesenc 144(%r8),%xmm2,%xmm2
1631
+ vaesenclast 160(%r8),%xmm2,%xmm2
1632
+ vpxor (%rdi),%xmm2,%xmm2
1633
+ vmovdqu %xmm2,(%rsi)
1634
+ addq $16,%rdi
1635
+ addq $16,%rsi
1636
+
1637
+ vpxor %xmm2,%xmm0,%xmm0
1638
+ vmovdqa -32(%rcx),%xmm1
1639
+ call GFMUL
1640
+
1641
+ jmp .L128_dec_loop2
1642
+
1643
+ .L128_dec_out:
1644
+ vmovdqu %xmm0,(%rdx)
1645
+ ret
1646
+ .cfi_endproc
1647
+ .size aes128gcmsiv_dec, .-aes128gcmsiv_dec
1648
+ .globl aes128gcmsiv_ecb_enc_block
1649
+ .hidden aes128gcmsiv_ecb_enc_block
1650
+ .type aes128gcmsiv_ecb_enc_block,@function
1651
+ .align 16
1652
+ aes128gcmsiv_ecb_enc_block:
1653
+ .cfi_startproc
1654
+ _CET_ENDBR
1655
+ vmovdqa (%rdi),%xmm1
1656
+
1657
+ vpxor (%rdx),%xmm1,%xmm1
1658
+ vaesenc 16(%rdx),%xmm1,%xmm1
1659
+ vaesenc 32(%rdx),%xmm1,%xmm1
1660
+ vaesenc 48(%rdx),%xmm1,%xmm1
1661
+ vaesenc 64(%rdx),%xmm1,%xmm1
1662
+ vaesenc 80(%rdx),%xmm1,%xmm1
1663
+ vaesenc 96(%rdx),%xmm1,%xmm1
1664
+ vaesenc 112(%rdx),%xmm1,%xmm1
1665
+ vaesenc 128(%rdx),%xmm1,%xmm1
1666
+ vaesenc 144(%rdx),%xmm1,%xmm1
1667
+ vaesenclast 160(%rdx),%xmm1,%xmm1 // STATE_1 == IV
1668
+
1669
+ vmovdqa %xmm1,(%rsi)
1670
+
1671
+ ret
1672
+ .cfi_endproc
1673
+ .size aes128gcmsiv_ecb_enc_block,.-aes128gcmsiv_ecb_enc_block
1674
+ .globl aes256gcmsiv_aes_ks_enc_x1
1675
+ .hidden aes256gcmsiv_aes_ks_enc_x1
1676
+ .type aes256gcmsiv_aes_ks_enc_x1,@function
1677
+ .align 16
1678
+ aes256gcmsiv_aes_ks_enc_x1:
1679
+ .cfi_startproc
1680
+ _CET_ENDBR
1681
+ vmovdqa con1(%rip),%xmm0 // CON_MASK = 1,1,1,1
1682
+ vmovdqa mask(%rip),%xmm15 // MASK_256
1683
+ vmovdqa (%rdi),%xmm8
1684
+ vmovdqa (%rcx),%xmm1 // KEY_1 || KEY_2 [0..7] = user key
1685
+ vmovdqa 16(%rcx),%xmm3
1686
+ vpxor %xmm1,%xmm8,%xmm8
1687
+ vaesenc %xmm3,%xmm8,%xmm8
1688
+ vmovdqu %xmm1,(%rdx) // First round key
1689
+ vmovdqu %xmm3,16(%rdx)
1690
+ vpxor %xmm14,%xmm14,%xmm14
1691
+
1692
+ vpshufb %xmm15,%xmm3,%xmm2
1693
+ vaesenclast %xmm0,%xmm2,%xmm2
1694
+ vpslld $1,%xmm0,%xmm0
1695
+ vpslldq $4,%xmm1,%xmm4
1696
+ vpxor %xmm4,%xmm1,%xmm1
1697
+ vpslldq $4,%xmm4,%xmm4
1698
+ vpxor %xmm4,%xmm1,%xmm1
1699
+ vpslldq $4,%xmm4,%xmm4
1700
+ vpxor %xmm4,%xmm1,%xmm1
1701
+ vpxor %xmm2,%xmm1,%xmm1
1702
+ vaesenc %xmm1,%xmm8,%xmm8
1703
+ vmovdqu %xmm1,32(%rdx)
1704
+
1705
+ vpshufd $0xff,%xmm1,%xmm2
1706
+ vaesenclast %xmm14,%xmm2,%xmm2
1707
+ vpslldq $4,%xmm3,%xmm4
1708
+ vpxor %xmm4,%xmm3,%xmm3
1709
+ vpslldq $4,%xmm4,%xmm4
1710
+ vpxor %xmm4,%xmm3,%xmm3
1711
+ vpslldq $4,%xmm4,%xmm4
1712
+ vpxor %xmm4,%xmm3,%xmm3
1713
+ vpxor %xmm2,%xmm3,%xmm3
1714
+ vaesenc %xmm3,%xmm8,%xmm8
1715
+ vmovdqu %xmm3,48(%rdx)
1716
+
1717
+ vpshufb %xmm15,%xmm3,%xmm2
1718
+ vaesenclast %xmm0,%xmm2,%xmm2
1719
+ vpslld $1,%xmm0,%xmm0
1720
+ vpslldq $4,%xmm1,%xmm4
1721
+ vpxor %xmm4,%xmm1,%xmm1
1722
+ vpslldq $4,%xmm4,%xmm4
1723
+ vpxor %xmm4,%xmm1,%xmm1
1724
+ vpslldq $4,%xmm4,%xmm4
1725
+ vpxor %xmm4,%xmm1,%xmm1
1726
+ vpxor %xmm2,%xmm1,%xmm1
1727
+ vaesenc %xmm1,%xmm8,%xmm8
1728
+ vmovdqu %xmm1,64(%rdx)
1729
+
1730
+ vpshufd $0xff,%xmm1,%xmm2
1731
+ vaesenclast %xmm14,%xmm2,%xmm2
1732
+ vpslldq $4,%xmm3,%xmm4
1733
+ vpxor %xmm4,%xmm3,%xmm3
1734
+ vpslldq $4,%xmm4,%xmm4
1735
+ vpxor %xmm4,%xmm3,%xmm3
1736
+ vpslldq $4,%xmm4,%xmm4
1737
+ vpxor %xmm4,%xmm3,%xmm3
1738
+ vpxor %xmm2,%xmm3,%xmm3
1739
+ vaesenc %xmm3,%xmm8,%xmm8
1740
+ vmovdqu %xmm3,80(%rdx)
1741
+
1742
+ vpshufb %xmm15,%xmm3,%xmm2
1743
+ vaesenclast %xmm0,%xmm2,%xmm2
1744
+ vpslld $1,%xmm0,%xmm0
1745
+ vpslldq $4,%xmm1,%xmm4
1746
+ vpxor %xmm4,%xmm1,%xmm1
1747
+ vpslldq $4,%xmm4,%xmm4
1748
+ vpxor %xmm4,%xmm1,%xmm1
1749
+ vpslldq $4,%xmm4,%xmm4
1750
+ vpxor %xmm4,%xmm1,%xmm1
1751
+ vpxor %xmm2,%xmm1,%xmm1
1752
+ vaesenc %xmm1,%xmm8,%xmm8
1753
+ vmovdqu %xmm1,96(%rdx)
1754
+
1755
+ vpshufd $0xff,%xmm1,%xmm2
1756
+ vaesenclast %xmm14,%xmm2,%xmm2
1757
+ vpslldq $4,%xmm3,%xmm4
1758
+ vpxor %xmm4,%xmm3,%xmm3
1759
+ vpslldq $4,%xmm4,%xmm4
1760
+ vpxor %xmm4,%xmm3,%xmm3
1761
+ vpslldq $4,%xmm4,%xmm4
1762
+ vpxor %xmm4,%xmm3,%xmm3
1763
+ vpxor %xmm2,%xmm3,%xmm3
1764
+ vaesenc %xmm3,%xmm8,%xmm8
1765
+ vmovdqu %xmm3,112(%rdx)
1766
+
1767
+ vpshufb %xmm15,%xmm3,%xmm2
1768
+ vaesenclast %xmm0,%xmm2,%xmm2
1769
+ vpslld $1,%xmm0,%xmm0
1770
+ vpslldq $4,%xmm1,%xmm4
1771
+ vpxor %xmm4,%xmm1,%xmm1
1772
+ vpslldq $4,%xmm4,%xmm4
1773
+ vpxor %xmm4,%xmm1,%xmm1
1774
+ vpslldq $4,%xmm4,%xmm4
1775
+ vpxor %xmm4,%xmm1,%xmm1
1776
+ vpxor %xmm2,%xmm1,%xmm1
1777
+ vaesenc %xmm1,%xmm8,%xmm8
1778
+ vmovdqu %xmm1,128(%rdx)
1779
+
1780
+ vpshufd $0xff,%xmm1,%xmm2
1781
+ vaesenclast %xmm14,%xmm2,%xmm2
1782
+ vpslldq $4,%xmm3,%xmm4
1783
+ vpxor %xmm4,%xmm3,%xmm3
1784
+ vpslldq $4,%xmm4,%xmm4
1785
+ vpxor %xmm4,%xmm3,%xmm3
1786
+ vpslldq $4,%xmm4,%xmm4
1787
+ vpxor %xmm4,%xmm3,%xmm3
1788
+ vpxor %xmm2,%xmm3,%xmm3
1789
+ vaesenc %xmm3,%xmm8,%xmm8
1790
+ vmovdqu %xmm3,144(%rdx)
1791
+
1792
+ vpshufb %xmm15,%xmm3,%xmm2
1793
+ vaesenclast %xmm0,%xmm2,%xmm2
1794
+ vpslld $1,%xmm0,%xmm0
1795
+ vpslldq $4,%xmm1,%xmm4
1796
+ vpxor %xmm4,%xmm1,%xmm1
1797
+ vpslldq $4,%xmm4,%xmm4
1798
+ vpxor %xmm4,%xmm1,%xmm1
1799
+ vpslldq $4,%xmm4,%xmm4
1800
+ vpxor %xmm4,%xmm1,%xmm1
1801
+ vpxor %xmm2,%xmm1,%xmm1
1802
+ vaesenc %xmm1,%xmm8,%xmm8
1803
+ vmovdqu %xmm1,160(%rdx)
1804
+
1805
+ vpshufd $0xff,%xmm1,%xmm2
1806
+ vaesenclast %xmm14,%xmm2,%xmm2
1807
+ vpslldq $4,%xmm3,%xmm4
1808
+ vpxor %xmm4,%xmm3,%xmm3
1809
+ vpslldq $4,%xmm4,%xmm4
1810
+ vpxor %xmm4,%xmm3,%xmm3
1811
+ vpslldq $4,%xmm4,%xmm4
1812
+ vpxor %xmm4,%xmm3,%xmm3
1813
+ vpxor %xmm2,%xmm3,%xmm3
1814
+ vaesenc %xmm3,%xmm8,%xmm8
1815
+ vmovdqu %xmm3,176(%rdx)
1816
+
1817
+ vpshufb %xmm15,%xmm3,%xmm2
1818
+ vaesenclast %xmm0,%xmm2,%xmm2
1819
+ vpslld $1,%xmm0,%xmm0
1820
+ vpslldq $4,%xmm1,%xmm4
1821
+ vpxor %xmm4,%xmm1,%xmm1
1822
+ vpslldq $4,%xmm4,%xmm4
1823
+ vpxor %xmm4,%xmm1,%xmm1
1824
+ vpslldq $4,%xmm4,%xmm4
1825
+ vpxor %xmm4,%xmm1,%xmm1
1826
+ vpxor %xmm2,%xmm1,%xmm1
1827
+ vaesenc %xmm1,%xmm8,%xmm8
1828
+ vmovdqu %xmm1,192(%rdx)
1829
+
1830
+ vpshufd $0xff,%xmm1,%xmm2
1831
+ vaesenclast %xmm14,%xmm2,%xmm2
1832
+ vpslldq $4,%xmm3,%xmm4
1833
+ vpxor %xmm4,%xmm3,%xmm3
1834
+ vpslldq $4,%xmm4,%xmm4
1835
+ vpxor %xmm4,%xmm3,%xmm3
1836
+ vpslldq $4,%xmm4,%xmm4
1837
+ vpxor %xmm4,%xmm3,%xmm3
1838
+ vpxor %xmm2,%xmm3,%xmm3
1839
+ vaesenc %xmm3,%xmm8,%xmm8
1840
+ vmovdqu %xmm3,208(%rdx)
1841
+
1842
+ vpshufb %xmm15,%xmm3,%xmm2
1843
+ vaesenclast %xmm0,%xmm2,%xmm2
1844
+ vpslldq $4,%xmm1,%xmm4
1845
+ vpxor %xmm4,%xmm1,%xmm1
1846
+ vpslldq $4,%xmm4,%xmm4
1847
+ vpxor %xmm4,%xmm1,%xmm1
1848
+ vpslldq $4,%xmm4,%xmm4
1849
+ vpxor %xmm4,%xmm1,%xmm1
1850
+ vpxor %xmm2,%xmm1,%xmm1
1851
+ vaesenclast %xmm1,%xmm8,%xmm8
1852
+ vmovdqu %xmm1,224(%rdx)
1853
+
1854
+ vmovdqa %xmm8,(%rsi)
1855
+ ret
1856
+ .cfi_endproc
1857
+ .size aes256gcmsiv_aes_ks_enc_x1,.-aes256gcmsiv_aes_ks_enc_x1
1858
+ .globl aes256gcmsiv_ecb_enc_block
1859
+ .hidden aes256gcmsiv_ecb_enc_block
1860
+ .type aes256gcmsiv_ecb_enc_block,@function
1861
+ .align 16
1862
+ aes256gcmsiv_ecb_enc_block:
1863
+ .cfi_startproc
1864
+ _CET_ENDBR
1865
+ vmovdqa (%rdi),%xmm1
1866
+ vpxor (%rdx),%xmm1,%xmm1
1867
+ vaesenc 16(%rdx),%xmm1,%xmm1
1868
+ vaesenc 32(%rdx),%xmm1,%xmm1
1869
+ vaesenc 48(%rdx),%xmm1,%xmm1
1870
+ vaesenc 64(%rdx),%xmm1,%xmm1
1871
+ vaesenc 80(%rdx),%xmm1,%xmm1
1872
+ vaesenc 96(%rdx),%xmm1,%xmm1
1873
+ vaesenc 112(%rdx),%xmm1,%xmm1
1874
+ vaesenc 128(%rdx),%xmm1,%xmm1
1875
+ vaesenc 144(%rdx),%xmm1,%xmm1
1876
+ vaesenc 160(%rdx),%xmm1,%xmm1
1877
+ vaesenc 176(%rdx),%xmm1,%xmm1
1878
+ vaesenc 192(%rdx),%xmm1,%xmm1
1879
+ vaesenc 208(%rdx),%xmm1,%xmm1
1880
+ vaesenclast 224(%rdx),%xmm1,%xmm1 // %xmm1 == IV
1881
+ vmovdqa %xmm1,(%rsi)
1882
+ ret
1883
+ .cfi_endproc
1884
+ .size aes256gcmsiv_ecb_enc_block,.-aes256gcmsiv_ecb_enc_block
1885
+ .globl aes256gcmsiv_enc_msg_x4
1886
+ .hidden aes256gcmsiv_enc_msg_x4
1887
+ .type aes256gcmsiv_enc_msg_x4,@function
1888
+ .align 16
1889
+ aes256gcmsiv_enc_msg_x4:
1890
+ .cfi_startproc
1891
+ _CET_ENDBR
1892
+ testq %r8,%r8
1893
+ jnz .L256_enc_msg_x4_start
1894
+ ret
1895
+
1896
+ .L256_enc_msg_x4_start:
1897
+ movq %r8,%r10
1898
+ shrq $4,%r8 // LEN = num of blocks
1899
+ shlq $60,%r10
1900
+ jz .L256_enc_msg_x4_start2
1901
+ addq $1,%r8
1902
+
1903
+ .L256_enc_msg_x4_start2:
1904
+ movq %r8,%r10
1905
+ shlq $62,%r10
1906
+ shrq $62,%r10
1907
+
1908
+ // make IV from TAG
1909
+ vmovdqa (%rdx),%xmm15
1910
+ vpor OR_MASK(%rip),%xmm15,%xmm15 // IV = [1]TAG[126...32][00..00]
1911
+
1912
+ vmovdqa four(%rip),%xmm4 // Register to increment counters
1913
+ vmovdqa %xmm15,%xmm0 // CTR1 = TAG[1][127...32][00..00]
1914
+ vpaddd one(%rip),%xmm15,%xmm1 // CTR2 = TAG[1][127...32][00..01]
1915
+ vpaddd two(%rip),%xmm15,%xmm2 // CTR3 = TAG[1][127...32][00..02]
1916
+ vpaddd three(%rip),%xmm15,%xmm3 // CTR4 = TAG[1][127...32][00..03]
1917
+
1918
+ shrq $2,%r8
1919
+ je .L256_enc_msg_x4_check_remainder
1920
+
1921
+ subq $64,%rsi
1922
+ subq $64,%rdi
1923
+
1924
+ .L256_enc_msg_x4_loop1:
1925
+ addq $64,%rsi
1926
+ addq $64,%rdi
1927
+
1928
+ vmovdqa %xmm0,%xmm5
1929
+ vmovdqa %xmm1,%xmm6
1930
+ vmovdqa %xmm2,%xmm7
1931
+ vmovdqa %xmm3,%xmm8
1932
+
1933
+ vpxor (%rcx),%xmm5,%xmm5
1934
+ vpxor (%rcx),%xmm6,%xmm6
1935
+ vpxor (%rcx),%xmm7,%xmm7
1936
+ vpxor (%rcx),%xmm8,%xmm8
1937
+
1938
+ vmovdqu 16(%rcx),%xmm12
1939
+ vaesenc %xmm12,%xmm5,%xmm5
1940
+ vaesenc %xmm12,%xmm6,%xmm6
1941
+ vaesenc %xmm12,%xmm7,%xmm7
1942
+ vaesenc %xmm12,%xmm8,%xmm8
1943
+
1944
+ vpaddd %xmm4,%xmm0,%xmm0
1945
+ vmovdqu 32(%rcx),%xmm12
1946
+ vaesenc %xmm12,%xmm5,%xmm5
1947
+ vaesenc %xmm12,%xmm6,%xmm6
1948
+ vaesenc %xmm12,%xmm7,%xmm7
1949
+ vaesenc %xmm12,%xmm8,%xmm8
1950
+
1951
+ vpaddd %xmm4,%xmm1,%xmm1
1952
+ vmovdqu 48(%rcx),%xmm12
1953
+ vaesenc %xmm12,%xmm5,%xmm5
1954
+ vaesenc %xmm12,%xmm6,%xmm6
1955
+ vaesenc %xmm12,%xmm7,%xmm7
1956
+ vaesenc %xmm12,%xmm8,%xmm8
1957
+
1958
+ vpaddd %xmm4,%xmm2,%xmm2
1959
+ vmovdqu 64(%rcx),%xmm12
1960
+ vaesenc %xmm12,%xmm5,%xmm5
1961
+ vaesenc %xmm12,%xmm6,%xmm6
1962
+ vaesenc %xmm12,%xmm7,%xmm7
1963
+ vaesenc %xmm12,%xmm8,%xmm8
1964
+
1965
+ vpaddd %xmm4,%xmm3,%xmm3
1966
+
1967
+ vmovdqu 80(%rcx),%xmm12
1968
+ vaesenc %xmm12,%xmm5,%xmm5
1969
+ vaesenc %xmm12,%xmm6,%xmm6
1970
+ vaesenc %xmm12,%xmm7,%xmm7
1971
+ vaesenc %xmm12,%xmm8,%xmm8
1972
+
1973
+ vmovdqu 96(%rcx),%xmm12
1974
+ vaesenc %xmm12,%xmm5,%xmm5
1975
+ vaesenc %xmm12,%xmm6,%xmm6
1976
+ vaesenc %xmm12,%xmm7,%xmm7
1977
+ vaesenc %xmm12,%xmm8,%xmm8
1978
+
1979
+ vmovdqu 112(%rcx),%xmm12
1980
+ vaesenc %xmm12,%xmm5,%xmm5
1981
+ vaesenc %xmm12,%xmm6,%xmm6
1982
+ vaesenc %xmm12,%xmm7,%xmm7
1983
+ vaesenc %xmm12,%xmm8,%xmm8
1984
+
1985
+ vmovdqu 128(%rcx),%xmm12
1986
+ vaesenc %xmm12,%xmm5,%xmm5
1987
+ vaesenc %xmm12,%xmm6,%xmm6
1988
+ vaesenc %xmm12,%xmm7,%xmm7
1989
+ vaesenc %xmm12,%xmm8,%xmm8
1990
+
1991
+ vmovdqu 144(%rcx),%xmm12
1992
+ vaesenc %xmm12,%xmm5,%xmm5
1993
+ vaesenc %xmm12,%xmm6,%xmm6
1994
+ vaesenc %xmm12,%xmm7,%xmm7
1995
+ vaesenc %xmm12,%xmm8,%xmm8
1996
+
1997
+ vmovdqu 160(%rcx),%xmm12
1998
+ vaesenc %xmm12,%xmm5,%xmm5
1999
+ vaesenc %xmm12,%xmm6,%xmm6
2000
+ vaesenc %xmm12,%xmm7,%xmm7
2001
+ vaesenc %xmm12,%xmm8,%xmm8
2002
+
2003
+ vmovdqu 176(%rcx),%xmm12
2004
+ vaesenc %xmm12,%xmm5,%xmm5
2005
+ vaesenc %xmm12,%xmm6,%xmm6
2006
+ vaesenc %xmm12,%xmm7,%xmm7
2007
+ vaesenc %xmm12,%xmm8,%xmm8
2008
+
2009
+ vmovdqu 192(%rcx),%xmm12
2010
+ vaesenc %xmm12,%xmm5,%xmm5
2011
+ vaesenc %xmm12,%xmm6,%xmm6
2012
+ vaesenc %xmm12,%xmm7,%xmm7
2013
+ vaesenc %xmm12,%xmm8,%xmm8
2014
+
2015
+ vmovdqu 208(%rcx),%xmm12
2016
+ vaesenc %xmm12,%xmm5,%xmm5
2017
+ vaesenc %xmm12,%xmm6,%xmm6
2018
+ vaesenc %xmm12,%xmm7,%xmm7
2019
+ vaesenc %xmm12,%xmm8,%xmm8
2020
+
2021
+ vmovdqu 224(%rcx),%xmm12
2022
+ vaesenclast %xmm12,%xmm5,%xmm5
2023
+ vaesenclast %xmm12,%xmm6,%xmm6
2024
+ vaesenclast %xmm12,%xmm7,%xmm7
2025
+ vaesenclast %xmm12,%xmm8,%xmm8
2026
+
2027
+
2028
+ // XOR with Plaintext
2029
+ vpxor 0(%rdi),%xmm5,%xmm5
2030
+ vpxor 16(%rdi),%xmm6,%xmm6
2031
+ vpxor 32(%rdi),%xmm7,%xmm7
2032
+ vpxor 48(%rdi),%xmm8,%xmm8
2033
+
2034
+ subq $1,%r8
2035
+
2036
+ vmovdqu %xmm5,0(%rsi)
2037
+ vmovdqu %xmm6,16(%rsi)
2038
+ vmovdqu %xmm7,32(%rsi)
2039
+ vmovdqu %xmm8,48(%rsi)
2040
+
2041
+ jne .L256_enc_msg_x4_loop1
2042
+
2043
+ addq $64,%rsi
2044
+ addq $64,%rdi
2045
+
2046
+ .L256_enc_msg_x4_check_remainder:
2047
+ cmpq $0,%r10
2048
+ je .L256_enc_msg_x4_out
2049
+
2050
+ .L256_enc_msg_x4_loop2:
2051
+ // encrypt each block separately
2052
+ // CTR1 is the highest counter (even if no LOOP done)
2053
+
2054
+ vmovdqa %xmm0,%xmm5
2055
+ vpaddd one(%rip),%xmm0,%xmm0 // inc counter
2056
+ vpxor (%rcx),%xmm5,%xmm5
2057
+ vaesenc 16(%rcx),%xmm5,%xmm5
2058
+ vaesenc 32(%rcx),%xmm5,%xmm5
2059
+ vaesenc 48(%rcx),%xmm5,%xmm5
2060
+ vaesenc 64(%rcx),%xmm5,%xmm5
2061
+ vaesenc 80(%rcx),%xmm5,%xmm5
2062
+ vaesenc 96(%rcx),%xmm5,%xmm5
2063
+ vaesenc 112(%rcx),%xmm5,%xmm5
2064
+ vaesenc 128(%rcx),%xmm5,%xmm5
2065
+ vaesenc 144(%rcx),%xmm5,%xmm5
2066
+ vaesenc 160(%rcx),%xmm5,%xmm5
2067
+ vaesenc 176(%rcx),%xmm5,%xmm5
2068
+ vaesenc 192(%rcx),%xmm5,%xmm5
2069
+ vaesenc 208(%rcx),%xmm5,%xmm5
2070
+ vaesenclast 224(%rcx),%xmm5,%xmm5
2071
+
2072
+ // XOR with Plaintext
2073
+ vpxor (%rdi),%xmm5,%xmm5
2074
+
2075
+ vmovdqu %xmm5,(%rsi)
2076
+
2077
+ addq $16,%rdi
2078
+ addq $16,%rsi
2079
+
2080
+ subq $1,%r10
2081
+ jne .L256_enc_msg_x4_loop2
2082
+
2083
+ .L256_enc_msg_x4_out:
2084
+ ret
2085
+ .cfi_endproc
2086
+ .size aes256gcmsiv_enc_msg_x4,.-aes256gcmsiv_enc_msg_x4
2087
+ .globl aes256gcmsiv_enc_msg_x8
2088
+ .hidden aes256gcmsiv_enc_msg_x8
2089
+ .type aes256gcmsiv_enc_msg_x8,@function
2090
+ .align 16
2091
+ aes256gcmsiv_enc_msg_x8:
2092
+ .cfi_startproc
2093
+ _CET_ENDBR
2094
+ testq %r8,%r8
2095
+ jnz .L256_enc_msg_x8_start
2096
+ ret
2097
+
2098
+ .L256_enc_msg_x8_start:
2099
+ // Place in stack
2100
+ movq %rsp,%r11
2101
+ subq $16,%r11
2102
+ andq $-64,%r11
2103
+
2104
+ movq %r8,%r10
2105
+ shrq $4,%r8 // LEN = num of blocks
2106
+ shlq $60,%r10
2107
+ jz .L256_enc_msg_x8_start2
2108
+ addq $1,%r8
2109
+
2110
+ .L256_enc_msg_x8_start2:
2111
+ movq %r8,%r10
2112
+ shlq $61,%r10
2113
+ shrq $61,%r10
2114
+
2115
+ // Make IV from TAG
2116
+ vmovdqa (%rdx),%xmm1
2117
+ vpor OR_MASK(%rip),%xmm1,%xmm1 // TMP1= IV = [1]TAG[126...32][00..00]
2118
+
2119
+ // store counter8 on the stack
2120
+ vpaddd seven(%rip),%xmm1,%xmm0
2121
+ vmovdqa %xmm0,(%r11) // CTR8 = TAG[127...32][00..07]
2122
+ vpaddd one(%rip),%xmm1,%xmm9 // CTR2 = TAG[127...32][00..01]
2123
+ vpaddd two(%rip),%xmm1,%xmm10 // CTR3 = TAG[127...32][00..02]
2124
+ vpaddd three(%rip),%xmm1,%xmm11 // CTR4 = TAG[127...32][00..03]
2125
+ vpaddd four(%rip),%xmm1,%xmm12 // CTR5 = TAG[127...32][00..04]
2126
+ vpaddd five(%rip),%xmm1,%xmm13 // CTR6 = TAG[127...32][00..05]
2127
+ vpaddd six(%rip),%xmm1,%xmm14 // CTR7 = TAG[127...32][00..06]
2128
+ vmovdqa %xmm1,%xmm0 // CTR1 = TAG[127...32][00..00]
2129
+
2130
+ shrq $3,%r8
2131
+ jz .L256_enc_msg_x8_check_remainder
2132
+
2133
+ subq $128,%rsi
2134
+ subq $128,%rdi
2135
+
2136
+ .L256_enc_msg_x8_loop1:
2137
+ addq $128,%rsi
2138
+ addq $128,%rdi
2139
+
2140
+ vmovdqa %xmm0,%xmm1
2141
+ vmovdqa %xmm9,%xmm2
2142
+ vmovdqa %xmm10,%xmm3
2143
+ vmovdqa %xmm11,%xmm4
2144
+ vmovdqa %xmm12,%xmm5
2145
+ vmovdqa %xmm13,%xmm6
2146
+ vmovdqa %xmm14,%xmm7
2147
+ // move from stack
2148
+ vmovdqa (%r11),%xmm8
2149
+
2150
+ vpxor (%rcx),%xmm1,%xmm1
2151
+ vpxor (%rcx),%xmm2,%xmm2
2152
+ vpxor (%rcx),%xmm3,%xmm3
2153
+ vpxor (%rcx),%xmm4,%xmm4
2154
+ vpxor (%rcx),%xmm5,%xmm5
2155
+ vpxor (%rcx),%xmm6,%xmm6
2156
+ vpxor (%rcx),%xmm7,%xmm7
2157
+ vpxor (%rcx),%xmm8,%xmm8
2158
+
2159
+ vmovdqu 16(%rcx),%xmm15
2160
+ vaesenc %xmm15,%xmm1,%xmm1
2161
+ vaesenc %xmm15,%xmm2,%xmm2
2162
+ vaesenc %xmm15,%xmm3,%xmm3
2163
+ vaesenc %xmm15,%xmm4,%xmm4
2164
+ vaesenc %xmm15,%xmm5,%xmm5
2165
+ vaesenc %xmm15,%xmm6,%xmm6
2166
+ vaesenc %xmm15,%xmm7,%xmm7
2167
+ vaesenc %xmm15,%xmm8,%xmm8
2168
+
2169
+ vmovdqa (%r11),%xmm14 // deal with CTR8
2170
+ vpaddd eight(%rip),%xmm14,%xmm14
2171
+ vmovdqa %xmm14,(%r11)
2172
+ vmovdqu 32(%rcx),%xmm15
2173
+ vaesenc %xmm15,%xmm1,%xmm1
2174
+ vaesenc %xmm15,%xmm2,%xmm2
2175
+ vaesenc %xmm15,%xmm3,%xmm3
2176
+ vaesenc %xmm15,%xmm4,%xmm4
2177
+ vaesenc %xmm15,%xmm5,%xmm5
2178
+ vaesenc %xmm15,%xmm6,%xmm6
2179
+ vaesenc %xmm15,%xmm7,%xmm7
2180
+ vaesenc %xmm15,%xmm8,%xmm8
2181
+
2182
+ vpsubd one(%rip),%xmm14,%xmm14
2183
+ vmovdqu 48(%rcx),%xmm15
2184
+ vaesenc %xmm15,%xmm1,%xmm1
2185
+ vaesenc %xmm15,%xmm2,%xmm2
2186
+ vaesenc %xmm15,%xmm3,%xmm3
2187
+ vaesenc %xmm15,%xmm4,%xmm4
2188
+ vaesenc %xmm15,%xmm5,%xmm5
2189
+ vaesenc %xmm15,%xmm6,%xmm6
2190
+ vaesenc %xmm15,%xmm7,%xmm7
2191
+ vaesenc %xmm15,%xmm8,%xmm8
2192
+
2193
+ vpaddd eight(%rip),%xmm0,%xmm0
2194
+ vmovdqu 64(%rcx),%xmm15
2195
+ vaesenc %xmm15,%xmm1,%xmm1
2196
+ vaesenc %xmm15,%xmm2,%xmm2
2197
+ vaesenc %xmm15,%xmm3,%xmm3
2198
+ vaesenc %xmm15,%xmm4,%xmm4
2199
+ vaesenc %xmm15,%xmm5,%xmm5
2200
+ vaesenc %xmm15,%xmm6,%xmm6
2201
+ vaesenc %xmm15,%xmm7,%xmm7
2202
+ vaesenc %xmm15,%xmm8,%xmm8
2203
+
2204
+ vpaddd eight(%rip),%xmm9,%xmm9
2205
+ vmovdqu 80(%rcx),%xmm15
2206
+ vaesenc %xmm15,%xmm1,%xmm1
2207
+ vaesenc %xmm15,%xmm2,%xmm2
2208
+ vaesenc %xmm15,%xmm3,%xmm3
2209
+ vaesenc %xmm15,%xmm4,%xmm4
2210
+ vaesenc %xmm15,%xmm5,%xmm5
2211
+ vaesenc %xmm15,%xmm6,%xmm6
2212
+ vaesenc %xmm15,%xmm7,%xmm7
2213
+ vaesenc %xmm15,%xmm8,%xmm8
2214
+
2215
+ vpaddd eight(%rip),%xmm10,%xmm10
2216
+ vmovdqu 96(%rcx),%xmm15
2217
+ vaesenc %xmm15,%xmm1,%xmm1
2218
+ vaesenc %xmm15,%xmm2,%xmm2
2219
+ vaesenc %xmm15,%xmm3,%xmm3
2220
+ vaesenc %xmm15,%xmm4,%xmm4
2221
+ vaesenc %xmm15,%xmm5,%xmm5
2222
+ vaesenc %xmm15,%xmm6,%xmm6
2223
+ vaesenc %xmm15,%xmm7,%xmm7
2224
+ vaesenc %xmm15,%xmm8,%xmm8
2225
+
2226
+ vpaddd eight(%rip),%xmm11,%xmm11
2227
+ vmovdqu 112(%rcx),%xmm15
2228
+ vaesenc %xmm15,%xmm1,%xmm1
2229
+ vaesenc %xmm15,%xmm2,%xmm2
2230
+ vaesenc %xmm15,%xmm3,%xmm3
2231
+ vaesenc %xmm15,%xmm4,%xmm4
2232
+ vaesenc %xmm15,%xmm5,%xmm5
2233
+ vaesenc %xmm15,%xmm6,%xmm6
2234
+ vaesenc %xmm15,%xmm7,%xmm7
2235
+ vaesenc %xmm15,%xmm8,%xmm8
2236
+
2237
+ vpaddd eight(%rip),%xmm12,%xmm12
2238
+ vmovdqu 128(%rcx),%xmm15
2239
+ vaesenc %xmm15,%xmm1,%xmm1
2240
+ vaesenc %xmm15,%xmm2,%xmm2
2241
+ vaesenc %xmm15,%xmm3,%xmm3
2242
+ vaesenc %xmm15,%xmm4,%xmm4
2243
+ vaesenc %xmm15,%xmm5,%xmm5
2244
+ vaesenc %xmm15,%xmm6,%xmm6
2245
+ vaesenc %xmm15,%xmm7,%xmm7
2246
+ vaesenc %xmm15,%xmm8,%xmm8
2247
+
2248
+ vpaddd eight(%rip),%xmm13,%xmm13
2249
+ vmovdqu 144(%rcx),%xmm15
2250
+ vaesenc %xmm15,%xmm1,%xmm1
2251
+ vaesenc %xmm15,%xmm2,%xmm2
2252
+ vaesenc %xmm15,%xmm3,%xmm3
2253
+ vaesenc %xmm15,%xmm4,%xmm4
2254
+ vaesenc %xmm15,%xmm5,%xmm5
2255
+ vaesenc %xmm15,%xmm6,%xmm6
2256
+ vaesenc %xmm15,%xmm7,%xmm7
2257
+ vaesenc %xmm15,%xmm8,%xmm8
2258
+
2259
+ vmovdqu 160(%rcx),%xmm15
2260
+ vaesenc %xmm15,%xmm1,%xmm1
2261
+ vaesenc %xmm15,%xmm2,%xmm2
2262
+ vaesenc %xmm15,%xmm3,%xmm3
2263
+ vaesenc %xmm15,%xmm4,%xmm4
2264
+ vaesenc %xmm15,%xmm5,%xmm5
2265
+ vaesenc %xmm15,%xmm6,%xmm6
2266
+ vaesenc %xmm15,%xmm7,%xmm7
2267
+ vaesenc %xmm15,%xmm8,%xmm8
2268
+
2269
+ vmovdqu 176(%rcx),%xmm15
2270
+ vaesenc %xmm15,%xmm1,%xmm1
2271
+ vaesenc %xmm15,%xmm2,%xmm2
2272
+ vaesenc %xmm15,%xmm3,%xmm3
2273
+ vaesenc %xmm15,%xmm4,%xmm4
2274
+ vaesenc %xmm15,%xmm5,%xmm5
2275
+ vaesenc %xmm15,%xmm6,%xmm6
2276
+ vaesenc %xmm15,%xmm7,%xmm7
2277
+ vaesenc %xmm15,%xmm8,%xmm8
2278
+
2279
+ vmovdqu 192(%rcx),%xmm15
2280
+ vaesenc %xmm15,%xmm1,%xmm1
2281
+ vaesenc %xmm15,%xmm2,%xmm2
2282
+ vaesenc %xmm15,%xmm3,%xmm3
2283
+ vaesenc %xmm15,%xmm4,%xmm4
2284
+ vaesenc %xmm15,%xmm5,%xmm5
2285
+ vaesenc %xmm15,%xmm6,%xmm6
2286
+ vaesenc %xmm15,%xmm7,%xmm7
2287
+ vaesenc %xmm15,%xmm8,%xmm8
2288
+
2289
+ vmovdqu 208(%rcx),%xmm15
2290
+ vaesenc %xmm15,%xmm1,%xmm1
2291
+ vaesenc %xmm15,%xmm2,%xmm2
2292
+ vaesenc %xmm15,%xmm3,%xmm3
2293
+ vaesenc %xmm15,%xmm4,%xmm4
2294
+ vaesenc %xmm15,%xmm5,%xmm5
2295
+ vaesenc %xmm15,%xmm6,%xmm6
2296
+ vaesenc %xmm15,%xmm7,%xmm7
2297
+ vaesenc %xmm15,%xmm8,%xmm8
2298
+
2299
+ vmovdqu 224(%rcx),%xmm15
2300
+ vaesenclast %xmm15,%xmm1,%xmm1
2301
+ vaesenclast %xmm15,%xmm2,%xmm2
2302
+ vaesenclast %xmm15,%xmm3,%xmm3
2303
+ vaesenclast %xmm15,%xmm4,%xmm4
2304
+ vaesenclast %xmm15,%xmm5,%xmm5
2305
+ vaesenclast %xmm15,%xmm6,%xmm6
2306
+ vaesenclast %xmm15,%xmm7,%xmm7
2307
+ vaesenclast %xmm15,%xmm8,%xmm8
2308
+
2309
+
2310
+ // XOR with Plaintext
2311
+ vpxor 0(%rdi),%xmm1,%xmm1
2312
+ vpxor 16(%rdi),%xmm2,%xmm2
2313
+ vpxor 32(%rdi),%xmm3,%xmm3
2314
+ vpxor 48(%rdi),%xmm4,%xmm4
2315
+ vpxor 64(%rdi),%xmm5,%xmm5
2316
+ vpxor 80(%rdi),%xmm6,%xmm6
2317
+ vpxor 96(%rdi),%xmm7,%xmm7
2318
+ vpxor 112(%rdi),%xmm8,%xmm8
2319
+
2320
+ subq $1,%r8
2321
+
2322
+ vmovdqu %xmm1,0(%rsi)
2323
+ vmovdqu %xmm2,16(%rsi)
2324
+ vmovdqu %xmm3,32(%rsi)
2325
+ vmovdqu %xmm4,48(%rsi)
2326
+ vmovdqu %xmm5,64(%rsi)
2327
+ vmovdqu %xmm6,80(%rsi)
2328
+ vmovdqu %xmm7,96(%rsi)
2329
+ vmovdqu %xmm8,112(%rsi)
2330
+
2331
+ jne .L256_enc_msg_x8_loop1
2332
+
2333
+ addq $128,%rsi
2334
+ addq $128,%rdi
2335
+
2336
+ .L256_enc_msg_x8_check_remainder:
2337
+ cmpq $0,%r10
2338
+ je .L256_enc_msg_x8_out
2339
+
2340
+ .L256_enc_msg_x8_loop2:
2341
+ // encrypt each block separately
2342
+ // CTR1 is the highest counter (even if no LOOP done)
2343
+ vmovdqa %xmm0,%xmm1
2344
+ vpaddd one(%rip),%xmm0,%xmm0
2345
+
2346
+ vpxor (%rcx),%xmm1,%xmm1
2347
+ vaesenc 16(%rcx),%xmm1,%xmm1
2348
+ vaesenc 32(%rcx),%xmm1,%xmm1
2349
+ vaesenc 48(%rcx),%xmm1,%xmm1
2350
+ vaesenc 64(%rcx),%xmm1,%xmm1
2351
+ vaesenc 80(%rcx),%xmm1,%xmm1
2352
+ vaesenc 96(%rcx),%xmm1,%xmm1
2353
+ vaesenc 112(%rcx),%xmm1,%xmm1
2354
+ vaesenc 128(%rcx),%xmm1,%xmm1
2355
+ vaesenc 144(%rcx),%xmm1,%xmm1
2356
+ vaesenc 160(%rcx),%xmm1,%xmm1
2357
+ vaesenc 176(%rcx),%xmm1,%xmm1
2358
+ vaesenc 192(%rcx),%xmm1,%xmm1
2359
+ vaesenc 208(%rcx),%xmm1,%xmm1
2360
+ vaesenclast 224(%rcx),%xmm1,%xmm1
2361
+
2362
+ // XOR with Plaintext
2363
+ vpxor (%rdi),%xmm1,%xmm1
2364
+
2365
+ vmovdqu %xmm1,(%rsi)
2366
+
2367
+ addq $16,%rdi
2368
+ addq $16,%rsi
2369
+ subq $1,%r10
2370
+ jnz .L256_enc_msg_x8_loop2
2371
+
2372
+ .L256_enc_msg_x8_out:
2373
+ ret
2374
+
2375
+ .cfi_endproc
2376
+ .size aes256gcmsiv_enc_msg_x8,.-aes256gcmsiv_enc_msg_x8
2377
+ .globl aes256gcmsiv_dec
2378
+ .hidden aes256gcmsiv_dec
2379
+ .type aes256gcmsiv_dec,@function
2380
+ .align 16
2381
+ aes256gcmsiv_dec:
2382
+ .cfi_startproc
2383
+ _CET_ENDBR
2384
+ testq $~15,%r9
2385
+ jnz .L256_dec_start
2386
+ ret
2387
+
2388
+ .L256_dec_start:
2389
+ vzeroupper
2390
+ vmovdqa (%rdx),%xmm0
2391
+ // The claimed tag is provided after the current calculated tag value.
2392
+ // CTRBLKs is made from it.
2393
+ vmovdqu 16(%rdx),%xmm15
2394
+ vpor OR_MASK(%rip),%xmm15,%xmm15 // CTR = [1]TAG[126...32][00..00]
2395
+ movq %rdx,%rax
2396
+
2397
+ leaq 32(%rax),%rax
2398
+ leaq 32(%rcx),%rcx
2399
+
2400
+ andq $~15,%r9
2401
+
2402
+ // If less then 6 blocks, make singles
2403
+ cmpq $96,%r9
2404
+ jb .L256_dec_loop2
2405
+
2406
+ // Decrypt the first six blocks
2407
+ subq $96,%r9
2408
+ vmovdqa %xmm15,%xmm7
2409
+ vpaddd one(%rip),%xmm7,%xmm8
2410
+ vpaddd two(%rip),%xmm7,%xmm9
2411
+ vpaddd one(%rip),%xmm9,%xmm10
2412
+ vpaddd two(%rip),%xmm9,%xmm11
2413
+ vpaddd one(%rip),%xmm11,%xmm12
2414
+ vpaddd two(%rip),%xmm11,%xmm15
2415
+
2416
+ vpxor (%r8),%xmm7,%xmm7
2417
+ vpxor (%r8),%xmm8,%xmm8
2418
+ vpxor (%r8),%xmm9,%xmm9
2419
+ vpxor (%r8),%xmm10,%xmm10
2420
+ vpxor (%r8),%xmm11,%xmm11
2421
+ vpxor (%r8),%xmm12,%xmm12
2422
+
2423
+ vmovdqu 16(%r8),%xmm4
2424
+ vaesenc %xmm4,%xmm7,%xmm7
2425
+ vaesenc %xmm4,%xmm8,%xmm8
2426
+ vaesenc %xmm4,%xmm9,%xmm9
2427
+ vaesenc %xmm4,%xmm10,%xmm10
2428
+ vaesenc %xmm4,%xmm11,%xmm11
2429
+ vaesenc %xmm4,%xmm12,%xmm12
2430
+
2431
+ vmovdqu 32(%r8),%xmm4
2432
+ vaesenc %xmm4,%xmm7,%xmm7
2433
+ vaesenc %xmm4,%xmm8,%xmm8
2434
+ vaesenc %xmm4,%xmm9,%xmm9
2435
+ vaesenc %xmm4,%xmm10,%xmm10
2436
+ vaesenc %xmm4,%xmm11,%xmm11
2437
+ vaesenc %xmm4,%xmm12,%xmm12
2438
+
2439
+ vmovdqu 48(%r8),%xmm4
2440
+ vaesenc %xmm4,%xmm7,%xmm7
2441
+ vaesenc %xmm4,%xmm8,%xmm8
2442
+ vaesenc %xmm4,%xmm9,%xmm9
2443
+ vaesenc %xmm4,%xmm10,%xmm10
2444
+ vaesenc %xmm4,%xmm11,%xmm11
2445
+ vaesenc %xmm4,%xmm12,%xmm12
2446
+
2447
+ vmovdqu 64(%r8),%xmm4
2448
+ vaesenc %xmm4,%xmm7,%xmm7
2449
+ vaesenc %xmm4,%xmm8,%xmm8
2450
+ vaesenc %xmm4,%xmm9,%xmm9
2451
+ vaesenc %xmm4,%xmm10,%xmm10
2452
+ vaesenc %xmm4,%xmm11,%xmm11
2453
+ vaesenc %xmm4,%xmm12,%xmm12
2454
+
2455
+ vmovdqu 80(%r8),%xmm4
2456
+ vaesenc %xmm4,%xmm7,%xmm7
2457
+ vaesenc %xmm4,%xmm8,%xmm8
2458
+ vaesenc %xmm4,%xmm9,%xmm9
2459
+ vaesenc %xmm4,%xmm10,%xmm10
2460
+ vaesenc %xmm4,%xmm11,%xmm11
2461
+ vaesenc %xmm4,%xmm12,%xmm12
2462
+
2463
+ vmovdqu 96(%r8),%xmm4
2464
+ vaesenc %xmm4,%xmm7,%xmm7
2465
+ vaesenc %xmm4,%xmm8,%xmm8
2466
+ vaesenc %xmm4,%xmm9,%xmm9
2467
+ vaesenc %xmm4,%xmm10,%xmm10
2468
+ vaesenc %xmm4,%xmm11,%xmm11
2469
+ vaesenc %xmm4,%xmm12,%xmm12
2470
+
2471
+ vmovdqu 112(%r8),%xmm4
2472
+ vaesenc %xmm4,%xmm7,%xmm7
2473
+ vaesenc %xmm4,%xmm8,%xmm8
2474
+ vaesenc %xmm4,%xmm9,%xmm9
2475
+ vaesenc %xmm4,%xmm10,%xmm10
2476
+ vaesenc %xmm4,%xmm11,%xmm11
2477
+ vaesenc %xmm4,%xmm12,%xmm12
2478
+
2479
+ vmovdqu 128(%r8),%xmm4
2480
+ vaesenc %xmm4,%xmm7,%xmm7
2481
+ vaesenc %xmm4,%xmm8,%xmm8
2482
+ vaesenc %xmm4,%xmm9,%xmm9
2483
+ vaesenc %xmm4,%xmm10,%xmm10
2484
+ vaesenc %xmm4,%xmm11,%xmm11
2485
+ vaesenc %xmm4,%xmm12,%xmm12
2486
+
2487
+ vmovdqu 144(%r8),%xmm4
2488
+ vaesenc %xmm4,%xmm7,%xmm7
2489
+ vaesenc %xmm4,%xmm8,%xmm8
2490
+ vaesenc %xmm4,%xmm9,%xmm9
2491
+ vaesenc %xmm4,%xmm10,%xmm10
2492
+ vaesenc %xmm4,%xmm11,%xmm11
2493
+ vaesenc %xmm4,%xmm12,%xmm12
2494
+
2495
+ vmovdqu 160(%r8),%xmm4
2496
+ vaesenc %xmm4,%xmm7,%xmm7
2497
+ vaesenc %xmm4,%xmm8,%xmm8
2498
+ vaesenc %xmm4,%xmm9,%xmm9
2499
+ vaesenc %xmm4,%xmm10,%xmm10
2500
+ vaesenc %xmm4,%xmm11,%xmm11
2501
+ vaesenc %xmm4,%xmm12,%xmm12
2502
+
2503
+ vmovdqu 176(%r8),%xmm4
2504
+ vaesenc %xmm4,%xmm7,%xmm7
2505
+ vaesenc %xmm4,%xmm8,%xmm8
2506
+ vaesenc %xmm4,%xmm9,%xmm9
2507
+ vaesenc %xmm4,%xmm10,%xmm10
2508
+ vaesenc %xmm4,%xmm11,%xmm11
2509
+ vaesenc %xmm4,%xmm12,%xmm12
2510
+
2511
+ vmovdqu 192(%r8),%xmm4
2512
+ vaesenc %xmm4,%xmm7,%xmm7
2513
+ vaesenc %xmm4,%xmm8,%xmm8
2514
+ vaesenc %xmm4,%xmm9,%xmm9
2515
+ vaesenc %xmm4,%xmm10,%xmm10
2516
+ vaesenc %xmm4,%xmm11,%xmm11
2517
+ vaesenc %xmm4,%xmm12,%xmm12
2518
+
2519
+ vmovdqu 208(%r8),%xmm4
2520
+ vaesenc %xmm4,%xmm7,%xmm7
2521
+ vaesenc %xmm4,%xmm8,%xmm8
2522
+ vaesenc %xmm4,%xmm9,%xmm9
2523
+ vaesenc %xmm4,%xmm10,%xmm10
2524
+ vaesenc %xmm4,%xmm11,%xmm11
2525
+ vaesenc %xmm4,%xmm12,%xmm12
2526
+
2527
+ vmovdqu 224(%r8),%xmm4
2528
+ vaesenclast %xmm4,%xmm7,%xmm7
2529
+ vaesenclast %xmm4,%xmm8,%xmm8
2530
+ vaesenclast %xmm4,%xmm9,%xmm9
2531
+ vaesenclast %xmm4,%xmm10,%xmm10
2532
+ vaesenclast %xmm4,%xmm11,%xmm11
2533
+ vaesenclast %xmm4,%xmm12,%xmm12
2534
+
2535
+ // XOR with CT
2536
+ vpxor 0(%rdi),%xmm7,%xmm7
2537
+ vpxor 16(%rdi),%xmm8,%xmm8
2538
+ vpxor 32(%rdi),%xmm9,%xmm9
2539
+ vpxor 48(%rdi),%xmm10,%xmm10
2540
+ vpxor 64(%rdi),%xmm11,%xmm11
2541
+ vpxor 80(%rdi),%xmm12,%xmm12
2542
+
2543
+ vmovdqu %xmm7,0(%rsi)
2544
+ vmovdqu %xmm8,16(%rsi)
2545
+ vmovdqu %xmm9,32(%rsi)
2546
+ vmovdqu %xmm10,48(%rsi)
2547
+ vmovdqu %xmm11,64(%rsi)
2548
+ vmovdqu %xmm12,80(%rsi)
2549
+
2550
+ addq $96,%rdi
2551
+ addq $96,%rsi
2552
+ jmp .L256_dec_loop1
2553
+
2554
+ // Decrypt 6 blocks each time while hashing previous 6 blocks
2555
+ .align 64
2556
+ .L256_dec_loop1:
2557
+ cmpq $96,%r9
2558
+ jb .L256_dec_finish_96
2559
+ subq $96,%r9
2560
+
2561
+ vmovdqa %xmm12,%xmm6
2562
+ vmovdqa %xmm11,16-32(%rax)
2563
+ vmovdqa %xmm10,32-32(%rax)
2564
+ vmovdqa %xmm9,48-32(%rax)
2565
+ vmovdqa %xmm8,64-32(%rax)
2566
+ vmovdqa %xmm7,80-32(%rax)
2567
+
2568
+ vmovdqa %xmm15,%xmm7
2569
+ vpaddd one(%rip),%xmm7,%xmm8
2570
+ vpaddd two(%rip),%xmm7,%xmm9
2571
+ vpaddd one(%rip),%xmm9,%xmm10
2572
+ vpaddd two(%rip),%xmm9,%xmm11
2573
+ vpaddd one(%rip),%xmm11,%xmm12
2574
+ vpaddd two(%rip),%xmm11,%xmm15
2575
+
2576
+ vmovdqa (%r8),%xmm4
2577
+ vpxor %xmm4,%xmm7,%xmm7
2578
+ vpxor %xmm4,%xmm8,%xmm8
2579
+ vpxor %xmm4,%xmm9,%xmm9
2580
+ vpxor %xmm4,%xmm10,%xmm10
2581
+ vpxor %xmm4,%xmm11,%xmm11
2582
+ vpxor %xmm4,%xmm12,%xmm12
2583
+
2584
+ vmovdqu 0-32(%rcx),%xmm4
2585
+ vpclmulqdq $0x11,%xmm4,%xmm6,%xmm2
2586
+ vpclmulqdq $0x00,%xmm4,%xmm6,%xmm3
2587
+ vpclmulqdq $0x01,%xmm4,%xmm6,%xmm1
2588
+ vpclmulqdq $0x10,%xmm4,%xmm6,%xmm4
2589
+ vpxor %xmm4,%xmm1,%xmm1
2590
+
2591
+ vmovdqu 16(%r8),%xmm4
2592
+ vaesenc %xmm4,%xmm7,%xmm7
2593
+ vaesenc %xmm4,%xmm8,%xmm8
2594
+ vaesenc %xmm4,%xmm9,%xmm9
2595
+ vaesenc %xmm4,%xmm10,%xmm10
2596
+ vaesenc %xmm4,%xmm11,%xmm11
2597
+ vaesenc %xmm4,%xmm12,%xmm12
2598
+
2599
+ vmovdqu -16(%rax),%xmm6
2600
+ vmovdqu -16(%rcx),%xmm13
2601
+
2602
+ vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
2603
+ vpxor %xmm4,%xmm1,%xmm1
2604
+ vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
2605
+ vpxor %xmm4,%xmm2,%xmm2
2606
+ vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
2607
+ vpxor %xmm4,%xmm3,%xmm3
2608
+ vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
2609
+ vpxor %xmm4,%xmm1,%xmm1
2610
+
2611
+
2612
+ vmovdqu 32(%r8),%xmm4
2613
+ vaesenc %xmm4,%xmm7,%xmm7
2614
+ vaesenc %xmm4,%xmm8,%xmm8
2615
+ vaesenc %xmm4,%xmm9,%xmm9
2616
+ vaesenc %xmm4,%xmm10,%xmm10
2617
+ vaesenc %xmm4,%xmm11,%xmm11
2618
+ vaesenc %xmm4,%xmm12,%xmm12
2619
+
2620
+ vmovdqu 0(%rax),%xmm6
2621
+ vmovdqu 0(%rcx),%xmm13
2622
+
2623
+ vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
2624
+ vpxor %xmm4,%xmm1,%xmm1
2625
+ vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
2626
+ vpxor %xmm4,%xmm2,%xmm2
2627
+ vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
2628
+ vpxor %xmm4,%xmm3,%xmm3
2629
+ vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
2630
+ vpxor %xmm4,%xmm1,%xmm1
2631
+
2632
+
2633
+ vmovdqu 48(%r8),%xmm4
2634
+ vaesenc %xmm4,%xmm7,%xmm7
2635
+ vaesenc %xmm4,%xmm8,%xmm8
2636
+ vaesenc %xmm4,%xmm9,%xmm9
2637
+ vaesenc %xmm4,%xmm10,%xmm10
2638
+ vaesenc %xmm4,%xmm11,%xmm11
2639
+ vaesenc %xmm4,%xmm12,%xmm12
2640
+
2641
+ vmovdqu 16(%rax),%xmm6
2642
+ vmovdqu 16(%rcx),%xmm13
2643
+
2644
+ vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
2645
+ vpxor %xmm4,%xmm1,%xmm1
2646
+ vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
2647
+ vpxor %xmm4,%xmm2,%xmm2
2648
+ vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
2649
+ vpxor %xmm4,%xmm3,%xmm3
2650
+ vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
2651
+ vpxor %xmm4,%xmm1,%xmm1
2652
+
2653
+
2654
+ vmovdqu 64(%r8),%xmm4
2655
+ vaesenc %xmm4,%xmm7,%xmm7
2656
+ vaesenc %xmm4,%xmm8,%xmm8
2657
+ vaesenc %xmm4,%xmm9,%xmm9
2658
+ vaesenc %xmm4,%xmm10,%xmm10
2659
+ vaesenc %xmm4,%xmm11,%xmm11
2660
+ vaesenc %xmm4,%xmm12,%xmm12
2661
+
2662
+ vmovdqu 32(%rax),%xmm6
2663
+ vmovdqu 32(%rcx),%xmm13
2664
+
2665
+ vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
2666
+ vpxor %xmm4,%xmm1,%xmm1
2667
+ vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
2668
+ vpxor %xmm4,%xmm2,%xmm2
2669
+ vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
2670
+ vpxor %xmm4,%xmm3,%xmm3
2671
+ vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
2672
+ vpxor %xmm4,%xmm1,%xmm1
2673
+
2674
+
2675
+ vmovdqu 80(%r8),%xmm4
2676
+ vaesenc %xmm4,%xmm7,%xmm7
2677
+ vaesenc %xmm4,%xmm8,%xmm8
2678
+ vaesenc %xmm4,%xmm9,%xmm9
2679
+ vaesenc %xmm4,%xmm10,%xmm10
2680
+ vaesenc %xmm4,%xmm11,%xmm11
2681
+ vaesenc %xmm4,%xmm12,%xmm12
2682
+
2683
+ vmovdqu 96(%r8),%xmm4
2684
+ vaesenc %xmm4,%xmm7,%xmm7
2685
+ vaesenc %xmm4,%xmm8,%xmm8
2686
+ vaesenc %xmm4,%xmm9,%xmm9
2687
+ vaesenc %xmm4,%xmm10,%xmm10
2688
+ vaesenc %xmm4,%xmm11,%xmm11
2689
+ vaesenc %xmm4,%xmm12,%xmm12
2690
+
2691
+ vmovdqu 112(%r8),%xmm4
2692
+ vaesenc %xmm4,%xmm7,%xmm7
2693
+ vaesenc %xmm4,%xmm8,%xmm8
2694
+ vaesenc %xmm4,%xmm9,%xmm9
2695
+ vaesenc %xmm4,%xmm10,%xmm10
2696
+ vaesenc %xmm4,%xmm11,%xmm11
2697
+ vaesenc %xmm4,%xmm12,%xmm12
2698
+
2699
+
2700
+ vmovdqa 80-32(%rax),%xmm6
2701
+ vpxor %xmm0,%xmm6,%xmm6
2702
+ vmovdqu 80-32(%rcx),%xmm5
2703
+
2704
+ vpclmulqdq $0x01,%xmm5,%xmm6,%xmm4
2705
+ vpxor %xmm4,%xmm1,%xmm1
2706
+ vpclmulqdq $0x11,%xmm5,%xmm6,%xmm4
2707
+ vpxor %xmm4,%xmm2,%xmm2
2708
+ vpclmulqdq $0x00,%xmm5,%xmm6,%xmm4
2709
+ vpxor %xmm4,%xmm3,%xmm3
2710
+ vpclmulqdq $0x10,%xmm5,%xmm6,%xmm4
2711
+ vpxor %xmm4,%xmm1,%xmm1
2712
+
2713
+ vmovdqu 128(%r8),%xmm4
2714
+ vaesenc %xmm4,%xmm7,%xmm7
2715
+ vaesenc %xmm4,%xmm8,%xmm8
2716
+ vaesenc %xmm4,%xmm9,%xmm9
2717
+ vaesenc %xmm4,%xmm10,%xmm10
2718
+ vaesenc %xmm4,%xmm11,%xmm11
2719
+ vaesenc %xmm4,%xmm12,%xmm12
2720
+
2721
+
2722
+ vpsrldq $8,%xmm1,%xmm4
2723
+ vpxor %xmm4,%xmm2,%xmm5
2724
+ vpslldq $8,%xmm1,%xmm4
2725
+ vpxor %xmm4,%xmm3,%xmm0
2726
+
2727
+ vmovdqa poly(%rip),%xmm3
2728
+
2729
+ vmovdqu 144(%r8),%xmm4
2730
+ vaesenc %xmm4,%xmm7,%xmm7
2731
+ vaesenc %xmm4,%xmm8,%xmm8
2732
+ vaesenc %xmm4,%xmm9,%xmm9
2733
+ vaesenc %xmm4,%xmm10,%xmm10
2734
+ vaesenc %xmm4,%xmm11,%xmm11
2735
+ vaesenc %xmm4,%xmm12,%xmm12
2736
+
2737
+ vmovdqu 160(%r8),%xmm4
2738
+ vaesenc %xmm4,%xmm7,%xmm7
2739
+ vaesenc %xmm4,%xmm8,%xmm8
2740
+ vaesenc %xmm4,%xmm9,%xmm9
2741
+ vaesenc %xmm4,%xmm10,%xmm10
2742
+ vaesenc %xmm4,%xmm11,%xmm11
2743
+ vaesenc %xmm4,%xmm12,%xmm12
2744
+
2745
+ vmovdqu 176(%r8),%xmm4
2746
+ vaesenc %xmm4,%xmm7,%xmm7
2747
+ vaesenc %xmm4,%xmm8,%xmm8
2748
+ vaesenc %xmm4,%xmm9,%xmm9
2749
+ vaesenc %xmm4,%xmm10,%xmm10
2750
+ vaesenc %xmm4,%xmm11,%xmm11
2751
+ vaesenc %xmm4,%xmm12,%xmm12
2752
+
2753
+ vmovdqu 192(%r8),%xmm4
2754
+ vaesenc %xmm4,%xmm7,%xmm7
2755
+ vaesenc %xmm4,%xmm8,%xmm8
2756
+ vaesenc %xmm4,%xmm9,%xmm9
2757
+ vaesenc %xmm4,%xmm10,%xmm10
2758
+ vaesenc %xmm4,%xmm11,%xmm11
2759
+ vaesenc %xmm4,%xmm12,%xmm12
2760
+
2761
+ vmovdqu 208(%r8),%xmm4
2762
+ vaesenc %xmm4,%xmm7,%xmm7
2763
+ vaesenc %xmm4,%xmm8,%xmm8
2764
+ vaesenc %xmm4,%xmm9,%xmm9
2765
+ vaesenc %xmm4,%xmm10,%xmm10
2766
+ vaesenc %xmm4,%xmm11,%xmm11
2767
+ vaesenc %xmm4,%xmm12,%xmm12
2768
+
2769
+ vmovdqu 224(%r8),%xmm6
2770
+ vpalignr $8,%xmm0,%xmm0,%xmm2
2771
+ vpclmulqdq $0x10,%xmm3,%xmm0,%xmm0
2772
+ vpxor %xmm0,%xmm2,%xmm0
2773
+
2774
+ vpxor 0(%rdi),%xmm6,%xmm4
2775
+ vaesenclast %xmm4,%xmm7,%xmm7
2776
+ vpxor 16(%rdi),%xmm6,%xmm4
2777
+ vaesenclast %xmm4,%xmm8,%xmm8
2778
+ vpxor 32(%rdi),%xmm6,%xmm4
2779
+ vaesenclast %xmm4,%xmm9,%xmm9
2780
+ vpxor 48(%rdi),%xmm6,%xmm4
2781
+ vaesenclast %xmm4,%xmm10,%xmm10
2782
+ vpxor 64(%rdi),%xmm6,%xmm4
2783
+ vaesenclast %xmm4,%xmm11,%xmm11
2784
+ vpxor 80(%rdi),%xmm6,%xmm4
2785
+ vaesenclast %xmm4,%xmm12,%xmm12
2786
+
2787
+ vpalignr $8,%xmm0,%xmm0,%xmm2
2788
+ vpclmulqdq $0x10,%xmm3,%xmm0,%xmm0
2789
+ vpxor %xmm0,%xmm2,%xmm0
2790
+
2791
+ vmovdqu %xmm7,0(%rsi)
2792
+ vmovdqu %xmm8,16(%rsi)
2793
+ vmovdqu %xmm9,32(%rsi)
2794
+ vmovdqu %xmm10,48(%rsi)
2795
+ vmovdqu %xmm11,64(%rsi)
2796
+ vmovdqu %xmm12,80(%rsi)
2797
+
2798
+ vpxor %xmm5,%xmm0,%xmm0
2799
+
2800
+ leaq 96(%rdi),%rdi
2801
+ leaq 96(%rsi),%rsi
2802
+ jmp .L256_dec_loop1
2803
+
2804
+ .L256_dec_finish_96:
2805
+ vmovdqa %xmm12,%xmm6
2806
+ vmovdqa %xmm11,16-32(%rax)
2807
+ vmovdqa %xmm10,32-32(%rax)
2808
+ vmovdqa %xmm9,48-32(%rax)
2809
+ vmovdqa %xmm8,64-32(%rax)
2810
+ vmovdqa %xmm7,80-32(%rax)
2811
+
2812
+ vmovdqu 0-32(%rcx),%xmm4
2813
+ vpclmulqdq $0x10,%xmm4,%xmm6,%xmm1
2814
+ vpclmulqdq $0x11,%xmm4,%xmm6,%xmm2
2815
+ vpclmulqdq $0x00,%xmm4,%xmm6,%xmm3
2816
+ vpclmulqdq $0x01,%xmm4,%xmm6,%xmm4
2817
+ vpxor %xmm4,%xmm1,%xmm1
2818
+
2819
+ vmovdqu -16(%rax),%xmm6
2820
+ vmovdqu -16(%rcx),%xmm13
2821
+
2822
+ vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
2823
+ vpxor %xmm4,%xmm1,%xmm1
2824
+ vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
2825
+ vpxor %xmm4,%xmm2,%xmm2
2826
+ vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
2827
+ vpxor %xmm4,%xmm3,%xmm3
2828
+ vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
2829
+ vpxor %xmm4,%xmm1,%xmm1
2830
+
2831
+ vmovdqu 0(%rax),%xmm6
2832
+ vmovdqu 0(%rcx),%xmm13
2833
+
2834
+ vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
2835
+ vpxor %xmm4,%xmm1,%xmm1
2836
+ vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
2837
+ vpxor %xmm4,%xmm2,%xmm2
2838
+ vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
2839
+ vpxor %xmm4,%xmm3,%xmm3
2840
+ vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
2841
+ vpxor %xmm4,%xmm1,%xmm1
2842
+
2843
+ vmovdqu 16(%rax),%xmm6
2844
+ vmovdqu 16(%rcx),%xmm13
2845
+
2846
+ vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
2847
+ vpxor %xmm4,%xmm1,%xmm1
2848
+ vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
2849
+ vpxor %xmm4,%xmm2,%xmm2
2850
+ vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
2851
+ vpxor %xmm4,%xmm3,%xmm3
2852
+ vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
2853
+ vpxor %xmm4,%xmm1,%xmm1
2854
+
2855
+ vmovdqu 32(%rax),%xmm6
2856
+ vmovdqu 32(%rcx),%xmm13
2857
+
2858
+ vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
2859
+ vpxor %xmm4,%xmm1,%xmm1
2860
+ vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
2861
+ vpxor %xmm4,%xmm2,%xmm2
2862
+ vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
2863
+ vpxor %xmm4,%xmm3,%xmm3
2864
+ vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
2865
+ vpxor %xmm4,%xmm1,%xmm1
2866
+
2867
+
2868
+ vmovdqu 80-32(%rax),%xmm6
2869
+ vpxor %xmm0,%xmm6,%xmm6
2870
+ vmovdqu 80-32(%rcx),%xmm5
2871
+ vpclmulqdq $0x11,%xmm5,%xmm6,%xmm4
2872
+ vpxor %xmm4,%xmm2,%xmm2
2873
+ vpclmulqdq $0x00,%xmm5,%xmm6,%xmm4
2874
+ vpxor %xmm4,%xmm3,%xmm3
2875
+ vpclmulqdq $0x10,%xmm5,%xmm6,%xmm4
2876
+ vpxor %xmm4,%xmm1,%xmm1
2877
+ vpclmulqdq $0x01,%xmm5,%xmm6,%xmm4
2878
+ vpxor %xmm4,%xmm1,%xmm1
2879
+
2880
+ vpsrldq $8,%xmm1,%xmm4
2881
+ vpxor %xmm4,%xmm2,%xmm5
2882
+ vpslldq $8,%xmm1,%xmm4
2883
+ vpxor %xmm4,%xmm3,%xmm0
2884
+
2885
+ vmovdqa poly(%rip),%xmm3
2886
+
2887
+ vpalignr $8,%xmm0,%xmm0,%xmm2
2888
+ vpclmulqdq $0x10,%xmm3,%xmm0,%xmm0
2889
+ vpxor %xmm0,%xmm2,%xmm0
2890
+
2891
+ vpalignr $8,%xmm0,%xmm0,%xmm2
2892
+ vpclmulqdq $0x10,%xmm3,%xmm0,%xmm0
2893
+ vpxor %xmm0,%xmm2,%xmm0
2894
+
2895
+ vpxor %xmm5,%xmm0,%xmm0
2896
+
2897
+ .L256_dec_loop2:
2898
+ // Here we encrypt any remaining whole block
2899
+
2900
+ // if there are no whole blocks
2901
+ cmpq $16,%r9
2902
+ jb .L256_dec_out
2903
+ subq $16,%r9
2904
+
2905
+ vmovdqa %xmm15,%xmm2
2906
+ vpaddd one(%rip),%xmm15,%xmm15
2907
+
2908
+ vpxor 0(%r8),%xmm2,%xmm2
2909
+ vaesenc 16(%r8),%xmm2,%xmm2
2910
+ vaesenc 32(%r8),%xmm2,%xmm2
2911
+ vaesenc 48(%r8),%xmm2,%xmm2
2912
+ vaesenc 64(%r8),%xmm2,%xmm2
2913
+ vaesenc 80(%r8),%xmm2,%xmm2
2914
+ vaesenc 96(%r8),%xmm2,%xmm2
2915
+ vaesenc 112(%r8),%xmm2,%xmm2
2916
+ vaesenc 128(%r8),%xmm2,%xmm2
2917
+ vaesenc 144(%r8),%xmm2,%xmm2
2918
+ vaesenc 160(%r8),%xmm2,%xmm2
2919
+ vaesenc 176(%r8),%xmm2,%xmm2
2920
+ vaesenc 192(%r8),%xmm2,%xmm2
2921
+ vaesenc 208(%r8),%xmm2,%xmm2
2922
+ vaesenclast 224(%r8),%xmm2,%xmm2
2923
+ vpxor (%rdi),%xmm2,%xmm2
2924
+ vmovdqu %xmm2,(%rsi)
2925
+ addq $16,%rdi
2926
+ addq $16,%rsi
2927
+
2928
+ vpxor %xmm2,%xmm0,%xmm0
2929
+ vmovdqa -32(%rcx),%xmm1
2930
+ call GFMUL
2931
+
2932
+ jmp .L256_dec_loop2
2933
+
2934
+ .L256_dec_out:
2935
+ vmovdqu %xmm0,(%rdx)
2936
+ ret
2937
+ .cfi_endproc
2938
+ .size aes256gcmsiv_dec, .-aes256gcmsiv_dec
2939
+ .globl aes256gcmsiv_kdf
2940
+ .hidden aes256gcmsiv_kdf
2941
+ .type aes256gcmsiv_kdf,@function
2942
+ .align 16
2943
+ aes256gcmsiv_kdf:
2944
+ .cfi_startproc
2945
+ _CET_ENDBR
2946
+ // parameter 1: %rdi Pointer to NONCE
2947
+ // parameter 2: %rsi Pointer to CT
2948
+ // parameter 4: %rdx Pointer to keys
2949
+
2950
+ vmovdqa (%rdx),%xmm1 // xmm1 = first 16 bytes of random key
2951
+ vmovdqa 0(%rdi),%xmm4
2952
+ vmovdqa and_mask(%rip),%xmm11
2953
+ vmovdqa one(%rip),%xmm8
2954
+ vpshufd $0x90,%xmm4,%xmm4
2955
+ vpand %xmm11,%xmm4,%xmm4
2956
+ vpaddd %xmm8,%xmm4,%xmm6
2957
+ vpaddd %xmm8,%xmm6,%xmm7
2958
+ vpaddd %xmm8,%xmm7,%xmm11
2959
+ vpaddd %xmm8,%xmm11,%xmm12
2960
+ vpaddd %xmm8,%xmm12,%xmm13
2961
+
2962
+ vpxor %xmm1,%xmm4,%xmm4
2963
+ vpxor %xmm1,%xmm6,%xmm6
2964
+ vpxor %xmm1,%xmm7,%xmm7
2965
+ vpxor %xmm1,%xmm11,%xmm11
2966
+ vpxor %xmm1,%xmm12,%xmm12
2967
+ vpxor %xmm1,%xmm13,%xmm13
2968
+
2969
+ vmovdqa 16(%rdx),%xmm1
2970
+ vaesenc %xmm1,%xmm4,%xmm4
2971
+ vaesenc %xmm1,%xmm6,%xmm6
2972
+ vaesenc %xmm1,%xmm7,%xmm7
2973
+ vaesenc %xmm1,%xmm11,%xmm11
2974
+ vaesenc %xmm1,%xmm12,%xmm12
2975
+ vaesenc %xmm1,%xmm13,%xmm13
2976
+
2977
+ vmovdqa 32(%rdx),%xmm2
2978
+ vaesenc %xmm2,%xmm4,%xmm4
2979
+ vaesenc %xmm2,%xmm6,%xmm6
2980
+ vaesenc %xmm2,%xmm7,%xmm7
2981
+ vaesenc %xmm2,%xmm11,%xmm11
2982
+ vaesenc %xmm2,%xmm12,%xmm12
2983
+ vaesenc %xmm2,%xmm13,%xmm13
2984
+
2985
+ vmovdqa 48(%rdx),%xmm1
2986
+ vaesenc %xmm1,%xmm4,%xmm4
2987
+ vaesenc %xmm1,%xmm6,%xmm6
2988
+ vaesenc %xmm1,%xmm7,%xmm7
2989
+ vaesenc %xmm1,%xmm11,%xmm11
2990
+ vaesenc %xmm1,%xmm12,%xmm12
2991
+ vaesenc %xmm1,%xmm13,%xmm13
2992
+
2993
+ vmovdqa 64(%rdx),%xmm2
2994
+ vaesenc %xmm2,%xmm4,%xmm4
2995
+ vaesenc %xmm2,%xmm6,%xmm6
2996
+ vaesenc %xmm2,%xmm7,%xmm7
2997
+ vaesenc %xmm2,%xmm11,%xmm11
2998
+ vaesenc %xmm2,%xmm12,%xmm12
2999
+ vaesenc %xmm2,%xmm13,%xmm13
3000
+
3001
+ vmovdqa 80(%rdx),%xmm1
3002
+ vaesenc %xmm1,%xmm4,%xmm4
3003
+ vaesenc %xmm1,%xmm6,%xmm6
3004
+ vaesenc %xmm1,%xmm7,%xmm7
3005
+ vaesenc %xmm1,%xmm11,%xmm11
3006
+ vaesenc %xmm1,%xmm12,%xmm12
3007
+ vaesenc %xmm1,%xmm13,%xmm13
3008
+
3009
+ vmovdqa 96(%rdx),%xmm2
3010
+ vaesenc %xmm2,%xmm4,%xmm4
3011
+ vaesenc %xmm2,%xmm6,%xmm6
3012
+ vaesenc %xmm2,%xmm7,%xmm7
3013
+ vaesenc %xmm2,%xmm11,%xmm11
3014
+ vaesenc %xmm2,%xmm12,%xmm12
3015
+ vaesenc %xmm2,%xmm13,%xmm13
3016
+
3017
+ vmovdqa 112(%rdx),%xmm1
3018
+ vaesenc %xmm1,%xmm4,%xmm4
3019
+ vaesenc %xmm1,%xmm6,%xmm6
3020
+ vaesenc %xmm1,%xmm7,%xmm7
3021
+ vaesenc %xmm1,%xmm11,%xmm11
3022
+ vaesenc %xmm1,%xmm12,%xmm12
3023
+ vaesenc %xmm1,%xmm13,%xmm13
3024
+
3025
+ vmovdqa 128(%rdx),%xmm2
3026
+ vaesenc %xmm2,%xmm4,%xmm4
3027
+ vaesenc %xmm2,%xmm6,%xmm6
3028
+ vaesenc %xmm2,%xmm7,%xmm7
3029
+ vaesenc %xmm2,%xmm11,%xmm11
3030
+ vaesenc %xmm2,%xmm12,%xmm12
3031
+ vaesenc %xmm2,%xmm13,%xmm13
3032
+
3033
+ vmovdqa 144(%rdx),%xmm1
3034
+ vaesenc %xmm1,%xmm4,%xmm4
3035
+ vaesenc %xmm1,%xmm6,%xmm6
3036
+ vaesenc %xmm1,%xmm7,%xmm7
3037
+ vaesenc %xmm1,%xmm11,%xmm11
3038
+ vaesenc %xmm1,%xmm12,%xmm12
3039
+ vaesenc %xmm1,%xmm13,%xmm13
3040
+
3041
+ vmovdqa 160(%rdx),%xmm2
3042
+ vaesenc %xmm2,%xmm4,%xmm4
3043
+ vaesenc %xmm2,%xmm6,%xmm6
3044
+ vaesenc %xmm2,%xmm7,%xmm7
3045
+ vaesenc %xmm2,%xmm11,%xmm11
3046
+ vaesenc %xmm2,%xmm12,%xmm12
3047
+ vaesenc %xmm2,%xmm13,%xmm13
3048
+
3049
+ vmovdqa 176(%rdx),%xmm1
3050
+ vaesenc %xmm1,%xmm4,%xmm4
3051
+ vaesenc %xmm1,%xmm6,%xmm6
3052
+ vaesenc %xmm1,%xmm7,%xmm7
3053
+ vaesenc %xmm1,%xmm11,%xmm11
3054
+ vaesenc %xmm1,%xmm12,%xmm12
3055
+ vaesenc %xmm1,%xmm13,%xmm13
3056
+
3057
+ vmovdqa 192(%rdx),%xmm2
3058
+ vaesenc %xmm2,%xmm4,%xmm4
3059
+ vaesenc %xmm2,%xmm6,%xmm6
3060
+ vaesenc %xmm2,%xmm7,%xmm7
3061
+ vaesenc %xmm2,%xmm11,%xmm11
3062
+ vaesenc %xmm2,%xmm12,%xmm12
3063
+ vaesenc %xmm2,%xmm13,%xmm13
3064
+
3065
+ vmovdqa 208(%rdx),%xmm1
3066
+ vaesenc %xmm1,%xmm4,%xmm4
3067
+ vaesenc %xmm1,%xmm6,%xmm6
3068
+ vaesenc %xmm1,%xmm7,%xmm7
3069
+ vaesenc %xmm1,%xmm11,%xmm11
3070
+ vaesenc %xmm1,%xmm12,%xmm12
3071
+ vaesenc %xmm1,%xmm13,%xmm13
3072
+
3073
+ vmovdqa 224(%rdx),%xmm2
3074
+ vaesenclast %xmm2,%xmm4,%xmm4
3075
+ vaesenclast %xmm2,%xmm6,%xmm6
3076
+ vaesenclast %xmm2,%xmm7,%xmm7
3077
+ vaesenclast %xmm2,%xmm11,%xmm11
3078
+ vaesenclast %xmm2,%xmm12,%xmm12
3079
+ vaesenclast %xmm2,%xmm13,%xmm13
3080
+
3081
+
3082
+ vmovdqa %xmm4,0(%rsi)
3083
+ vmovdqa %xmm6,16(%rsi)
3084
+ vmovdqa %xmm7,32(%rsi)
3085
+ vmovdqa %xmm11,48(%rsi)
3086
+ vmovdqa %xmm12,64(%rsi)
3087
+ vmovdqa %xmm13,80(%rsi)
3088
+ ret
3089
+ .cfi_endproc
3090
+ .size aes256gcmsiv_kdf, .-aes256gcmsiv_kdf
3091
+ #endif