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