bytes = bignum_bitcount(rsa->modulus) / 8;
bytes = (bignum_bitcount(rsa->modulus)+7) / 8;
static int rsa2_verifysig(void *key, char *sig, int siglen,			  char *data, int datalen){    struct RSAKey *rsa = (struct RSAKey *) key;    Bignum in, out;    char *p;    int slen;    int bytes, i, j, ret;    unsigned char hash[20];    getstring(&sig, &siglen, &p, &slen);    if (!p || slen != 7 || memcmp(p, "ssh-rsa", 7)) {	return 0;    }    in = getmp(&sig, &siglen);    out = modpow(in, rsa->exponent, rsa->modulus);    freebn(in);    ret = 1;    bytes = bignum_bitcount(rsa->modulus) / 8;    /* Top (partial) byte should be zero. */    if (bignum_byte(out, bytes - 1) != 0)	ret = 0;    /* First whole byte should be 1. */    if (bignum_byte(out, bytes - 2) != 1)	ret = 0;    /* Most of the rest should be FF. */    for (i = bytes - 3; i >= 20 + ASN1_LEN; i--) {	if (bignum_byte(out, i) != 0xFF)	    ret = 0;    }    /* Then we expect to see the asn1_weird_stuff. */    for (i = 20 + ASN1_LEN - 1, j = 0; i >= 20; i--, j++) {	if (bignum_byte(out, i) != asn1_weird_stuff[j])	    ret = 0;    }    /* Finally, we expect to see the SHA-1 hash of the signed data. */    SHA_Simple(data, datalen, hash);    for (i = 19, j = 0; i >= 0; i--, j++) {	if (bignum_byte(out, i) != hash[j])	    ret = 0;    }    freebn(out);    return ret;}