while (b[0] > 1 && b[b[0]] == 0) b[0]--;
static Bignum getmp(char **data, int *datalen) {    char *p;    int i, j, length;    Bignum b;    getstring(data, datalen, &p, &length);    if (!p)        return NULL;    if (p[0] & 0x80)        return NULL;                   /* negative mp */    b = newbn((length+1)/2);    for (i = 0; i < length; i++) {        j = length - 1 - i;        if (j & 1)            b[j/2+1] |= ((unsigned char)p[i]) << 8;        else            b[j/2+1] |= ((unsigned char)p[i]);    }    return b;}