00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _MP32_H
00029 #define _MP32_H
00030
00031 #include "beecrypt.h"
00032
00033 #if HAVE_STRING_H
00034 # include <string.h>
00035 #endif
00036 #include <stdio.h>
00037
00038 #include "mp32opt.h"
00039
00040 #ifdef __cplusplus
00041 extern "C" {
00042 #endif
00043
00046 BEECRYPTAPI
00047 void mp32copy(uint32 size, uint32* dst, const uint32* src)
00048 ;
00049 #ifndef ASM_MP32COPY
00050 #ifdef __LCLINT__
00051 # define mp32copy(size, dst, src) memmove(dst, src, ((unsigned)(size)) << 2)
00052 #else
00053 # define mp32copy(size, dst, src) memcpy(dst, src, (size) << 2)
00054 #endif
00055 #endif
00056
00059 BEECRYPTAPI
00060 void mp32move(uint32 size, uint32* dst, const uint32* src)
00061 ;
00062 #ifndef ASM_MP32MOVE
00063 #ifdef __LCLINT__
00064 # define mp32move(size, dst, src) memmove(dst, src, ((unsigned)(size)) << 2)
00065 #else
00066 # define mp32move(size, dst, src) memmove(dst, src, (size) << 2)
00067 #endif
00068 #endif
00069
00072 BEECRYPTAPI
00073 void mp32zero(uint32 xsize, uint32* xdata)
00074 ;
00075
00078 BEECRYPTAPI
00079 void mp32fill(uint32 xsize, uint32* xdata, uint32 val)
00080 ;
00081
00084 BEECRYPTAPI
00085 int mp32odd (uint32 xsize, const uint32* xdata)
00086 ;
00087
00090 BEECRYPTAPI
00091 int mp32even(uint32 xsize, const uint32* xdata)
00092 ;
00093
00096 BEECRYPTAPI
00097 int mp32z (uint32 xsize, const uint32* xdata)
00098 ;
00099
00102
00103 BEECRYPTAPI
00104 int mp32nz (uint32 xsize, const uint32* xdata)
00105 ;
00106
00107
00110 BEECRYPTAPI
00111 int mp32eq (uint32 size, const uint32* xdata, const uint32* ydata)
00112 ;
00113
00116
00117 BEECRYPTAPI
00118 int mp32ne (uint32 size, const uint32* xdata, const uint32* ydata)
00119 ;
00120
00121
00124
00125 BEECRYPTAPI
00126 int mp32gt (uint32 size, const uint32* xdata, const uint32* ydata)
00127 ;
00128
00129
00132
00133 BEECRYPTAPI
00134 int mp32lt (uint32 size, const uint32* xdata, const uint32* ydata)
00135 ;
00136
00137
00140 BEECRYPTAPI
00141 int mp32ge (uint32 size, const uint32* xdata, const uint32* ydata)
00142 ;
00143
00146 BEECRYPTAPI
00147 int mp32le (uint32 size, const uint32* xdata, const uint32* ydata)
00148 ;
00149
00152 BEECRYPTAPI
00153 int mp32eqx(uint32 xsize, const uint32* xdata, uint32 ysize, const uint32* ydata)
00154 ;
00155
00158 BEECRYPTAPI
00159 int mp32nex(uint32 xsize, const uint32* xdata, uint32 ysize, const uint32* ydata)
00160 ;
00161
00164 BEECRYPTAPI
00165 int mp32gtx(uint32 xsize, const uint32* xdata, uint32 ysize, const uint32* ydata)
00166 ;
00167
00170 BEECRYPTAPI
00171 int mp32ltx(uint32 xsize, const uint32* xdata, uint32 ysize, const uint32* ydata)
00172 ;
00173
00176 BEECRYPTAPI
00177 int mp32gex(uint32 xsize, const uint32* xdata, uint32 ysize, const uint32* ydata)
00178 ;
00179
00182 BEECRYPTAPI
00183 int mp32lex(uint32 xsize, const uint32* xdata, uint32 ysize, const uint32* ydata)
00184 ;
00185
00188 BEECRYPTAPI
00189 int mp32isone(uint32 xsize, const uint32* xdata)
00190 ;
00191
00194 BEECRYPTAPI
00195 int mp32istwo(uint32 xsize, const uint32* xdata)
00196 ;
00197
00200 BEECRYPTAPI
00201 int mp32leone(uint32 xsize, const uint32* xdata)
00202 ;
00203
00206 BEECRYPTAPI
00207 int mp32eqmone(uint32 size, const uint32* xdata, const uint32* ydata)
00208 ;
00209
00212 BEECRYPTAPI
00213 int mp32msbset(uint32 xsize, const uint32* xdata)
00214 ;
00215
00218 BEECRYPTAPI
00219 int mp32lsbset(uint32 xsize, const uint32* xdata)
00220 ;
00221
00224 BEECRYPTAPI
00225 void mp32setmsb(uint32 xsize, uint32* xdata)
00226 ;
00227
00230 BEECRYPTAPI
00231 void mp32setlsb(uint32 xsize, uint32* xdata)
00232 ;
00233
00236 BEECRYPTAPI
00237 void mp32clrmsb(uint32 xsize, uint32* xdata)
00238 ;
00239
00242 BEECRYPTAPI
00243 void mp32clrlsb(uint32 xsize, uint32* xdata)
00244 ;
00245
00248 BEECRYPTAPI
00249 void mp32xor(uint32 size, uint32* xdata, const uint32* ydata)
00250 ;
00251
00254
00255 BEECRYPTAPI
00256 void mp32not(uint32 xsize, uint32* xdata)
00257 ;
00258
00259
00262 BEECRYPTAPI
00263 void mp32setw(uint32 xsize, uint32* xdata, uint32 y)
00264 ;
00265
00268 BEECRYPTAPI
00269 void mp32setx(uint32 xsize, uint32* xdata, uint32 ysize, const uint32* ydata)
00270 ;
00271
00274 BEECRYPTAPI
00275 uint32 mp32addw(uint32 xsize, uint32* xdata, uint32 y)
00276 ;
00277
00280 BEECRYPTAPI
00281 uint32 mp32add (uint32 size, uint32* xdata, const uint32* ydata)
00282 ;
00283
00286 BEECRYPTAPI
00287 uint32 mp32addx(uint32 xsize, uint32* xdata, uint32 ysize, const uint32* ydata)
00288 ;
00289
00292 BEECRYPTAPI
00293 uint32 mp32subw(uint32 xsize, uint32* xdata, uint32 y)
00294 ;
00295
00298 BEECRYPTAPI
00299 uint32 mp32sub (uint32 size, uint32* xdata, const uint32* ydata)
00300 ;
00301
00304 BEECRYPTAPI
00305 uint32 mp32subx(uint32 xsize, uint32* xdata, uint32 ysize, const uint32* ydata)
00306 ;
00307
00310 BEECRYPTAPI
00311 uint32 mp32multwo(uint32 xsize, uint32* xdata)
00312 ;
00313
00316 BEECRYPTAPI
00317 void mp32neg(uint32 xsize, uint32* xdata)
00318 ;
00319
00322 BEECRYPTAPI
00323 uint32 mp32size(uint32 xsize, const uint32* xdata)
00324 ;
00325
00328 BEECRYPTAPI
00329 uint32 mp32mszcnt(uint32 xsize, const uint32* xdata)
00330 ;
00331
00334
00335 BEECRYPTAPI
00336 uint32 mp32lszcnt(uint32 xsize, const uint32* xdata)
00337 ;
00338
00339
00342
00343 BEECRYPTAPI
00344 void mp32lshift(uint32 xsize, uint32* xdata, uint32 count)
00345 ;
00346
00347
00350 BEECRYPTAPI
00351 void mp32rshift(uint32 xsize, uint32* xdata, uint32 count)
00352 ;
00353
00356 BEECRYPTAPI
00357 uint32 mp32rshiftlsz(uint32 xsize, uint32* xdata)
00358 ;
00359
00362 BEECRYPTAPI
00363 uint32 mp32norm(uint32 xsize, uint32* xdata)
00364 ;
00365
00368 BEECRYPTAPI
00369 uint32 mp32divpowtwo(uint32 xsize, uint32* xdata)
00370 ;
00371
00374 BEECRYPTAPI
00375 void mp32divtwo (uint32 xsize, uint32* xdata)
00376 ;
00377
00380 BEECRYPTAPI
00381 void mp32sdivtwo(uint32 xsize, uint32* xdata)
00382 ;
00383
00386 BEECRYPTAPI
00387 uint32 mp32setmul (uint32 size, uint32* result, const uint32* xdata, uint32 y)
00388 ;
00389
00392 BEECRYPTAPI
00393 uint32 mp32addmul (uint32 size, uint32* result, const uint32* xdata, uint32 y)
00394 ;
00395
00398
00399 BEECRYPTAPI
00400 uint32 mp32addsqrtrc(uint32 size, uint32* result, const uint32* xdata)
00401 ;
00402
00403
00406 BEECRYPTAPI
00407 void mp32mul( uint32* result, uint32 xsize, const uint32* xdata, uint32 ysize, const uint32* ydata)
00408 ;
00409
00412 BEECRYPTAPI
00413 void mp32sqr( uint32* result, uint32 xsize, const uint32* xdata)
00414 ;
00415
00418 BEECRYPTAPI
00419 void mp32gcd_w(uint32 size, const uint32* xdata, const uint32* ydata, uint32* result, uint32* wksp)
00420 ;
00421
00424 BEECRYPTAPI
00425 uint32 mp32nmodw( uint32* result, uint32 xsize, const uint32* xdata, uint32 y, uint32* wksp)
00426 ;
00427
00430 BEECRYPTAPI
00431 void mp32nmod( uint32* result, uint32 xsize, const uint32* xdata, uint32 ysize, const uint32* ydata, uint32* wksp)
00432 ;
00433
00436 BEECRYPTAPI
00437 void mp32ndivmod( uint32* result, uint32 xsize, const uint32* xdata, uint32 ysize, const uint32* ydata, uint32* wksp)
00438 ;
00439
00442 BEECRYPTAPI
00443 void mp32print( FILE * fp, uint32 xsize, const uint32* xdata)
00444
00445 ;
00446
00449 BEECRYPTAPI
00450 void mp32println( FILE * fp, uint32 xsize, const uint32* xdata)
00451
00452 ;
00453
00454 #ifdef __cplusplus
00455 }
00456 #endif
00457
00458 #endif