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