diff options
author | markus <> | 2002-09-10 16:31:57 +0000 |
---|---|---|
committer | markus <> | 2002-09-10 16:31:57 +0000 |
commit | 7d038e9d4d83e7c7120e78418e108df70b9025d6 (patch) | |
tree | baf775b286ff801a89f746b1938a3c700bba6822 /src/lib/libcrypto/asn1/t_pkey.c | |
parent | 3bd21dd4c3a3e3106321a5f6b3641ab9f18a6e3b (diff) | |
download | openbsd-7d038e9d4d83e7c7120e78418e108df70b9025d6.tar.gz openbsd-7d038e9d4d83e7c7120e78418e108df70b9025d6.tar.bz2 openbsd-7d038e9d4d83e7c7120e78418e108df70b9025d6.zip |
merge openssl-0.9.7-beta3, tested on vax by miod@
Diffstat (limited to 'src/lib/libcrypto/asn1/t_pkey.c')
-rw-r--r-- | src/lib/libcrypto/asn1/t_pkey.c | 88 |
1 files changed, 64 insertions, 24 deletions
diff --git a/src/lib/libcrypto/asn1/t_pkey.c b/src/lib/libcrypto/asn1/t_pkey.c index 8060115202..2d46914cb1 100644 --- a/src/lib/libcrypto/asn1/t_pkey.c +++ b/src/lib/libcrypto/asn1/t_pkey.c | |||
@@ -96,10 +96,34 @@ int RSA_print(BIO *bp, const RSA *x, int off) | |||
96 | char str[128]; | 96 | char str[128]; |
97 | const char *s; | 97 | const char *s; |
98 | unsigned char *m=NULL; | 98 | unsigned char *m=NULL; |
99 | int i,ret=0; | 99 | int ret=0; |
100 | size_t buf_len=0, i; | ||
100 | 101 | ||
101 | i=RSA_size(x); | 102 | if (x->n) |
102 | m=(unsigned char *)OPENSSL_malloc((unsigned int)i+10); | 103 | buf_len = (size_t)BN_num_bytes(x->n); |
104 | if (x->e) | ||
105 | if (buf_len < (i = (size_t)BN_num_bytes(x->e))) | ||
106 | buf_len = i; | ||
107 | if (x->d) | ||
108 | if (buf_len < (i = (size_t)BN_num_bytes(x->d))) | ||
109 | buf_len = i; | ||
110 | if (x->p) | ||
111 | if (buf_len < (i = (size_t)BN_num_bytes(x->p))) | ||
112 | buf_len = i; | ||
113 | if (x->q) | ||
114 | if (buf_len < (i = (size_t)BN_num_bytes(x->q))) | ||
115 | buf_len = i; | ||
116 | if (x->dmp1) | ||
117 | if (buf_len < (i = (size_t)BN_num_bytes(x->dmp1))) | ||
118 | buf_len = i; | ||
119 | if (x->dmq1) | ||
120 | if (buf_len < (i = (size_t)BN_num_bytes(x->dmq1))) | ||
121 | buf_len = i; | ||
122 | if (x->iqmp) | ||
123 | if (buf_len < (i = (size_t)BN_num_bytes(x->iqmp))) | ||
124 | buf_len = i; | ||
125 | |||
126 | m=(unsigned char *)OPENSSL_malloc(buf_len+10); | ||
103 | if (m == NULL) | 127 | if (m == NULL) |
104 | { | 128 | { |
105 | RSAerr(RSA_F_RSA_PRINT,ERR_R_MALLOC_FAILURE); | 129 | RSAerr(RSA_F_RSA_PRINT,ERR_R_MALLOC_FAILURE); |
@@ -161,22 +185,25 @@ int DSA_print(BIO *bp, const DSA *x, int off) | |||
161 | { | 185 | { |
162 | char str[128]; | 186 | char str[128]; |
163 | unsigned char *m=NULL; | 187 | unsigned char *m=NULL; |
164 | int i,ret=0; | 188 | int ret=0; |
165 | BIGNUM *bn=NULL; | 189 | size_t buf_len=0,i; |
166 | 190 | ||
167 | if (x->p != NULL) | 191 | if (x->p) |
168 | bn=x->p; | 192 | buf_len = (size_t)BN_num_bytes(x->p); |
169 | else if (x->priv_key != NULL) | 193 | if (x->q) |
170 | bn=x->priv_key; | 194 | if (buf_len < (i = (size_t)BN_num_bytes(x->q))) |
171 | else if (x->pub_key != NULL) | 195 | buf_len = i; |
172 | bn=x->pub_key; | 196 | if (x->g) |
173 | 197 | if (buf_len < (i = (size_t)BN_num_bytes(x->g))) | |
174 | /* larger than needed but what the hell :-) */ | 198 | buf_len = i; |
175 | if (bn != NULL) | 199 | if (x->priv_key) |
176 | i=BN_num_bytes(bn)*2; | 200 | if (buf_len < (i = (size_t)BN_num_bytes(x->priv_key))) |
177 | else | 201 | buf_len = i; |
178 | i=256; | 202 | if (x->pub_key) |
179 | m=(unsigned char *)OPENSSL_malloc((unsigned int)i+10); | 203 | if (buf_len < (i = (size_t)BN_num_bytes(x->pub_key))) |
204 | buf_len = i; | ||
205 | |||
206 | m=(unsigned char *)OPENSSL_malloc(buf_len+10); | ||
180 | if (m == NULL) | 207 | if (m == NULL) |
181 | { | 208 | { |
182 | DSAerr(DSA_F_DSA_PRINT,ERR_R_MALLOC_FAILURE); | 209 | DSAerr(DSA_F_DSA_PRINT,ERR_R_MALLOC_FAILURE); |
@@ -281,10 +308,15 @@ int DHparams_print_fp(FILE *fp, const DH *x) | |||
281 | int DHparams_print(BIO *bp, const DH *x) | 308 | int DHparams_print(BIO *bp, const DH *x) |
282 | { | 309 | { |
283 | unsigned char *m=NULL; | 310 | unsigned char *m=NULL; |
284 | int reason=ERR_R_BUF_LIB,i,ret=0; | 311 | int reason=ERR_R_BUF_LIB,ret=0; |
312 | size_t buf_len=0, i; | ||
285 | 313 | ||
286 | i=BN_num_bytes(x->p); | 314 | if (x->p) |
287 | m=(unsigned char *)OPENSSL_malloc((unsigned int)i+10); | 315 | buf_len = (size_t)BN_num_bytes(x->p); |
316 | if (x->g) | ||
317 | if (buf_len < (i = (size_t)BN_num_bytes(x->g))) | ||
318 | buf_len = i; | ||
319 | m=(unsigned char *)OPENSSL_malloc(buf_len+10); | ||
288 | if (m == NULL) | 320 | if (m == NULL) |
289 | { | 321 | { |
290 | reason=ERR_R_MALLOC_FAILURE; | 322 | reason=ERR_R_MALLOC_FAILURE; |
@@ -334,10 +366,18 @@ int DSAparams_print_fp(FILE *fp, const DSA *x) | |||
334 | int DSAparams_print(BIO *bp, const DSA *x) | 366 | int DSAparams_print(BIO *bp, const DSA *x) |
335 | { | 367 | { |
336 | unsigned char *m=NULL; | 368 | unsigned char *m=NULL; |
337 | int reason=ERR_R_BUF_LIB,i,ret=0; | 369 | int reason=ERR_R_BUF_LIB,ret=0; |
370 | size_t buf_len=0,i; | ||
338 | 371 | ||
339 | i=BN_num_bytes(x->p); | 372 | if (x->p) |
340 | m=(unsigned char *)OPENSSL_malloc((unsigned int)i+10); | 373 | buf_len = (size_t)BN_num_bytes(x->p); |
374 | if (x->q) | ||
375 | if (buf_len < (i = (size_t)BN_num_bytes(x->q))) | ||
376 | buf_len = i; | ||
377 | if (x->g) | ||
378 | if (buf_len < (i = (size_t)BN_num_bytes(x->g))) | ||
379 | buf_len = i; | ||
380 | m=(unsigned char *)OPENSSL_malloc(buf_len+10); | ||
341 | if (m == NULL) | 381 | if (m == NULL) |
342 | { | 382 | { |
343 | reason=ERR_R_MALLOC_FAILURE; | 383 | reason=ERR_R_MALLOC_FAILURE; |