From 7eb397834e596ddb28bc0d3ce720b86b3d8d12a9 Mon Sep 17 00:00:00 2001 From: Luke Howard Date: Sun, 12 Apr 2020 18:38:00 +1000 Subject: [PATCH] hcrypto: make libtommath v1.2.0 work with Heimdal --- .gitignore | 1 + lib/hcrypto/Makefile.am | 248 ++++++++++-------- lib/hcrypto/libtommath/NTMakefile | 246 +++++++++-------- .../libtommath/bn_s_mp_rand_platform.c | 20 ++ lib/hcrypto/rsa-ltm.c | 4 +- 5 files changed, 304 insertions(+), 215 deletions(-) diff --git a/.gitignore b/.gitignore index c17c4e7bf..ff4787a95 100644 --- a/.gitignore +++ b/.gitignore @@ -235,6 +235,7 @@ tags /lib/hcrypto/test_rand /lib/hcrypto/test_rsa /lib/hcrypto/unix +/lib/hcrypto/libtommath/callgraph.txt /lib/hdb/hdb-protos.h /lib/hdb/hdb-private.h /lib/hdb/test_dbinfo diff --git a/lib/hcrypto/Makefile.am b/lib/hcrypto/Makefile.am index 3c6ee3ca8..bdb1a46ad 100644 --- a/lib/hcrypto/Makefile.am +++ b/lib/hcrypto/Makefile.am @@ -172,131 +172,163 @@ libhcrypto_la_SOURCES = \ undef.h ltmsources = \ - libtommath/tommath.h \ - libtommath/tommath_class.h \ - libtommath/tommath_superclass.h \ - libtommath/bncore.c \ - libtommath/bn_mp_init.c \ + libtommath/bn_cutoffs.c \ + libtommath/bn_deprecated.c \ + libtommath/bn_mp_2expt.c \ + libtommath/bn_mp_abs.c \ + libtommath/bn_mp_add.c \ + libtommath/bn_mp_add_d.c \ + libtommath/bn_mp_addmod.c \ + libtommath/bn_mp_and.c \ + libtommath/bn_mp_clamp.c \ libtommath/bn_mp_clear.c \ + libtommath/bn_mp_clear_multi.c \ + libtommath/bn_mp_cmp.c \ + libtommath/bn_mp_cmp_d.c \ + libtommath/bn_mp_cmp_mag.c \ + libtommath/bn_mp_cnt_lsb.c \ + libtommath/bn_mp_complement.c \ + libtommath/bn_mp_copy.c \ + libtommath/bn_mp_count_bits.c \ + libtommath/bn_mp_decr.c \ + libtommath/bn_mp_div.c \ + libtommath/bn_mp_div_2.c \ + libtommath/bn_mp_div_2d.c \ + libtommath/bn_mp_div_3.c \ + libtommath/bn_mp_div_d.c \ + libtommath/bn_mp_dr_is_modulus.c \ + libtommath/bn_mp_dr_reduce.c \ + libtommath/bn_mp_dr_setup.c \ + libtommath/bn_mp_error_to_string.c \ libtommath/bn_mp_exch.c \ + libtommath/bn_mp_expt_u32.c \ + libtommath/bn_mp_exptmod.c \ + libtommath/bn_mp_exteuclid.c \ + libtommath/bn_mp_fread.c \ + libtommath/bn_mp_from_sbin.c \ + libtommath/bn_mp_from_ubin.c \ + libtommath/bn_mp_fwrite.c \ + libtommath/bn_mp_gcd.c \ + libtommath/bn_mp_get_double.c \ + libtommath/bn_mp_get_i32.c \ + libtommath/bn_mp_get_i64.c \ + libtommath/bn_mp_get_l.c \ + libtommath/bn_mp_get_ll.c \ + libtommath/bn_mp_get_mag_u32.c \ + libtommath/bn_mp_get_mag_u64.c \ + libtommath/bn_mp_get_mag_ul.c \ + libtommath/bn_mp_get_mag_ull.c \ libtommath/bn_mp_grow.c \ - libtommath/bn_mp_shrink.c \ - libtommath/bn_mp_clamp.c \ - libtommath/bn_mp_zero.c \ - libtommath/bn_mp_zero_multi.c \ - libtommath/bn_mp_set.c \ - libtommath/bn_mp_set_int.c \ - libtommath/bn_mp_init_size.c \ - libtommath/bn_mp_copy.c \ + libtommath/bn_mp_incr.c \ + libtommath/bn_mp_init.c \ libtommath/bn_mp_init_copy.c \ - libtommath/bn_mp_abs.c \ - libtommath/bn_mp_neg.c \ - libtommath/bn_mp_cmp_mag.c \ - libtommath/bn_mp_cmp.c \ - libtommath/bn_mp_cmp_d.c \ - libtommath/bn_mp_rshd.c \ + libtommath/bn_mp_init_i32.c \ + libtommath/bn_mp_init_i64.c \ + libtommath/bn_mp_init_l.c \ + libtommath/bn_mp_init_ll.c \ + libtommath/bn_mp_init_multi.c \ + libtommath/bn_mp_init_set.c \ + libtommath/bn_mp_init_size.c \ + libtommath/bn_mp_init_u32.c \ + libtommath/bn_mp_init_u64.c \ + libtommath/bn_mp_init_ul.c \ + libtommath/bn_mp_init_ull.c \ + libtommath/bn_mp_invmod.c \ + libtommath/bn_mp_is_square.c \ + libtommath/bn_mp_iseven.c \ + libtommath/bn_mp_isodd.c \ + libtommath/bn_mp_kronecker.c \ + libtommath/bn_mp_lcm.c \ + libtommath/bn_mp_log_u32.c \ libtommath/bn_mp_lshd.c \ + libtommath/bn_mp_mod.c \ libtommath/bn_mp_mod_2d.c \ - libtommath/bn_mp_div_2d.c \ - libtommath/bn_mp_mul_2d.c \ - libtommath/bn_mp_div_2.c \ - libtommath/bn_mp_mul_2.c \ - libtommath/bn_s_mp_add.c \ - libtommath/bn_s_mp_sub.c \ - libtommath/bn_fast_s_mp_mul_digs.c \ - libtommath/bn_s_mp_mul_digs.c \ - libtommath/bn_fast_s_mp_mul_high_digs.c \ - libtommath/bn_s_mp_mul_high_digs.c \ - libtommath/bn_fast_s_mp_sqr.c \ - libtommath/bn_s_mp_sqr.c \ - libtommath/bn_mp_add.c \ - libtommath/bn_mp_sub.c \ - libtommath/bn_mp_karatsuba_mul.c \ + libtommath/bn_mp_mod_d.c \ + libtommath/bn_mp_montgomery_calc_normalization.c \ + libtommath/bn_mp_montgomery_reduce.c \ + libtommath/bn_mp_montgomery_setup.c \ libtommath/bn_mp_mul.c \ - libtommath/bn_mp_karatsuba_sqr.c \ - libtommath/bn_mp_sqr.c \ - libtommath/bn_mp_div.c \ - libtommath/bn_mp_mod.c \ - libtommath/bn_mp_add_d.c \ - libtommath/bn_mp_sub_d.c \ + libtommath/bn_mp_mul_2.c \ + libtommath/bn_mp_mul_2d.c \ libtommath/bn_mp_mul_d.c \ - libtommath/bn_mp_div_d.c \ - libtommath/bn_mp_mod_d.c \ - libtommath/bn_mp_expt_d.c \ - libtommath/bn_mp_addmod.c \ - libtommath/bn_mp_submod.c \ libtommath/bn_mp_mulmod.c \ - libtommath/bn_mp_sqrmod.c \ - libtommath/bn_mp_gcd.c \ - libtommath/bn_mp_lcm.c \ - libtommath/bn_fast_mp_invmod.c \ - libtommath/bn_mp_invmod.c \ - libtommath/bn_mp_reduce.c \ - libtommath/bn_mp_montgomery_setup.c \ - libtommath/bn_fast_mp_montgomery_reduce.c \ - libtommath/bn_mp_montgomery_reduce.c \ - libtommath/bn_mp_exptmod_fast.c \ - libtommath/bn_mp_exptmod.c \ - libtommath/bn_mp_2expt.c \ - libtommath/bn_mp_n_root.c \ - libtommath/bn_mp_jacobi.c \ - libtommath/bn_reverse.c \ - libtommath/bn_mp_count_bits.c \ - libtommath/bn_mp_read_unsigned_bin.c \ - libtommath/bn_mp_read_signed_bin.c \ - libtommath/bn_mp_to_unsigned_bin.c \ - libtommath/bn_mp_to_signed_bin.c \ - libtommath/bn_mp_unsigned_bin_size.c \ - libtommath/bn_mp_signed_bin_size.c \ - libtommath/bn_mp_xor.c \ - libtommath/bn_mp_and.c \ + libtommath/bn_mp_neg.c \ libtommath/bn_mp_or.c \ - libtommath/bn_mp_rand.c \ - libtommath/bn_mp_montgomery_calc_normalization.c \ - libtommath/bn_mp_prime_is_divisible.c \ - libtommath/bn_prime_tab.c \ + libtommath/bn_mp_pack.c \ + libtommath/bn_mp_pack_count.c \ libtommath/bn_mp_prime_fermat.c \ - libtommath/bn_mp_prime_miller_rabin.c \ + libtommath/bn_mp_prime_frobenius_underwood.c \ libtommath/bn_mp_prime_is_prime.c \ + libtommath/bn_mp_prime_miller_rabin.c \ libtommath/bn_mp_prime_next_prime.c \ - libtommath/bn_mp_find_prime.c \ - libtommath/bn_mp_dr_reduce.c \ - libtommath/bn_mp_dr_is_modulus.c \ - libtommath/bn_mp_dr_setup.c \ - libtommath/bn_mp_reduce_setup.c \ - libtommath/bn_mp_toom_mul.c \ - libtommath/bn_mp_toom_sqr.c \ - libtommath/bn_mp_div_3.c \ - libtommath/bn_s_mp_exptmod.c \ + libtommath/bn_mp_prime_rabin_miller_trials.c \ + libtommath/bn_mp_prime_rand.c \ + libtommath/bn_mp_prime_strong_lucas_selfridge.c \ + libtommath/bn_mp_radix_size.c \ + libtommath/bn_mp_radix_smap.c \ + libtommath/bn_mp_rand.c \ + libtommath/bn_mp_read_radix.c \ + libtommath/bn_mp_reduce.c \ libtommath/bn_mp_reduce_2k.c \ - libtommath/bn_mp_reduce_is_2k.c \ - libtommath/bn_mp_reduce_2k_setup.c \ libtommath/bn_mp_reduce_2k_l.c \ - libtommath/bn_mp_reduce_is_2k_l.c \ + libtommath/bn_mp_reduce_2k_setup.c \ libtommath/bn_mp_reduce_2k_setup_l.c \ - libtommath/bn_mp_radix_smap.c \ - libtommath/bn_mp_read_radix.c \ - libtommath/bn_mp_toradix.c \ - libtommath/bn_mp_radix_size.c \ - libtommath/bn_mp_fread.c \ - libtommath/bn_mp_fwrite.c \ - libtommath/bn_mp_cnt_lsb.c \ - libtommath/bn_error.c \ - libtommath/bn_mp_init_multi.c \ - libtommath/bn_mp_clear_multi.c \ - libtommath/bn_mp_exteuclid.c \ - libtommath/bn_mp_toradix_n.c \ - libtommath/bn_mp_prime_random_ex.c \ - libtommath/bn_mp_get_int.c \ + libtommath/bn_mp_reduce_is_2k.c \ + libtommath/bn_mp_reduce_is_2k_l.c \ + libtommath/bn_mp_reduce_setup.c \ + libtommath/bn_mp_root_u32.c \ + libtommath/bn_mp_rshd.c \ + libtommath/bn_mp_sbin_size.c \ + libtommath/bn_mp_set.c \ + libtommath/bn_mp_set_double.c \ + libtommath/bn_mp_set_i32.c \ + libtommath/bn_mp_set_i64.c \ + libtommath/bn_mp_set_l.c \ + libtommath/bn_mp_set_ll.c \ + libtommath/bn_mp_set_u32.c \ + libtommath/bn_mp_set_u64.c \ + libtommath/bn_mp_set_ul.c \ + libtommath/bn_mp_set_ull.c \ + libtommath/bn_mp_shrink.c \ + libtommath/bn_mp_signed_rsh.c \ + libtommath/bn_mp_sqr.c \ + libtommath/bn_mp_sqrmod.c \ libtommath/bn_mp_sqrt.c \ - libtommath/bn_mp_is_square.c \ - libtommath/bn_mp_init_set.c \ - libtommath/bn_mp_init_set_int.c \ - libtommath/bn_mp_invmod_slow.c \ - libtommath/bn_mp_prime_rabin_miller_trials.c \ - libtommath/bn_mp_to_signed_bin_n.c \ - libtommath/bn_mp_to_unsigned_bin_n.c - + libtommath/bn_mp_sqrtmod_prime.c \ + libtommath/bn_mp_sub.c \ + libtommath/bn_mp_sub_d.c \ + libtommath/bn_mp_submod.c \ + libtommath/bn_mp_to_radix.c \ + libtommath/bn_mp_to_sbin.c \ + libtommath/bn_mp_to_ubin.c \ + libtommath/bn_mp_ubin_size.c \ + libtommath/bn_mp_unpack.c \ + libtommath/bn_mp_xor.c \ + libtommath/bn_mp_zero.c \ + libtommath/bn_prime_tab.c \ + libtommath/bn_s_mp_add.c \ + libtommath/bn_s_mp_balance_mul.c \ + libtommath/bn_s_mp_exptmod.c \ + libtommath/bn_s_mp_exptmod_fast.c \ + libtommath/bn_s_mp_get_bit.c \ + libtommath/bn_s_mp_invmod_fast.c \ + libtommath/bn_s_mp_invmod_slow.c \ + libtommath/bn_s_mp_karatsuba_mul.c \ + libtommath/bn_s_mp_karatsuba_sqr.c \ + libtommath/bn_s_mp_montgomery_reduce_fast.c \ + libtommath/bn_s_mp_mul_digs.c \ + libtommath/bn_s_mp_mul_digs_fast.c \ + libtommath/bn_s_mp_mul_high_digs.c \ + libtommath/bn_s_mp_mul_high_digs_fast.c \ + libtommath/bn_s_mp_prime_is_divisible.c \ + libtommath/bn_s_mp_rand_jenkins.c \ + libtommath/bn_s_mp_rand_platform.c \ + libtommath/bn_s_mp_reverse.c \ + libtommath/bn_s_mp_sqr.c \ + libtommath/bn_s_mp_sqr_fast.c \ + libtommath/bn_s_mp_sub.c \ + libtommath/bn_s_mp_toom_mul.c \ + libtommath/bn_s_mp_toom_sqr.c $(libhcrypto_la_OBJECTS) $(test_rand_OBJECTS): hcrypto-link diff --git a/lib/hcrypto/libtommath/NTMakefile b/lib/hcrypto/libtommath/NTMakefile index c5e08dfad..082054ac6 100644 --- a/lib/hcrypto/libtommath/NTMakefile +++ b/lib/hcrypto/libtommath/NTMakefile @@ -39,127 +39,163 @@ INCFILES= \ $(INCDIR)\tommath_superclass.h libltm_OBJs= \ - $(OBJ)\bncore.obj \ - $(OBJ)\bn_mp_init.obj \ + $(OBJ)\bn_cutoffs.obj \ + $(OBJ)\bn_deprecated.obj \ + $(OBJ)\bn_mp_2expt.obj \ + $(OBJ)\bn_mp_abs.obj \ + $(OBJ)\bn_mp_add.obj \ + $(OBJ)\bn_mp_add_d.obj \ + $(OBJ)\bn_mp_addmod.obj \ + $(OBJ)\bn_mp_and.obj \ + $(OBJ)\bn_mp_clamp.obj \ $(OBJ)\bn_mp_clear.obj \ + $(OBJ)\bn_mp_clear_multi.obj \ + $(OBJ)\bn_mp_cmp.obj \ + $(OBJ)\bn_mp_cmp_d.obj \ + $(OBJ)\bn_mp_cmp_mag.obj \ + $(OBJ)\bn_mp_cnt_lsb.obj \ + $(OBJ)\bn_mp_complement.obj \ + $(OBJ)\bn_mp_copy.obj \ + $(OBJ)\bn_mp_count_bits.obj \ + $(OBJ)\bn_mp_decr.obj \ + $(OBJ)\bn_mp_div.obj \ + $(OBJ)\bn_mp_div_2.obj \ + $(OBJ)\bn_mp_div_2d.obj \ + $(OBJ)\bn_mp_div_3.obj \ + $(OBJ)\bn_mp_div_d.obj \ + $(OBJ)\bn_mp_dr_is_modulus.obj \ + $(OBJ)\bn_mp_dr_reduce.obj \ + $(OBJ)\bn_mp_dr_setup.obj \ + $(OBJ)\bn_mp_error_to_string.obj\ $(OBJ)\bn_mp_exch.obj \ + $(OBJ)\bn_mp_expt_u32.obj \ + $(OBJ)\bn_mp_exptmod.obj \ + $(OBJ)\bn_mp_exteuclid.obj \ + $(OBJ)\bn_mp_fread.obj \ + $(OBJ)\bn_mp_from_sbin.obj \ + $(OBJ)\bn_mp_from_ubin.obj \ + $(OBJ)\bn_mp_fwrite.obj \ + $(OBJ)\bn_mp_gcd.obj \ + $(OBJ)\bn_mp_get_double.obj \ + $(OBJ)\bn_mp_get_i32.obj \ + $(OBJ)\bn_mp_get_i64.obj \ + $(OBJ)\bn_mp_get_l.obj \ + $(OBJ)\bn_mp_get_ll.obj \ + $(OBJ)\bn_mp_get_mag_u32.obj \ + $(OBJ)\bn_mp_get_mag_u64.obj \ + $(OBJ)\bn_mp_get_mag_ul.obj \ + $(OBJ)\bn_mp_get_mag_ull.obj \ $(OBJ)\bn_mp_grow.obj \ - $(OBJ)\bn_mp_shrink.obj \ - $(OBJ)\bn_mp_clamp.obj \ - $(OBJ)\bn_mp_zero.obj \ - $(OBJ)\bn_mp_zero_multi.obj \ - $(OBJ)\bn_mp_set.obj \ - $(OBJ)\bn_mp_set_int.obj \ - $(OBJ)\bn_mp_init_size.obj \ - $(OBJ)\bn_mp_copy.obj \ + $(OBJ)\bn_mp_incr.obj \ + $(OBJ)\bn_mp_init.obj \ $(OBJ)\bn_mp_init_copy.obj \ - $(OBJ)\bn_mp_abs.obj \ - $(OBJ)\bn_mp_neg.obj \ - $(OBJ)\bn_mp_cmp_mag.obj \ - $(OBJ)\bn_mp_cmp.obj \ - $(OBJ)\bn_mp_cmp_d.obj \ - $(OBJ)\bn_mp_rshd.obj \ + $(OBJ)\bn_mp_init_i32.obj \ + $(OBJ)\bn_mp_init_i64.obj \ + $(OBJ)\bn_mp_init_l.obj \ + $(OBJ)\bn_mp_init_ll.obj \ + $(OBJ)\bn_mp_init_multi.obj \ + $(OBJ)\bn_mp_init_set.obj \ + $(OBJ)\bn_mp_init_size.obj \ + $(OBJ)\bn_mp_init_u32.obj \ + $(OBJ)\bn_mp_init_u64.obj \ + $(OBJ)\bn_mp_init_ul.obj \ + $(OBJ)\bn_mp_init_ull.obj \ + $(OBJ)\bn_mp_invmod.obj \ + $(OBJ)\bn_mp_is_square.obj \ + $(OBJ)\bn_mp_iseven.obj \ + $(OBJ)\bn_mp_isodd.obj \ + $(OBJ)\bn_mp_kronecker.obj \ + $(OBJ)\bn_mp_lcm.obj \ + $(OBJ)\bn_mp_log_u32.obj \ $(OBJ)\bn_mp_lshd.obj \ + $(OBJ)\bn_mp_mod.obj \ $(OBJ)\bn_mp_mod_2d.obj \ - $(OBJ)\bn_mp_div_2d.obj \ - $(OBJ)\bn_mp_mul_2d.obj \ - $(OBJ)\bn_mp_div_2.obj \ - $(OBJ)\bn_mp_mul_2.obj \ - $(OBJ)\bn_s_mp_add.obj \ - $(OBJ)\bn_s_mp_sub.obj \ - $(OBJ)\bn_fast_s_mp_mul_digs.obj \ - $(OBJ)\bn_s_mp_mul_digs.obj \ - $(OBJ)\bn_fast_s_mp_mul_high_digs.obj \ - $(OBJ)\bn_s_mp_mul_high_digs.obj \ - $(OBJ)\bn_fast_s_mp_sqr.obj \ - $(OBJ)\bn_s_mp_sqr.obj \ - $(OBJ)\bn_mp_add.obj \ - $(OBJ)\bn_mp_sub.obj \ - $(OBJ)\bn_mp_karatsuba_mul.obj \ + $(OBJ)\bn_mp_mod_d.obj \ + $(OBJ)\bn_mp_montgomery_calc_normalization.obj \ + $(OBJ)\bn_mp_montgomery_reduce.obj \ + $(OBJ)\bn_mp_montgomery_setup.obj \ $(OBJ)\bn_mp_mul.obj \ - $(OBJ)\bn_mp_karatsuba_sqr.obj \ - $(OBJ)\bn_mp_sqr.obj \ - $(OBJ)\bn_mp_div.obj \ - $(OBJ)\bn_mp_mod.obj \ - $(OBJ)\bn_mp_add_d.obj \ - $(OBJ)\bn_mp_sub_d.obj \ + $(OBJ)\bn_mp_mul_2.obj \ + $(OBJ)\bn_mp_mul_2d.obj \ $(OBJ)\bn_mp_mul_d.obj \ - $(OBJ)\bn_mp_div_d.obj \ - $(OBJ)\bn_mp_mod_d.obj \ - $(OBJ)\bn_mp_expt_d.obj \ - $(OBJ)\bn_mp_addmod.obj \ - $(OBJ)\bn_mp_submod.obj \ $(OBJ)\bn_mp_mulmod.obj \ - $(OBJ)\bn_mp_sqrmod.obj \ - $(OBJ)\bn_mp_gcd.obj \ - $(OBJ)\bn_mp_lcm.obj \ - $(OBJ)\bn_fast_mp_invmod.obj \ - $(OBJ)\bn_mp_invmod.obj \ - $(OBJ)\bn_mp_reduce.obj \ - $(OBJ)\bn_mp_montgomery_setup.obj \ - $(OBJ)\bn_fast_mp_montgomery_reduce.obj \ - $(OBJ)\bn_mp_montgomery_reduce.obj \ - $(OBJ)\bn_mp_exptmod_fast.obj \ - $(OBJ)\bn_mp_exptmod.obj \ - $(OBJ)\bn_mp_2expt.obj \ - $(OBJ)\bn_mp_n_root.obj \ - $(OBJ)\bn_mp_jacobi.obj \ - $(OBJ)\bn_reverse.obj \ - $(OBJ)\bn_mp_count_bits.obj \ - $(OBJ)\bn_mp_read_unsigned_bin.obj \ - $(OBJ)\bn_mp_read_signed_bin.obj \ - $(OBJ)\bn_mp_to_unsigned_bin.obj \ - $(OBJ)\bn_mp_to_signed_bin.obj \ - $(OBJ)\bn_mp_unsigned_bin_size.obj \ - $(OBJ)\bn_mp_signed_bin_size.obj \ - $(OBJ)\bn_mp_xor.obj \ - $(OBJ)\bn_mp_and.obj \ + $(OBJ)\bn_mp_neg.obj \ $(OBJ)\bn_mp_or.obj \ - $(OBJ)\bn_mp_rand.obj \ - $(OBJ)\bn_mp_montgomery_calc_normalization.obj \ - $(OBJ)\bn_mp_prime_is_divisible.obj \ - $(OBJ)\bn_prime_tab.obj \ + $(OBJ)\bn_mp_pack.obj \ + $(OBJ)\bn_mp_pack_count.obj \ $(OBJ)\bn_mp_prime_fermat.obj \ - $(OBJ)\bn_mp_prime_miller_rabin.obj \ + $(OBJ)\bn_mp_prime_frobenius_underwood.obj \ $(OBJ)\bn_mp_prime_is_prime.obj \ - $(OBJ)\bn_mp_prime_next_prime.obj \ - $(OBJ)\bn_mp_find_prime.obj \ - $(OBJ)\bn_mp_dr_reduce.obj \ - $(OBJ)\bn_mp_dr_is_modulus.obj \ - $(OBJ)\bn_mp_dr_setup.obj \ - $(OBJ)\bn_mp_reduce_setup.obj \ - $(OBJ)\bn_mp_toom_mul.obj \ - $(OBJ)\bn_mp_toom_sqr.obj \ - $(OBJ)\bn_mp_div_3.obj \ - $(OBJ)\bn_s_mp_exptmod.obj \ + $(OBJ)\bn_mp_prime_miller_rabin.obj \ + $(OBJ)\bn_mp_prime_next_prime.obj \ + $(OBJ)\bn_mp_prime_rabin_miller_trials.obj \ + $(OBJ)\bn_mp_prime_rand.obj \ + $(OBJ)\bn_mp_prime_strong_lucas_selfridge.obj \ + $(OBJ)\bn_mp_radix_size.obj \ + $(OBJ)\bn_mp_radix_smap.obj \ + $(OBJ)\bn_mp_rand.obj \ + $(OBJ)\bn_mp_read_radix.obj \ + $(OBJ)\bn_mp_reduce.obj \ $(OBJ)\bn_mp_reduce_2k.obj \ - $(OBJ)\bn_mp_reduce_is_2k.obj \ - $(OBJ)\bn_mp_reduce_2k_setup.obj \ $(OBJ)\bn_mp_reduce_2k_l.obj \ - $(OBJ)\bn_mp_reduce_is_2k_l.obj \ + $(OBJ)\bn_mp_reduce_2k_setup.obj \ $(OBJ)\bn_mp_reduce_2k_setup_l.obj \ - $(OBJ)\bn_mp_radix_smap.obj \ - $(OBJ)\bn_mp_read_radix.obj \ - $(OBJ)\bn_mp_toradix.obj \ - $(OBJ)\bn_mp_radix_size.obj \ - $(OBJ)\bn_mp_fread.obj \ - $(OBJ)\bn_mp_fwrite.obj \ - $(OBJ)\bn_mp_cnt_lsb.obj \ - $(OBJ)\bn_error.obj \ - $(OBJ)\bn_mp_init_multi.obj \ - $(OBJ)\bn_mp_clear_multi.obj \ - $(OBJ)\bn_mp_exteuclid.obj \ - $(OBJ)\bn_mp_toradix_n.obj \ - $(OBJ)\bn_mp_prime_random_ex.obj \ - $(OBJ)\bn_mp_get_int.obj \ + $(OBJ)\bn_mp_reduce_is_2k.obj \ + $(OBJ)\bn_mp_reduce_is_2k_l.obj \ + $(OBJ)\bn_mp_reduce_setup.obj \ + $(OBJ)\bn_mp_root_u32.obj \ + $(OBJ)\bn_mp_rshd.obj \ + $(OBJ)\bn_mp_sbin_size.obj \ + $(OBJ)\bn_mp_set.obj \ + $(OBJ)\bn_mp_set_double.obj \ + $(OBJ)\bn_mp_set_i32.obj \ + $(OBJ)\bn_mp_set_i64.obj \ + $(OBJ)\bn_mp_set_l.obj \ + $(OBJ)\bn_mp_set_ll.obj \ + $(OBJ)\bn_mp_set_u32.obj \ + $(OBJ)\bn_mp_set_u64.obj \ + $(OBJ)\bn_mp_set_ul.obj \ + $(OBJ)\bn_mp_set_ull.obj \ + $(OBJ)\bn_mp_shrink.obj \ + $(OBJ)\bn_mp_signed_rsh.obj \ + $(OBJ)\bn_mp_sqr.obj \ + $(OBJ)\bn_mp_sqrmod.obj \ $(OBJ)\bn_mp_sqrt.obj \ - $(OBJ)\bn_mp_is_square.obj \ - $(OBJ)\bn_mp_init_set.obj \ - $(OBJ)\bn_mp_init_set_int.obj \ - $(OBJ)\bn_mp_invmod_slow.obj \ - $(OBJ)\bn_mp_prime_rabin_miller_trials.obj \ - $(OBJ)\bn_mp_to_signed_bin_n.obj \ - $(OBJ)\bn_mp_to_unsigned_bin_n.obj + $(OBJ)\bn_mp_sqrtmod_prime.obj \ + $(OBJ)\bn_mp_sub.obj \ + $(OBJ)\bn_mp_sub_d.obj \ + $(OBJ)\bn_mp_submod.obj \ + $(OBJ)\bn_mp_to_radix.obj \ + $(OBJ)\bn_mp_to_sbin.obj \ + $(OBJ)\bn_mp_to_ubin.obj \ + $(OBJ)\bn_mp_ubin_size.obj \ + $(OBJ)\bn_mp_unpack.obj \ + $(OBJ)\bn_mp_xor.obj \ + $(OBJ)\bn_mp_zero.obj \ + $(OBJ)\bn_prime_tab.obj \ + $(OBJ)\bn_s_mp_add.obj \ + $(OBJ)\bn_s_mp_balance_mul.obj \ + $(OBJ)\bn_s_mp_exptmod.obj \ + $(OBJ)\bn_s_mp_exptmod_fast.obj \ + $(OBJ)\bn_s_mp_get_bit.obj \ + $(OBJ)\bn_s_mp_invmod_fast.obj \ + $(OBJ)\bn_s_mp_invmod_slow.obj \ + $(OBJ)\bn_s_mp_karatsuba_mul.obj\ + $(OBJ)\bn_s_mp_karatsuba_sqr.obj\ + $(OBJ)\bn_s_mp_montgomery_reduce_fast.obj \ + $(OBJ)\bn_s_mp_mul_digs.obj \ + $(OBJ)\bn_s_mp_mul_digs_fast.obj\ + $(OBJ)\bn_s_mp_mul_high_digs.obj\ + $(OBJ)\bn_s_mp_mul_high_digs_fast.obj \ + $(OBJ)\bn_s_mp_prime_is_divisible.obj \ + $(OBJ)\bn_s_mp_rand_jenkins.obj \ + $(OBJ)\bn_s_mp_rand_platform.obj\ + $(OBJ)\bn_s_mp_reverse.obj \ + $(OBJ)\bn_s_mp_sqr.obj \ + $(OBJ)\bn_s_mp_sqr_fast.obj \ + $(OBJ)\bn_s_mp_sub.obj \ + $(OBJ)\bn_s_mp_toom_mul.obj \ + $(OBJ)\bn_s_mp_toom_sqr.obj $(LIBLTM): $(libltm_OBJs) $(LIBCON) diff --git a/lib/hcrypto/libtommath/bn_s_mp_rand_platform.c b/lib/hcrypto/libtommath/bn_s_mp_rand_platform.c index 27339bff8..55c69390e 100644 --- a/lib/hcrypto/libtommath/bn_s_mp_rand_platform.c +++ b/lib/hcrypto/libtommath/bn_s_mp_rand_platform.c @@ -128,20 +128,40 @@ static mp_err s_read_ltm_rng(void *p, size_t n) } #endif +#ifdef BN_S_READ_ARC4RANDOM_C mp_err s_read_arc4random(void *p, size_t n); +#endif +#ifdef BN_S_READ_WINCSP_C mp_err s_read_wincsp(void *p, size_t n); +#endif +#ifdef BN_S_READ_GETRANDOM_C mp_err s_read_getrandom(void *p, size_t n); +#endif +#ifdef BN_S_READ_URANDOM_C mp_err s_read_urandom(void *p, size_t n); +#endif +#ifdef BN_S_READ_LTM_RNG mp_err s_read_ltm_rng(void *p, size_t n); +#endif mp_err s_mp_rand_platform(void *p, size_t n) { mp_err err = MP_ERR; +#ifdef BN_S_READ_ARC4RANDOM_C if ((err != MP_OKAY) && MP_HAS(S_READ_ARC4RANDOM)) err = s_read_arc4random(p, n); +#endif +#ifdef BN_S_READ_WINCSP_C if ((err != MP_OKAY) && MP_HAS(S_READ_WINCSP)) err = s_read_wincsp(p, n); +#endif +#ifdef BN_S_READ_GETRANDOM_C if ((err != MP_OKAY) && MP_HAS(S_READ_GETRANDOM)) err = s_read_getrandom(p, n); +#endif +#ifdef BN_S_READ_URANDOM_C if ((err != MP_OKAY) && MP_HAS(S_READ_URANDOM)) err = s_read_urandom(p, n); +#endif +#ifdef BN_S_READ_LTM_RNG if ((err != MP_OKAY) && MP_HAS(S_READ_LTM_RNG)) err = s_read_ltm_rng(p, n); +#endif return err; } diff --git a/lib/hcrypto/rsa-ltm.c b/lib/hcrypto/rsa-ltm.c index 4ac5617cb..803da1d23 100644 --- a/lib/hcrypto/rsa-ltm.c +++ b/lib/hcrypto/rsa-ltm.c @@ -536,7 +536,7 @@ ltm_rsa_generate_key(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb) do { BN_GENCB_call(cb, 2, counter++); CHECK(random_num(&p, bitsp), 0); - CHECK(mp_find_prime(&p,128), MP_YES); + CHECK(mp_prime_next_prime(&p,128,0), MP_OKAY); mp_sub_d(&p, 1, &t1); mp_gcd(&t1, &el, &t2); @@ -548,7 +548,7 @@ ltm_rsa_generate_key(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb) do { BN_GENCB_call(cb, 2, counter++); CHECK(random_num(&q, bits - bitsp), 0); - CHECK(mp_find_prime(&q,128), MP_YES); + CHECK(mp_prime_next_prime(&q,128,0), MP_OKAY); if (mp_cmp(&p, &q) == 0) /* don't let p and q be the same */ continue; -- 2.34.1