X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/blobdiff_plain/4644b0ce3adad5efe574dc125bc3b0cd8f6c2aa7..70887be9ad821c22faf52c87597a707a8320a8cf:/sshrsa.c diff --git a/sshrsa.c b/sshrsa.c index 71e1d634..d13f6cfe 100644 --- a/sshrsa.c +++ b/sshrsa.c @@ -126,7 +126,8 @@ static void bigmod(unsigned short *a, unsigned short *m, int len) q--; t -= m1; r = (r + m0) & 0xffff; /* overflow? */ - if (r >= m0 && t > ((unsigned long) r << 16) + a[i+1]) + if (r >= (unsigned long)m0 && + t > ((unsigned long) r << 16) + a[i+1]) q--; } @@ -263,12 +264,12 @@ int makekey(unsigned char *data, struct RSAKey *result, for (i=1; i<=w; i++) bn[j][i] = 0; - for (i=0; ibytes; i++) { + for (i=key->bytes; i-- ;) { unsigned char byte = *p++; - if ((key->bytes-i) & 1) - b1[w-i/2] |= byte; + if (i & 1) + b1[1+i/2] |= byte<<8; else - b1[w-i/2] |= byte<<8; + b1[1+i/2] |= byte; } debug(b1); @@ -322,12 +323,12 @@ void rsaencrypt(unsigned char *data, int length, struct RSAKey *key) { debug(b2); p = data; - for (i=0; ibytes; i++) { + for (i=key->bytes; i-- ;) { unsigned char b; if (i & 1) - b = b2[w-i/2] & 0xFF; + b = b2[1+i/2] >> 8; else - b = b2[w-i/2] >> 8; + b = b2[1+i/2] & 0xFF; *p++ = b; }