projects
/
openssl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Due to recent debugging bursts, openssl should be more or less solid
[openssl.git]
/
crypto
/
bn
/
bn_print.c
diff --git
a/crypto/bn/bn_print.c
b/crypto/bn/bn_print.c
index 2bcc11c852f7ca4e422f934825653b1e009c5b7a..4bc51d3033b92b849da4c031142ae4d178386280 100644
(file)
--- a/
crypto/bn/bn_print.c
+++ b/
crypto/bn/bn_print.c
@@
-59,20
+59,19
@@
#include <stdio.h>
#include <ctype.h>
#include "cryptlib.h"
#include <stdio.h>
#include <ctype.h>
#include "cryptlib.h"
-#include
"buffer.h"
+#include
<openssl/buffer.h>
#include "bn_lcl.h"
#include "bn_lcl.h"
-static char *Hex="0123456789ABCDEF";
+static c
onst c
har *Hex="0123456789ABCDEF";
-/* Must 'Free' the returned data */
-char *BN_bn2hex(a)
-BIGNUM *a;
+/* Must 'OPENSSL_free' the returned data */
+char *BN_bn2hex(const BIGNUM *a)
{
int i,j,v,z=0;
char *buf;
char *p;
{
int i,j,v,z=0;
char *buf;
char *p;
- buf=(char *)
M
alloc(a->top*BN_BYTES*2+2);
+ buf=(char *)
OPENSSL_m
alloc(a->top*BN_BYTES*2+2);
if (buf == NULL)
{
BNerr(BN_F_BN_BN2HEX,ERR_R_MALLOC_FAILURE);
if (buf == NULL)
{
BNerr(BN_F_BN_BN2HEX,ERR_R_MALLOC_FAILURE);
@@
-80,7
+79,7
@@
BIGNUM *a;
}
p=buf;
if (a->neg) *(p++)='-';
}
p=buf;
if (a->neg) *(p++)='-';
- if (
a->top == 0
) *(p++)='0';
+ if (
BN_is_zero(a)
) *(p++)='0';
for (i=a->top-1; i >=0; i--)
{
for (j=BN_BITS2-8; j >= 0; j-=8)
for (i=a->top-1; i >=0; i--)
{
for (j=BN_BITS2-8; j >= 0; j-=8)
@@
-100,9
+99,8
@@
err:
return(buf);
}
return(buf);
}
-/* Must 'Free' the returned data */
-char *BN_bn2dec(a)
-BIGNUM *a;
+/* Must 'OPENSSL_free' the returned data */
+char *BN_bn2dec(const BIGNUM *a)
{
int i=0,num;
char *buf=NULL;
{
int i=0,num;
char *buf=NULL;
@@
-112,8
+110,8
@@
BIGNUM *a;
i=BN_num_bits(a)*3;
num=(i/10+i/1000+3)+1;
i=BN_num_bits(a)*3;
num=(i/10+i/1000+3)+1;
- bn_data=(BN_ULONG *)
M
alloc((num/BN_DEC_NUM+1)*sizeof(BN_ULONG));
- buf=(char *)
M
alloc(num+3);
+ bn_data=(BN_ULONG *)
OPENSSL_m
alloc((num/BN_DEC_NUM+1)*sizeof(BN_ULONG));
+ buf=(char *)
OPENSSL_m
alloc(num+3);
if ((buf == NULL) || (bn_data == NULL))
{
BNerr(BN_F_BN_BN2DEC,ERR_R_MALLOC_FAILURE);
if ((buf == NULL) || (bn_data == NULL))
{
BNerr(BN_F_BN_BN2DEC,ERR_R_MALLOC_FAILURE);
@@
-124,7
+122,7
@@
BIGNUM *a;
p=buf;
lp=bn_data;
if (t->neg) *(p++)='-';
p=buf;
lp=bn_data;
if (t->neg) *(p++)='-';
- if (
t->top == 0
)
+ if (
BN_is_zero(t)
)
{
*(p++)='0';
*(p++)='\0';
{
*(p++)='0';
*(p++)='\0';
@@
-139,7
+137,7
@@
BIGNUM *a;
}
lp--;
/* We now have a series of blocks, BN_DEC_NUM chars
}
lp--;
/* We now have a series of blocks, BN_DEC_NUM chars
- * in length, where the last one needs trucation.
+ * in length, where the last one needs tru
n
cation.
* The blocks need to be reversed in order. */
sprintf(p,BN_DEC_FMT1,*lp);
while (*p) p++;
* The blocks need to be reversed in order. */
sprintf(p,BN_DEC_FMT1,*lp);
while (*p) p++;
@@
-151,14
+149,12
@@
BIGNUM *a;
}
}
err:
}
}
err:
- if (bn_data != NULL)
F
ree(bn_data);
+ if (bn_data != NULL)
OPENSSL_f
ree(bn_data);
if (t != NULL) BN_free(t);
return(buf);
}
if (t != NULL) BN_free(t);
return(buf);
}
-int BN_hex2bn(bn,a)
-BIGNUM **bn;
-char *a;
+int BN_hex2bn(BIGNUM **bn, const char *a)
{
BIGNUM *ret=NULL;
BN_ULONG l=0;
{
BIGNUM *ret=NULL;
BN_ULONG l=0;
@@
-169,13
+165,13
@@
char *a;
if (*a == '-') { neg=1; a++; }
if (*a == '-') { neg=1; a++; }
- for (i=0; isxdigit(a[i]); i++)
+ for (i=0; isxdigit(
(unsigned char)
a[i]); i++)
;
num=i+neg;
if (bn == NULL) return(num);
;
num=i+neg;
if (bn == NULL) return(num);
- /* a is the start of the hex dig
e
ts, and it is 'i' long */
+ /* a is the start of the hex dig
i
ts, and it is 'i' long */
if (*bn == NULL)
{
if ((ret=BN_new()) == NULL) return(0);
if (*bn == NULL)
{
if ((ret=BN_new()) == NULL) return(0);
@@
-189,7
+185,7
@@
char *a;
/* i is the number of hex digests; */
if (bn_expand(ret,i*4) == NULL) goto err;
/* i is the number of hex digests; */
if (bn_expand(ret,i*4) == NULL) goto err;
- j=i; /* least significa
te
'hex' */
+ j=i; /* least significa
nt
'hex' */
m=0;
h=0;
while (j > 0)
m=0;
h=0;
while (j > 0)
@@
-214,19
+210,18
@@
char *a;
j-=(BN_BYTES*2);
}
ret->top=h;
j-=(BN_BYTES*2);
}
ret->top=h;
- bn_
fix
_top(ret);
+ bn_
correct
_top(ret);
ret->neg=neg;
*bn=ret;
ret->neg=neg;
*bn=ret;
+ bn_check_top(ret);
return(num);
err:
if (*bn == NULL) BN_free(ret);
return(0);
}
return(num);
err:
if (*bn == NULL) BN_free(ret);
return(0);
}
-int BN_dec2bn(bn,a)
-BIGNUM **bn;
-char *a;
+int BN_dec2bn(BIGNUM **bn, const char *a)
{
BIGNUM *ret=NULL;
BN_ULONG l=0;
{
BIGNUM *ret=NULL;
BN_ULONG l=0;
@@
-236,14
+231,14
@@
char *a;
if ((a == NULL) || (*a == '\0')) return(0);
if (*a == '-') { neg=1; a++; }
if ((a == NULL) || (*a == '\0')) return(0);
if (*a == '-') { neg=1; a++; }
- for (i=0; isdigit(a[i]); i++)
+ for (i=0; isdigit(
(unsigned char)
a[i]); i++)
;
num=i+neg;
if (bn == NULL) return(num);
;
num=i+neg;
if (bn == NULL) return(num);
- /* a is the start of the dig
e
ts, and it is 'i' long.
- * We chop it into BN_DEC_NUM dig
e
ts at a time */
+ /* a is the start of the dig
i
ts, and it is 'i' long.
+ * We chop it into BN_DEC_NUM dig
i
ts at a time */
if (*bn == NULL)
{
if ((ret=BN_new()) == NULL) return(0);
if (*bn == NULL)
{
if ((ret=BN_new()) == NULL) return(0);
@@
-275,20
+270,18
@@
char *a;
}
ret->neg=neg;
}
ret->neg=neg;
- bn_
fix
_top(ret);
+ bn_
correct
_top(ret);
*bn=ret;
*bn=ret;
+ bn_check_top(ret);
return(num);
err:
if (*bn == NULL) BN_free(ret);
return(0);
}
return(num);
err:
if (*bn == NULL) BN_free(ret);
return(0);
}
-#ifndef NO_BIO
-
-#ifndef NO_FP_API
-int BN_print_fp(fp, a)
-FILE *fp;
-BIGNUM *a;
+#ifndef OPENSSL_NO_BIO
+#ifndef OPENSSL_NO_FP_API
+int BN_print_fp(FILE *fp, const BIGNUM *a)
{
BIO *b;
int ret;
{
BIO *b;
int ret;
@@
-302,15
+295,13
@@
BIGNUM *a;
}
#endif
}
#endif
-int BN_print(bp, a)
-BIO *bp;
-BIGNUM *a;
+int BN_print(BIO *bp, const BIGNUM *a)
{
int i,j,v,z=0;
int ret=0;
if ((a->neg) && (BIO_write(bp,"-",1) != 1)) goto end;
{
int i,j,v,z=0;
int ret=0;
if ((a->neg) && (BIO_write(bp,"-",1) != 1)) goto end;
- if (
(a->top == 0
) && (BIO_write(bp,"0",1) != 1)) goto end;
+ if (
BN_is_zero(a
) && (BIO_write(bp,"0",1) != 1)) goto end;
for (i=a->top-1; i >=0; i--)
{
for (j=BN_BITS2-4; j >= 0; j-=4)
for (i=a->top-1; i >=0; i--)
{
for (j=BN_BITS2-4; j >= 0; j-=4)
@@
-329,5
+320,15
@@
BIGNUM *a;
end:
return(ret);
}
end:
return(ret);
}
+#endif
+#ifdef BN_DEBUG
+void bn_dump1(FILE *o, const char *a, const BN_ULONG *b,int n)
+ {
+ int i;
+ fprintf(o, "%s=", a);
+ for (i=n-1;i>=0;i--)
+ fprintf(o, "%08lX", b[i]); /* assumes 32-bit BN_ULONG */
+ fprintf(o, "\n");
+ }
#endif
#endif