Rev 6419 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6419 | Rev 6922 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | ; modexp.asm - Modular exponentiation test suite |
1 | ; modexp.asm - Modular exponentiation test suite |
2 | ; |
2 | ; |
3 | ; Copyright (C) 2015-2016 Jeffrey Amelynck |
3 | ; Copyright (C) 2015-2017 Jeffrey Amelynck |
4 | ; |
4 | ; |
5 | ; This program is free software: you can redistribute it and/or modify |
5 | ; This program is free software: you can redistribute it and/or modify |
6 | ; it under the terms of the GNU General Public License as published by |
6 | ; it under the terms of the GNU General Public License as published by |
7 | ; the Free Software Foundation, either version 3 of the License, or |
7 | ; the Free Software Foundation, either version 3 of the License, or |
8 | ; (at your option) any later version. |
8 | ; (at your option) any later version. |
Line 18... | Line 18... | ||
18 | format binary as "" |
18 | format binary as "" |
Line 19... | Line 19... | ||
19 | 19 | ||
20 | __DEBUG__ = 1 |
20 | __DEBUG__ = 1 |
Line 21... | Line 21... | ||
21 | __DEBUG_LEVEL__ = 1 |
21 | __DEBUG_LEVEL__ = 1 |
Line 22... | Line 22... | ||
22 | 22 | ||
Line 23... | Line 23... | ||
23 | MAX_BITS = 256 |
23 | MAX_BITS = 512 |
24 | 24 | ||
25 | use32 |
25 | use32 |
26 | 26 | ||
27 | db 'MENUET01' ; signature |
27 | db 'MENUET01' ; signature |
28 | dd 1 ; header version |
28 | dd 1 ; header version |
29 | dd start ; entry point |
29 | dd start ; entry point |
30 | dd i_end ; initialized size |
30 | dd i_end ; initialized size |
Line 31... | Line 31... | ||
31 | dd mem+4096 ; required memory |
31 | dd mem+65536 ; required memory |
32 | dd mem+4096 ; stack pointer |
32 | dd mem+65536 ; stack pointer |
Line 42... | Line 42... | ||
42 | 42 | ||
Line 43... | Line 43... | ||
43 | start: |
43 | start: |
Line 44... | Line 44... | ||
44 | 44 | ||
45 | DEBUGF 1, "ModExp Test suite\n" |
45 | DEBUGF 1, "ModExp Test suite\n" |
46 | 46 | ||
Line 47... | Line 47... | ||
47 | DEBUGF 1, "mpint_zero\n" |
47 | DEBUGF 1, "mpint_print(0x0)\n" |
48 | stdcall mpint_zero, mpint_A |
48 | mov dword[mpint_A+00], 0 |
49 | stdcall mpint_print, mpint_A |
49 | stdcall mpint_print, mpint_A |
Line 55... | Line 55... | ||
55 | mov dword[mpint_A+16], 0xDEADBEEF |
55 | mov dword[mpint_A+16], 0xDEADBEEF |
56 | mov dword[mpint_A+20], 0xCAFEBABE |
56 | mov dword[mpint_A+20], 0xCAFEBABE |
57 | mov dword[mpint_A+24], 0xDEADBEEF |
57 | mov dword[mpint_A+24], 0xDEADBEEF |
58 | mov dword[mpint_A+28], 0xCAFEBABE |
58 | mov dword[mpint_A+28], 0xCAFEBABE |
59 | mov dword[mpint_A+32], 0xDEADBEEF |
59 | mov dword[mpint_A+32], 0xDEADBEEF |
- | 60 | DEBUGF 1, "mpint_print(0xCAFEBABEDEADBEEF...)\n" |
|
60 | stdcall mpint_print, mpint_A |
61 | stdcall mpint_print, mpint_A |
Line 61... | Line 62... | ||
61 | 62 | ||
62 | DEBUGF 1, "mpint_shl, 3\n" |
63 | DEBUGF 1, "mpint_shl(A, 3)\n" |
63 | stdcall mpint_shl, mpint_A, 3 |
- | |
64 | stdcall mpint_length, mpint_A |
64 | stdcall mpint_shl, mpint_A, 3 |
Line 65... | Line 65... | ||
65 | stdcall mpint_print, mpint_A |
65 | stdcall mpint_print, mpint_A |
66 | 66 | ||
67 | DEBUGF 1, "mpint_shl, 40\n" |
- | |
68 | stdcall mpint_shl, mpint_A, 40 |
67 | DEBUGF 1, "mpint_shl(A, 29)\n" |
Line 69... | Line 68... | ||
69 | stdcall mpint_length, mpint_A |
68 | stdcall mpint_shl, mpint_A, 29 |
70 | stdcall mpint_print, mpint_A |
69 | stdcall mpint_print, mpint_A |
- | 70 | ||
71 | 71 | DEBUGF 1, "8 times mpint_shl1\n" |
|
- | 72 | stdcall mpint_shl1, mpint_A |
|
72 | DEBUGF 1, "8 times mpint_shl1\n" |
73 | stdcall mpint_print, mpint_A |
- | 74 | stdcall mpint_shl1, mpint_A |
|
73 | stdcall mpint_shl1, mpint_A |
75 | stdcall mpint_print, mpint_A |
- | 76 | stdcall mpint_shl1, mpint_A |
|
74 | stdcall mpint_shl1, mpint_A |
77 | stdcall mpint_print, mpint_A |
- | 78 | stdcall mpint_shl1, mpint_A |
|
75 | stdcall mpint_shl1, mpint_A |
79 | stdcall mpint_print, mpint_A |
- | 80 | stdcall mpint_shl1, mpint_A |
|
76 | stdcall mpint_shl1, mpint_A |
81 | stdcall mpint_print, mpint_A |
- | 82 | stdcall mpint_shl1, mpint_A |
|
77 | stdcall mpint_shl1, mpint_A |
83 | stdcall mpint_print, mpint_A |
78 | stdcall mpint_shl1, mpint_A |
- | |
79 | stdcall mpint_shl1, mpint_A |
84 | stdcall mpint_shl1, mpint_A |
Line 80... | Line 85... | ||
80 | stdcall mpint_shl1, mpint_A |
85 | stdcall mpint_print, mpint_A |
81 | stdcall mpint_length, mpint_A |
86 | stdcall mpint_shl1, mpint_A |
82 | stdcall mpint_print, mpint_A |
87 | stdcall mpint_print, mpint_A |
Line 88... | Line 93... | ||
88 | mov dword[mpint_B+16], 0xDEADBEEF |
93 | mov dword[mpint_B+16], 0xDEADBEEF |
89 | mov dword[mpint_B+20], 0xCAFEBABE |
94 | mov dword[mpint_B+20], 0xCAFEBABE |
90 | mov dword[mpint_B+24], 0xDEADBEEF |
95 | mov dword[mpint_B+24], 0xDEADBEEF |
91 | mov dword[mpint_B+28], 0xCAFEBABE |
96 | mov dword[mpint_B+28], 0xCAFEBABE |
92 | mov dword[mpint_B+32], 0xDEADBEEF |
97 | mov dword[mpint_B+32], 0xDEADBEEF |
- | 98 | DEBUGF 1, "mpint_print(A)\n" |
|
93 | stdcall mpint_print, mpint_A |
99 | stdcall mpint_print, mpint_A |
- | 100 | DEBUGF 1, "mpint_print(B)\n" |
|
94 | stdcall mpint_print, mpint_B |
101 | stdcall mpint_print, mpint_B |
95 | DEBUGF 1, "mpint_add\n" |
102 | DEBUGF 1, "mpint_add(B, A)\n" |
96 | stdcall mpint_add, mpint_B, mpint_A |
103 | stdcall mpint_add, mpint_B, mpint_A |
97 | stdcall mpint_length, mpint_B |
- | |
98 | stdcall mpint_print, mpint_B |
104 | stdcall mpint_print, mpint_B |
99 | DEBUGF 1, "mpint_sub\n" |
105 | DEBUGF 1, "mpint_sub(B, A)\n" |
100 | stdcall mpint_sub, mpint_B, mpint_A |
106 | stdcall mpint_sub, mpint_B, mpint_A |
101 | stdcall mpint_length, mpint_B |
- | |
102 | stdcall mpint_print, mpint_B |
107 | stdcall mpint_print, mpint_B |
Line -... | Line 108... | ||
- | 108 | ||
103 | 109 | mov dword[mpint_B+00], 24 |
|
104 | mov dword[mpint_B+04], 0xCAFEBABE |
110 | mov dword[mpint_B+04], 0xCAFEBABE |
105 | mov dword[mpint_B+08], 0xDEADBEEF |
111 | mov dword[mpint_B+08], 0xDEADBEEF |
106 | mov dword[mpint_B+12], 0xCAFEBABE |
112 | mov dword[mpint_B+12], 0xCAFEBABE |
107 | mov dword[mpint_B+16], 0xDEADBEEF |
113 | mov dword[mpint_B+16], 0xDEADBEEF |
108 | mov dword[mpint_B+20], 0xCAFEBABE |
114 | mov dword[mpint_B+20], 0xCAFEBABE |
109 | mov dword[mpint_B+24], 0xDEADBEEF |
- | |
110 | mov dword[mpint_B+28], 0x0 |
115 | mov dword[mpint_B+24], 0xDEADBEEF |
111 | mov dword[mpint_B+32], 0x0 |
116 | DEBUGF 1, "mpint_print(A)\n" |
- | 117 | stdcall mpint_print, mpint_A |
|
112 | stdcall mpint_print, mpint_A |
118 | DEBUGF 1, "mpint_print(B)\n" |
113 | stdcall mpint_print, mpint_B |
119 | stdcall mpint_print, mpint_B |
114 | DEBUGF 1, "mpint_mod\n" |
120 | DEBUGF 1, "mpint_mod(A, B)\n" |
115 | stdcall mpint_mod, mpint_A, mpint_B |
121 | stdcall mpint_mod, mpint_A, mpint_B |
Line 116... | Line -... | ||
116 | stdcall mpint_print, mpint_A |
- | |
117 | 122 | stdcall mpint_print, mpint_A |
|
118 | stdcall mpint_zero, mpint_A |
123 | |
119 | mov dword[mpint_A+0], 2 |
- | |
120 | mov dword[mpint_A+4], 1936 |
124 | mov dword[mpint_A+0], 2 |
121 | stdcall mpint_zero, mpint_B |
125 | mov dword[mpint_A+4], 1936 |
122 | mov dword[mpint_B+0], 2 |
126 | mov dword[mpint_B+0], 2 |
123 | mov dword[mpint_B+4], 497 |
127 | mov dword[mpint_B+4], 497 |
124 | stdcall mpint_cmp, mpint_A, mpint_B |
128 | stdcall mpint_cmp, mpint_A, mpint_B |
125 | stdcall mpint_mod, mpint_A, mpint_B |
129 | stdcall mpint_mod, mpint_A, mpint_B |
Line 126... | Line -... | ||
126 | DEBUGF 1, "1936 mod 497\n" |
- | |
127 | stdcall mpint_print, mpint_A |
130 | DEBUGF 1, "mpint_mod(936, 497)\n" |
128 | 131 | stdcall mpint_print, mpint_A |
|
129 | stdcall mpint_zero, mpint_A |
132 | |
130 | mov dword[mpint_A+00], 32 |
133 | mov dword[mpint_A+00], 32 |
131 | mov dword[mpint_A+04], 0xCAFEBABE |
134 | mov dword[mpint_A+04], 0x11111111 |
132 | mov dword[mpint_A+08], 0xDEADBEEF |
135 | mov dword[mpint_A+08], 0x22222222 |
133 | mov dword[mpint_A+12], 0xCAFEBABE |
136 | mov dword[mpint_A+12], 0x33333333 |
134 | mov dword[mpint_A+16], 0xDEADBEEF |
137 | mov dword[mpint_A+16], 0x44444444 |
135 | mov dword[mpint_A+20], 0xCAFEBABE |
138 | mov dword[mpint_A+20], 0x55555555 |
136 | mov dword[mpint_A+24], 0xDEADBEEF |
- | |
- | 139 | mov dword[mpint_A+24], 0x88888888 |
|
137 | mov dword[mpint_A+28], 0xCAFEBABE |
140 | mov dword[mpint_A+28], 0xAAAAAAAA |
138 | mov dword[mpint_A+32], 0xDEADBEEF |
141 | mov dword[mpint_A+32], 0xCCCCCCCC |
- | 142 | ||
139 | stdcall mpint_zero, mpint_B |
143 | mov dword[mpint_B+0], 2 |
- | 144 | mov dword[mpint_B+4], 0x0100 |
|
140 | mov dword[mpint_B+0], 2 |
145 | DEBUGF 1, "mpint_print(A)\n" |
141 | mov dword[mpint_B+4], 0x0100 |
146 | stdcall mpint_print, mpint_A |
142 | stdcall mpint_print, mpint_A |
147 | DEBUGF 1, "mpint_print(B)\n" |
143 | stdcall mpint_print, mpint_B |
- | |
144 | DEBUGF 1, "mpint_mul by A*B\n" |
148 | stdcall mpint_print, mpint_B |
145 | stdcall mpint_mul, mpint_C, mpint_A, mpint_B |
149 | DEBUGF 1, "mpint_mul(C, A, B)\n" |
146 | stdcall mpint_length, mpint_C |
150 | stdcall mpint_mul, mpint_C, mpint_A, mpint_B |
147 | stdcall mpint_print, mpint_C |
151 | stdcall mpint_print, mpint_C |
148 | stdcall mpint_print, mpint_A |
152 | stdcall mpint_print, mpint_A |
149 | stdcall mpint_print, mpint_B |
- | |
150 | DEBUGF 1, "mpint_mul by B*A\n" |
153 | stdcall mpint_print, mpint_B |
Line 151... | Line 154... | ||
151 | stdcall mpint_mul, mpint_C, mpint_B, mpint_A |
154 | DEBUGF 1, "mpint_mul(C, B, A)\n" |
152 | stdcall mpint_length, mpint_C |
155 | stdcall mpint_mul, mpint_C, mpint_B, mpint_A |
Line 153... | Line -... | ||
153 | stdcall mpint_print, mpint_C |
- | |
154 | - | ||
155 | stdcall mpint_hob, mpint_C |
- | |
156 | DEBUGF 1, "mpint_hob: %u\n", eax |
156 | stdcall mpint_print, mpint_C |
157 | 157 | ||
158 | stdcall mpint_zero, mpint_A |
158 | stdcall mpint_hob, mpint_C |
159 | stdcall mpint_zero, mpint_B |
159 | DEBUGF 1, "mpint_hob(C): %u\n", eax |
160 | stdcall mpint_zero, mpint_C |
160 | |
161 | mov dword[mpint_A+0], 1 |
161 | mov dword[mpint_A+0], 1 |
162 | mov dword[mpint_A+4], 4 |
162 | mov dword[mpint_A+4], 3 |
163 | mov dword[mpint_B+0], 1 |
163 | mov dword[mpint_B+0], 1 |
164 | mov dword[mpint_B+4], 13 |
- | |
165 | mov dword[mpint_C+0], 2 |
164 | mov dword[mpint_B+4], 4 |
Line 166... | Line 165... | ||
166 | mov dword[mpint_C+4], 497 |
165 | mov dword[mpint_C+0], 2 |
Line 167... | Line 166... | ||
167 | stdcall mpint_modexp, mpint_D, mpint_A, mpint_B, mpint_C |
166 | mov dword[mpint_C+4], 5 |