X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/8f203108d91b3aef5a379a6d49f6cb2a546eebbc..d93737294f8871743e5548e7f05ae465d28f84f4:/sshrsa.c diff --git a/sshrsa.c b/sshrsa.c index 3a017c29..d13f6cfe 100644 --- a/sshrsa.c +++ b/sshrsa.c @@ -264,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); @@ -323,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; }