pq_crypto 0.4.2 → 0.5.0
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/CHANGELOG.md +25 -0
- data/GET_STARTED.md +21 -16
- data/README.md +26 -0
- data/SECURITY.md +22 -16
- data/ext/pqcrypto/extconf.rb +148 -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 +129 -0
- data/ext/pqcrypto/pqcrypto_ruby_secure.c +0 -3
- data/ext/pqcrypto/pqcrypto_secure.c +135 -117
- data/ext/pqcrypto/pqcrypto_secure.h +1 -42
- data/ext/pqcrypto/pqcrypto_version.h +1 -1
- data/ext/pqcrypto/randombytes.h +9 -0
- data/ext/pqcrypto/vendor/.vendored +10 -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/version.rb +1 -1
- data/lib/pq_crypto.rb +1 -1
- data/script/vendor_libs.rb +88 -159
- 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
data/ext/pqcrypto/mldsa_api.h
CHANGED
|
@@ -1,121 +1,4 @@
|
|
|
1
1
|
#ifndef MLDSA_API_H
|
|
2
2
|
#define MLDSA_API_H
|
|
3
|
-
|
|
4
|
-
#ifdef HAVE_PQCLEAN
|
|
5
|
-
#include <stddef.h>
|
|
6
|
-
#include <stdint.h>
|
|
7
|
-
|
|
8
|
-
#define PQCLEAN_MLDSA44_CLEAN_CRYPTO_PUBLICKEYBYTES 1312
|
|
9
|
-
#define PQCLEAN_MLDSA44_CLEAN_CRYPTO_SECRETKEYBYTES 2560
|
|
10
|
-
#define PQCLEAN_MLDSA44_CLEAN_CRYPTO_BYTES 2420
|
|
11
|
-
#define PQCLEAN_MLDSA44_CLEAN_CRYPTO_ALGNAME "ML-DSA-44"
|
|
12
|
-
|
|
13
|
-
#define PQCLEAN_MLDSA65_CLEAN_CRYPTO_PUBLICKEYBYTES 1952
|
|
14
|
-
#define PQCLEAN_MLDSA65_CLEAN_CRYPTO_SECRETKEYBYTES 4032
|
|
15
|
-
#define PQCLEAN_MLDSA65_CLEAN_CRYPTO_BYTES 3309
|
|
16
|
-
#define PQCLEAN_MLDSA65_CLEAN_CRYPTO_ALGNAME "ML-DSA-65"
|
|
17
|
-
|
|
18
|
-
#define PQCLEAN_MLDSA87_CLEAN_CRYPTO_PUBLICKEYBYTES 2592
|
|
19
|
-
#define PQCLEAN_MLDSA87_CLEAN_CRYPTO_SECRETKEYBYTES 4896
|
|
20
|
-
#define PQCLEAN_MLDSA87_CLEAN_CRYPTO_BYTES 4627
|
|
21
|
-
#define PQCLEAN_MLDSA87_CLEAN_CRYPTO_ALGNAME "ML-DSA-87"
|
|
22
|
-
|
|
23
|
-
int PQCLEAN_MLDSA44_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk);
|
|
24
|
-
int PQCLEAN_MLDSA65_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk);
|
|
25
|
-
int PQCLEAN_MLDSA87_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk);
|
|
26
|
-
|
|
27
|
-
int PQCLEAN_MLDSA44_CLEAN_crypto_sign_signature_ctx(uint8_t *sig, size_t *siglen,
|
|
28
|
-
const uint8_t *m, size_t mlen,
|
|
29
|
-
const uint8_t *ctx, size_t ctxlen,
|
|
30
|
-
const uint8_t *sk);
|
|
31
|
-
int PQCLEAN_MLDSA65_CLEAN_crypto_sign_signature_ctx(uint8_t *sig, size_t *siglen,
|
|
32
|
-
const uint8_t *m, size_t mlen,
|
|
33
|
-
const uint8_t *ctx, size_t ctxlen,
|
|
34
|
-
const uint8_t *sk);
|
|
35
|
-
int PQCLEAN_MLDSA87_CLEAN_crypto_sign_signature_ctx(uint8_t *sig, size_t *siglen,
|
|
36
|
-
const uint8_t *m, size_t mlen,
|
|
37
|
-
const uint8_t *ctx, size_t ctxlen,
|
|
38
|
-
const uint8_t *sk);
|
|
39
|
-
|
|
40
|
-
int PQCLEAN_MLDSA44_CLEAN_crypto_sign_ctx(uint8_t *sm, size_t *smlen,
|
|
41
|
-
const uint8_t *m, size_t mlen,
|
|
42
|
-
const uint8_t *ctx, size_t ctxlen,
|
|
43
|
-
const uint8_t *sk);
|
|
44
|
-
int PQCLEAN_MLDSA65_CLEAN_crypto_sign_ctx(uint8_t *sm, size_t *smlen,
|
|
45
|
-
const uint8_t *m, size_t mlen,
|
|
46
|
-
const uint8_t *ctx, size_t ctxlen,
|
|
47
|
-
const uint8_t *sk);
|
|
48
|
-
int PQCLEAN_MLDSA87_CLEAN_crypto_sign_ctx(uint8_t *sm, size_t *smlen,
|
|
49
|
-
const uint8_t *m, size_t mlen,
|
|
50
|
-
const uint8_t *ctx, size_t ctxlen,
|
|
51
|
-
const uint8_t *sk);
|
|
52
|
-
|
|
53
|
-
int PQCLEAN_MLDSA44_CLEAN_crypto_sign_verify_ctx(const uint8_t *sig, size_t siglen,
|
|
54
|
-
const uint8_t *m, size_t mlen,
|
|
55
|
-
const uint8_t *ctx, size_t ctxlen,
|
|
56
|
-
const uint8_t *pk);
|
|
57
|
-
int PQCLEAN_MLDSA65_CLEAN_crypto_sign_verify_ctx(const uint8_t *sig, size_t siglen,
|
|
58
|
-
const uint8_t *m, size_t mlen,
|
|
59
|
-
const uint8_t *ctx, size_t ctxlen,
|
|
60
|
-
const uint8_t *pk);
|
|
61
|
-
int PQCLEAN_MLDSA87_CLEAN_crypto_sign_verify_ctx(const uint8_t *sig, size_t siglen,
|
|
62
|
-
const uint8_t *m, size_t mlen,
|
|
63
|
-
const uint8_t *ctx, size_t ctxlen,
|
|
64
|
-
const uint8_t *pk);
|
|
65
|
-
|
|
66
|
-
int PQCLEAN_MLDSA44_CLEAN_crypto_sign_open_ctx(uint8_t *m, size_t *mlen,
|
|
67
|
-
const uint8_t *sm, size_t smlen,
|
|
68
|
-
const uint8_t *ctx, size_t ctxlen,
|
|
69
|
-
const uint8_t *pk);
|
|
70
|
-
int PQCLEAN_MLDSA65_CLEAN_crypto_sign_open_ctx(uint8_t *m, size_t *mlen,
|
|
71
|
-
const uint8_t *sm, size_t smlen,
|
|
72
|
-
const uint8_t *ctx, size_t ctxlen,
|
|
73
|
-
const uint8_t *pk);
|
|
74
|
-
int PQCLEAN_MLDSA87_CLEAN_crypto_sign_open_ctx(uint8_t *m, size_t *mlen,
|
|
75
|
-
const uint8_t *sm, size_t smlen,
|
|
76
|
-
const uint8_t *ctx, size_t ctxlen,
|
|
77
|
-
const uint8_t *pk);
|
|
78
|
-
|
|
79
|
-
int PQCLEAN_MLDSA44_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen,
|
|
80
|
-
const uint8_t *m, size_t mlen,
|
|
81
|
-
const uint8_t *sk);
|
|
82
|
-
int PQCLEAN_MLDSA65_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen,
|
|
83
|
-
const uint8_t *m, size_t mlen,
|
|
84
|
-
const uint8_t *sk);
|
|
85
|
-
int PQCLEAN_MLDSA87_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen,
|
|
86
|
-
const uint8_t *m, size_t mlen,
|
|
87
|
-
const uint8_t *sk);
|
|
88
|
-
|
|
89
|
-
int PQCLEAN_MLDSA44_CLEAN_crypto_sign(uint8_t *sm, size_t *smlen,
|
|
90
|
-
const uint8_t *m, size_t mlen,
|
|
91
|
-
const uint8_t *sk);
|
|
92
|
-
int PQCLEAN_MLDSA65_CLEAN_crypto_sign(uint8_t *sm, size_t *smlen,
|
|
93
|
-
const uint8_t *m, size_t mlen,
|
|
94
|
-
const uint8_t *sk);
|
|
95
|
-
int PQCLEAN_MLDSA87_CLEAN_crypto_sign(uint8_t *sm, size_t *smlen,
|
|
96
|
-
const uint8_t *m, size_t mlen,
|
|
97
|
-
const uint8_t *sk);
|
|
98
|
-
|
|
99
|
-
int PQCLEAN_MLDSA44_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen,
|
|
100
|
-
const uint8_t *m, size_t mlen,
|
|
101
|
-
const uint8_t *pk);
|
|
102
|
-
int PQCLEAN_MLDSA65_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen,
|
|
103
|
-
const uint8_t *m, size_t mlen,
|
|
104
|
-
const uint8_t *pk);
|
|
105
|
-
int PQCLEAN_MLDSA87_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen,
|
|
106
|
-
const uint8_t *m, size_t mlen,
|
|
107
|
-
const uint8_t *pk);
|
|
108
|
-
|
|
109
|
-
int PQCLEAN_MLDSA44_CLEAN_crypto_sign_open(uint8_t *m, size_t *mlen,
|
|
110
|
-
const uint8_t *sm, size_t smlen,
|
|
111
|
-
const uint8_t *pk);
|
|
112
|
-
int PQCLEAN_MLDSA65_CLEAN_crypto_sign_open(uint8_t *m, size_t *mlen,
|
|
113
|
-
const uint8_t *sm, size_t smlen,
|
|
114
|
-
const uint8_t *pk);
|
|
115
|
-
int PQCLEAN_MLDSA87_CLEAN_crypto_sign_open(uint8_t *m, size_t *mlen,
|
|
116
|
-
const uint8_t *sm, size_t smlen,
|
|
117
|
-
const uint8_t *pk);
|
|
118
|
-
|
|
119
|
-
#endif
|
|
120
|
-
|
|
3
|
+
#include "pqcrypto_native_api.h"
|
|
121
4
|
#endif
|
data/ext/pqcrypto/mlkem_api.h
CHANGED
|
@@ -1,45 +1,4 @@
|
|
|
1
1
|
#ifndef MLKEM_API_H
|
|
2
2
|
#define MLKEM_API_H
|
|
3
|
-
|
|
4
|
-
#ifdef HAVE_PQCLEAN
|
|
5
|
-
#include <stdint.h>
|
|
6
|
-
|
|
7
|
-
#define PQCLEAN_MLKEM512_CLEAN_CRYPTO_SECRETKEYBYTES 1632
|
|
8
|
-
#define PQCLEAN_MLKEM512_CLEAN_CRYPTO_PUBLICKEYBYTES 800
|
|
9
|
-
#define PQCLEAN_MLKEM512_CLEAN_CRYPTO_CIPHERTEXTBYTES 768
|
|
10
|
-
#define PQCLEAN_MLKEM512_CLEAN_CRYPTO_BYTES 32
|
|
11
|
-
#define PQCLEAN_MLKEM512_CLEAN_CRYPTO_ALGNAME "ML-KEM-512"
|
|
12
|
-
|
|
13
|
-
int PQCLEAN_MLKEM512_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk);
|
|
14
|
-
int PQCLEAN_MLKEM512_CLEAN_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk);
|
|
15
|
-
int PQCLEAN_MLKEM512_CLEAN_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk);
|
|
16
|
-
int PQCLEAN_MLKEM512_CLEAN_crypto_kem_keypair_derand(uint8_t *pk, uint8_t *sk, const uint8_t *coins);
|
|
17
|
-
int PQCLEAN_MLKEM512_CLEAN_crypto_kem_enc_derand(uint8_t *ct, uint8_t *ss, const uint8_t *pk, const uint8_t *coins);
|
|
18
|
-
|
|
19
|
-
#define PQCLEAN_MLKEM768_CLEAN_CRYPTO_SECRETKEYBYTES 2400
|
|
20
|
-
#define PQCLEAN_MLKEM768_CLEAN_CRYPTO_PUBLICKEYBYTES 1184
|
|
21
|
-
#define PQCLEAN_MLKEM768_CLEAN_CRYPTO_CIPHERTEXTBYTES 1088
|
|
22
|
-
#define PQCLEAN_MLKEM768_CLEAN_CRYPTO_BYTES 32
|
|
23
|
-
#define PQCLEAN_MLKEM768_CLEAN_CRYPTO_ALGNAME "ML-KEM-768"
|
|
24
|
-
|
|
25
|
-
int PQCLEAN_MLKEM768_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk);
|
|
26
|
-
int PQCLEAN_MLKEM768_CLEAN_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk);
|
|
27
|
-
int PQCLEAN_MLKEM768_CLEAN_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk);
|
|
28
|
-
int PQCLEAN_MLKEM768_CLEAN_crypto_kem_keypair_derand(uint8_t *pk, uint8_t *sk, const uint8_t *coins);
|
|
29
|
-
int PQCLEAN_MLKEM768_CLEAN_crypto_kem_enc_derand(uint8_t *ct, uint8_t *ss, const uint8_t *pk, const uint8_t *coins);
|
|
30
|
-
|
|
31
|
-
#define PQCLEAN_MLKEM1024_CLEAN_CRYPTO_SECRETKEYBYTES 3168
|
|
32
|
-
#define PQCLEAN_MLKEM1024_CLEAN_CRYPTO_PUBLICKEYBYTES 1568
|
|
33
|
-
#define PQCLEAN_MLKEM1024_CLEAN_CRYPTO_CIPHERTEXTBYTES 1568
|
|
34
|
-
#define PQCLEAN_MLKEM1024_CLEAN_CRYPTO_BYTES 32
|
|
35
|
-
#define PQCLEAN_MLKEM1024_CLEAN_CRYPTO_ALGNAME "ML-KEM-1024"
|
|
36
|
-
|
|
37
|
-
int PQCLEAN_MLKEM1024_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk);
|
|
38
|
-
int PQCLEAN_MLKEM1024_CLEAN_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk);
|
|
39
|
-
int PQCLEAN_MLKEM1024_CLEAN_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk);
|
|
40
|
-
int PQCLEAN_MLKEM1024_CLEAN_crypto_kem_keypair_derand(uint8_t *pk, uint8_t *sk, const uint8_t *coins);
|
|
41
|
-
int PQCLEAN_MLKEM1024_CLEAN_crypto_kem_enc_derand(uint8_t *ct, uint8_t *ss, const uint8_t *pk, const uint8_t *coins);
|
|
42
|
-
|
|
43
|
-
#endif
|
|
44
|
-
|
|
3
|
+
#include "pqcrypto_native_api.h"
|
|
45
4
|
#endif
|
|
@@ -1,48 +1,57 @@
|
|
|
1
1
|
#include "pqcrypto_secure.h"
|
|
2
2
|
|
|
3
|
-
#
|
|
4
|
-
#undef PQCLEAN_MLDSA65_CLEAN_CRYPTO_SECRETKEYBYTES
|
|
5
|
-
#undef PQCLEAN_MLDSA65_CLEAN_CRYPTO_BYTES
|
|
3
|
+
#include <openssl/evp.h>
|
|
6
4
|
|
|
7
5
|
#include <stdint.h>
|
|
8
6
|
#include <stddef.h>
|
|
7
|
+
#include <stdlib.h>
|
|
9
8
|
#include <string.h>
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
#include "vendor/pqclean/crypto_sign/ml-dsa-65/clean/poly.h"
|
|
15
|
-
#include "vendor/pqclean/crypto_sign/ml-dsa-65/clean/symmetric.h"
|
|
16
|
-
#include "fips202.h"
|
|
17
|
-
#include "randombytes.h"
|
|
10
|
+
typedef struct {
|
|
11
|
+
EVP_MD_CTX *ctx;
|
|
12
|
+
} pq_mu_builder_t;
|
|
18
13
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
14
|
+
static int pq_shake256(uint8_t *out, size_t out_len, const uint8_t *in, size_t in_len) {
|
|
15
|
+
EVP_MD_CTX *ctx = EVP_MD_CTX_new();
|
|
16
|
+
int ret = PQ_ERROR_OPENSSL;
|
|
17
|
+
|
|
18
|
+
if (!ctx) {
|
|
19
|
+
return PQ_ERROR_OPENSSL;
|
|
20
|
+
}
|
|
21
|
+
if (EVP_DigestInit_ex(ctx, EVP_shake256(), NULL) != 1) {
|
|
22
|
+
goto cleanup;
|
|
23
|
+
}
|
|
24
|
+
if (in_len > 0 && EVP_DigestUpdate(ctx, in, in_len) != 1) {
|
|
25
|
+
goto cleanup;
|
|
26
|
+
}
|
|
27
|
+
if (EVP_DigestFinalXOF(ctx, out, out_len) != 1) {
|
|
28
|
+
goto cleanup;
|
|
29
|
+
}
|
|
30
|
+
ret = PQ_SUCCESS;
|
|
31
|
+
|
|
32
|
+
cleanup:
|
|
33
|
+
EVP_MD_CTX_free(ctx);
|
|
34
|
+
return ret;
|
|
35
|
+
}
|
|
25
36
|
|
|
26
37
|
int pq_mldsa_extract_tr_from_secret_key(uint8_t *tr_out, const uint8_t *secret_key) {
|
|
38
|
+
uint8_t public_key[MLDSA_PUBLICKEYBYTES];
|
|
39
|
+
int rc;
|
|
40
|
+
|
|
27
41
|
if (tr_out == NULL || secret_key == NULL) {
|
|
28
42
|
return PQ_ERROR_BUFFER;
|
|
29
43
|
}
|
|
30
44
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
PQCLEAN_MLDSA65_CLEAN_unpack_sk(rho, tr_out, key, &t0, &s1, &s2, secret_key);
|
|
38
|
-
|
|
39
|
-
pq_secure_wipe(rho, sizeof(rho));
|
|
40
|
-
pq_secure_wipe(key, sizeof(key));
|
|
41
|
-
pq_secure_wipe(&t0, sizeof(t0));
|
|
42
|
-
pq_secure_wipe(&s1, sizeof(s1));
|
|
43
|
-
pq_secure_wipe(&s2, sizeof(s2));
|
|
45
|
+
memset(public_key, 0, sizeof(public_key));
|
|
46
|
+
rc = pqcr_mldsa65_pk_from_sk(public_key, secret_key);
|
|
47
|
+
if (rc != 0) {
|
|
48
|
+
pq_secure_wipe(public_key, sizeof(public_key));
|
|
49
|
+
return PQ_ERROR_KEYPAIR;
|
|
50
|
+
}
|
|
44
51
|
|
|
45
|
-
|
|
52
|
+
rc = pq_shake256(tr_out, PQ_MLDSA_TRBYTES, public_key, sizeof(public_key));
|
|
53
|
+
pq_secure_wipe(public_key, sizeof(public_key));
|
|
54
|
+
return rc;
|
|
46
55
|
}
|
|
47
56
|
|
|
48
57
|
int pq_mldsa_compute_tr_from_public_key(uint8_t *tr_out, const uint8_t *public_key) {
|
|
@@ -50,8 +59,7 @@ int pq_mldsa_compute_tr_from_public_key(uint8_t *tr_out, const uint8_t *public_k
|
|
|
50
59
|
return PQ_ERROR_BUFFER;
|
|
51
60
|
}
|
|
52
61
|
|
|
53
|
-
|
|
54
|
-
return PQ_SUCCESS;
|
|
62
|
+
return pq_shake256(tr_out, PQ_MLDSA_TRBYTES, public_key, MLDSA_PUBLICKEYBYTES);
|
|
55
63
|
}
|
|
56
64
|
|
|
57
65
|
int pq_sign_mu(uint8_t *signature, size_t *signature_len, const uint8_t *mu,
|
|
@@ -60,118 +68,9 @@ int pq_sign_mu(uint8_t *signature, size_t *signature_len, const uint8_t *mu,
|
|
|
60
68
|
return PQ_ERROR_BUFFER;
|
|
61
69
|
}
|
|
62
70
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
uint8_t key[SEEDBYTES];
|
|
67
|
-
uint8_t rnd[RNDBYTES];
|
|
68
|
-
uint8_t mu_local[CRHBYTES];
|
|
69
|
-
uint8_t rhoprime[CRHBYTES];
|
|
70
|
-
uint16_t nonce = 0;
|
|
71
|
-
polyvecl mat[K], s1, y, z;
|
|
72
|
-
polyveck t0, s2, w1, w0, h;
|
|
73
|
-
poly cp;
|
|
74
|
-
shake256incctx state;
|
|
75
|
-
|
|
76
|
-
PQCLEAN_MLDSA65_CLEAN_unpack_sk(rho, tr_unused, key, &t0, &s1, &s2, secret_key);
|
|
77
|
-
pq_secure_wipe(tr_unused, sizeof(tr_unused));
|
|
78
|
-
|
|
79
|
-
memcpy(mu_local, mu, CRHBYTES);
|
|
80
|
-
|
|
81
|
-
if (randombytes(rnd, RNDBYTES) != 0) {
|
|
82
|
-
pq_secure_wipe(rho, sizeof(rho));
|
|
83
|
-
pq_secure_wipe(key, sizeof(key));
|
|
84
|
-
pq_secure_wipe(rnd, sizeof(rnd));
|
|
85
|
-
pq_secure_wipe(mu_local, sizeof(mu_local));
|
|
86
|
-
pq_secure_wipe(&s1, sizeof(s1));
|
|
87
|
-
pq_secure_wipe(&s2, sizeof(s2));
|
|
88
|
-
pq_secure_wipe(&t0, sizeof(t0));
|
|
89
|
-
return PQ_ERROR_RANDOM;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
{
|
|
93
|
-
uint8_t kr[SEEDBYTES + RNDBYTES + CRHBYTES];
|
|
94
|
-
memcpy(kr, key, SEEDBYTES);
|
|
95
|
-
memcpy(kr + SEEDBYTES, rnd, RNDBYTES);
|
|
96
|
-
memcpy(kr + SEEDBYTES + RNDBYTES, mu_local, CRHBYTES);
|
|
97
|
-
shake256(rhoprime, CRHBYTES, kr, sizeof(kr));
|
|
98
|
-
pq_secure_wipe(kr, sizeof(kr));
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
PQCLEAN_MLDSA65_CLEAN_polyvec_matrix_expand(mat, rho);
|
|
102
|
-
PQCLEAN_MLDSA65_CLEAN_polyvecl_ntt(&s1);
|
|
103
|
-
PQCLEAN_MLDSA65_CLEAN_polyveck_ntt(&s2);
|
|
104
|
-
PQCLEAN_MLDSA65_CLEAN_polyveck_ntt(&t0);
|
|
105
|
-
|
|
106
|
-
rej:
|
|
107
|
-
PQCLEAN_MLDSA65_CLEAN_polyvecl_uniform_gamma1(&y, rhoprime, nonce++);
|
|
108
|
-
|
|
109
|
-
z = y;
|
|
110
|
-
PQCLEAN_MLDSA65_CLEAN_polyvecl_ntt(&z);
|
|
111
|
-
PQCLEAN_MLDSA65_CLEAN_polyvec_matrix_pointwise_montgomery(&w1, mat, &z);
|
|
112
|
-
PQCLEAN_MLDSA65_CLEAN_polyveck_reduce(&w1);
|
|
113
|
-
PQCLEAN_MLDSA65_CLEAN_polyveck_invntt_tomont(&w1);
|
|
114
|
-
|
|
115
|
-
PQCLEAN_MLDSA65_CLEAN_polyveck_caddq(&w1);
|
|
116
|
-
PQCLEAN_MLDSA65_CLEAN_polyveck_decompose(&w1, &w0, &w1);
|
|
117
|
-
PQCLEAN_MLDSA65_CLEAN_polyveck_pack_w1(signature, &w1);
|
|
118
|
-
|
|
119
|
-
shake256_inc_init(&state);
|
|
120
|
-
shake256_inc_absorb(&state, mu_local, CRHBYTES);
|
|
121
|
-
shake256_inc_absorb(&state, signature, K * POLYW1_PACKEDBYTES);
|
|
122
|
-
shake256_inc_finalize(&state);
|
|
123
|
-
shake256_inc_squeeze(signature, CTILDEBYTES, &state);
|
|
124
|
-
shake256_inc_ctx_release(&state);
|
|
125
|
-
|
|
126
|
-
PQCLEAN_MLDSA65_CLEAN_poly_challenge(&cp, signature);
|
|
127
|
-
PQCLEAN_MLDSA65_CLEAN_poly_ntt(&cp);
|
|
128
|
-
|
|
129
|
-
PQCLEAN_MLDSA65_CLEAN_polyvecl_pointwise_poly_montgomery(&z, &cp, &s1);
|
|
130
|
-
PQCLEAN_MLDSA65_CLEAN_polyvecl_invntt_tomont(&z);
|
|
131
|
-
PQCLEAN_MLDSA65_CLEAN_polyvecl_add(&z, &z, &y);
|
|
132
|
-
PQCLEAN_MLDSA65_CLEAN_polyvecl_reduce(&z);
|
|
133
|
-
if (PQCLEAN_MLDSA65_CLEAN_polyvecl_chknorm(&z, GAMMA1 - BETA)) {
|
|
134
|
-
goto rej;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
PQCLEAN_MLDSA65_CLEAN_polyveck_pointwise_poly_montgomery(&h, &cp, &s2);
|
|
138
|
-
PQCLEAN_MLDSA65_CLEAN_polyveck_invntt_tomont(&h);
|
|
139
|
-
PQCLEAN_MLDSA65_CLEAN_polyveck_sub(&w0, &w0, &h);
|
|
140
|
-
PQCLEAN_MLDSA65_CLEAN_polyveck_reduce(&w0);
|
|
141
|
-
if (PQCLEAN_MLDSA65_CLEAN_polyveck_chknorm(&w0, GAMMA2 - BETA)) {
|
|
142
|
-
goto rej;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
PQCLEAN_MLDSA65_CLEAN_polyveck_pointwise_poly_montgomery(&h, &cp, &t0);
|
|
146
|
-
PQCLEAN_MLDSA65_CLEAN_polyveck_invntt_tomont(&h);
|
|
147
|
-
PQCLEAN_MLDSA65_CLEAN_polyveck_reduce(&h);
|
|
148
|
-
if (PQCLEAN_MLDSA65_CLEAN_polyveck_chknorm(&h, GAMMA2)) {
|
|
149
|
-
goto rej;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
PQCLEAN_MLDSA65_CLEAN_polyveck_add(&w0, &w0, &h);
|
|
153
|
-
n = PQCLEAN_MLDSA65_CLEAN_polyveck_make_hint(&h, &w0, &w1);
|
|
154
|
-
if (n > OMEGA) {
|
|
155
|
-
goto rej;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
PQCLEAN_MLDSA65_CLEAN_pack_sig(signature, signature, &z, &h);
|
|
159
|
-
*signature_len = PQCLEAN_MLDSA65_CLEAN_CRYPTO_BYTES;
|
|
160
|
-
|
|
161
|
-
pq_secure_wipe(rho, sizeof(rho));
|
|
162
|
-
pq_secure_wipe(key, sizeof(key));
|
|
163
|
-
pq_secure_wipe(rnd, sizeof(rnd));
|
|
164
|
-
pq_secure_wipe(mu_local, sizeof(mu_local));
|
|
165
|
-
pq_secure_wipe(rhoprime, sizeof(rhoprime));
|
|
166
|
-
pq_secure_wipe(&s1, sizeof(s1));
|
|
167
|
-
pq_secure_wipe(&s2, sizeof(s2));
|
|
168
|
-
pq_secure_wipe(&t0, sizeof(t0));
|
|
169
|
-
pq_secure_wipe(&y, sizeof(y));
|
|
170
|
-
pq_secure_wipe(&z, sizeof(z));
|
|
171
|
-
pq_secure_wipe(&w0, sizeof(w0));
|
|
172
|
-
pq_secure_wipe(&cp, sizeof(cp));
|
|
173
|
-
|
|
174
|
-
return PQ_SUCCESS;
|
|
71
|
+
return pqcr_mldsa65_signature_extmu(signature, signature_len, mu, secret_key) == 0
|
|
72
|
+
? PQ_SUCCESS
|
|
73
|
+
: PQ_ERROR_SIGN;
|
|
175
74
|
}
|
|
176
75
|
|
|
177
76
|
int pq_verify_mu(const uint8_t *signature, size_t signature_len, const uint8_t *mu,
|
|
@@ -179,71 +78,33 @@ int pq_verify_mu(const uint8_t *signature, size_t signature_len, const uint8_t *
|
|
|
179
78
|
if (signature == NULL || mu == NULL || public_key == NULL) {
|
|
180
79
|
return PQ_ERROR_BUFFER;
|
|
181
80
|
}
|
|
182
|
-
if (signature_len !=
|
|
81
|
+
if (signature_len != MLDSA_BYTES) {
|
|
183
82
|
return PQ_ERROR_VERIFY;
|
|
184
83
|
}
|
|
185
84
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
uint8_t c2[CTILDEBYTES];
|
|
191
|
-
poly cp;
|
|
192
|
-
polyvecl mat[K], z;
|
|
193
|
-
polyveck t1, w1, h;
|
|
194
|
-
shake256incctx state;
|
|
85
|
+
return pqcr_mldsa65_verify_extmu(signature, signature_len, mu, public_key) == 0
|
|
86
|
+
? PQ_SUCCESS
|
|
87
|
+
: PQ_ERROR_VERIFY;
|
|
88
|
+
}
|
|
195
89
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
if (PQCLEAN_MLDSA65_CLEAN_polyvecl_chknorm(&z, GAMMA1 - BETA)) {
|
|
201
|
-
return PQ_ERROR_VERIFY;
|
|
90
|
+
void *pq_mu_builder_new(void) {
|
|
91
|
+
pq_mu_builder_t *builder = (pq_mu_builder_t *)calloc(1, sizeof(*builder));
|
|
92
|
+
if (builder == NULL) {
|
|
93
|
+
return NULL;
|
|
202
94
|
}
|
|
203
95
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
PQCLEAN_MLDSA65_CLEAN_polyvec_matrix_pointwise_montgomery(&w1, mat, &z);
|
|
209
|
-
|
|
210
|
-
PQCLEAN_MLDSA65_CLEAN_poly_ntt(&cp);
|
|
211
|
-
PQCLEAN_MLDSA65_CLEAN_polyveck_shiftl(&t1);
|
|
212
|
-
PQCLEAN_MLDSA65_CLEAN_polyveck_ntt(&t1);
|
|
213
|
-
PQCLEAN_MLDSA65_CLEAN_polyveck_pointwise_poly_montgomery(&t1, &cp, &t1);
|
|
214
|
-
|
|
215
|
-
PQCLEAN_MLDSA65_CLEAN_polyveck_sub(&w1, &w1, &t1);
|
|
216
|
-
PQCLEAN_MLDSA65_CLEAN_polyveck_reduce(&w1);
|
|
217
|
-
PQCLEAN_MLDSA65_CLEAN_polyveck_invntt_tomont(&w1);
|
|
218
|
-
|
|
219
|
-
PQCLEAN_MLDSA65_CLEAN_polyveck_caddq(&w1);
|
|
220
|
-
PQCLEAN_MLDSA65_CLEAN_polyveck_use_hint(&w1, &w1, &h);
|
|
221
|
-
PQCLEAN_MLDSA65_CLEAN_polyveck_pack_w1(buf, &w1);
|
|
222
|
-
|
|
223
|
-
shake256_inc_init(&state);
|
|
224
|
-
shake256_inc_absorb(&state, mu, CRHBYTES);
|
|
225
|
-
shake256_inc_absorb(&state, buf, K * POLYW1_PACKEDBYTES);
|
|
226
|
-
shake256_inc_finalize(&state);
|
|
227
|
-
shake256_inc_squeeze(c2, CTILDEBYTES, &state);
|
|
228
|
-
shake256_inc_ctx_release(&state);
|
|
229
|
-
|
|
230
|
-
for (i = 0; i < CTILDEBYTES; ++i) {
|
|
231
|
-
if (c[i] != c2[i]) {
|
|
232
|
-
return PQ_ERROR_VERIFY;
|
|
233
|
-
}
|
|
96
|
+
builder->ctx = EVP_MD_CTX_new();
|
|
97
|
+
if (builder->ctx == NULL) {
|
|
98
|
+
free(builder);
|
|
99
|
+
return NULL;
|
|
234
100
|
}
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
void *pq_mu_builder_new(void) {
|
|
240
|
-
shake256incctx *state = (shake256incctx *)malloc(sizeof(shake256incctx));
|
|
241
|
-
if (state == NULL) {
|
|
101
|
+
if (EVP_DigestInit_ex(builder->ctx, EVP_shake256(), NULL) != 1) {
|
|
102
|
+
EVP_MD_CTX_free(builder->ctx);
|
|
103
|
+
free(builder);
|
|
242
104
|
return NULL;
|
|
243
105
|
}
|
|
244
106
|
|
|
245
|
-
|
|
246
|
-
return state;
|
|
107
|
+
return builder;
|
|
247
108
|
}
|
|
248
109
|
|
|
249
110
|
int pq_mu_builder_init(void *state_ptr, const uint8_t *tr, const uint8_t *ctx, size_t ctxlen) {
|
|
@@ -257,16 +118,19 @@ int pq_mu_builder_init(void *state_ptr, const uint8_t *tr, const uint8_t *ctx, s
|
|
|
257
118
|
return PQ_ERROR_BUFFER;
|
|
258
119
|
}
|
|
259
120
|
|
|
260
|
-
|
|
261
|
-
|
|
121
|
+
pq_mu_builder_t *builder = (pq_mu_builder_t *)state_ptr;
|
|
262
122
|
uint8_t prefix[2];
|
|
263
123
|
prefix[0] = 0x00;
|
|
264
124
|
prefix[1] = (uint8_t)ctxlen;
|
|
265
125
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
126
|
+
if (EVP_DigestUpdate(builder->ctx, tr, PQ_MLDSA_TRBYTES) != 1) {
|
|
127
|
+
return PQ_ERROR_OPENSSL;
|
|
128
|
+
}
|
|
129
|
+
if (EVP_DigestUpdate(builder->ctx, prefix, sizeof(prefix)) != 1) {
|
|
130
|
+
return PQ_ERROR_OPENSSL;
|
|
131
|
+
}
|
|
132
|
+
if (ctxlen > 0 && EVP_DigestUpdate(builder->ctx, ctx, ctxlen) != 1) {
|
|
133
|
+
return PQ_ERROR_OPENSSL;
|
|
270
134
|
}
|
|
271
135
|
return PQ_SUCCESS;
|
|
272
136
|
}
|
|
@@ -282,9 +146,8 @@ int pq_mu_builder_absorb(void *state_ptr, const uint8_t *chunk, size_t chunk_len
|
|
|
282
146
|
return PQ_ERROR_BUFFER;
|
|
283
147
|
}
|
|
284
148
|
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
return PQ_SUCCESS;
|
|
149
|
+
pq_mu_builder_t *builder = (pq_mu_builder_t *)state_ptr;
|
|
150
|
+
return EVP_DigestUpdate(builder->ctx, chunk, chunk_len) == 1 ? PQ_SUCCESS : PQ_ERROR_OPENSSL;
|
|
288
151
|
}
|
|
289
152
|
|
|
290
153
|
int pq_mu_builder_finalize(void *state_ptr, uint8_t *mu_out) {
|
|
@@ -292,11 +155,17 @@ int pq_mu_builder_finalize(void *state_ptr, uint8_t *mu_out) {
|
|
|
292
155
|
return PQ_ERROR_BUFFER;
|
|
293
156
|
}
|
|
294
157
|
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
158
|
+
pq_mu_builder_t *builder = (pq_mu_builder_t *)state_ptr;
|
|
159
|
+
if (EVP_DigestFinalXOF(builder->ctx, mu_out, PQ_MLDSA_MUBYTES) != 1) {
|
|
160
|
+
EVP_MD_CTX_free(builder->ctx);
|
|
161
|
+
builder->ctx = NULL;
|
|
162
|
+
free(builder);
|
|
163
|
+
return PQ_ERROR_OPENSSL;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
EVP_MD_CTX_free(builder->ctx);
|
|
167
|
+
builder->ctx = NULL;
|
|
168
|
+
free(builder);
|
|
300
169
|
return PQ_SUCCESS;
|
|
301
170
|
}
|
|
302
171
|
|
|
@@ -304,7 +173,10 @@ void pq_mu_builder_release(void *state_ptr) {
|
|
|
304
173
|
if (state_ptr == NULL) {
|
|
305
174
|
return;
|
|
306
175
|
}
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
176
|
+
pq_mu_builder_t *builder = (pq_mu_builder_t *)state_ptr;
|
|
177
|
+
if (builder->ctx != NULL) {
|
|
178
|
+
EVP_MD_CTX_free(builder->ctx);
|
|
179
|
+
builder->ctx = NULL;
|
|
180
|
+
}
|
|
181
|
+
free(builder);
|
|
310
182
|
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
#ifndef PQCRYPTO_NATIVE_API_H
|
|
2
|
+
#define PQCRYPTO_NATIVE_API_H
|
|
3
|
+
|
|
4
|
+
#include <stddef.h>
|
|
5
|
+
#include <stdint.h>
|
|
6
|
+
|
|
7
|
+
/*
|
|
8
|
+
* pq_crypto now builds only against PQ Code Package native libraries:
|
|
9
|
+
* vendor/mlkem-native/mlkem
|
|
10
|
+
* vendor/mldsa-native/mldsa
|
|
11
|
+
*
|
|
12
|
+
* The concrete public symbols below are produced by compiling each package as a
|
|
13
|
+
* multi-level build with:
|
|
14
|
+
* MLK_CONFIG_NAMESPACE_PREFIX=pqcr_mlkem
|
|
15
|
+
* MLD_CONFIG_NAMESPACE_PREFIX=pqcr_mldsa
|
|
16
|
+
* and MLK/MLD_CONFIG_MULTILEVEL_BUILD enabled. Do not add PQClean aliases here:
|
|
17
|
+
* we want one backend only so build/runtime failures point at the new stack.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
#define MLKEM512_SECRETKEYBYTES 1632
|
|
21
|
+
#define MLKEM512_PUBLICKEYBYTES 800
|
|
22
|
+
#define MLKEM512_CIPHERTEXTBYTES 768
|
|
23
|
+
#define MLKEM512_SHAREDSECRETBYTES 32
|
|
24
|
+
|
|
25
|
+
#define MLKEM768_SECRETKEYBYTES 2400
|
|
26
|
+
#define MLKEM768_PUBLICKEYBYTES 1184
|
|
27
|
+
#define MLKEM768_CIPHERTEXTBYTES 1088
|
|
28
|
+
#define MLKEM768_SHAREDSECRETBYTES 32
|
|
29
|
+
|
|
30
|
+
#define MLKEM1024_SECRETKEYBYTES 3168
|
|
31
|
+
#define MLKEM1024_PUBLICKEYBYTES 1568
|
|
32
|
+
#define MLKEM1024_CIPHERTEXTBYTES 1568
|
|
33
|
+
#define MLKEM1024_SHAREDSECRETBYTES 32
|
|
34
|
+
|
|
35
|
+
#define MLKEM_PUBLICKEYBYTES MLKEM768_PUBLICKEYBYTES
|
|
36
|
+
#define MLKEM_SECRETKEYBYTES MLKEM768_SECRETKEYBYTES
|
|
37
|
+
#define MLKEM_CIPHERTEXTBYTES MLKEM768_CIPHERTEXTBYTES
|
|
38
|
+
#define MLKEM_SHAREDSECRETBYTES MLKEM768_SHAREDSECRETBYTES
|
|
39
|
+
|
|
40
|
+
#define MLDSA44_SECRETKEYBYTES 2560
|
|
41
|
+
#define MLDSA44_PUBLICKEYBYTES 1312
|
|
42
|
+
#define MLDSA44_BYTES 2420
|
|
43
|
+
|
|
44
|
+
#define MLDSA65_SECRETKEYBYTES 4032
|
|
45
|
+
#define MLDSA65_PUBLICKEYBYTES 1952
|
|
46
|
+
#define MLDSA65_BYTES 3309
|
|
47
|
+
|
|
48
|
+
#define MLDSA87_SECRETKEYBYTES 4896
|
|
49
|
+
#define MLDSA87_PUBLICKEYBYTES 2592
|
|
50
|
+
#define MLDSA87_BYTES 4627
|
|
51
|
+
|
|
52
|
+
#define MLDSA_PUBLICKEYBYTES MLDSA65_PUBLICKEYBYTES
|
|
53
|
+
#define MLDSA_SECRETKEYBYTES MLDSA65_SECRETKEYBYTES
|
|
54
|
+
#define MLDSA_BYTES MLDSA65_BYTES
|
|
55
|
+
#define MLDSA_SEEDBYTES 32
|
|
56
|
+
#define MLDSA_RNDBYTES 32
|
|
57
|
+
#define MLDSA_TRBYTES 64
|
|
58
|
+
#define MLDSA_CRHBYTES 64
|
|
59
|
+
#define MLDSA_DOMAIN_SEPARATION_MAX_BYTES (2 + 255 + 11 + 64)
|
|
60
|
+
#define MLDSA_PREHASH_NONE 0
|
|
61
|
+
|
|
62
|
+
/* mlkem-native symbols: namespace prefix pqcr_mlkem + level suffix. */
|
|
63
|
+
int pqcr_mlkem512_keypair(uint8_t *pk, uint8_t *sk);
|
|
64
|
+
int pqcr_mlkem512_keypair_derand(uint8_t *pk, uint8_t *sk, const uint8_t *coins);
|
|
65
|
+
int pqcr_mlkem512_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk);
|
|
66
|
+
int pqcr_mlkem512_enc_derand(uint8_t *ct, uint8_t *ss, const uint8_t *pk, const uint8_t *coins);
|
|
67
|
+
int pqcr_mlkem512_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk);
|
|
68
|
+
|
|
69
|
+
int pqcr_mlkem768_keypair(uint8_t *pk, uint8_t *sk);
|
|
70
|
+
int pqcr_mlkem768_keypair_derand(uint8_t *pk, uint8_t *sk, const uint8_t *coins);
|
|
71
|
+
int pqcr_mlkem768_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk);
|
|
72
|
+
int pqcr_mlkem768_enc_derand(uint8_t *ct, uint8_t *ss, const uint8_t *pk, const uint8_t *coins);
|
|
73
|
+
int pqcr_mlkem768_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk);
|
|
74
|
+
|
|
75
|
+
int pqcr_mlkem1024_keypair(uint8_t *pk, uint8_t *sk);
|
|
76
|
+
int pqcr_mlkem1024_keypair_derand(uint8_t *pk, uint8_t *sk, const uint8_t *coins);
|
|
77
|
+
int pqcr_mlkem1024_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk);
|
|
78
|
+
int pqcr_mlkem1024_enc_derand(uint8_t *ct, uint8_t *ss, const uint8_t *pk, const uint8_t *coins);
|
|
79
|
+
int pqcr_mlkem1024_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk);
|
|
80
|
+
|
|
81
|
+
/* mldsa-native symbols: namespace prefix pqcr_mldsa + level suffix. */
|
|
82
|
+
int pqcr_mldsa44_keypair(uint8_t *pk, uint8_t *sk);
|
|
83
|
+
int pqcr_mldsa44_keypair_internal(uint8_t *pk, uint8_t *sk, const uint8_t seed[MLDSA_SEEDBYTES]);
|
|
84
|
+
int pqcr_mldsa44_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen,
|
|
85
|
+
const uint8_t *ctx, size_t ctxlen, const uint8_t *sk);
|
|
86
|
+
int pqcr_mldsa44_signature_internal(uint8_t *sig, size_t *siglen, const uint8_t *m,
|
|
87
|
+
size_t mlen, const uint8_t *pre, size_t prelen,
|
|
88
|
+
const uint8_t rnd[MLDSA_RNDBYTES], const uint8_t *sk,
|
|
89
|
+
int externalmu);
|
|
90
|
+
int pqcr_mldsa44_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen,
|
|
91
|
+
const uint8_t *ctx, size_t ctxlen, const uint8_t *pk);
|
|
92
|
+
size_t pqcr_mldsa44_prepare_domain_separation_prefix(
|
|
93
|
+
uint8_t prefix[MLDSA_DOMAIN_SEPARATION_MAX_BYTES], const uint8_t *ph, size_t phlen,
|
|
94
|
+
const uint8_t *ctx, size_t ctxlen, int hashalg);
|
|
95
|
+
|
|
96
|
+
int pqcr_mldsa65_keypair(uint8_t *pk, uint8_t *sk);
|
|
97
|
+
int pqcr_mldsa65_keypair_internal(uint8_t *pk, uint8_t *sk, const uint8_t seed[MLDSA_SEEDBYTES]);
|
|
98
|
+
int pqcr_mldsa65_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen,
|
|
99
|
+
const uint8_t *ctx, size_t ctxlen, const uint8_t *sk);
|
|
100
|
+
int pqcr_mldsa65_signature_internal(uint8_t *sig, size_t *siglen, const uint8_t *m,
|
|
101
|
+
size_t mlen, const uint8_t *pre, size_t prelen,
|
|
102
|
+
const uint8_t rnd[MLDSA_RNDBYTES], const uint8_t *sk,
|
|
103
|
+
int externalmu);
|
|
104
|
+
int pqcr_mldsa65_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen,
|
|
105
|
+
const uint8_t *ctx, size_t ctxlen, const uint8_t *pk);
|
|
106
|
+
size_t pqcr_mldsa65_prepare_domain_separation_prefix(
|
|
107
|
+
uint8_t prefix[MLDSA_DOMAIN_SEPARATION_MAX_BYTES], const uint8_t *ph, size_t phlen,
|
|
108
|
+
const uint8_t *ctx, size_t ctxlen, int hashalg);
|
|
109
|
+
int pqcr_mldsa65_signature_extmu(uint8_t *sig, size_t *siglen, const uint8_t mu[MLDSA_CRHBYTES],
|
|
110
|
+
const uint8_t *sk);
|
|
111
|
+
int pqcr_mldsa65_verify_extmu(const uint8_t *sig, size_t siglen, const uint8_t mu[MLDSA_CRHBYTES],
|
|
112
|
+
const uint8_t *pk);
|
|
113
|
+
int pqcr_mldsa65_pk_from_sk(uint8_t *pk, const uint8_t *sk);
|
|
114
|
+
|
|
115
|
+
int pqcr_mldsa87_keypair(uint8_t *pk, uint8_t *sk);
|
|
116
|
+
int pqcr_mldsa87_keypair_internal(uint8_t *pk, uint8_t *sk, const uint8_t seed[MLDSA_SEEDBYTES]);
|
|
117
|
+
int pqcr_mldsa87_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen,
|
|
118
|
+
const uint8_t *ctx, size_t ctxlen, const uint8_t *sk);
|
|
119
|
+
int pqcr_mldsa87_signature_internal(uint8_t *sig, size_t *siglen, const uint8_t *m,
|
|
120
|
+
size_t mlen, const uint8_t *pre, size_t prelen,
|
|
121
|
+
const uint8_t rnd[MLDSA_RNDBYTES], const uint8_t *sk,
|
|
122
|
+
int externalmu);
|
|
123
|
+
int pqcr_mldsa87_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen,
|
|
124
|
+
const uint8_t *ctx, size_t ctxlen, const uint8_t *pk);
|
|
125
|
+
size_t pqcr_mldsa87_prepare_domain_separation_prefix(
|
|
126
|
+
uint8_t prefix[MLDSA_DOMAIN_SEPARATION_MAX_BYTES], const uint8_t *ph, size_t phlen,
|
|
127
|
+
const uint8_t *ctx, size_t ctxlen, int hashalg);
|
|
128
|
+
|
|
129
|
+
#endif
|