Changes needed for Tandem NSK, supplied by Scott Uroff (scott@xypro.com).
Fix warnings with BIO_dump_indent().
This commit is contained in:
3
CHANGES
3
CHANGES
@@ -4,6 +4,9 @@
|
|||||||
|
|
||||||
Changes between 0.9.5a and 0.9.6 [xx XXX 2000]
|
Changes between 0.9.5a and 0.9.6 [xx XXX 2000]
|
||||||
|
|
||||||
|
*) Changes needed for Tandem NSK.
|
||||||
|
[Scott Uroff scott@xpro.com]
|
||||||
|
|
||||||
*) Fix SSL 2.0 rollback checking: Due to an off-by-one error in
|
*) Fix SSL 2.0 rollback checking: Due to an off-by-one error in
|
||||||
RSA_padding_check_SSLv23(), special padding was never detected
|
RSA_padding_check_SSLv23(), special padding was never detected
|
||||||
and thus the SSL 3.0/TLS 1.0 countermeasure against protocol
|
and thus the SSL 3.0/TLS 1.0 countermeasure against protocol
|
||||||
|
|||||||
@@ -292,7 +292,7 @@ static int asn1_parse2(BIO *bp, unsigned char **pp, long length, int offset,
|
|||||||
if (BIO_write(bp,"\n",1) <= 0)
|
if (BIO_write(bp,"\n",1) <= 0)
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
if (BIO_dump_indent(bp,opp,
|
if (BIO_dump_indent(bp,(char *)opp,
|
||||||
((dump == -1 || dump > os->length)?os->length:dump),
|
((dump == -1 || dump > os->length)?os->length:dump),
|
||||||
dump_indent) <= 0)
|
dump_indent) <= 0)
|
||||||
goto end;
|
goto end;
|
||||||
@@ -373,7 +373,7 @@ static int asn1_parse2(BIO *bp, unsigned char **pp, long length, int offset,
|
|||||||
if (BIO_write(bp,"\n",1) <= 0)
|
if (BIO_write(bp,"\n",1) <= 0)
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
if (BIO_dump_indent(bp,p,
|
if (BIO_dump_indent(bp,(char *)p,
|
||||||
((dump == -1 || dump > len)?len:dump),
|
((dump == -1 || dump > len)?len:dump),
|
||||||
dump_indent) <= 0)
|
dump_indent) <= 0)
|
||||||
goto end;
|
goto end;
|
||||||
|
|||||||
@@ -233,7 +233,7 @@ typedef struct bignum_st
|
|||||||
BN_ULONG *d; /* Pointer to an array of 'BN_BITS2' bit chunks. */
|
BN_ULONG *d; /* Pointer to an array of 'BN_BITS2' bit chunks. */
|
||||||
int top; /* Index of last used d +1. */
|
int top; /* Index of last used d +1. */
|
||||||
/* The next are internal book keeping for bn_expand. */
|
/* The next are internal book keeping for bn_expand. */
|
||||||
int max; /* Size of the d array. */
|
int dmax; /* Size of the d array. */
|
||||||
int neg; /* one if the number is negative */
|
int neg; /* one if the number is negative */
|
||||||
int flags;
|
int flags;
|
||||||
} BIGNUM;
|
} BIGNUM;
|
||||||
@@ -435,9 +435,9 @@ int BN_div_recp(BIGNUM *dv, BIGNUM *rem, BIGNUM *m,
|
|||||||
|
|
||||||
/* library internal functions */
|
/* library internal functions */
|
||||||
|
|
||||||
#define bn_expand(a,bits) ((((((bits+BN_BITS2-1))/BN_BITS2)) <= (a)->max)?\
|
#define bn_expand(a,bits) ((((((bits+BN_BITS2-1))/BN_BITS2)) <= (a)->dmax)?\
|
||||||
(a):bn_expand2((a),(bits)/BN_BITS2+1))
|
(a):bn_expand2((a),(bits)/BN_BITS2+1))
|
||||||
#define bn_wexpand(a,words) (((words) <= (a)->max)?(a):bn_expand2((a),(words)))
|
#define bn_wexpand(a,words) (((words) <= (a)->dmax)?(a):bn_expand2((a),(words)))
|
||||||
BIGNUM *bn_expand2(BIGNUM *a, int words);
|
BIGNUM *bn_expand2(BIGNUM *a, int words);
|
||||||
|
|
||||||
#define bn_fix_top(a) \
|
#define bn_fix_top(a) \
|
||||||
|
|||||||
@@ -205,7 +205,7 @@ int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor,
|
|||||||
BN_init(&wnum);
|
BN_init(&wnum);
|
||||||
wnum.d= &(snum->d[loop]);
|
wnum.d= &(snum->d[loop]);
|
||||||
wnum.top= div_n;
|
wnum.top= div_n;
|
||||||
wnum.max= snum->max+1; /* a bit of a lie */
|
wnum.dmax= snum->dmax+1; /* a bit of a lie */
|
||||||
|
|
||||||
/* Get the top 2 words of sdiv */
|
/* Get the top 2 words of sdiv */
|
||||||
/* i=sdiv->top; */
|
/* i=sdiv->top; */
|
||||||
|
|||||||
@@ -262,7 +262,7 @@ void BN_clear_free(BIGNUM *a)
|
|||||||
if (a == NULL) return;
|
if (a == NULL) return;
|
||||||
if (a->d != NULL)
|
if (a->d != NULL)
|
||||||
{
|
{
|
||||||
memset(a->d,0,a->max*sizeof(a->d[0]));
|
memset(a->d,0,a->dmax*sizeof(a->d[0]));
|
||||||
if (!(BN_get_flags(a,BN_FLG_STATIC_DATA)))
|
if (!(BN_get_flags(a,BN_FLG_STATIC_DATA)))
|
||||||
OPENSSL_free(a->d);
|
OPENSSL_free(a->d);
|
||||||
}
|
}
|
||||||
@@ -299,7 +299,7 @@ BIGNUM *BN_new(void)
|
|||||||
ret->flags=BN_FLG_MALLOCED;
|
ret->flags=BN_FLG_MALLOCED;
|
||||||
ret->top=0;
|
ret->top=0;
|
||||||
ret->neg=0;
|
ret->neg=0;
|
||||||
ret->max=0;
|
ret->dmax=0;
|
||||||
ret->d=NULL;
|
ret->d=NULL;
|
||||||
return(ret);
|
return(ret);
|
||||||
}
|
}
|
||||||
@@ -317,7 +317,7 @@ BIGNUM *bn_expand2(BIGNUM *b, int words)
|
|||||||
|
|
||||||
bn_check_top(b);
|
bn_check_top(b);
|
||||||
|
|
||||||
if (words > b->max)
|
if (words > b->dmax)
|
||||||
{
|
{
|
||||||
bn_check_top(b);
|
bn_check_top(b);
|
||||||
if (BN_get_flags(b,BN_FLG_STATIC_DATA))
|
if (BN_get_flags(b,BN_FLG_STATIC_DATA))
|
||||||
@@ -427,17 +427,17 @@ BIGNUM *bn_expand2(BIGNUM *b, int words)
|
|||||||
}
|
}
|
||||||
|
|
||||||
b->d=a;
|
b->d=a;
|
||||||
b->max=words;
|
b->dmax=words;
|
||||||
|
|
||||||
/* Now need to zero any data between b->top and b->max */
|
/* Now need to zero any data between b->top and b->max */
|
||||||
|
|
||||||
A= &(b->d[b->top]);
|
A= &(b->d[b->top]);
|
||||||
for (i=(b->max - b->top)>>3; i>0; i--,A+=8)
|
for (i=(b->dmax - b->top)>>3; i>0; i--,A+=8)
|
||||||
{
|
{
|
||||||
A[0]=0; A[1]=0; A[2]=0; A[3]=0;
|
A[0]=0; A[1]=0; A[2]=0; A[3]=0;
|
||||||
A[4]=0; A[5]=0; A[6]=0; A[7]=0;
|
A[4]=0; A[5]=0; A[6]=0; A[7]=0;
|
||||||
}
|
}
|
||||||
for (i=(b->max - b->top)&7; i>0; i--,A++)
|
for (i=(b->dmax - b->top)&7; i>0; i--,A++)
|
||||||
A[0]=0;
|
A[0]=0;
|
||||||
#else
|
#else
|
||||||
memset(A,0,sizeof(BN_ULONG)*(words+1));
|
memset(A,0,sizeof(BN_ULONG)*(words+1));
|
||||||
@@ -508,7 +508,7 @@ BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b)
|
|||||||
void BN_clear(BIGNUM *a)
|
void BN_clear(BIGNUM *a)
|
||||||
{
|
{
|
||||||
if (a->d != NULL)
|
if (a->d != NULL)
|
||||||
memset(a->d,0,a->max*sizeof(a->d[0]));
|
memset(a->d,0,a->dmax*sizeof(a->d[0]));
|
||||||
a->top=0;
|
a->top=0;
|
||||||
a->neg=0;
|
a->neg=0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -157,7 +157,22 @@ int BN_from_montgomery(BIGNUM *ret, BIGNUM *a, BN_MONT_CTX *mont,
|
|||||||
#endif
|
#endif
|
||||||
for (i=0; i<nl; i++)
|
for (i=0; i<nl; i++)
|
||||||
{
|
{
|
||||||
|
#ifdef __TANDEM
|
||||||
|
{
|
||||||
|
long long t1;
|
||||||
|
long long t2;
|
||||||
|
long long t3;
|
||||||
|
t1 = rp[0] * (n0 & 0177777);
|
||||||
|
t2 = 037777600000l;
|
||||||
|
t2 = n0 & t2;
|
||||||
|
t3 = rp[0] & 0177777;
|
||||||
|
t2 = (t3 * t2) & BN_MASK2;
|
||||||
|
t1 = t1 + t2;
|
||||||
|
v=bn_mul_add_words(rp,np,nl,(BN_ULONG) t1);
|
||||||
|
}
|
||||||
|
#else
|
||||||
v=bn_mul_add_words(rp,np,nl,(rp[0]*n0)&BN_MASK2);
|
v=bn_mul_add_words(rp,np,nl,(rp[0]*n0)&BN_MASK2);
|
||||||
|
#endif
|
||||||
nrp++;
|
nrp++;
|
||||||
rp++;
|
rp++;
|
||||||
if (((nrp[-1]+=v)&BN_MASK2) >= v)
|
if (((nrp[-1]+=v)&BN_MASK2) >= v)
|
||||||
@@ -284,7 +299,7 @@ int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod, BN_CTX *ctx)
|
|||||||
buf[1]=0;
|
buf[1]=0;
|
||||||
tmod.d=buf;
|
tmod.d=buf;
|
||||||
tmod.top=1;
|
tmod.top=1;
|
||||||
tmod.max=2;
|
tmod.dmax=2;
|
||||||
tmod.neg=mod->neg;
|
tmod.neg=mod->neg;
|
||||||
/* Ri = R^-1 mod N*/
|
/* Ri = R^-1 mod N*/
|
||||||
if ((BN_mod_inverse(&Ri,R,&tmod,ctx)) == NULL)
|
if ((BN_mod_inverse(&Ri,R,&tmod,ctx)) == NULL)
|
||||||
|
|||||||
Reference in New Issue
Block a user