pq_crypto 0.4.2 → 0.5.1
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.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +27 -2
- data/CHANGELOG.md +59 -0
- data/GET_STARTED.md +21 -16
- data/README.md +26 -0
- data/SECURITY.md +22 -16
- data/ext/pqcrypto/extconf.rb +183 -99
- data/ext/pqcrypto/mldsa_api.h +1 -118
- data/ext/pqcrypto/mlkem_api.h +1 -42
- data/ext/pqcrypto/pq_externalmu.c +88 -216
- data/ext/pqcrypto/pqcrypto_native_api.h +132 -0
- data/ext/pqcrypto/pqcrypto_ruby_secure.c +234 -12
- data/ext/pqcrypto/pqcrypto_secure.c +429 -334
- data/ext/pqcrypto/pqcrypto_secure.h +13 -45
- data/ext/pqcrypto/pqcrypto_version.h +1 -1
- data/ext/pqcrypto/randombytes.h +9 -0
- data/ext/pqcrypto/vendor/.vendored +12 -5
- data/ext/pqcrypto/vendor/mldsa-native/BUILDING.md +105 -0
- data/ext/pqcrypto/vendor/mldsa-native/LICENSE +286 -0
- data/ext/pqcrypto/vendor/mldsa-native/META.yml +24 -0
- data/ext/pqcrypto/vendor/mldsa-native/README.md +221 -0
- data/ext/pqcrypto/vendor/mldsa-native/SECURITY.md +8 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native.c +721 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native.h +975 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native_asm.S +724 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native_config.h +723 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/cbmc.h +166 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/common.h +321 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/ct.c +21 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/ct.h +385 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/debug.c +73 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/debug.h +130 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202.c +277 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202.h +244 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202x4.c +182 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202x4.h +117 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/keccakf1600.c +438 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/keccakf1600.h +105 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/auto.h +71 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/fips202_native_aarch64.h +62 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x1_scalar_asm.S +376 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_asm.S +204 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_asm.S +259 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_asm.S +1077 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_asm.S +987 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccakf1600_round_constants.c +41 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x1_scalar.h +26 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x1_v84a.h +35 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x2_v84a.h +37 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x4_v8a_scalar.h +27 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x4_v8a_v84a_scalar.h +36 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/api.h +69 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/README.md +10 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/mve.h +32 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/fips202_native_armv81m.h +20 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S +638 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.c +136 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccakf1600_round_constants.c +52 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/auto.h +29 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/KeccakP_1600_times4_SIMD256.c +488 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/KeccakP_1600_times4_SIMD256.h +16 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/xkcp.h +31 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/meta.h +247 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/aarch64_zetas.c +231 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/arith_native_aarch64.h +150 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/intt.S +753 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l4.S +129 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l5.S +145 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l7.S +177 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/ntt.S +653 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/pointwise_montgomery.S +79 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_caddq_asm.S +53 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_chknorm_asm.S +55 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_decompose_32_asm.S +85 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_decompose_88_asm.S +85 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_use_hint_32_asm.S +102 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_use_hint_88_asm.S +110 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_17_asm.S +72 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_19_asm.S +69 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_table.c +40 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_asm.S +189 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta2_asm.S +135 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta4_asm.S +128 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta_table.c +543 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_table.c +62 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/api.h +649 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/meta.h +23 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/meta.h +315 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/arith_native_x86_64.h +124 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/consts.c +157 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/consts.h +27 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/intt.S +2311 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/ntt.S +2383 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/nttunpack.S +239 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise.S +131 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l4.S +139 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l5.S +155 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l7.S +187 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_caddq_avx2.c +61 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_chknorm_avx2.c +52 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_decompose_32_avx2.c +155 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_decompose_88_avx2.c +155 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_use_hint_32_avx2.c +102 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_use_hint_88_avx2.c +104 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/polyz_unpack_17_avx2.c +91 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/polyz_unpack_19_avx2.c +93 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_avx2.c +126 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_eta2_avx2.c +155 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_eta4_avx2.c +139 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_table.c +160 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/packing.c +293 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/packing.h +224 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/params.h +77 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly.c +991 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly.h +393 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly_kl.c +946 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly_kl.h +360 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/polyvec.c +877 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/polyvec.h +725 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/randombytes.h +26 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/reduce.h +139 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/rounding.h +249 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/sign.c +1511 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/sign.h +806 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/symmetric.h +68 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/sys.h +268 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/zetas.inc +55 -0
- data/ext/pqcrypto/vendor/mlkem-native/BUILDING.md +104 -0
- data/ext/pqcrypto/vendor/mlkem-native/LICENSE +294 -0
- data/ext/pqcrypto/vendor/mlkem-native/META.yml +30 -0
- data/ext/pqcrypto/vendor/mlkem-native/README.md +223 -0
- data/ext/pqcrypto/vendor/mlkem-native/RELEASE.md +86 -0
- data/ext/pqcrypto/vendor/mlkem-native/SECURITY.md +8 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/README.md +23 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native.c +660 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native.h +538 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native_asm.S +681 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native_config.h +709 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/cbmc.h +174 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/common.h +274 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/compress.c +717 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/compress.h +688 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/debug.c +64 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/debug.h +128 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202.c +251 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202.h +158 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202x4.c +208 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202x4.h +80 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/keccakf1600.c +463 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/keccakf1600.h +98 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/auto.h +70 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/fips202_native_aarch64.h +69 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x1_scalar_asm.S +375 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_asm.S +203 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_asm.S +258 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_asm.S +1076 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_asm.S +986 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccakf1600_round_constants.c +46 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x1_scalar.h +25 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x1_v84a.h +34 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x2_v84a.h +35 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x4_v8a_scalar.h +26 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x4_v8a_v84a_scalar.h +35 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/api.h +117 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/README.md +10 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/mve.h +79 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/fips202_native_armv81m.h +35 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S +667 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.c +40 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/keccakf1600_round_constants.c +51 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/state_extract_bytes_x4_mve.S +290 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/state_xor_bytes_x4_mve.S +314 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/auto.h +28 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/keccak_f1600_x4_avx2.h +33 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/src/fips202_native_x86_64.h +41 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/src/keccak_f1600_x4_avx2.S +451 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/src/keccakf1600_constants.c +51 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/indcpa.c +622 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/indcpa.h +156 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/kem.c +446 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/kem.h +326 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/README.md +16 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/meta.h +122 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/aarch64_zetas.c +174 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/arith_native_aarch64.h +177 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/intt.S +628 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/ntt.S +562 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/poly_mulcache_compute_asm.S +127 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/poly_reduce_asm.S +150 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/poly_tobytes_asm.S +117 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/poly_tomont_asm.S +98 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/polyvec_basemul_acc_montgomery_cached_asm_k2.S +261 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/polyvec_basemul_acc_montgomery_cached_asm_k3.S +314 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/polyvec_basemul_acc_montgomery_cached_asm_k4.S +368 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/rej_uniform_asm.S +226 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/rej_uniform_table.c +542 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/api.h +637 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/meta.h +25 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/README.md +11 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/meta.h +128 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/arith_native_riscv64.h +45 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_debug.c +81 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_debug.h +145 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_izetas.inc +27 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_poly.c +805 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_zetas.inc +27 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_zetas_basemul.inc +39 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/README.md +4 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/meta.h +304 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/arith_native_x86_64.h +309 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/compress_consts.c +94 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/compress_consts.h +45 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/consts.c +102 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/consts.h +25 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/intt.S +719 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/mulcache_compute.S +90 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/ntt.S +639 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/nttfrombytes.S +193 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/ntttobytes.S +181 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/nttunpack.S +174 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_compress_d10.S +382 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_compress_d11.S +448 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_compress_d4.S +163 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_compress_d5.S +220 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_decompress_d10.S +228 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_decompress_d11.S +277 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_decompress_d4.S +180 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_decompress_d5.S +192 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/polyvec_basemul_acc_montgomery_cached_asm_k2.S +502 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/polyvec_basemul_acc_montgomery_cached_asm_k3.S +750 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/polyvec_basemul_acc_montgomery_cached_asm_k4.S +998 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/reduce.S +218 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/rej_uniform_asm.S +103 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/rej_uniform_table.c +544 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/tomont.S +155 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/params.h +76 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly.c +572 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly.h +317 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly_k.c +502 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly_k.h +668 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/randombytes.h +60 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sampling.c +362 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sampling.h +118 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/symmetric.h +70 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sys.h +260 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/verify.c +20 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/verify.h +464 -0
- data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/zetas.inc +30 -0
- data/lib/pq_crypto/hybrid_kem.rb +10 -1
- data/lib/pq_crypto/version.rb +1 -1
- data/lib/pq_crypto.rb +5 -1
- data/script/vendor_libs.rb +228 -154
- metadata +236 -160
- data/ext/pqcrypto/vendor/pqclean/common/aes.c +0 -639
- data/ext/pqcrypto/vendor/pqclean/common/aes.h +0 -64
- data/ext/pqcrypto/vendor/pqclean/common/compat.h +0 -73
- data/ext/pqcrypto/vendor/pqclean/common/crypto_declassify.h +0 -7
- data/ext/pqcrypto/vendor/pqclean/common/fips202.c +0 -928
- data/ext/pqcrypto/vendor/pqclean/common/fips202.h +0 -166
- data/ext/pqcrypto/vendor/pqclean/common/keccak2x/feat.S +0 -168
- data/ext/pqcrypto/vendor/pqclean/common/keccak2x/fips202x2.c +0 -684
- data/ext/pqcrypto/vendor/pqclean/common/keccak2x/fips202x2.h +0 -60
- data/ext/pqcrypto/vendor/pqclean/common/keccak4x/KeccakP-1600-times4-SIMD256.c +0 -1028
- data/ext/pqcrypto/vendor/pqclean/common/keccak4x/KeccakP-1600-times4-SnP.h +0 -50
- data/ext/pqcrypto/vendor/pqclean/common/keccak4x/KeccakP-1600-unrolling.macros +0 -198
- data/ext/pqcrypto/vendor/pqclean/common/keccak4x/Makefile +0 -8
- data/ext/pqcrypto/vendor/pqclean/common/keccak4x/Makefile.Microsoft_nmake +0 -8
- data/ext/pqcrypto/vendor/pqclean/common/keccak4x/SIMD256-config.h +0 -3
- data/ext/pqcrypto/vendor/pqclean/common/keccak4x/align.h +0 -34
- data/ext/pqcrypto/vendor/pqclean/common/keccak4x/brg_endian.h +0 -142
- data/ext/pqcrypto/vendor/pqclean/common/nistseedexpander.c +0 -101
- data/ext/pqcrypto/vendor/pqclean/common/nistseedexpander.h +0 -39
- data/ext/pqcrypto/vendor/pqclean/common/randombytes.c +0 -355
- data/ext/pqcrypto/vendor/pqclean/common/randombytes.h +0 -27
- data/ext/pqcrypto/vendor/pqclean/common/sha2.c +0 -769
- data/ext/pqcrypto/vendor/pqclean/common/sha2.h +0 -173
- data/ext/pqcrypto/vendor/pqclean/common/sp800-185.c +0 -156
- data/ext/pqcrypto/vendor/pqclean/common/sp800-185.h +0 -27
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/LICENSE +0 -5
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/Makefile +0 -19
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/Makefile.Microsoft_nmake +0 -23
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/api.h +0 -18
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/cbd.c +0 -83
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/cbd.h +0 -11
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/indcpa.c +0 -327
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/indcpa.h +0 -22
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/kem.c +0 -164
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/kem.h +0 -23
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/ntt.c +0 -146
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/ntt.h +0 -14
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/params.h +0 -36
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/poly.c +0 -311
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/poly.h +0 -37
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/polyvec.c +0 -198
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/polyvec.h +0 -26
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/reduce.c +0 -41
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/reduce.h +0 -13
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/symmetric-shake.c +0 -71
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/symmetric.h +0 -30
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/verify.c +0 -67
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/verify.h +0 -13
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/LICENSE +0 -5
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/Makefile +0 -19
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/Makefile.Microsoft_nmake +0 -23
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/api.h +0 -18
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/cbd.c +0 -108
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/cbd.h +0 -11
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/indcpa.c +0 -327
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/indcpa.h +0 -22
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/kem.c +0 -164
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/kem.h +0 -23
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/ntt.c +0 -146
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/ntt.h +0 -14
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/params.h +0 -36
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/poly.c +0 -299
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/poly.h +0 -37
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/polyvec.c +0 -188
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/polyvec.h +0 -26
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/reduce.c +0 -41
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/reduce.h +0 -13
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/symmetric-shake.c +0 -71
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/symmetric.h +0 -30
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/verify.c +0 -67
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/verify.h +0 -13
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/LICENSE +0 -5
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/Makefile +0 -19
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/Makefile.Microsoft_nmake +0 -23
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/api.h +0 -18
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/cbd.c +0 -83
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/cbd.h +0 -11
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/indcpa.c +0 -327
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/indcpa.h +0 -22
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/kem.c +0 -164
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/kem.h +0 -23
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/ntt.c +0 -146
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/ntt.h +0 -14
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/params.h +0 -36
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/poly.c +0 -299
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/poly.h +0 -37
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/polyvec.c +0 -188
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/polyvec.h +0 -26
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/reduce.c +0 -41
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/reduce.h +0 -13
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/symmetric-shake.c +0 -71
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/symmetric.h +0 -30
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/verify.c +0 -67
- data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/verify.h +0 -13
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/LICENSE +0 -5
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/Makefile +0 -19
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/Makefile.Microsoft_nmake +0 -23
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/api.h +0 -50
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/ntt.c +0 -98
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/ntt.h +0 -10
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/packing.c +0 -261
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/packing.h +0 -31
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/params.h +0 -44
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/poly.c +0 -848
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/poly.h +0 -52
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/polyvec.c +0 -415
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/polyvec.h +0 -65
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/reduce.c +0 -69
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/reduce.h +0 -17
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/rounding.c +0 -98
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/rounding.h +0 -14
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/sign.c +0 -407
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/sign.h +0 -47
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/symmetric-shake.c +0 -26
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/symmetric.h +0 -34
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/LICENSE +0 -5
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/Makefile +0 -19
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/Makefile.Microsoft_nmake +0 -23
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/api.h +0 -50
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/ntt.c +0 -98
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/ntt.h +0 -10
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/packing.c +0 -261
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/packing.h +0 -31
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/params.h +0 -44
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/poly.c +0 -799
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/poly.h +0 -52
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/polyvec.c +0 -415
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/polyvec.h +0 -65
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/reduce.c +0 -69
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/reduce.h +0 -17
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/rounding.c +0 -92
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/rounding.h +0 -14
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/sign.c +0 -407
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/sign.h +0 -47
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/symmetric-shake.c +0 -26
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/symmetric.h +0 -34
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/LICENSE +0 -5
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/Makefile +0 -19
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/Makefile.Microsoft_nmake +0 -23
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/api.h +0 -50
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/ntt.c +0 -98
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/ntt.h +0 -10
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/packing.c +0 -261
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/packing.h +0 -31
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/params.h +0 -44
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/poly.c +0 -823
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/poly.h +0 -52
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/polyvec.c +0 -415
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/polyvec.h +0 -65
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/reduce.c +0 -69
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/reduce.h +0 -17
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/rounding.c +0 -92
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/rounding.h +0 -14
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/sign.c +0 -407
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/sign.h +0 -47
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/symmetric-shake.c +0 -26
- data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/symmetric.h +0 -34
|
@@ -0,0 +1,1076 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) The mlkem-native project authors
|
|
3
|
+
* Copyright (c) 2021-2022 Arm Limited
|
|
4
|
+
* Copyright (c) 2022 Matthias Kannwischer
|
|
5
|
+
* SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
// Author: Hanno Becker <hannobecker@posteo.de>
|
|
9
|
+
// Author: Matthias Kannwischer <matthias@kannwischer.eu>
|
|
10
|
+
|
|
11
|
+
/*yaml
|
|
12
|
+
Name: keccak_f1600_x4_v8a_scalar_hybrid_asm
|
|
13
|
+
Description: AArch64 hybrid scalar/vector implementation of Keccak-f[1600] permutation for four sequential states
|
|
14
|
+
Signature: void mlk_keccak_f1600_x4_v8a_scalar_hybrid_asm(uint64_t state[100], const uint64_t rc[24])
|
|
15
|
+
ABI:
|
|
16
|
+
x0:
|
|
17
|
+
type: buffer
|
|
18
|
+
size_bytes: 800
|
|
19
|
+
permissions: read/write
|
|
20
|
+
c_parameter: uint64_t state[100]
|
|
21
|
+
description: Four sequential Keccak states (state0[25], state1[25], state2[25], state3[25])
|
|
22
|
+
x1:
|
|
23
|
+
type: buffer
|
|
24
|
+
size_bytes: 192
|
|
25
|
+
permissions: read-only
|
|
26
|
+
c_parameter: const uint64_t rc[24]
|
|
27
|
+
description: Round constants (24 x uint64_t)
|
|
28
|
+
Stack:
|
|
29
|
+
bytes: 224
|
|
30
|
+
description: register preservation and temporary storage
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
#include "../../../../common.h"
|
|
34
|
+
#if defined(MLK_FIPS202_AARCH64_NEED_X4_V8A_SCALAR_HYBRID) && \
|
|
35
|
+
!defined(MLK_CONFIG_MULTILEVEL_NO_SHARED)
|
|
36
|
+
|
|
37
|
+
/*
|
|
38
|
+
* WARNING: This file is auto-derived from the mlkem-native source file
|
|
39
|
+
* dev/fips202/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_asm.S using scripts/simpasm. Do not modify it directly.
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
#if defined(__ELF__)
|
|
43
|
+
.section .note.GNU-stack,"",@progbits
|
|
44
|
+
#endif
|
|
45
|
+
|
|
46
|
+
.text
|
|
47
|
+
.balign 4
|
|
48
|
+
.global MLK_ASM_NAMESPACE(keccak_f1600_x4_v8a_scalar_hybrid_asm)
|
|
49
|
+
MLK_ASM_FN_SYMBOL(keccak_f1600_x4_v8a_scalar_hybrid_asm)
|
|
50
|
+
|
|
51
|
+
.cfi_startproc
|
|
52
|
+
sub sp, sp, #0xe0
|
|
53
|
+
.cfi_adjust_cfa_offset 0xe0
|
|
54
|
+
stp x19, x20, [sp, #0x30]
|
|
55
|
+
.cfi_rel_offset x19, 0x30
|
|
56
|
+
.cfi_rel_offset x20, 0x38
|
|
57
|
+
stp x21, x22, [sp, #0x40]
|
|
58
|
+
.cfi_rel_offset x21, 0x40
|
|
59
|
+
.cfi_rel_offset x22, 0x48
|
|
60
|
+
stp x23, x24, [sp, #0x50]
|
|
61
|
+
.cfi_rel_offset x23, 0x50
|
|
62
|
+
.cfi_rel_offset x24, 0x58
|
|
63
|
+
stp x25, x26, [sp, #0x60]
|
|
64
|
+
.cfi_rel_offset x25, 0x60
|
|
65
|
+
.cfi_rel_offset x26, 0x68
|
|
66
|
+
stp x27, x28, [sp, #0x70]
|
|
67
|
+
.cfi_rel_offset x27, 0x70
|
|
68
|
+
.cfi_rel_offset x28, 0x78
|
|
69
|
+
stp x29, x30, [sp, #0x80]
|
|
70
|
+
.cfi_rel_offset x29, 0x80
|
|
71
|
+
.cfi_rel_offset x30, 0x88
|
|
72
|
+
stp d8, d9, [sp, #0x90]
|
|
73
|
+
.cfi_rel_offset d8, 0x90
|
|
74
|
+
.cfi_rel_offset d9, 0x98
|
|
75
|
+
stp d10, d11, [sp, #0xa0]
|
|
76
|
+
.cfi_rel_offset d10, 0xa0
|
|
77
|
+
.cfi_rel_offset d11, 0xa8
|
|
78
|
+
stp d12, d13, [sp, #0xb0]
|
|
79
|
+
.cfi_rel_offset d12, 0xb0
|
|
80
|
+
.cfi_rel_offset d13, 0xb8
|
|
81
|
+
stp d14, d15, [sp, #0xc0]
|
|
82
|
+
.cfi_rel_offset d14, 0xc0
|
|
83
|
+
.cfi_rel_offset d15, 0xc8
|
|
84
|
+
mov x29, x1
|
|
85
|
+
mov x30, #0x0 // =0
|
|
86
|
+
str x30, [sp, #0x20]
|
|
87
|
+
str x29, [sp, #0x8]
|
|
88
|
+
str x29, [sp, #0x10]
|
|
89
|
+
str x0, [sp]
|
|
90
|
+
add x4, x0, #0xc8
|
|
91
|
+
ldp q25, q26, [x0], #0x20
|
|
92
|
+
ld1 { v27.2d, v28.2d }, [x4], #32
|
|
93
|
+
trn1 v0.2d, v25.2d, v27.2d
|
|
94
|
+
trn2 v1.2d, v25.2d, v27.2d
|
|
95
|
+
trn1 v2.2d, v26.2d, v28.2d
|
|
96
|
+
trn2 v3.2d, v26.2d, v28.2d
|
|
97
|
+
ldp q25, q26, [x0], #0x20
|
|
98
|
+
ld1 { v27.2d, v28.2d }, [x4], #32
|
|
99
|
+
trn1 v4.2d, v25.2d, v27.2d
|
|
100
|
+
trn2 v5.2d, v25.2d, v27.2d
|
|
101
|
+
trn1 v6.2d, v26.2d, v28.2d
|
|
102
|
+
trn2 v7.2d, v26.2d, v28.2d
|
|
103
|
+
ldp q25, q26, [x0], #0x20
|
|
104
|
+
ld1 { v27.2d, v28.2d }, [x4], #32
|
|
105
|
+
trn1 v8.2d, v25.2d, v27.2d
|
|
106
|
+
trn2 v9.2d, v25.2d, v27.2d
|
|
107
|
+
trn1 v10.2d, v26.2d, v28.2d
|
|
108
|
+
trn2 v11.2d, v26.2d, v28.2d
|
|
109
|
+
ldp q25, q26, [x0], #0x20
|
|
110
|
+
ld1 { v27.2d, v28.2d }, [x4], #32
|
|
111
|
+
trn1 v12.2d, v25.2d, v27.2d
|
|
112
|
+
trn2 v13.2d, v25.2d, v27.2d
|
|
113
|
+
trn1 v14.2d, v26.2d, v28.2d
|
|
114
|
+
trn2 v15.2d, v26.2d, v28.2d
|
|
115
|
+
ldp q25, q26, [x0], #0x20
|
|
116
|
+
ld1 { v27.2d, v28.2d }, [x4], #32
|
|
117
|
+
trn1 v16.2d, v25.2d, v27.2d
|
|
118
|
+
trn2 v17.2d, v25.2d, v27.2d
|
|
119
|
+
trn1 v18.2d, v26.2d, v28.2d
|
|
120
|
+
trn2 v19.2d, v26.2d, v28.2d
|
|
121
|
+
ldp q25, q26, [x0], #0x20
|
|
122
|
+
ld1 { v27.2d, v28.2d }, [x4], #32
|
|
123
|
+
trn1 v20.2d, v25.2d, v27.2d
|
|
124
|
+
trn2 v21.2d, v25.2d, v27.2d
|
|
125
|
+
trn1 v22.2d, v26.2d, v28.2d
|
|
126
|
+
trn2 v23.2d, v26.2d, v28.2d
|
|
127
|
+
ldr d25, [x0]
|
|
128
|
+
ldr d27, [x4]
|
|
129
|
+
trn1 v24.2d, v25.2d, v27.2d
|
|
130
|
+
sub x0, x0, #0xc0
|
|
131
|
+
add x0, x0, #0x190
|
|
132
|
+
ldp x1, x6, [x0]
|
|
133
|
+
ldp x11, x16, [x0, #0x10]
|
|
134
|
+
ldp x21, x2, [x0, #0x20]
|
|
135
|
+
ldp x7, x12, [x0, #0x30]
|
|
136
|
+
ldp x17, x22, [x0, #0x40]
|
|
137
|
+
ldp x3, x8, [x0, #0x50]
|
|
138
|
+
ldp x13, x28, [x0, #0x60]
|
|
139
|
+
ldp x23, x4, [x0, #0x70]
|
|
140
|
+
ldp x9, x14, [x0, #0x80]
|
|
141
|
+
ldp x19, x24, [x0, #0x90]
|
|
142
|
+
ldp x5, x10, [x0, #0xa0]
|
|
143
|
+
ldp x15, x20, [x0, #0xb0]
|
|
144
|
+
ldr x25, [x0, #0xc0]
|
|
145
|
+
sub x0, x0, #0x190
|
|
146
|
+
|
|
147
|
+
Lkeccak_f1600_x4_v8a_scalar_hybrid_initial:
|
|
148
|
+
eor x30, x24, x25
|
|
149
|
+
eor x27, x9, x10
|
|
150
|
+
eor v30.16b, v0.16b, v5.16b
|
|
151
|
+
eor v30.16b, v30.16b, v10.16b
|
|
152
|
+
eor x0, x30, x21
|
|
153
|
+
eor v30.16b, v30.16b, v15.16b
|
|
154
|
+
eor x26, x27, x6
|
|
155
|
+
eor x27, x26, x7
|
|
156
|
+
eor v30.16b, v30.16b, v20.16b
|
|
157
|
+
eor x29, x0, x22
|
|
158
|
+
eor v29.16b, v1.16b, v6.16b
|
|
159
|
+
eor x26, x29, x23
|
|
160
|
+
eor v29.16b, v29.16b, v11.16b
|
|
161
|
+
eor x29, x4, x5
|
|
162
|
+
eor x30, x29, x1
|
|
163
|
+
eor v29.16b, v29.16b, v16.16b
|
|
164
|
+
eor x0, x27, x8
|
|
165
|
+
eor v29.16b, v29.16b, v21.16b
|
|
166
|
+
eor x29, x30, x2
|
|
167
|
+
eor v28.16b, v2.16b, v7.16b
|
|
168
|
+
eor x30, x19, x20
|
|
169
|
+
eor x30, x30, x16
|
|
170
|
+
eor v28.16b, v28.16b, v12.16b
|
|
171
|
+
eor x27, x26, x0, ror #63
|
|
172
|
+
eor v28.16b, v28.16b, v17.16b
|
|
173
|
+
eor x4, x4, x27
|
|
174
|
+
eor v28.16b, v28.16b, v22.16b
|
|
175
|
+
eor x30, x30, x17
|
|
176
|
+
eor x30, x30, x28
|
|
177
|
+
eor v27.16b, v3.16b, v8.16b
|
|
178
|
+
eor x29, x29, x3
|
|
179
|
+
eor v27.16b, v27.16b, v13.16b
|
|
180
|
+
eor x0, x0, x30, ror #63
|
|
181
|
+
eor v27.16b, v27.16b, v18.16b
|
|
182
|
+
eor x30, x30, x29, ror #63
|
|
183
|
+
eor x22, x22, x30
|
|
184
|
+
eor v27.16b, v27.16b, v23.16b
|
|
185
|
+
eor x23, x23, x30
|
|
186
|
+
eor v26.16b, v4.16b, v9.16b
|
|
187
|
+
str x23, [sp, #0xd0]
|
|
188
|
+
eor v26.16b, v26.16b, v14.16b
|
|
189
|
+
eor x23, x14, x15
|
|
190
|
+
eor x14, x14, x0
|
|
191
|
+
eor v26.16b, v26.16b, v19.16b
|
|
192
|
+
eor x23, x23, x11
|
|
193
|
+
eor v26.16b, v26.16b, v24.16b
|
|
194
|
+
eor x15, x15, x0
|
|
195
|
+
eor x1, x1, x27
|
|
196
|
+
add v31.2d, v28.2d, v28.2d
|
|
197
|
+
eor x23, x23, x12
|
|
198
|
+
sri v31.2d, v28.2d, #0x3f
|
|
199
|
+
eor x23, x23, x13
|
|
200
|
+
eor v25.16b, v31.16b, v30.16b
|
|
201
|
+
eor x11, x11, x0
|
|
202
|
+
eor x29, x29, x23, ror #63
|
|
203
|
+
add v31.2d, v26.2d, v26.2d
|
|
204
|
+
eor x23, x23, x26, ror #63
|
|
205
|
+
sri v31.2d, v26.2d, #0x3f
|
|
206
|
+
eor x26, x13, x0
|
|
207
|
+
eor v28.16b, v31.16b, v28.16b
|
|
208
|
+
eor x13, x28, x23
|
|
209
|
+
eor x28, x24, x30
|
|
210
|
+
add v31.2d, v29.2d, v29.2d
|
|
211
|
+
eor x24, x16, x23
|
|
212
|
+
sri v31.2d, v29.2d, #0x3f
|
|
213
|
+
eor x16, x21, x30
|
|
214
|
+
eor v26.16b, v31.16b, v26.16b
|
|
215
|
+
eor x21, x25, x30
|
|
216
|
+
eor x30, x19, x23
|
|
217
|
+
add v31.2d, v27.2d, v27.2d
|
|
218
|
+
eor x19, x20, x23
|
|
219
|
+
sri v31.2d, v27.2d, #0x3f
|
|
220
|
+
eor x20, x17, x23
|
|
221
|
+
eor v29.16b, v31.16b, v29.16b
|
|
222
|
+
eor x17, x12, x0
|
|
223
|
+
eor x0, x2, x27
|
|
224
|
+
add v31.2d, v30.2d, v30.2d
|
|
225
|
+
eor x2, x6, x29
|
|
226
|
+
sri v31.2d, v30.2d, #0x3f
|
|
227
|
+
eor x6, x8, x29
|
|
228
|
+
eor v27.16b, v31.16b, v27.16b
|
|
229
|
+
bic x8, x28, x13, ror #47
|
|
230
|
+
eor x12, x3, x27
|
|
231
|
+
eor v30.16b, v0.16b, v26.16b
|
|
232
|
+
bic x3, x13, x17, ror #19
|
|
233
|
+
eor v31.16b, v2.16b, v29.16b
|
|
234
|
+
eor x5, x5, x27
|
|
235
|
+
ldr x27, [sp, #0xd0]
|
|
236
|
+
shl v0.2d, v31.2d, #0x3e
|
|
237
|
+
bic x25, x17, x2, ror #5
|
|
238
|
+
sri v0.2d, v31.2d, #0x2
|
|
239
|
+
eor x9, x9, x29
|
|
240
|
+
eor v31.16b, v12.16b, v29.16b
|
|
241
|
+
eor x23, x25, x5, ror #52
|
|
242
|
+
eor x3, x3, x2, ror #24
|
|
243
|
+
shl v2.2d, v31.2d, #0x2b
|
|
244
|
+
eor x8, x8, x17, ror #2
|
|
245
|
+
sri v2.2d, v31.2d, #0x15
|
|
246
|
+
eor x17, x10, x29
|
|
247
|
+
eor v31.16b, v13.16b, v28.16b
|
|
248
|
+
bic x25, x12, x22, ror #47
|
|
249
|
+
eor x29, x7, x29
|
|
250
|
+
shl v12.2d, v31.2d, #0x19
|
|
251
|
+
bic x10, x4, x27, ror #2
|
|
252
|
+
sri v12.2d, v31.2d, #0x27
|
|
253
|
+
bic x7, x5, x28, ror #10
|
|
254
|
+
eor v31.16b, v19.16b, v27.16b
|
|
255
|
+
eor x10, x10, x20, ror #50
|
|
256
|
+
eor x13, x7, x13, ror #57
|
|
257
|
+
shl v13.2d, v31.2d, #0x8
|
|
258
|
+
bic x7, x2, x5, ror #47
|
|
259
|
+
sri v13.2d, v31.2d, #0x38
|
|
260
|
+
eor x2, x25, x24, ror #39
|
|
261
|
+
eor v31.16b, v23.16b, v28.16b
|
|
262
|
+
bic x25, x20, x11, ror #57
|
|
263
|
+
bic x5, x17, x4, ror #25
|
|
264
|
+
shl v19.2d, v31.2d, #0x38
|
|
265
|
+
eor x25, x25, x17, ror #53
|
|
266
|
+
sri v19.2d, v31.2d, #0x8
|
|
267
|
+
bic x17, x11, x17, ror #60
|
|
268
|
+
eor v31.16b, v15.16b, v26.16b
|
|
269
|
+
eor x28, x7, x28, ror #57
|
|
270
|
+
bic x7, x9, x12, ror #42
|
|
271
|
+
shl v23.2d, v31.2d, #0x29
|
|
272
|
+
eor x7, x7, x22, ror #25
|
|
273
|
+
sri v23.2d, v31.2d, #0x17
|
|
274
|
+
bic x22, x22, x24, ror #56
|
|
275
|
+
bic x24, x24, x15, ror #31
|
|
276
|
+
eor v31.16b, v1.16b, v25.16b
|
|
277
|
+
eor x22, x22, x15, ror #23
|
|
278
|
+
shl v15.2d, v31.2d, #0x1
|
|
279
|
+
bic x20, x27, x20, ror #48
|
|
280
|
+
sri v15.2d, v31.2d, #0x3f
|
|
281
|
+
bic x15, x15, x9, ror #16
|
|
282
|
+
eor x12, x15, x12, ror #58
|
|
283
|
+
eor v31.16b, v8.16b, v28.16b
|
|
284
|
+
eor x15, x5, x27, ror #27
|
|
285
|
+
shl v1.2d, v31.2d, #0x37
|
|
286
|
+
eor x5, x20, x11, ror #41
|
|
287
|
+
sri v1.2d, v31.2d, #0x9
|
|
288
|
+
ldr x11, [sp, #0x8]
|
|
289
|
+
eor x20, x17, x4, ror #21
|
|
290
|
+
eor v31.16b, v16.16b, v25.16b
|
|
291
|
+
eor x17, x24, x9, ror #47
|
|
292
|
+
shl v8.2d, v31.2d, #0x2d
|
|
293
|
+
mov x24, #0x1 // =1
|
|
294
|
+
sri v8.2d, v31.2d, #0x13
|
|
295
|
+
bic x9, x0, x16, ror #9
|
|
296
|
+
str x24, [sp, #0x18]
|
|
297
|
+
eor v31.16b, v7.16b, v29.16b
|
|
298
|
+
bic x24, x29, x1, ror #44
|
|
299
|
+
shl v16.2d, v31.2d, #0x6
|
|
300
|
+
bic x27, x1, x21, ror #50
|
|
301
|
+
sri v16.2d, v31.2d, #0x3a
|
|
302
|
+
bic x4, x26, x29, ror #63
|
|
303
|
+
eor x1, x1, x4, ror #21
|
|
304
|
+
eor v31.16b, v10.16b, v26.16b
|
|
305
|
+
ldr x11, [x11]
|
|
306
|
+
shl v7.2d, v31.2d, #0x3
|
|
307
|
+
bic x4, x21, x30, ror #57
|
|
308
|
+
sri v7.2d, v31.2d, #0x3d
|
|
309
|
+
eor x21, x24, x21, ror #30
|
|
310
|
+
eor x24, x9, x19, ror #44
|
|
311
|
+
eor v31.16b, v3.16b, v28.16b
|
|
312
|
+
bic x9, x14, x6, ror #5
|
|
313
|
+
shl v10.2d, v31.2d, #0x1c
|
|
314
|
+
eor x9, x9, x0, ror #43
|
|
315
|
+
sri v10.2d, v31.2d, #0x24
|
|
316
|
+
bic x0, x6, x0, ror #38
|
|
317
|
+
eor x1, x1, x11
|
|
318
|
+
eor v31.16b, v18.16b, v28.16b
|
|
319
|
+
eor x11, x4, x26, ror #35
|
|
320
|
+
shl v3.2d, v31.2d, #0x15
|
|
321
|
+
eor x4, x0, x16, ror #47
|
|
322
|
+
bic x0, x16, x19, ror #35
|
|
323
|
+
sri v3.2d, v31.2d, #0x2b
|
|
324
|
+
eor x16, x27, x30, ror #43
|
|
325
|
+
eor v31.16b, v17.16b, v29.16b
|
|
326
|
+
bic x27, x30, x26, ror #42
|
|
327
|
+
shl v18.2d, v31.2d, #0xf
|
|
328
|
+
bic x26, x19, x14, ror #41
|
|
329
|
+
eor x19, x0, x14, ror #12
|
|
330
|
+
sri v18.2d, v31.2d, #0x31
|
|
331
|
+
eor x14, x26, x6, ror #46
|
|
332
|
+
eor v31.16b, v11.16b, v25.16b
|
|
333
|
+
eor x6, x27, x29, ror #41
|
|
334
|
+
shl v17.2d, v31.2d, #0xa
|
|
335
|
+
eor x0, x15, x11, ror #52
|
|
336
|
+
eor x0, x0, x13, ror #48
|
|
337
|
+
sri v17.2d, v31.2d, #0x36
|
|
338
|
+
eor x26, x8, x9, ror #57
|
|
339
|
+
eor v31.16b, v9.16b, v27.16b
|
|
340
|
+
eor x27, x0, x14, ror #10
|
|
341
|
+
shl v11.2d, v31.2d, #0x14
|
|
342
|
+
eor x29, x16, x28, ror #63
|
|
343
|
+
eor x26, x26, x6, ror #51
|
|
344
|
+
sri v11.2d, v31.2d, #0x2c
|
|
345
|
+
eor x30, x23, x22, ror #50
|
|
346
|
+
eor v31.16b, v22.16b, v29.16b
|
|
347
|
+
eor x0, x26, x10, ror #31
|
|
348
|
+
shl v9.2d, v31.2d, #0x3d
|
|
349
|
+
eor x29, x29, x19, ror #37
|
|
350
|
+
eor x27, x27, x12, ror #5
|
|
351
|
+
sri v9.2d, v31.2d, #0x3
|
|
352
|
+
eor x30, x30, x24, ror #34
|
|
353
|
+
eor v31.16b, v14.16b, v27.16b
|
|
354
|
+
eor x0, x0, x7, ror #27
|
|
355
|
+
shl v22.2d, v31.2d, #0x27
|
|
356
|
+
eor x26, x30, x21, ror #26
|
|
357
|
+
eor x26, x26, x25, ror #15
|
|
358
|
+
sri v22.2d, v31.2d, #0x19
|
|
359
|
+
ror x30, x27, #0x3e
|
|
360
|
+
eor v31.16b, v20.16b, v26.16b
|
|
361
|
+
eor x30, x30, x26, ror #57
|
|
362
|
+
ror x26, x26, #0x3a
|
|
363
|
+
shl v14.2d, v31.2d, #0x12
|
|
364
|
+
eor x16, x30, x16
|
|
365
|
+
sri v14.2d, v31.2d, #0x2e
|
|
366
|
+
eor x28, x30, x28, ror #63
|
|
367
|
+
eor v31.16b, v4.16b, v27.16b
|
|
368
|
+
str x28, [sp, #0xd0]
|
|
369
|
+
eor x29, x29, x17, ror #36
|
|
370
|
+
shl v20.2d, v31.2d, #0x1b
|
|
371
|
+
eor x28, x1, x2, ror #61
|
|
372
|
+
sri v20.2d, v31.2d, #0x25
|
|
373
|
+
eor x19, x30, x19, ror #37
|
|
374
|
+
eor v31.16b, v24.16b, v27.16b
|
|
375
|
+
eor x29, x29, x20, ror #2
|
|
376
|
+
eor x28, x28, x4, ror #54
|
|
377
|
+
shl v4.2d, v31.2d, #0xe
|
|
378
|
+
eor x26, x26, x0, ror #55
|
|
379
|
+
sri v4.2d, v31.2d, #0x32
|
|
380
|
+
eor x28, x28, x3, ror #39
|
|
381
|
+
eor v31.16b, v21.16b, v25.16b
|
|
382
|
+
eor x28, x28, x5, ror #25
|
|
383
|
+
ror x0, x0, #0x38
|
|
384
|
+
shl v24.2d, v31.2d, #0x2
|
|
385
|
+
eor x0, x0, x29, ror #63
|
|
386
|
+
sri v24.2d, v31.2d, #0x3e
|
|
387
|
+
eor x27, x28, x27, ror #61
|
|
388
|
+
eor v31.16b, v5.16b, v26.16b
|
|
389
|
+
eor x13, x0, x13, ror #46
|
|
390
|
+
eor x28, x29, x28, ror #63
|
|
391
|
+
shl v21.2d, v31.2d, #0x24
|
|
392
|
+
eor x29, x30, x20, ror #2
|
|
393
|
+
sri v21.2d, v31.2d, #0x1c
|
|
394
|
+
eor x20, x26, x3, ror #39
|
|
395
|
+
eor v31.16b, v6.16b, v25.16b
|
|
396
|
+
eor x11, x0, x11, ror #50
|
|
397
|
+
eor x25, x28, x25, ror #9
|
|
398
|
+
shl v27.2d, v31.2d, #0x2c
|
|
399
|
+
eor x3, x28, x21, ror #20
|
|
400
|
+
sri v27.2d, v31.2d, #0x14
|
|
401
|
+
eor x21, x26, x1
|
|
402
|
+
eor x9, x27, x9, ror #49
|
|
403
|
+
bic v31.16b, v7.16b, v11.16b
|
|
404
|
+
eor x24, x28, x24, ror #28
|
|
405
|
+
eor v5.16b, v31.16b, v10.16b
|
|
406
|
+
eor x1, x30, x17, ror #36
|
|
407
|
+
bic v31.16b, v8.16b, v7.16b
|
|
408
|
+
eor x14, x0, x14, ror #8
|
|
409
|
+
eor x22, x28, x22, ror #44
|
|
410
|
+
eor v6.16b, v31.16b, v11.16b
|
|
411
|
+
eor x8, x27, x8, ror #56
|
|
412
|
+
bic v31.16b, v9.16b, v8.16b
|
|
413
|
+
eor x17, x27, x7, ror #19
|
|
414
|
+
eor v7.16b, v31.16b, v7.16b
|
|
415
|
+
eor x15, x0, x15, ror #62
|
|
416
|
+
bic x7, x20, x22, ror #47
|
|
417
|
+
bic v31.16b, v10.16b, v9.16b
|
|
418
|
+
eor x4, x26, x4, ror #54
|
|
419
|
+
eor v8.16b, v31.16b, v8.16b
|
|
420
|
+
eor x0, x0, x12, ror #3
|
|
421
|
+
bic v31.16b, v11.16b, v10.16b
|
|
422
|
+
eor x28, x28, x23, ror #58
|
|
423
|
+
eor x23, x26, x2, ror #61
|
|
424
|
+
eor v9.16b, v31.16b, v9.16b
|
|
425
|
+
eor x26, x26, x5, ror #25
|
|
426
|
+
bic v31.16b, v12.16b, v16.16b
|
|
427
|
+
eor x2, x7, x16, ror #39
|
|
428
|
+
eor v10.16b, v31.16b, v15.16b
|
|
429
|
+
bic x7, x9, x20, ror #42
|
|
430
|
+
bic x30, x15, x9, ror #16
|
|
431
|
+
bic v31.16b, v13.16b, v12.16b
|
|
432
|
+
eor x7, x7, x22, ror #25
|
|
433
|
+
eor v11.16b, v31.16b, v16.16b
|
|
434
|
+
eor x12, x30, x20, ror #58
|
|
435
|
+
bic v31.16b, v14.16b, v13.16b
|
|
436
|
+
bic x20, x22, x16, ror #56
|
|
437
|
+
eor x30, x27, x6, ror #43
|
|
438
|
+
eor v12.16b, v31.16b, v12.16b
|
|
439
|
+
eor x22, x20, x15, ror #23
|
|
440
|
+
bic v31.16b, v15.16b, v14.16b
|
|
441
|
+
bic x6, x19, x13, ror #42
|
|
442
|
+
eor v13.16b, v31.16b, v13.16b
|
|
443
|
+
eor x6, x6, x17, ror #41
|
|
444
|
+
bic x5, x13, x17, ror #63
|
|
445
|
+
bic v31.16b, v16.16b, v15.16b
|
|
446
|
+
eor x5, x21, x5, ror #21
|
|
447
|
+
eor v14.16b, v31.16b, v14.16b
|
|
448
|
+
bic x17, x17, x21, ror #44
|
|
449
|
+
eor x27, x27, x10, ror #23
|
|
450
|
+
bic v31.16b, v17.16b, v21.16b
|
|
451
|
+
bic x21, x21, x25, ror #50
|
|
452
|
+
eor v15.16b, v31.16b, v20.16b
|
|
453
|
+
bic x20, x27, x4, ror #25
|
|
454
|
+
bic v31.16b, v18.16b, v17.16b
|
|
455
|
+
bic x10, x16, x15, ror #31
|
|
456
|
+
eor x16, x21, x19, ror #43
|
|
457
|
+
eor v16.16b, v31.16b, v21.16b
|
|
458
|
+
eor x21, x17, x25, ror #30
|
|
459
|
+
bic v31.16b, v19.16b, v18.16b
|
|
460
|
+
bic x19, x25, x19, ror #57
|
|
461
|
+
eor v17.16b, v31.16b, v17.16b
|
|
462
|
+
ldr x25, [sp, #0x18]
|
|
463
|
+
eor x17, x10, x9, ror #47
|
|
464
|
+
bic v31.16b, v20.16b, v19.16b
|
|
465
|
+
ldr x9, [sp, #0x8]
|
|
466
|
+
eor v18.16b, v31.16b, v18.16b
|
|
467
|
+
eor x15, x20, x28, ror #27
|
|
468
|
+
bic v31.16b, v21.16b, v20.16b
|
|
469
|
+
bic x20, x4, x28, ror #2
|
|
470
|
+
eor x10, x20, x1, ror #50
|
|
471
|
+
eor v19.16b, v31.16b, v19.16b
|
|
472
|
+
bic x20, x11, x27, ror #60
|
|
473
|
+
bic v31.16b, v22.16b, v1.16b
|
|
474
|
+
eor x20, x20, x4, ror #21
|
|
475
|
+
eor v20.16b, v31.16b, v0.16b
|
|
476
|
+
bic x4, x28, x1, ror #48
|
|
477
|
+
bic x1, x1, x11, ror #57
|
|
478
|
+
bic v31.16b, v23.16b, v22.16b
|
|
479
|
+
ldr x28, [x9, x25, lsl #3]
|
|
480
|
+
eor v21.16b, v31.16b, v1.16b
|
|
481
|
+
ldr x9, [sp, #0xd0]
|
|
482
|
+
bic v31.16b, v24.16b, v23.16b
|
|
483
|
+
add x25, x25, #0x1
|
|
484
|
+
str x25, [sp, #0x18]
|
|
485
|
+
eor v22.16b, v31.16b, v22.16b
|
|
486
|
+
cmp x25, #0x17
|
|
487
|
+
bic v31.16b, v0.16b, v24.16b
|
|
488
|
+
eor x25, x1, x27, ror #53
|
|
489
|
+
bic x27, x30, x26, ror #47
|
|
490
|
+
eor v23.16b, v31.16b, v23.16b
|
|
491
|
+
eor x1, x5, x28
|
|
492
|
+
bic v31.16b, v1.16b, v0.16b
|
|
493
|
+
eor x5, x4, x11, ror #41
|
|
494
|
+
eor v24.16b, v31.16b, v24.16b
|
|
495
|
+
eor x11, x19, x13, ror #35
|
|
496
|
+
bic x13, x26, x24, ror #10
|
|
497
|
+
bic v31.16b, v2.16b, v27.16b
|
|
498
|
+
eor x28, x27, x24, ror #57
|
|
499
|
+
eor v0.16b, v31.16b, v30.16b
|
|
500
|
+
bic x27, x24, x9, ror #47
|
|
501
|
+
bic v31.16b, v3.16b, v2.16b
|
|
502
|
+
bic x19, x23, x3, ror #9
|
|
503
|
+
bic x4, x29, x14, ror #41
|
|
504
|
+
eor v1.16b, v31.16b, v27.16b
|
|
505
|
+
eor x24, x19, x29, ror #44
|
|
506
|
+
bic v31.16b, v4.16b, v3.16b
|
|
507
|
+
bic x29, x3, x29, ror #35
|
|
508
|
+
eor v2.16b, v31.16b, v2.16b
|
|
509
|
+
eor x13, x13, x9, ror #57
|
|
510
|
+
eor x19, x29, x14, ror #12
|
|
511
|
+
bic v31.16b, v30.16b, v4.16b
|
|
512
|
+
bic x29, x9, x0, ror #19
|
|
513
|
+
eor v3.16b, v31.16b, v3.16b
|
|
514
|
+
bic x14, x14, x8, ror #5
|
|
515
|
+
bic v31.16b, v27.16b, v30.16b
|
|
516
|
+
eor x9, x14, x23, ror #43
|
|
517
|
+
eor x14, x4, x8, ror #46
|
|
518
|
+
eor v4.16b, v31.16b, v4.16b
|
|
519
|
+
bic x23, x8, x23, ror #38
|
|
520
|
+
eor x8, x27, x0, ror #2
|
|
521
|
+
eor x4, x23, x3, ror #47
|
|
522
|
+
bic x3, x0, x30, ror #5
|
|
523
|
+
eor x23, x3, x26, ror #52
|
|
524
|
+
eor x3, x29, x30, ror #24
|
|
525
|
+
ldr x30, [sp, #0x10]
|
|
526
|
+
ld1r { v28.2d }, [x30], #8
|
|
527
|
+
str x30, [sp, #0x10]
|
|
528
|
+
eor v0.16b, v0.16b, v28.16b
|
|
529
|
+
|
|
530
|
+
Lkeccak_f1600_x4_v8a_scalar_hybrid_loop:
|
|
531
|
+
eor x0, x15, x11, ror #52
|
|
532
|
+
eor x0, x0, x13, ror #48
|
|
533
|
+
eor v30.16b, v0.16b, v5.16b
|
|
534
|
+
eor v30.16b, v30.16b, v10.16b
|
|
535
|
+
eor x26, x8, x9, ror #57
|
|
536
|
+
eor v30.16b, v30.16b, v15.16b
|
|
537
|
+
eor x27, x0, x14, ror #10
|
|
538
|
+
eor x29, x16, x28, ror #63
|
|
539
|
+
eor v30.16b, v30.16b, v20.16b
|
|
540
|
+
eor x26, x26, x6, ror #51
|
|
541
|
+
eor v29.16b, v1.16b, v6.16b
|
|
542
|
+
eor x30, x23, x22, ror #50
|
|
543
|
+
eor v29.16b, v29.16b, v11.16b
|
|
544
|
+
eor x0, x26, x10, ror #31
|
|
545
|
+
eor x29, x29, x19, ror #37
|
|
546
|
+
eor v29.16b, v29.16b, v16.16b
|
|
547
|
+
eor x27, x27, x12, ror #5
|
|
548
|
+
eor v29.16b, v29.16b, v21.16b
|
|
549
|
+
eor x30, x30, x24, ror #34
|
|
550
|
+
eor x0, x0, x7, ror #27
|
|
551
|
+
eor v28.16b, v2.16b, v7.16b
|
|
552
|
+
eor x26, x30, x21, ror #26
|
|
553
|
+
eor v28.16b, v28.16b, v12.16b
|
|
554
|
+
eor x26, x26, x25, ror #15
|
|
555
|
+
eor v28.16b, v28.16b, v17.16b
|
|
556
|
+
ror x30, x27, #0x3e
|
|
557
|
+
eor x30, x30, x26, ror #57
|
|
558
|
+
eor v28.16b, v28.16b, v22.16b
|
|
559
|
+
ror x26, x26, #0x3a
|
|
560
|
+
eor v27.16b, v3.16b, v8.16b
|
|
561
|
+
eor x16, x30, x16
|
|
562
|
+
eor v27.16b, v27.16b, v13.16b
|
|
563
|
+
eor x28, x30, x28, ror #63
|
|
564
|
+
str x28, [sp, #0xd0]
|
|
565
|
+
eor v27.16b, v27.16b, v18.16b
|
|
566
|
+
eor x29, x29, x17, ror #36
|
|
567
|
+
eor v27.16b, v27.16b, v23.16b
|
|
568
|
+
eor x28, x1, x2, ror #61
|
|
569
|
+
eor x19, x30, x19, ror #37
|
|
570
|
+
eor v26.16b, v4.16b, v9.16b
|
|
571
|
+
eor x29, x29, x20, ror #2
|
|
572
|
+
eor v26.16b, v26.16b, v14.16b
|
|
573
|
+
eor x28, x28, x4, ror #54
|
|
574
|
+
eor v26.16b, v26.16b, v19.16b
|
|
575
|
+
eor x26, x26, x0, ror #55
|
|
576
|
+
eor x28, x28, x3, ror #39
|
|
577
|
+
eor v26.16b, v26.16b, v24.16b
|
|
578
|
+
eor x28, x28, x5, ror #25
|
|
579
|
+
add v31.2d, v28.2d, v28.2d
|
|
580
|
+
ror x0, x0, #0x38
|
|
581
|
+
eor x0, x0, x29, ror #63
|
|
582
|
+
sri v31.2d, v28.2d, #0x3f
|
|
583
|
+
eor x27, x28, x27, ror #61
|
|
584
|
+
eor v25.16b, v31.16b, v30.16b
|
|
585
|
+
eor x13, x0, x13, ror #46
|
|
586
|
+
add v31.2d, v26.2d, v26.2d
|
|
587
|
+
eor x28, x29, x28, ror #63
|
|
588
|
+
eor x29, x30, x20, ror #2
|
|
589
|
+
sri v31.2d, v26.2d, #0x3f
|
|
590
|
+
eor x20, x26, x3, ror #39
|
|
591
|
+
eor v28.16b, v31.16b, v28.16b
|
|
592
|
+
eor x11, x0, x11, ror #50
|
|
593
|
+
add v31.2d, v29.2d, v29.2d
|
|
594
|
+
eor x25, x28, x25, ror #9
|
|
595
|
+
eor x3, x28, x21, ror #20
|
|
596
|
+
sri v31.2d, v29.2d, #0x3f
|
|
597
|
+
eor x21, x26, x1
|
|
598
|
+
eor v26.16b, v31.16b, v26.16b
|
|
599
|
+
eor x9, x27, x9, ror #49
|
|
600
|
+
eor x24, x28, x24, ror #28
|
|
601
|
+
add v31.2d, v27.2d, v27.2d
|
|
602
|
+
eor x1, x30, x17, ror #36
|
|
603
|
+
sri v31.2d, v27.2d, #0x3f
|
|
604
|
+
eor x14, x0, x14, ror #8
|
|
605
|
+
eor v29.16b, v31.16b, v29.16b
|
|
606
|
+
eor x22, x28, x22, ror #44
|
|
607
|
+
eor x8, x27, x8, ror #56
|
|
608
|
+
add v31.2d, v30.2d, v30.2d
|
|
609
|
+
eor x17, x27, x7, ror #19
|
|
610
|
+
sri v31.2d, v30.2d, #0x3f
|
|
611
|
+
eor x15, x0, x15, ror #62
|
|
612
|
+
bic x7, x20, x22, ror #47
|
|
613
|
+
eor v27.16b, v31.16b, v27.16b
|
|
614
|
+
eor x4, x26, x4, ror #54
|
|
615
|
+
eor v30.16b, v0.16b, v26.16b
|
|
616
|
+
eor x0, x0, x12, ror #3
|
|
617
|
+
eor v31.16b, v2.16b, v29.16b
|
|
618
|
+
eor x28, x28, x23, ror #58
|
|
619
|
+
eor x23, x26, x2, ror #61
|
|
620
|
+
shl v0.2d, v31.2d, #0x3e
|
|
621
|
+
eor x26, x26, x5, ror #25
|
|
622
|
+
sri v0.2d, v31.2d, #0x2
|
|
623
|
+
eor x2, x7, x16, ror #39
|
|
624
|
+
eor v31.16b, v12.16b, v29.16b
|
|
625
|
+
bic x7, x9, x20, ror #42
|
|
626
|
+
bic x30, x15, x9, ror #16
|
|
627
|
+
shl v2.2d, v31.2d, #0x2b
|
|
628
|
+
eor x7, x7, x22, ror #25
|
|
629
|
+
sri v2.2d, v31.2d, #0x15
|
|
630
|
+
eor x12, x30, x20, ror #58
|
|
631
|
+
bic x20, x22, x16, ror #56
|
|
632
|
+
eor v31.16b, v13.16b, v28.16b
|
|
633
|
+
eor x30, x27, x6, ror #43
|
|
634
|
+
shl v12.2d, v31.2d, #0x19
|
|
635
|
+
eor x22, x20, x15, ror #23
|
|
636
|
+
sri v12.2d, v31.2d, #0x27
|
|
637
|
+
bic x6, x19, x13, ror #42
|
|
638
|
+
eor x6, x6, x17, ror #41
|
|
639
|
+
eor v31.16b, v19.16b, v27.16b
|
|
640
|
+
bic x5, x13, x17, ror #63
|
|
641
|
+
shl v13.2d, v31.2d, #0x8
|
|
642
|
+
eor x5, x21, x5, ror #21
|
|
643
|
+
sri v13.2d, v31.2d, #0x38
|
|
644
|
+
bic x17, x17, x21, ror #44
|
|
645
|
+
eor x27, x27, x10, ror #23
|
|
646
|
+
eor v31.16b, v23.16b, v28.16b
|
|
647
|
+
bic x21, x21, x25, ror #50
|
|
648
|
+
shl v19.2d, v31.2d, #0x38
|
|
649
|
+
bic x20, x27, x4, ror #25
|
|
650
|
+
bic x10, x16, x15, ror #31
|
|
651
|
+
sri v19.2d, v31.2d, #0x8
|
|
652
|
+
eor x16, x21, x19, ror #43
|
|
653
|
+
eor v31.16b, v15.16b, v26.16b
|
|
654
|
+
eor x21, x17, x25, ror #30
|
|
655
|
+
shl v23.2d, v31.2d, #0x29
|
|
656
|
+
bic x19, x25, x19, ror #57
|
|
657
|
+
ldr x25, [sp, #0x18]
|
|
658
|
+
sri v23.2d, v31.2d, #0x17
|
|
659
|
+
eor x17, x10, x9, ror #47
|
|
660
|
+
eor v31.16b, v1.16b, v25.16b
|
|
661
|
+
ldr x9, [sp, #0x8]
|
|
662
|
+
eor x15, x20, x28, ror #27
|
|
663
|
+
shl v15.2d, v31.2d, #0x1
|
|
664
|
+
bic x20, x4, x28, ror #2
|
|
665
|
+
sri v15.2d, v31.2d, #0x3f
|
|
666
|
+
eor x10, x20, x1, ror #50
|
|
667
|
+
eor v31.16b, v8.16b, v28.16b
|
|
668
|
+
bic x20, x11, x27, ror #60
|
|
669
|
+
eor x20, x20, x4, ror #21
|
|
670
|
+
shl v1.2d, v31.2d, #0x37
|
|
671
|
+
bic x4, x28, x1, ror #48
|
|
672
|
+
sri v1.2d, v31.2d, #0x9
|
|
673
|
+
bic x1, x1, x11, ror #57
|
|
674
|
+
eor v31.16b, v16.16b, v25.16b
|
|
675
|
+
ldr x28, [x9, x25, lsl #3]
|
|
676
|
+
ldr x9, [sp, #0xd0]
|
|
677
|
+
shl v8.2d, v31.2d, #0x2d
|
|
678
|
+
add x25, x25, #0x1
|
|
679
|
+
sri v8.2d, v31.2d, #0x13
|
|
680
|
+
str x25, [sp, #0x18]
|
|
681
|
+
cmp x25, #0x17
|
|
682
|
+
eor v31.16b, v7.16b, v29.16b
|
|
683
|
+
eor x25, x1, x27, ror #53
|
|
684
|
+
shl v16.2d, v31.2d, #0x6
|
|
685
|
+
bic x27, x30, x26, ror #47
|
|
686
|
+
sri v16.2d, v31.2d, #0x3a
|
|
687
|
+
eor x1, x5, x28
|
|
688
|
+
eor x5, x4, x11, ror #41
|
|
689
|
+
eor v31.16b, v10.16b, v26.16b
|
|
690
|
+
eor x11, x19, x13, ror #35
|
|
691
|
+
shl v7.2d, v31.2d, #0x3
|
|
692
|
+
bic x13, x26, x24, ror #10
|
|
693
|
+
eor x28, x27, x24, ror #57
|
|
694
|
+
sri v7.2d, v31.2d, #0x3d
|
|
695
|
+
bic x27, x24, x9, ror #47
|
|
696
|
+
eor v31.16b, v3.16b, v28.16b
|
|
697
|
+
bic x19, x23, x3, ror #9
|
|
698
|
+
shl v10.2d, v31.2d, #0x1c
|
|
699
|
+
bic x4, x29, x14, ror #41
|
|
700
|
+
eor x24, x19, x29, ror #44
|
|
701
|
+
sri v10.2d, v31.2d, #0x24
|
|
702
|
+
bic x29, x3, x29, ror #35
|
|
703
|
+
eor v31.16b, v18.16b, v28.16b
|
|
704
|
+
eor x13, x13, x9, ror #57
|
|
705
|
+
shl v3.2d, v31.2d, #0x15
|
|
706
|
+
eor x19, x29, x14, ror #12
|
|
707
|
+
bic x29, x9, x0, ror #19
|
|
708
|
+
sri v3.2d, v31.2d, #0x2b
|
|
709
|
+
bic x14, x14, x8, ror #5
|
|
710
|
+
eor v31.16b, v17.16b, v29.16b
|
|
711
|
+
eor x9, x14, x23, ror #43
|
|
712
|
+
eor x14, x4, x8, ror #46
|
|
713
|
+
shl v18.2d, v31.2d, #0xf
|
|
714
|
+
bic x23, x8, x23, ror #38
|
|
715
|
+
sri v18.2d, v31.2d, #0x31
|
|
716
|
+
eor x8, x27, x0, ror #2
|
|
717
|
+
eor v31.16b, v11.16b, v25.16b
|
|
718
|
+
eor x4, x23, x3, ror #47
|
|
719
|
+
bic x3, x0, x30, ror #5
|
|
720
|
+
shl v17.2d, v31.2d, #0xa
|
|
721
|
+
eor x23, x3, x26, ror #52
|
|
722
|
+
sri v17.2d, v31.2d, #0x36
|
|
723
|
+
eor x3, x29, x30, ror #24
|
|
724
|
+
eor x0, x15, x11, ror #52
|
|
725
|
+
eor v31.16b, v9.16b, v27.16b
|
|
726
|
+
eor x0, x0, x13, ror #48
|
|
727
|
+
shl v11.2d, v31.2d, #0x14
|
|
728
|
+
eor x26, x8, x9, ror #57
|
|
729
|
+
sri v11.2d, v31.2d, #0x2c
|
|
730
|
+
eor x27, x0, x14, ror #10
|
|
731
|
+
eor x29, x16, x28, ror #63
|
|
732
|
+
eor v31.16b, v22.16b, v29.16b
|
|
733
|
+
eor x26, x26, x6, ror #51
|
|
734
|
+
shl v9.2d, v31.2d, #0x3d
|
|
735
|
+
eor x30, x23, x22, ror #50
|
|
736
|
+
sri v9.2d, v31.2d, #0x3
|
|
737
|
+
eor x0, x26, x10, ror #31
|
|
738
|
+
eor x29, x29, x19, ror #37
|
|
739
|
+
eor v31.16b, v14.16b, v27.16b
|
|
740
|
+
eor x27, x27, x12, ror #5
|
|
741
|
+
shl v22.2d, v31.2d, #0x27
|
|
742
|
+
eor x30, x30, x24, ror #34
|
|
743
|
+
eor x0, x0, x7, ror #27
|
|
744
|
+
sri v22.2d, v31.2d, #0x19
|
|
745
|
+
eor x26, x30, x21, ror #26
|
|
746
|
+
eor v31.16b, v20.16b, v26.16b
|
|
747
|
+
eor x26, x26, x25, ror #15
|
|
748
|
+
shl v14.2d, v31.2d, #0x12
|
|
749
|
+
ror x30, x27, #0x3e
|
|
750
|
+
eor x30, x30, x26, ror #57
|
|
751
|
+
sri v14.2d, v31.2d, #0x2e
|
|
752
|
+
ror x26, x26, #0x3a
|
|
753
|
+
eor v31.16b, v4.16b, v27.16b
|
|
754
|
+
eor x16, x30, x16
|
|
755
|
+
shl v20.2d, v31.2d, #0x1b
|
|
756
|
+
eor x28, x30, x28, ror #63
|
|
757
|
+
str x28, [sp, #0xd0]
|
|
758
|
+
sri v20.2d, v31.2d, #0x25
|
|
759
|
+
eor x29, x29, x17, ror #36
|
|
760
|
+
eor v31.16b, v24.16b, v27.16b
|
|
761
|
+
eor x28, x1, x2, ror #61
|
|
762
|
+
eor x19, x30, x19, ror #37
|
|
763
|
+
shl v4.2d, v31.2d, #0xe
|
|
764
|
+
eor x29, x29, x20, ror #2
|
|
765
|
+
sri v4.2d, v31.2d, #0x32
|
|
766
|
+
eor x28, x28, x4, ror #54
|
|
767
|
+
eor v31.16b, v21.16b, v25.16b
|
|
768
|
+
eor x26, x26, x0, ror #55
|
|
769
|
+
eor x28, x28, x3, ror #39
|
|
770
|
+
shl v24.2d, v31.2d, #0x2
|
|
771
|
+
eor x28, x28, x5, ror #25
|
|
772
|
+
sri v24.2d, v31.2d, #0x3e
|
|
773
|
+
ror x0, x0, #0x38
|
|
774
|
+
eor x0, x0, x29, ror #63
|
|
775
|
+
eor v31.16b, v5.16b, v26.16b
|
|
776
|
+
eor x27, x28, x27, ror #61
|
|
777
|
+
shl v21.2d, v31.2d, #0x24
|
|
778
|
+
eor x13, x0, x13, ror #46
|
|
779
|
+
sri v21.2d, v31.2d, #0x1c
|
|
780
|
+
eor x28, x29, x28, ror #63
|
|
781
|
+
eor x29, x30, x20, ror #2
|
|
782
|
+
eor v31.16b, v6.16b, v25.16b
|
|
783
|
+
eor x20, x26, x3, ror #39
|
|
784
|
+
shl v27.2d, v31.2d, #0x2c
|
|
785
|
+
eor x11, x0, x11, ror #50
|
|
786
|
+
sri v27.2d, v31.2d, #0x14
|
|
787
|
+
eor x25, x28, x25, ror #9
|
|
788
|
+
eor x3, x28, x21, ror #20
|
|
789
|
+
bic v31.16b, v7.16b, v11.16b
|
|
790
|
+
eor x21, x26, x1
|
|
791
|
+
eor v5.16b, v31.16b, v10.16b
|
|
792
|
+
eor x9, x27, x9, ror #49
|
|
793
|
+
eor x24, x28, x24, ror #28
|
|
794
|
+
bic v31.16b, v8.16b, v7.16b
|
|
795
|
+
eor x1, x30, x17, ror #36
|
|
796
|
+
eor v6.16b, v31.16b, v11.16b
|
|
797
|
+
eor x14, x0, x14, ror #8
|
|
798
|
+
bic v31.16b, v9.16b, v8.16b
|
|
799
|
+
eor x22, x28, x22, ror #44
|
|
800
|
+
eor x8, x27, x8, ror #56
|
|
801
|
+
eor v7.16b, v31.16b, v7.16b
|
|
802
|
+
eor x17, x27, x7, ror #19
|
|
803
|
+
bic v31.16b, v10.16b, v9.16b
|
|
804
|
+
eor x15, x0, x15, ror #62
|
|
805
|
+
bic x7, x20, x22, ror #47
|
|
806
|
+
eor v8.16b, v31.16b, v8.16b
|
|
807
|
+
eor x4, x26, x4, ror #54
|
|
808
|
+
bic v31.16b, v11.16b, v10.16b
|
|
809
|
+
eor x0, x0, x12, ror #3
|
|
810
|
+
eor v9.16b, v31.16b, v9.16b
|
|
811
|
+
eor x28, x28, x23, ror #58
|
|
812
|
+
eor x23, x26, x2, ror #61
|
|
813
|
+
bic v31.16b, v12.16b, v16.16b
|
|
814
|
+
eor x26, x26, x5, ror #25
|
|
815
|
+
eor v10.16b, v31.16b, v15.16b
|
|
816
|
+
eor x2, x7, x16, ror #39
|
|
817
|
+
bic v31.16b, v13.16b, v12.16b
|
|
818
|
+
bic x7, x9, x20, ror #42
|
|
819
|
+
bic x30, x15, x9, ror #16
|
|
820
|
+
eor v11.16b, v31.16b, v16.16b
|
|
821
|
+
eor x7, x7, x22, ror #25
|
|
822
|
+
bic v31.16b, v14.16b, v13.16b
|
|
823
|
+
eor x12, x30, x20, ror #58
|
|
824
|
+
bic x20, x22, x16, ror #56
|
|
825
|
+
eor v12.16b, v31.16b, v12.16b
|
|
826
|
+
eor x30, x27, x6, ror #43
|
|
827
|
+
bic v31.16b, v15.16b, v14.16b
|
|
828
|
+
eor x22, x20, x15, ror #23
|
|
829
|
+
eor v13.16b, v31.16b, v13.16b
|
|
830
|
+
bic x6, x19, x13, ror #42
|
|
831
|
+
eor x6, x6, x17, ror #41
|
|
832
|
+
bic v31.16b, v16.16b, v15.16b
|
|
833
|
+
bic x5, x13, x17, ror #63
|
|
834
|
+
eor v14.16b, v31.16b, v14.16b
|
|
835
|
+
eor x5, x21, x5, ror #21
|
|
836
|
+
bic v31.16b, v17.16b, v21.16b
|
|
837
|
+
bic x17, x17, x21, ror #44
|
|
838
|
+
eor x27, x27, x10, ror #23
|
|
839
|
+
eor v15.16b, v31.16b, v20.16b
|
|
840
|
+
bic x21, x21, x25, ror #50
|
|
841
|
+
bic v31.16b, v18.16b, v17.16b
|
|
842
|
+
bic x20, x27, x4, ror #25
|
|
843
|
+
bic x10, x16, x15, ror #31
|
|
844
|
+
eor v16.16b, v31.16b, v21.16b
|
|
845
|
+
eor x16, x21, x19, ror #43
|
|
846
|
+
bic v31.16b, v19.16b, v18.16b
|
|
847
|
+
eor x21, x17, x25, ror #30
|
|
848
|
+
eor v17.16b, v31.16b, v17.16b
|
|
849
|
+
bic x19, x25, x19, ror #57
|
|
850
|
+
ldr x25, [sp, #0x18]
|
|
851
|
+
bic v31.16b, v20.16b, v19.16b
|
|
852
|
+
eor x17, x10, x9, ror #47
|
|
853
|
+
eor v18.16b, v31.16b, v18.16b
|
|
854
|
+
ldr x9, [sp, #0x8]
|
|
855
|
+
eor x15, x20, x28, ror #27
|
|
856
|
+
bic v31.16b, v21.16b, v20.16b
|
|
857
|
+
bic x20, x4, x28, ror #2
|
|
858
|
+
eor v19.16b, v31.16b, v19.16b
|
|
859
|
+
eor x10, x20, x1, ror #50
|
|
860
|
+
bic v31.16b, v22.16b, v1.16b
|
|
861
|
+
bic x20, x11, x27, ror #60
|
|
862
|
+
eor x20, x20, x4, ror #21
|
|
863
|
+
eor v20.16b, v31.16b, v0.16b
|
|
864
|
+
bic x4, x28, x1, ror #48
|
|
865
|
+
bic v31.16b, v23.16b, v22.16b
|
|
866
|
+
bic x1, x1, x11, ror #57
|
|
867
|
+
eor v21.16b, v31.16b, v1.16b
|
|
868
|
+
ldr x28, [x9, x25, lsl #3]
|
|
869
|
+
ldr x9, [sp, #0xd0]
|
|
870
|
+
bic v31.16b, v24.16b, v23.16b
|
|
871
|
+
add x25, x25, #0x1
|
|
872
|
+
eor v22.16b, v31.16b, v22.16b
|
|
873
|
+
str x25, [sp, #0x18]
|
|
874
|
+
cmp x25, #0x17
|
|
875
|
+
bic v31.16b, v0.16b, v24.16b
|
|
876
|
+
eor x25, x1, x27, ror #53
|
|
877
|
+
eor v23.16b, v31.16b, v23.16b
|
|
878
|
+
bic x27, x30, x26, ror #47
|
|
879
|
+
bic v31.16b, v1.16b, v0.16b
|
|
880
|
+
eor x1, x5, x28
|
|
881
|
+
eor x5, x4, x11, ror #41
|
|
882
|
+
eor v24.16b, v31.16b, v24.16b
|
|
883
|
+
eor x11, x19, x13, ror #35
|
|
884
|
+
bic v31.16b, v2.16b, v27.16b
|
|
885
|
+
bic x13, x26, x24, ror #10
|
|
886
|
+
eor x28, x27, x24, ror #57
|
|
887
|
+
eor v0.16b, v31.16b, v30.16b
|
|
888
|
+
bic x27, x24, x9, ror #47
|
|
889
|
+
bic v31.16b, v3.16b, v2.16b
|
|
890
|
+
bic x19, x23, x3, ror #9
|
|
891
|
+
eor v1.16b, v31.16b, v27.16b
|
|
892
|
+
bic x4, x29, x14, ror #41
|
|
893
|
+
eor x24, x19, x29, ror #44
|
|
894
|
+
bic v31.16b, v4.16b, v3.16b
|
|
895
|
+
bic x29, x3, x29, ror #35
|
|
896
|
+
eor v2.16b, v31.16b, v2.16b
|
|
897
|
+
eor x13, x13, x9, ror #57
|
|
898
|
+
bic v31.16b, v30.16b, v4.16b
|
|
899
|
+
eor x19, x29, x14, ror #12
|
|
900
|
+
bic x29, x9, x0, ror #19
|
|
901
|
+
eor v3.16b, v31.16b, v3.16b
|
|
902
|
+
bic x14, x14, x8, ror #5
|
|
903
|
+
bic v31.16b, v27.16b, v30.16b
|
|
904
|
+
eor x9, x14, x23, ror #43
|
|
905
|
+
eor x14, x4, x8, ror #46
|
|
906
|
+
eor v4.16b, v31.16b, v4.16b
|
|
907
|
+
bic x23, x8, x23, ror #38
|
|
908
|
+
eor x8, x27, x0, ror #2
|
|
909
|
+
eor x4, x23, x3, ror #47
|
|
910
|
+
bic x3, x0, x30, ror #5
|
|
911
|
+
eor x23, x3, x26, ror #52
|
|
912
|
+
eor x3, x29, x30, ror #24
|
|
913
|
+
ldr x30, [sp, #0x10]
|
|
914
|
+
ld1r { v28.2d }, [x30], #8
|
|
915
|
+
str x30, [sp, #0x10]
|
|
916
|
+
eor v0.16b, v0.16b, v28.16b
|
|
917
|
+
|
|
918
|
+
Lkeccak_f1600_x4_v8a_scalar_hybrid_loop_end:
|
|
919
|
+
b.le Lkeccak_f1600_x4_v8a_scalar_hybrid_loop
|
|
920
|
+
ror x2, x2, #0x3d
|
|
921
|
+
ror x3, x3, #0x27
|
|
922
|
+
ror x4, x4, #0x36
|
|
923
|
+
ror x5, x5, #0x19
|
|
924
|
+
ror x6, x6, #0x2b
|
|
925
|
+
ror x7, x7, #0x13
|
|
926
|
+
ror x8, x8, #0x38
|
|
927
|
+
ror x9, x9, #0x31
|
|
928
|
+
ror x10, x10, #0x17
|
|
929
|
+
ror x11, x11, #0x32
|
|
930
|
+
ror x12, x12, #0x3
|
|
931
|
+
ror x13, x13, #0x2e
|
|
932
|
+
ror x14, x14, #0x8
|
|
933
|
+
ror x15, x15, #0x3e
|
|
934
|
+
ror x17, x17, #0x24
|
|
935
|
+
ror x28, x28, #0x3f
|
|
936
|
+
ror x19, x19, #0x25
|
|
937
|
+
ror x20, x20, #0x2
|
|
938
|
+
ror x21, x21, #0x14
|
|
939
|
+
ror x22, x22, #0x2c
|
|
940
|
+
ror x23, x23, #0x3a
|
|
941
|
+
ror x24, x24, #0x1c
|
|
942
|
+
ror x25, x25, #0x9
|
|
943
|
+
ldr x30, [sp, #0x20]
|
|
944
|
+
cmp x30, #0x1
|
|
945
|
+
b.eq Lkeccak_f1600_x4_v8a_scalar_hybrid_done
|
|
946
|
+
mov x30, #0x1 // =1
|
|
947
|
+
str x30, [sp, #0x20]
|
|
948
|
+
ldr x0, [sp]
|
|
949
|
+
add x0, x0, #0x190
|
|
950
|
+
stp x1, x6, [x0]
|
|
951
|
+
stp x11, x16, [x0, #0x10]
|
|
952
|
+
stp x21, x2, [x0, #0x20]
|
|
953
|
+
stp x7, x12, [x0, #0x30]
|
|
954
|
+
stp x17, x22, [x0, #0x40]
|
|
955
|
+
stp x3, x8, [x0, #0x50]
|
|
956
|
+
stp x13, x28, [x0, #0x60]
|
|
957
|
+
stp x23, x4, [x0, #0x70]
|
|
958
|
+
stp x9, x14, [x0, #0x80]
|
|
959
|
+
stp x19, x24, [x0, #0x90]
|
|
960
|
+
stp x5, x10, [x0, #0xa0]
|
|
961
|
+
stp x15, x20, [x0, #0xb0]
|
|
962
|
+
str x25, [x0, #0xc0]
|
|
963
|
+
sub x0, x0, #0x190
|
|
964
|
+
add x0, x0, #0x258
|
|
965
|
+
ldp x1, x6, [x0]
|
|
966
|
+
ldp x11, x16, [x0, #0x10]
|
|
967
|
+
ldp x21, x2, [x0, #0x20]
|
|
968
|
+
ldp x7, x12, [x0, #0x30]
|
|
969
|
+
ldp x17, x22, [x0, #0x40]
|
|
970
|
+
ldp x3, x8, [x0, #0x50]
|
|
971
|
+
ldp x13, x28, [x0, #0x60]
|
|
972
|
+
ldp x23, x4, [x0, #0x70]
|
|
973
|
+
ldp x9, x14, [x0, #0x80]
|
|
974
|
+
ldp x19, x24, [x0, #0x90]
|
|
975
|
+
ldp x5, x10, [x0, #0xa0]
|
|
976
|
+
ldp x15, x20, [x0, #0xb0]
|
|
977
|
+
ldr x25, [x0, #0xc0]
|
|
978
|
+
sub x0, x0, #0x258
|
|
979
|
+
b Lkeccak_f1600_x4_v8a_scalar_hybrid_initial
|
|
980
|
+
|
|
981
|
+
Lkeccak_f1600_x4_v8a_scalar_hybrid_done:
|
|
982
|
+
ldr x0, [sp]
|
|
983
|
+
add x0, x0, #0x258
|
|
984
|
+
stp x1, x6, [x0]
|
|
985
|
+
stp x11, x16, [x0, #0x10]
|
|
986
|
+
stp x21, x2, [x0, #0x20]
|
|
987
|
+
stp x7, x12, [x0, #0x30]
|
|
988
|
+
stp x17, x22, [x0, #0x40]
|
|
989
|
+
stp x3, x8, [x0, #0x50]
|
|
990
|
+
stp x13, x28, [x0, #0x60]
|
|
991
|
+
stp x23, x4, [x0, #0x70]
|
|
992
|
+
stp x9, x14, [x0, #0x80]
|
|
993
|
+
stp x19, x24, [x0, #0x90]
|
|
994
|
+
stp x5, x10, [x0, #0xa0]
|
|
995
|
+
stp x15, x20, [x0, #0xb0]
|
|
996
|
+
str x25, [x0, #0xc0]
|
|
997
|
+
sub x0, x0, #0x258
|
|
998
|
+
add x4, x0, #0xc8
|
|
999
|
+
trn1 v25.2d, v0.2d, v1.2d
|
|
1000
|
+
trn1 v26.2d, v2.2d, v3.2d
|
|
1001
|
+
stp q25, q26, [x0], #0x20
|
|
1002
|
+
trn2 v27.2d, v0.2d, v1.2d
|
|
1003
|
+
trn2 v28.2d, v2.2d, v3.2d
|
|
1004
|
+
st1 { v27.2d, v28.2d }, [x4], #32
|
|
1005
|
+
trn1 v25.2d, v4.2d, v5.2d
|
|
1006
|
+
trn1 v26.2d, v6.2d, v7.2d
|
|
1007
|
+
stp q25, q26, [x0], #0x20
|
|
1008
|
+
trn2 v27.2d, v4.2d, v5.2d
|
|
1009
|
+
trn2 v28.2d, v6.2d, v7.2d
|
|
1010
|
+
st1 { v27.2d, v28.2d }, [x4], #32
|
|
1011
|
+
trn1 v25.2d, v8.2d, v9.2d
|
|
1012
|
+
trn1 v26.2d, v10.2d, v11.2d
|
|
1013
|
+
stp q25, q26, [x0], #0x20
|
|
1014
|
+
trn2 v27.2d, v8.2d, v9.2d
|
|
1015
|
+
trn2 v28.2d, v10.2d, v11.2d
|
|
1016
|
+
st1 { v27.2d, v28.2d }, [x4], #32
|
|
1017
|
+
trn1 v25.2d, v12.2d, v13.2d
|
|
1018
|
+
trn1 v26.2d, v14.2d, v15.2d
|
|
1019
|
+
stp q25, q26, [x0], #0x20
|
|
1020
|
+
trn2 v27.2d, v12.2d, v13.2d
|
|
1021
|
+
trn2 v28.2d, v14.2d, v15.2d
|
|
1022
|
+
st1 { v27.2d, v28.2d }, [x4], #32
|
|
1023
|
+
trn1 v25.2d, v16.2d, v17.2d
|
|
1024
|
+
trn1 v26.2d, v18.2d, v19.2d
|
|
1025
|
+
stp q25, q26, [x0], #0x20
|
|
1026
|
+
trn2 v27.2d, v16.2d, v17.2d
|
|
1027
|
+
trn2 v28.2d, v18.2d, v19.2d
|
|
1028
|
+
st1 { v27.2d, v28.2d }, [x4], #32
|
|
1029
|
+
trn1 v25.2d, v20.2d, v21.2d
|
|
1030
|
+
trn1 v26.2d, v22.2d, v23.2d
|
|
1031
|
+
stp q25, q26, [x0], #0x20
|
|
1032
|
+
trn2 v27.2d, v20.2d, v21.2d
|
|
1033
|
+
trn2 v28.2d, v22.2d, v23.2d
|
|
1034
|
+
st1 { v27.2d, v28.2d }, [x4], #32
|
|
1035
|
+
str d24, [x0]
|
|
1036
|
+
trn2 v25.2d, v24.2d, v24.2d
|
|
1037
|
+
str d25, [x4]
|
|
1038
|
+
ldp d8, d9, [sp, #0x90]
|
|
1039
|
+
.cfi_restore d8
|
|
1040
|
+
.cfi_restore d9
|
|
1041
|
+
ldp d10, d11, [sp, #0xa0]
|
|
1042
|
+
.cfi_restore d10
|
|
1043
|
+
.cfi_restore d11
|
|
1044
|
+
ldp d12, d13, [sp, #0xb0]
|
|
1045
|
+
.cfi_restore d12
|
|
1046
|
+
.cfi_restore d13
|
|
1047
|
+
ldp d14, d15, [sp, #0xc0]
|
|
1048
|
+
.cfi_restore d14
|
|
1049
|
+
.cfi_restore d15
|
|
1050
|
+
ldp x19, x20, [sp, #0x30]
|
|
1051
|
+
.cfi_restore x19
|
|
1052
|
+
.cfi_restore x20
|
|
1053
|
+
ldp x21, x22, [sp, #0x40]
|
|
1054
|
+
.cfi_restore x21
|
|
1055
|
+
.cfi_restore x22
|
|
1056
|
+
ldp x23, x24, [sp, #0x50]
|
|
1057
|
+
.cfi_restore x23
|
|
1058
|
+
.cfi_restore x24
|
|
1059
|
+
ldp x25, x26, [sp, #0x60]
|
|
1060
|
+
.cfi_restore x25
|
|
1061
|
+
.cfi_restore x26
|
|
1062
|
+
ldp x27, x28, [sp, #0x70]
|
|
1063
|
+
.cfi_restore x27
|
|
1064
|
+
.cfi_restore x28
|
|
1065
|
+
ldp x29, x30, [sp, #0x80]
|
|
1066
|
+
.cfi_restore x29
|
|
1067
|
+
.cfi_restore x30
|
|
1068
|
+
add sp, sp, #0xe0
|
|
1069
|
+
.cfi_adjust_cfa_offset -0xe0
|
|
1070
|
+
ret
|
|
1071
|
+
.cfi_endproc
|
|
1072
|
+
|
|
1073
|
+
MLK_ASM_FN_SIZE(keccak_f1600_x4_v8a_scalar_hybrid_asm)
|
|
1074
|
+
|
|
1075
|
+
#endif /* MLK_FIPS202_AARCH64_NEED_X4_V8A_SCALAR_HYBRID && \
|
|
1076
|
+
!MLK_CONFIG_MULTILEVEL_NO_SHARED */
|