generate tommath_class from pre-processed code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184
diff --git a/helper.pl b/helper.pl
index ab3a4a0..76a0bef 100755
--- a/helper.pl
+++ b/helper.pl
@@ -308,6 +308,7 @@ sub update_dep
/* SPDX-License-Identifier: Unlicense */
#if !(defined(LTM1) && defined(LTM2) && defined(LTM3))
+#define LTM_INSIDE
#if defined(LTM2)
# define LTM3
#endif
@@ -367,14 +368,21 @@ EOS
}
print {$class} << 'EOS';
#endif
+#endif
EOS
# now do classes
my %depmap;
foreach my $filename (glob 'bn*.c') {
- open(my $src, '<', $filename) or die "Can't open source file!\n";
- read $src, my $content, -s $src;
- close $src;
+ my $content;
+ if ($filename =~ "bn_deprecated.c") {
+ open(my $src, '<', $filename) or die "Can't open source file!\n";
+ read $src, $content, -s $src;
+ close $src;
+ } else {
+ my $cmd = "gcc -E -x c -DLTM_ALL $filename | sed '/# 1 \"$filename\"/,/# 2 \"$filename\"/d'";
+ $content = qx/$cmd/;
+ }
# convert filename to upper case so we can use it as a define
$filename =~ tr/[a-z]/[A-Z]/;
@@ -412,6 +420,8 @@ EOS
}
print {$class} << 'EOS';
+#ifdef LTM_INSIDE
+#undef LTM_INSIDE
#ifdef LTM3
# define LTM_LAST
#endif
diff --git a/tommath_class.h b/tommath_class.h
index 21c2283..a098c0f 100644
--- a/tommath_class.h
+++ b/tommath_class.h
@@ -2,6 +2,7 @@
/* SPDX-License-Identifier: Unlicense */
#if !(defined(LTM1) && defined(LTM2) && defined(LTM3))
+#define LTM_INSIDE
#if defined(LTM2)
# define LTM3
#endif
@@ -158,6 +159,7 @@
# define BN_S_MP_TOOM_MUL_C
# define BN_S_MP_TOOM_SQR_C
#endif
+#endif
#if defined(BN_CUTOFFS_C)
#endif
@@ -303,24 +305,20 @@
# define BN_MP_CMP_MAG_C
# define BN_MP_COPY_C
# define BN_MP_ZERO_C
-# define BN_MP_INIT_MULTI_C
-# define BN_MP_SET_C
-# define BN_MP_COUNT_BITS_C
-# define BN_MP_ABS_C
-# define BN_MP_MUL_2D_C
-# define BN_MP_CMP_C
-# define BN_MP_SUB_C
-# define BN_MP_ADD_C
-# define BN_MP_DIV_2D_C
-# define BN_MP_EXCH_C
-# define BN_MP_CLEAR_MULTI_C
# define BN_MP_INIT_SIZE_C
# define BN_MP_INIT_C
# define BN_MP_INIT_COPY_C
+# define BN_MP_COUNT_BITS_C
+# define BN_MP_MUL_2D_C
# define BN_MP_LSHD_C
+# define BN_MP_CMP_C
+# define BN_MP_SUB_C
# define BN_MP_RSHD_C
# define BN_MP_MUL_D_C
+# define BN_MP_ADD_C
# define BN_MP_CLAMP_C
+# define BN_MP_EXCH_C
+# define BN_MP_DIV_2D_C
# define BN_MP_CLEAR_C
#endif
@@ -440,9 +438,11 @@
#endif
#if defined(BN_MP_GET_I32_C)
+# define BN_MP_GET_MAG32_C
#endif
#if defined(BN_MP_GET_I64_C)
+# define BN_MP_GET_MAG64_C
#endif
#if defined(BN_MP_GET_MAG32_C)
@@ -492,9 +492,13 @@
#endif
#if defined(BN_MP_INIT_I32_C)
+# define BN_MP_INIT_C
+# define BN_MP_SET_I32_C
#endif
#if defined(BN_MP_INIT_I64_C)
+# define BN_MP_INIT_C
+# define BN_MP_SET_I64_C
#endif
#if defined(BN_MP_INIT_MULTI_C)
@@ -511,9 +515,13 @@
#endif
#if defined(BN_MP_INIT_U32_C)
+# define BN_MP_INIT_C
+# define BN_MP_SET_U32_C
#endif
#if defined(BN_MP_INIT_U64_C)
+# define BN_MP_INIT_C
+# define BN_MP_SET_U64_C
#endif
#if defined(BN_MP_INVMOD_C)
@@ -526,7 +534,7 @@
# define BN_MP_MOD_D_C
# define BN_MP_INIT_U32_C
# define BN_MP_MOD_C
-# define BN_MP_GET_U32_C
+# define BN_MP_GET_I32_C
# define BN_MP_SQRT_C
# define BN_MP_SQR_C
# define BN_MP_CMP_MAG_C
@@ -695,7 +703,6 @@
# define BN_S_MP_PRIME_IS_DIVISIBLE_C
# define BN_MP_INIT_SET_C
# define BN_MP_PRIME_MILLER_RABIN_C
-# define BN_MP_PRIME_FROBENIUS_UNDERWOOD_C
# define BN_MP_PRIME_STRONG_LUCAS_SELFRIDGE_C
# define BN_MP_READ_RADIX_C
# define BN_MP_CMP_C
@@ -811,7 +818,6 @@
# define BN_MP_RSHD_C
# define BN_MP_MUL_C
# define BN_S_MP_MUL_HIGH_DIGS_C
-# define BN_S_MP_MUL_HIGH_DIGS_FAST_C
# define BN_MP_MOD_2D_C
# define BN_S_MP_MUL_DIGS_C
# define BN_MP_SUB_C
@@ -888,9 +894,11 @@
#endif
#if defined(BN_MP_SET_I32_C)
+# define BN_MP_SET_U32_C
#endif
#if defined(BN_MP_SET_I64_C)
+# define BN_MP_SET_U64_C
#endif
#if defined(BN_MP_SET_U32_C)
@@ -1220,6 +1228,8 @@
# define BN_MP_CLEAR_C
#endif
+#ifdef LTM_INSIDE
+#undef LTM_INSIDE
#ifdef LTM3
# define LTM_LAST
#endif