1*37da2899SCharles.Forsyth #include "os.h" 2*37da2899SCharles.Forsyth #include <mp.h> 3*37da2899SCharles.Forsyth #include "dat.h" 4*37da2899SCharles.Forsyth 5*37da2899SCharles.Forsyth // convert a little endian byte array (least significant byte first) to an mpint 6*37da2899SCharles.Forsyth mpint* letomp(uchar * s,uint n,mpint * b)7*37da2899SCharles.Forsythletomp(uchar *s, uint n, mpint *b) 8*37da2899SCharles.Forsyth { 9*37da2899SCharles.Forsyth int i=0, m = 0; 10*37da2899SCharles.Forsyth mpdigit x=0; 11*37da2899SCharles.Forsyth 12*37da2899SCharles.Forsyth if(b == nil) 13*37da2899SCharles.Forsyth b = mpnew(0); 14*37da2899SCharles.Forsyth mpbits(b, 8*n); 15*37da2899SCharles.Forsyth for(; n > 0; n--){ 16*37da2899SCharles.Forsyth x |= ((mpdigit)(*s++)) << i; 17*37da2899SCharles.Forsyth i += 8; 18*37da2899SCharles.Forsyth if(i == Dbits){ 19*37da2899SCharles.Forsyth b->p[m++] = x; 20*37da2899SCharles.Forsyth i = 0; 21*37da2899SCharles.Forsyth x = 0; 22*37da2899SCharles.Forsyth } 23*37da2899SCharles.Forsyth } 24*37da2899SCharles.Forsyth if(i > 0) 25*37da2899SCharles.Forsyth b->p[m++] = x; 26*37da2899SCharles.Forsyth b->top = m; 27*37da2899SCharles.Forsyth return b; 28*37da2899SCharles.Forsyth } 29