00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _MP32BARRETT_H
00029 #define _MP32BARRETT_H
00030
00031 #include "beecrypt.h"
00032 #include "mp32number.h"
00033
00034 typedef struct
00035 {
00036 uint32 size;
00037
00038 uint32* modl;
00039
00040 uint32* mu;
00041 } mp32barrett;
00042
00043 #ifdef __cplusplus
00044 extern "C" {
00045 #endif
00046
00049 BEECRYPTAPI
00050 void mp32bzero( mp32barrett* b)
00051 ;
00052
00055 BEECRYPTAPI
00056 void mp32binit(mp32barrett* b, uint32 size)
00057 ;
00058
00061 BEECRYPTAPI
00062 void mp32bfree( mp32barrett* b)
00063
00064
00065 ;
00066
00069 BEECRYPTAPI
00070 void mp32bcopy(mp32barrett* b, const mp32barrett* copy)
00071 ;
00072
00075 BEECRYPTAPI
00076 void mp32bset(mp32barrett* b, uint32 size, const uint32* data)
00077 ;
00078
00081 BEECRYPTAPI
00082 void mp32bsethex(mp32barrett* b, const char* hex)
00083 ;
00084
00087 BEECRYPTAPI
00088 void mp32bsubone(const mp32barrett* b, uint32* result)
00089 ;
00090
00093 BEECRYPTAPI
00094 void mp32bneg(const mp32barrett* b, const uint32* xdata, uint32* result)
00095 ;
00096
00099 BEECRYPTAPI
00100 void mp32bmu_w(mp32barrett* b, uint32* wksp)
00101 ;
00102
00105 BEECRYPTAPI
00106 void mp32brnd_w (const mp32barrett* b, randomGeneratorContext* rc, uint32* result, uint32* wksp)
00107 ;
00108
00111
00112 BEECRYPTAPI
00113 void mp32brndodd_w(const mp32barrett* b, randomGeneratorContext* rc, uint32* result, uint32* wksp)
00114 ;
00115
00116
00119 BEECRYPTAPI
00120 void mp32brndinv_w(const mp32barrett* b, randomGeneratorContext* rc, uint32* result, uint32* inverse, uint32* wksp)
00121 ;
00122
00125 BEECRYPTAPI
00126 void mp32bmod_w(const mp32barrett* b, const uint32* xdata, uint32* result, uint32* wksp)
00127 ;
00128
00131 BEECRYPTAPI
00132 void mp32baddmod_w(const mp32barrett* b, uint32 xsize, const uint32* xdata, uint32 ysize, const uint32* ydata, uint32* result, uint32* wksp)
00133 ;
00134
00137 BEECRYPTAPI
00138 void mp32bsubmod_w(const mp32barrett* b, uint32 xsize, const uint32* xdata, uint32 ysize, const uint32* ydata, uint32* result, uint32* wksp)
00139 ;
00140
00143 BEECRYPTAPI
00144 void mp32bmulmod_w(const mp32barrett* b, uint32 xsize, const uint32* xdata, uint32 ysize, const uint32* ydata, uint32* result, uint32* wksp)
00145 ;
00146
00149 BEECRYPTAPI
00150 void mp32bsqrmod_w(const mp32barrett* b, uint32 xsize, const uint32* xdata, uint32* result, uint32* wksp)
00151 ;
00152
00155 BEECRYPTAPI
00156 void mp32bpowmod_w(const mp32barrett* b, uint32 xsize, const uint32* xdata, uint32 psize, const uint32* pdata, uint32* result, uint32* wksp)
00157 ;
00158
00161
00162 BEECRYPTAPI
00163 void mp32bpowmodsld_w(const mp32barrett* b, const uint32* slide, uint32 psize, const uint32* pdata, uint32* result, uint32* wksp)
00164
00165 ;
00166
00167
00170 BEECRYPTAPI
00171 void mp32btwopowmod_w(const mp32barrett* b, uint32 psize, const uint32* pdata, uint32* result, uint32* wksp)
00172 ;
00173
00176 BEECRYPTAPI
00177 int mp32binv_w(const mp32barrett* b, uint32 xsize, const uint32* xdata, uint32* result, uint32* wksp)
00178 ;
00179
00180 #ifdef NOTYET
00181
00185 BEECRYPTAPI
00186 void mp32bsm2powmod(const mp32barrett* b, const uint32*, const uint32*, const uint32*, const uint32*);
00187
00190 BEECRYPTAPI
00191 void mp32bsm3powmod(const mp32barrett* b, const uint32*, const uint32*, const uint32*, const uint32*, const uint32*, const uint32*);
00192 #endif
00193
00196 BEECRYPTAPI
00197 int mp32bpprime_w(const mp32barrett* b, randomGeneratorContext* rc, int t, uint32* wksp)
00198 ;
00199
00203 BEECRYPTAPI
00204 void mp32bnrnd(const mp32barrett* b, randomGeneratorContext* rc, mp32number* result)
00205 ;
00206
00210 BEECRYPTAPI
00211 void mp32bnmulmod(const mp32barrett* b, const mp32number* x, const mp32number* y, mp32number* result)
00212 ;
00213
00217 BEECRYPTAPI
00218 void mp32bnsqrmod(const mp32barrett* b, const mp32number* x, mp32number* result)
00219 ;
00220
00224 BEECRYPTAPI
00225 void mp32bnpowmod (const mp32barrett* b, const mp32number* x, const mp32number* pow, mp32number* y)
00226 ;
00227
00231 BEECRYPTAPI
00232 void mp32bnpowmodsld(const mp32barrett* b, const uint32* slide, const mp32number* pow, mp32number* y)
00233 ;
00234
00235 #ifdef __cplusplus
00236 }
00237 #endif
00238
00239 #endif