if (n < 0) return -1;
if (n < 0 || bignum_bitcount(result->modulus) == 0) return -1;
int makekey(unsigned char *data, int len, struct RSAKey *result,	    unsigned char **keystr, int order){    unsigned char *p = data;    int i, n;    if (len < 4)	return -1;    if (result) {	result->bits = 0;	for (i = 0; i < 4; i++)	    result->bits = (result->bits << 8) + *p++;    } else	p += 4;    len -= 4;    /*     * order=0 means exponent then modulus (the keys sent by the     * server). order=1 means modulus then exponent (the keys     * stored in a keyfile).     */    if (order == 0) {	n = ssh1_read_bignum(p, len, result ? &result->exponent : NULL);	if (n < 0) return -1;	p += n;	len -= n;    }    n = ssh1_read_bignum(p, len, result ? &result->modulus : NULL);    if (n < 0) return -1;    if (result)	result->bytes = n - 2;    if (keystr)	*keystr = p + 2;    p += n;    len -= n;    if (order == 1) {	n = ssh1_read_bignum(p, len, result ? &result->exponent : NULL);	if (n < 0) return -1;	p += n;	len -= n;    }    return p - data;}