~mdw
/
sgt
/
putty
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix Plink, the serial backend, and local-proxy support on Win98SE (at least),
[sgt/putty]
/
sshbn.c
diff --git
a/sshbn.c
b/sshbn.c
index
9742c4a
..
ba3d5b6
100644
(file)
--- a/
sshbn.c
+++ b/
sshbn.c
@@
-256,7
+256,7
@@
static void internal_mod(BignumInt *a, int alen,
for (k = mlen - 1; k >= 0; k--) {
t = MUL_WORD(q, m[k]);
t += c;
for (k = mlen - 1; k >= 0; k--) {
t = MUL_WORD(q, m[k]);
t += c;
- c =
t >> BIGNUM_INT_BITS
;
+ c =
(unsigned)(t >> BIGNUM_INT_BITS)
;
if ((BignumInt) t > a[i + k])
c++;
a[i + k] -= (BignumInt) t;
if ((BignumInt) t > a[i + k])
c++;
a[i + k] -= (BignumInt) t;
@@
-322,7
+322,7
@@
Bignum modpow(Bignum base_in, Bignum exp, Bignum mod)
i = mlen - base[0];
for (j = 0; j < i; j++)
n[j] = 0;
i = mlen - base[0];
for (j = 0; j < i; j++)
n[j] = 0;
- for (j = 0; j < base[0]; j++)
+ for (j = 0; j <
(int)
base[0]; j++)
n[i + j] = base[base[0] - j];
/* Allocate a and b of size 2*mlen. Set a = 1 */
n[i + j] = base[base[0] - j];
/* Allocate a and b of size 2*mlen. Set a = 1 */
@@
-335,7
+335,7
@@
Bignum modpow(Bignum base_in, Bignum exp, Bignum mod)
/* Skip leading zero bits of exp. */
i = 0;
j = BIGNUM_INT_BITS-1;
/* Skip leading zero bits of exp. */
i = 0;
j = BIGNUM_INT_BITS-1;
- while (i < exp[0] && (exp[exp[0] - i] & (1 << j)) == 0) {
+ while (i <
(int)
exp[0] && (exp[exp[0] - i] & (1 << j)) == 0) {
j--;
if (j < 0) {
i++;
j--;
if (j < 0) {
i++;
@@
-344,7
+344,7
@@
Bignum modpow(Bignum base_in, Bignum exp, Bignum mod)
}
/* Main computation */
}
/* Main computation */
- while (i < exp[0]) {
+ while (i <
(int)
exp[0]) {
while (j >= 0) {
internal_mul(a + mlen, a + mlen, b, mlen);
internal_mod(b, mlen * 2, m, mlen, NULL, 0);
while (j >= 0) {
internal_mul(a + mlen, a + mlen, b, mlen);
internal_mod(b, mlen * 2, m, mlen, NULL, 0);
@@
-435,7
+435,7
@@
Bignum modmul(Bignum p, Bignum q, Bignum mod)
i = pqlen - p[0];
for (j = 0; j < i; j++)
n[j] = 0;
i = pqlen - p[0];
for (j = 0; j < i; j++)
n[j] = 0;
- for (j = 0; j < p[0]; j++)
+ for (j = 0; j <
(int)
p[0]; j++)
n[i + j] = p[p[0] - j];
/* Allocate o of size pqlen, copy q to o */
n[i + j] = p[p[0] - j];
/* Allocate o of size pqlen, copy q to o */
@@
-443,7
+443,7
@@
Bignum modmul(Bignum p, Bignum q, Bignum mod)
i = pqlen - q[0];
for (j = 0; j < i; j++)
o[j] = 0;
i = pqlen - q[0];
for (j = 0; j < i; j++)
o[j] = 0;
- for (j = 0; j < q[0]; j++)
+ for (j = 0; j <
(int)
q[0]; j++)
o[i + j] = q[q[0] - j];
/* Allocate a of size 2*pqlen for result */
o[i + j] = q[q[0] - j];
/* Allocate a of size 2*pqlen for result */
@@
-527,7
+527,7
@@
static void bigdivmod(Bignum p, Bignum mod, Bignum result, Bignum quotient)
n = snewn(plen, BignumInt);
for (j = 0; j < plen; j++)
n[j] = 0;
n = snewn(plen, BignumInt);
for (j = 0; j < plen; j++)
n[j] = 0;
- for (j = 1; j <= p[0]; j++)
+ for (j = 1; j <=
(int)
p[0]; j++)
n[plen - j] = p[j];
/* Main computation */
n[plen - j] = p[j];
/* Main computation */
@@
-545,7
+545,7
@@
static void bigdivmod(Bignum p, Bignum mod, Bignum result, Bignum quotient)
/* Copy result to buffer */
if (result) {
/* Copy result to buffer */
if (result) {
- for (i = 1; i <= result[0]; i++) {
+ for (i = 1; i <=
(int)
result[0]; i++) {
int j = plen - i;
result[i] = j >= 0 ? n[j] : 0;
}
int j = plen - i;
result[i] = j >= 0 ? n[j] : 0;
}
@@
-566,7
+566,7
@@
static void bigdivmod(Bignum p, Bignum mod, Bignum result, Bignum quotient)
void decbn(Bignum bn)
{
int i = 1;
void decbn(Bignum bn)
{
int i = 1;
- while (i < bn[0] && bn[i] == 0)
+ while (i <
(int)
bn[0] && bn[i] == 0)
bn[i++] = BIGNUM_INT_MASK;
bn[i]--;
}
bn[i++] = BIGNUM_INT_MASK;
bn[i]--;
}
@@
-652,7
+652,7
@@
int ssh2_bignum_length(Bignum bn)
*/
int bignum_byte(Bignum bn, int i)
{
*/
int bignum_byte(Bignum bn, int i)
{
- if (i >=
BIGNUM_INT_BYTES * bn[0]
)
+ if (i >=
(int)(BIGNUM_INT_BYTES * bn[0])
)
return 0; /* beyond the end */
else
return (bn[i / BIGNUM_INT_BYTES + 1] >>
return 0; /* beyond the end */
else
return (bn[i / BIGNUM_INT_BYTES + 1] >>
@@
-664,7
+664,7
@@
int bignum_byte(Bignum bn, int i)
*/
int bignum_bit(Bignum bn, int i)
{
*/
int bignum_bit(Bignum bn, int i)
{
- if (i >=
BIGNUM_INT_BITS * bn[0]
)
+ if (i >=
(int)(BIGNUM_INT_BITS * bn[0])
)
return 0; /* beyond the end */
else
return (bn[i / BIGNUM_INT_BITS + 1] >> (i % BIGNUM_INT_BITS)) & 1;
return 0; /* beyond the end */
else
return (bn[i / BIGNUM_INT_BITS + 1] >> (i % BIGNUM_INT_BITS)) & 1;
@@
-675,7
+675,7
@@
int bignum_bit(Bignum bn, int i)
*/
void bignum_set_bit(Bignum bn, int bitnum, int value)
{
*/
void bignum_set_bit(Bignum bn, int bitnum, int value)
{
- if (bitnum >=
BIGNUM_INT_BITS * bn[0]
)
+ if (bitnum >=
(int)(BIGNUM_INT_BITS * bn[0])
)
abort(); /* beyond the end */
else {
int v = bitnum / BIGNUM_INT_BITS + 1;
abort(); /* beyond the end */
else {
int v = bitnum / BIGNUM_INT_BITS + 1;
@@
-742,9
+742,9
@@
Bignum bignum_rshift(Bignum a, int shift)
shiftbb = BIGNUM_INT_BITS - shiftb;
ai1 = a[shiftw + 1];
shiftbb = BIGNUM_INT_BITS - shiftb;
ai1 = a[shiftw + 1];
- for (i = 1; i <= ret[0]; i++) {
+ for (i = 1; i <=
(int)
ret[0]; i++) {
ai = ai1;
ai = ai1;
- ai1 = (i + shiftw + 1 <= a[0] ? a[i + shiftw + 1] : 0);
+ ai1 = (i + shiftw + 1 <=
(int)
a[0] ? a[i + shiftw + 1] : 0);
ret[i] = ((ai >> shiftb) | (ai1 << shiftbb)) & BIGNUM_INT_MASK;
}
}
ret[i] = ((ai >> shiftb) | (ai1 << shiftbb)) & BIGNUM_INT_MASK;
}
}
@@
-766,8
+766,8
@@
Bignum bigmuladd(Bignum a, Bignum b, Bignum addend)
/* mlen space for a, mlen space for b, 2*mlen for result */
workspace = snewn(mlen * 4, BignumInt);
for (i = 0; i < mlen; i++) {
/* mlen space for a, mlen space for b, 2*mlen for result */
workspace = snewn(mlen * 4, BignumInt);
for (i = 0; i < mlen; i++) {
- workspace[0 * mlen + i] = (mlen - i <= a[0] ? a[mlen - i] : 0);
- workspace[1 * mlen + i] = (mlen - i <= b[0] ? b[mlen - i] : 0);
+ workspace[0 * mlen + i] = (mlen - i <=
(int)
a[0] ? a[mlen - i] : 0);
+ workspace[1 * mlen + i] = (mlen - i <=
(int)
b[0] ? b[mlen - i] : 0);
}
internal_mul(workspace + 0 * mlen, workspace + 1 * mlen,
}
internal_mul(workspace + 0 * mlen, workspace + 1 * mlen,
@@
-775,11
+775,11
@@
Bignum bigmuladd(Bignum a, Bignum b, Bignum addend)
/* now just copy the result back */
rlen = alen + blen + 1;
/* now just copy the result back */
rlen = alen + blen + 1;
- if (addend && rlen <= addend[0])
+ if (addend && rlen <=
(int)
addend[0])
rlen = addend[0] + 1;
ret = newbn(rlen);
maxspot = 0;
rlen = addend[0] + 1;
ret = newbn(rlen);
maxspot = 0;
- for (i = 1; i <= ret[0]; i++) {
+ for (i = 1; i <=
(int)
ret[0]; i++) {
ret[i] = (i <= 2 * mlen ? workspace[4 * mlen - i] : 0);
if (ret[i] != 0)
maxspot = i;
ret[i] = (i <= 2 * mlen ? workspace[4 * mlen - i] : 0);
if (ret[i] != 0)
maxspot = i;
@@
-790,8
+790,8
@@
Bignum bigmuladd(Bignum a, Bignum b, Bignum addend)
if (addend) {
BignumDblInt carry = 0;
for (i = 1; i <= rlen; i++) {
if (addend) {
BignumDblInt carry = 0;
for (i = 1; i <= rlen; i++) {
- carry += (i <= ret[0] ? ret[i] : 0);
- carry += (i <= addend[0] ? addend[i] : 0);
+ carry += (i <=
(int)
ret[0] ? ret[i] : 0);
+ carry += (i <=
(int)
addend[0] ? addend[i] : 0);
ret[i] = (BignumInt) carry & BIGNUM_INT_MASK;
carry >>= BIGNUM_INT_BITS;
if (ret[i] != 0 && i > maxspot)
ret[i] = (BignumInt) carry & BIGNUM_INT_MASK;
carry >>= BIGNUM_INT_BITS;
if (ret[i] != 0 && i > maxspot)
@@
-862,9
+862,9
@@
Bignum bignum_add_long(Bignum number, unsigned long addendx)
int i, maxspot = 0;
BignumDblInt carry = 0, addend = addendx;
int i, maxspot = 0;
BignumDblInt carry = 0, addend = addendx;
- for (i = 1; i <= ret[0]; i++) {
+ for (i = 1; i <=
(int)
ret[0]; i++) {
carry += addend & BIGNUM_INT_MASK;
carry += addend & BIGNUM_INT_MASK;
- carry += (i <= number[0] ? number[i] : 0);
+ carry += (i <=
(int)
number[0] ? number[i] : 0);
addend >>= BIGNUM_INT_BITS;
ret[i] = (BignumInt) carry & BIGNUM_INT_MASK;
carry >>= BIGNUM_INT_BITS;
addend >>= BIGNUM_INT_BITS;
ret[i] = (BignumInt) carry & BIGNUM_INT_MASK;
carry >>= BIGNUM_INT_BITS;
@@
-995,9
+995,9
@@
Bignum modinv(Bignum number, Bignum modulus)
int maxspot = 1;
int i;
int maxspot = 1;
int i;
- for (i = 1; i <= newx[0]; i++) {
- BignumInt aword = (i <= modulus[0] ? modulus[i] : 0);
- BignumInt bword = (i <= x[0] ? x[i] : 0);
+ for (i = 1; i <=
(int)
newx[0]; i++) {
+ BignumInt aword = (i <=
(int)
modulus[0] ? modulus[i] : 0);
+ BignumInt bword = (i <=
(int)
x[0] ? x[i] : 0);
newx[i] = aword - bword - carry;
bword = ~bword;
carry = carry ? (newx[i] >= bword) : (newx[i] > bword);
newx[i] = aword - bword - carry;
bword = ~bword;
carry = carry ? (newx[i] >= bword) : (newx[i] > bword);
@@
-1054,7
+1054,7
@@
char *bignum_decimal(Bignum x)
* big-endian form of the number.
*/
workspace = snewn(x[0], BignumInt);
* big-endian form of the number.
*/
workspace = snewn(x[0], BignumInt);
- for (i = 0; i < x[0]; i++)
+ for (i = 0; i <
(int)
x[0]; i++)
workspace[i] = x[x[0] - i];
/*
workspace[i] = x[x[0] - i];
/*
@@
-1067,7
+1067,7
@@
char *bignum_decimal(Bignum x)
do {
iszero = 1;
carry = 0;
do {
iszero = 1;
carry = 0;
- for (i = 0; i < x[0]; i++) {
+ for (i = 0; i <
(int)
x[0]; i++) {
carry = (carry << BIGNUM_INT_BITS) + workspace[i];
workspace[i] = (BignumInt) (carry / 10);
if (workspace[i])
carry = (carry << BIGNUM_INT_BITS) + workspace[i];
workspace[i] = (BignumInt) (carry / 10);
if (workspace[i])