| #include "os.h" | |
| #include <mp.h> | |
| #include "dat.h" | |
| /* convert a little endian byte array (least significant byte first) to an mpint */ | |
| mpint* | |
| letomp(uchar *s, uint n, mpint *b) | |
| { | |
| int i=0, m = 0; | |
| mpdigit x=0; | |
| if(b == nil) | |
| b = mpnew(0); | |
| mpbits(b, 8*n); | |
| for(; n > 0; n--){ | |
| x |= ((mpdigit)(*s++)) << i; | |
| i += 8; | |
| if(i == Dbits){ | |
| b->p[m++] = x; | |
| i = 0; | |
| x = 0; | |
| } | |
| } | |
| if(i > 0) | |
| b->p[m++] = x; | |
| b->top = m; | |
| return b; | |
| } |