diff options
Diffstat (limited to '')
-rw-r--r-- | src/lib/libssl/src/apps/genrsa.c | 287 |
1 files changed, 143 insertions, 144 deletions
diff --git a/src/lib/libssl/src/apps/genrsa.c b/src/lib/libssl/src/apps/genrsa.c index 1be17d9ac6..65e136a8d2 100644 --- a/src/lib/libssl/src/apps/genrsa.c +++ b/src/lib/libssl/src/apps/genrsa.c | |||
@@ -5,21 +5,21 @@ | |||
5 | * This package is an SSL implementation written | 5 | * This package is an SSL implementation written |
6 | * by Eric Young (eay@cryptsoft.com). | 6 | * by Eric Young (eay@cryptsoft.com). |
7 | * The implementation was written so as to conform with Netscapes SSL. | 7 | * The implementation was written so as to conform with Netscapes SSL. |
8 | * | 8 | * |
9 | * This library is free for commercial and non-commercial use as long as | 9 | * This library is free for commercial and non-commercial use as long as |
10 | * the following conditions are aheared to. The following conditions | 10 | * the following conditions are aheared to. The following conditions |
11 | * apply to all code found in this distribution, be it the RC4, RSA, | 11 | * apply to all code found in this distribution, be it the RC4, RSA, |
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | 12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation |
13 | * included with this distribution is covered by the same copyright terms | 13 | * included with this distribution is covered by the same copyright terms |
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | 14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). |
15 | * | 15 | * |
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | 16 | * Copyright remains Eric Young's, and as such any Copyright notices in |
17 | * the code are not to be removed. | 17 | * the code are not to be removed. |
18 | * If this package is used in a product, Eric Young should be given attribution | 18 | * If this package is used in a product, Eric Young should be given attribution |
19 | * as the author of the parts of the library used. | 19 | * as the author of the parts of the library used. |
20 | * This can be in the form of a textual message at program startup or | 20 | * This can be in the form of a textual message at program startup or |
21 | * in documentation (online or textual) provided with the package. | 21 | * in documentation (online or textual) provided with the package. |
22 | * | 22 | * |
23 | * Redistribution and use in source and binary forms, with or without | 23 | * Redistribution and use in source and binary forms, with or without |
24 | * modification, are permitted provided that the following conditions | 24 | * modification, are permitted provided that the following conditions |
25 | * are met: | 25 | * are met: |
@@ -34,10 +34,10 @@ | |||
34 | * Eric Young (eay@cryptsoft.com)" | 34 | * Eric Young (eay@cryptsoft.com)" |
35 | * The word 'cryptographic' can be left out if the rouines from the library | 35 | * The word 'cryptographic' can be left out if the rouines from the library |
36 | * being used are not cryptographic related :-). | 36 | * being used are not cryptographic related :-). |
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | 37 | * 4. If you include any Windows specific code (or a derivative thereof) from |
38 | * the apps directory (application code) you must include an acknowledgement: | 38 | * the apps directory (application code) you must include an acknowledgement: |
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | 39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" |
40 | * | 40 | * |
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | 41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND |
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
@@ -49,7 +49,7 @@ | |||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | 49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | 50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
51 | * SUCH DAMAGE. | 51 | * SUCH DAMAGE. |
52 | * | 52 | * |
53 | * The licence and distribution terms for any publically available version or | 53 | * The licence and distribution terms for any publically available version or |
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | 54 | * derivative of this code cannot be changed. i.e. this code cannot simply be |
55 | * copied and put under another distribution licence | 55 | * copied and put under another distribution licence |
@@ -86,179 +86,171 @@ static int genrsa_cb(int p, int n, BN_GENCB *cb); | |||
86 | 86 | ||
87 | int MAIN(int, char **); | 87 | int MAIN(int, char **); |
88 | 88 | ||
89 | int MAIN(int argc, char **argv) | 89 | int |
90 | { | 90 | MAIN(int argc, char **argv) |
91 | { | ||
91 | BN_GENCB cb; | 92 | BN_GENCB cb; |
92 | #ifndef OPENSSL_NO_ENGINE | 93 | #ifndef OPENSSL_NO_ENGINE |
93 | ENGINE *e = NULL; | 94 | ENGINE *e = NULL; |
94 | #endif | 95 | #endif |
95 | int ret=1; | 96 | int ret = 1; |
96 | int i,num=DEFBITS; | 97 | int i, num = DEFBITS; |
97 | long l; | 98 | long l; |
98 | const EVP_CIPHER *enc=NULL; | 99 | const EVP_CIPHER *enc = NULL; |
99 | unsigned long f4=RSA_F4; | 100 | unsigned long f4 = RSA_F4; |
100 | char *outfile=NULL; | 101 | char *outfile = NULL; |
101 | char *passargout = NULL, *passout = NULL; | 102 | char *passargout = NULL, *passout = NULL; |
102 | #ifndef OPENSSL_NO_ENGINE | 103 | #ifndef OPENSSL_NO_ENGINE |
103 | char *engine=NULL; | 104 | char *engine = NULL; |
104 | #endif | 105 | #endif |
105 | char *inrand=NULL; | 106 | char *inrand = NULL; |
106 | BIO *out=NULL; | 107 | BIO *out = NULL; |
107 | BIGNUM *bn = BN_new(); | 108 | BIGNUM *bn = BN_new(); |
108 | RSA *rsa = NULL; | 109 | RSA *rsa = NULL; |
109 | 110 | ||
110 | if(!bn) goto err; | 111 | if (!bn) goto err; |
111 | 112 | ||
112 | apps_startup(); | 113 | apps_startup(); |
113 | BN_GENCB_set(&cb, genrsa_cb, bio_err); | 114 | BN_GENCB_set(&cb, genrsa_cb, bio_err); |
114 | 115 | ||
115 | if (bio_err == NULL) | 116 | if (bio_err == NULL) |
116 | if ((bio_err=BIO_new(BIO_s_file())) != NULL) | 117 | if ((bio_err = BIO_new(BIO_s_file())) != NULL) |
117 | BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT); | 118 | BIO_set_fp(bio_err, stderr, BIO_NOCLOSE|BIO_FP_TEXT); |
118 | 119 | ||
119 | if (!load_config(bio_err, NULL)) | 120 | if (!load_config(bio_err, NULL)) |
120 | goto err; | 121 | goto err; |
121 | if ((out=BIO_new(BIO_s_file())) == NULL) | 122 | if ((out = BIO_new(BIO_s_file())) == NULL) { |
122 | { | 123 | BIO_printf(bio_err, "unable to create BIO for output\n"); |
123 | BIO_printf(bio_err,"unable to create BIO for output\n"); | ||
124 | goto err; | 124 | goto err; |
125 | } | 125 | } |
126 | 126 | ||
127 | argv++; | 127 | argv++; |
128 | argc--; | 128 | argc--; |
129 | for (;;) | 129 | for (;;) { |
130 | { | 130 | if (argc <= 0) |
131 | if (argc <= 0) break; | 131 | break; |
132 | if (strcmp(*argv,"-out") == 0) | 132 | if (strcmp(*argv, "-out") == 0) { |
133 | { | 133 | if (--argc < 1) |
134 | if (--argc < 1) goto bad; | 134 | goto bad; |
135 | outfile= *(++argv); | 135 | outfile= *(++argv); |
136 | } | 136 | } else if (strcmp(*argv, "-3") == 0) |
137 | else if (strcmp(*argv,"-3") == 0) | 137 | f4 = 3; |
138 | f4=3; | 138 | else if (strcmp(*argv, "-F4") == 0 || strcmp(*argv,"-f4") == 0) |
139 | else if (strcmp(*argv,"-F4") == 0 || strcmp(*argv,"-f4") == 0) | 139 | f4 = RSA_F4; |
140 | f4=RSA_F4; | ||
141 | #ifndef OPENSSL_NO_ENGINE | 140 | #ifndef OPENSSL_NO_ENGINE |
142 | else if (strcmp(*argv,"-engine") == 0) | 141 | else if (strcmp(*argv, "-engine") == 0) { |
143 | { | 142 | if (--argc < 1) |
144 | if (--argc < 1) goto bad; | 143 | goto bad; |
145 | engine= *(++argv); | 144 | engine= *(++argv); |
146 | } | 145 | } |
147 | #endif | 146 | #endif |
148 | else if (strcmp(*argv,"-rand") == 0) | 147 | else if (strcmp(*argv, "-rand") == 0) { |
149 | { | 148 | if (--argc < 1) |
150 | if (--argc < 1) goto bad; | 149 | goto bad; |
151 | inrand= *(++argv); | 150 | inrand= *(++argv); |
152 | } | 151 | } |
153 | #ifndef OPENSSL_NO_DES | 152 | #ifndef OPENSSL_NO_DES |
154 | else if (strcmp(*argv,"-des") == 0) | 153 | else if (strcmp(*argv, "-des") == 0) |
155 | enc=EVP_des_cbc(); | 154 | enc = EVP_des_cbc(); |
156 | else if (strcmp(*argv,"-des3") == 0) | 155 | else if (strcmp(*argv, "-des3") == 0) |
157 | enc=EVP_des_ede3_cbc(); | 156 | enc = EVP_des_ede3_cbc(); |
158 | #endif | 157 | #endif |
159 | #ifndef OPENSSL_NO_IDEA | 158 | #ifndef OPENSSL_NO_IDEA |
160 | else if (strcmp(*argv,"-idea") == 0) | 159 | else if (strcmp(*argv, "-idea") == 0) |
161 | enc=EVP_idea_cbc(); | 160 | enc = EVP_idea_cbc(); |
162 | #endif | 161 | #endif |
163 | #ifndef OPENSSL_NO_SEED | 162 | #ifndef OPENSSL_NO_SEED |
164 | else if (strcmp(*argv,"-seed") == 0) | 163 | else if (strcmp(*argv, "-seed") == 0) |
165 | enc=EVP_seed_cbc(); | 164 | enc = EVP_seed_cbc(); |
166 | #endif | 165 | #endif |
167 | #ifndef OPENSSL_NO_AES | 166 | #ifndef OPENSSL_NO_AES |
168 | else if (strcmp(*argv,"-aes128") == 0) | 167 | else if (strcmp(*argv, "-aes128") == 0) |
169 | enc=EVP_aes_128_cbc(); | 168 | enc = EVP_aes_128_cbc(); |
170 | else if (strcmp(*argv,"-aes192") == 0) | 169 | else if (strcmp(*argv, "-aes192") == 0) |
171 | enc=EVP_aes_192_cbc(); | 170 | enc = EVP_aes_192_cbc(); |
172 | else if (strcmp(*argv,"-aes256") == 0) | 171 | else if (strcmp(*argv, "-aes256") == 0) |
173 | enc=EVP_aes_256_cbc(); | 172 | enc = EVP_aes_256_cbc(); |
174 | #endif | 173 | #endif |
175 | #ifndef OPENSSL_NO_CAMELLIA | 174 | #ifndef OPENSSL_NO_CAMELLIA |
176 | else if (strcmp(*argv,"-camellia128") == 0) | 175 | else if (strcmp(*argv, "-camellia128") == 0) |
177 | enc=EVP_camellia_128_cbc(); | 176 | enc = EVP_camellia_128_cbc(); |
178 | else if (strcmp(*argv,"-camellia192") == 0) | 177 | else if (strcmp(*argv, "-camellia192") == 0) |
179 | enc=EVP_camellia_192_cbc(); | 178 | enc = EVP_camellia_192_cbc(); |
180 | else if (strcmp(*argv,"-camellia256") == 0) | 179 | else if (strcmp(*argv, "-camellia256") == 0) |
181 | enc=EVP_camellia_256_cbc(); | 180 | enc = EVP_camellia_256_cbc(); |
182 | #endif | 181 | #endif |
183 | else if (strcmp(*argv,"-passout") == 0) | 182 | else if (strcmp(*argv, "-passout") == 0) { |
184 | { | 183 | if (--argc < 1) |
185 | if (--argc < 1) goto bad; | 184 | goto bad; |
186 | passargout= *(++argv); | 185 | passargout= *(++argv); |
187 | } | 186 | } else |
188 | else | ||
189 | break; | 187 | break; |
190 | argv++; | 188 | argv++; |
191 | argc--; | 189 | argc--; |
192 | } | 190 | } |
193 | if ((argc >= 1) && ((sscanf(*argv,"%d",&num) == 0) || (num < 0))) | 191 | if ((argc >= 1) && ((sscanf(*argv, "%d",&num) == 0) || (num < 0))) { |
194 | { | ||
195 | bad: | 192 | bad: |
196 | BIO_printf(bio_err,"usage: genrsa [args] [numbits]\n"); | 193 | BIO_printf(bio_err, "usage: genrsa [args] [numbits]\n"); |
197 | BIO_printf(bio_err," -des encrypt the generated key with DES in cbc mode\n"); | 194 | BIO_printf(bio_err, " -des encrypt the generated key with DES in cbc mode\n"); |
198 | BIO_printf(bio_err," -des3 encrypt the generated key with DES in ede cbc mode (168 bit key)\n"); | 195 | BIO_printf(bio_err, " -des3 encrypt the generated key with DES in ede cbc mode (168 bit key)\n"); |
199 | #ifndef OPENSSL_NO_IDEA | 196 | #ifndef OPENSSL_NO_IDEA |
200 | BIO_printf(bio_err," -idea encrypt the generated key with IDEA in cbc mode\n"); | 197 | BIO_printf(bio_err, " -idea encrypt the generated key with IDEA in cbc mode\n"); |
201 | #endif | 198 | #endif |
202 | #ifndef OPENSSL_NO_SEED | 199 | #ifndef OPENSSL_NO_SEED |
203 | BIO_printf(bio_err," -seed\n"); | 200 | BIO_printf(bio_err, " -seed\n"); |
204 | BIO_printf(bio_err," encrypt PEM output with cbc seed\n"); | 201 | BIO_printf(bio_err, " encrypt PEM output with cbc seed\n"); |
205 | #endif | 202 | #endif |
206 | #ifndef OPENSSL_NO_AES | 203 | #ifndef OPENSSL_NO_AES |
207 | BIO_printf(bio_err," -aes128, -aes192, -aes256\n"); | 204 | BIO_printf(bio_err, " -aes128, -aes192, -aes256\n"); |
208 | BIO_printf(bio_err," encrypt PEM output with cbc aes\n"); | 205 | BIO_printf(bio_err, " encrypt PEM output with cbc aes\n"); |
209 | #endif | 206 | #endif |
210 | #ifndef OPENSSL_NO_CAMELLIA | 207 | #ifndef OPENSSL_NO_CAMELLIA |
211 | BIO_printf(bio_err," -camellia128, -camellia192, -camellia256\n"); | 208 | BIO_printf(bio_err, " -camellia128, -camellia192, -camellia256\n"); |
212 | BIO_printf(bio_err," encrypt PEM output with cbc camellia\n"); | 209 | BIO_printf(bio_err, " encrypt PEM output with cbc camellia\n"); |
213 | #endif | 210 | #endif |
214 | BIO_printf(bio_err," -out file output the key to 'file\n"); | 211 | BIO_printf(bio_err, " -out file output the key to 'file\n"); |
215 | BIO_printf(bio_err," -passout arg output file pass phrase source\n"); | 212 | BIO_printf(bio_err, " -passout arg output file pass phrase source\n"); |
216 | BIO_printf(bio_err," -f4 use F4 (0x10001) for the E value\n"); | 213 | BIO_printf(bio_err, " -f4 use F4 (0x10001) for the E value\n"); |
217 | BIO_printf(bio_err," -3 use 3 for the E value\n"); | 214 | BIO_printf(bio_err, " -3 use 3 for the E value\n"); |
218 | #ifndef OPENSSL_NO_ENGINE | 215 | #ifndef OPENSSL_NO_ENGINE |
219 | BIO_printf(bio_err," -engine e use engine e, possibly a hardware device.\n"); | 216 | BIO_printf(bio_err, " -engine e use engine e, possibly a hardware device.\n"); |
220 | #endif | 217 | #endif |
221 | BIO_printf(bio_err," -rand file%cfile%c...\n", LIST_SEPARATOR_CHAR, LIST_SEPARATOR_CHAR); | 218 | BIO_printf(bio_err, " -rand file%cfile%c...\n", LIST_SEPARATOR_CHAR, LIST_SEPARATOR_CHAR); |
222 | BIO_printf(bio_err," load the file (or the files in the directory) into\n"); | 219 | BIO_printf(bio_err, " load the file (or the files in the directory) into\n"); |
223 | BIO_printf(bio_err," the random number generator\n"); | 220 | BIO_printf(bio_err, " the random number generator\n"); |
224 | goto err; | 221 | goto err; |
225 | } | 222 | } |
226 | 223 | ||
227 | ERR_load_crypto_strings(); | 224 | ERR_load_crypto_strings(); |
228 | 225 | ||
229 | if(!app_passwd(bio_err, NULL, passargout, NULL, &passout)) { | 226 | if (!app_passwd(bio_err, NULL, passargout, NULL, &passout)) { |
230 | BIO_printf(bio_err, "Error getting password\n"); | 227 | BIO_printf(bio_err, "Error getting password\n"); |
231 | goto err; | 228 | goto err; |
232 | } | 229 | } |
233 | 230 | ||
234 | #ifndef OPENSSL_NO_ENGINE | 231 | #ifndef OPENSSL_NO_ENGINE |
235 | e = setup_engine(bio_err, engine, 0); | 232 | e = setup_engine(bio_err, engine, 0); |
236 | #endif | 233 | #endif |
237 | 234 | ||
238 | if (outfile == NULL) | 235 | if (outfile == NULL) { |
239 | { | 236 | BIO_set_fp(out, stdout, BIO_NOCLOSE); |
240 | BIO_set_fp(out,stdout,BIO_NOCLOSE); | 237 | } else { |
241 | } | 238 | if (BIO_write_filename(out, outfile) <= 0) { |
242 | else | ||
243 | { | ||
244 | if (BIO_write_filename(out,outfile) <= 0) | ||
245 | { | ||
246 | perror(outfile); | 239 | perror(outfile); |
247 | goto err; | 240 | goto err; |
248 | } | ||
249 | } | 241 | } |
242 | } | ||
250 | 243 | ||
251 | if (!app_RAND_load_file(NULL, bio_err, 1) && inrand == NULL | 244 | if (!app_RAND_load_file(NULL, bio_err, 1) && inrand == NULL && |
252 | && !RAND_status()) | 245 | !RAND_status()) { |
253 | { | 246 | BIO_printf(bio_err, "warning, not much extra random data, consider using the -rand option\n"); |
254 | BIO_printf(bio_err,"warning, not much extra random data, consider using the -rand option\n"); | 247 | } |
255 | } | ||
256 | if (inrand != NULL) | 248 | if (inrand != NULL) |
257 | BIO_printf(bio_err,"%ld semi-random bytes loaded\n", | 249 | BIO_printf(bio_err, "%ld semi-random bytes loaded\n", |
258 | app_RAND_load_files(inrand)); | 250 | app_RAND_load_files(inrand)); |
259 | 251 | ||
260 | BIO_printf(bio_err,"Generating RSA private key, %d bit long modulus\n", | 252 | BIO_printf(bio_err, "Generating RSA private key, %d bit long modulus\n", |
261 | num); | 253 | num); |
262 | #ifdef OPENSSL_NO_ENGINE | 254 | #ifdef OPENSSL_NO_ENGINE |
263 | rsa = RSA_new(); | 255 | rsa = RSA_new(); |
264 | #else | 256 | #else |
@@ -267,63 +259,70 @@ bad: | |||
267 | if (!rsa) | 259 | if (!rsa) |
268 | goto err; | 260 | goto err; |
269 | 261 | ||
270 | if(!BN_set_word(bn, f4) || !RSA_generate_key_ex(rsa, num, bn, &cb)) | 262 | if (!BN_set_word(bn, f4) || !RSA_generate_key_ex(rsa, num, bn, &cb)) |
271 | goto err; | 263 | goto err; |
272 | 264 | ||
273 | app_RAND_write_file(NULL, bio_err); | 265 | app_RAND_write_file(NULL, bio_err); |
274 | 266 | ||
275 | /* We need to do the following for when the base number size is < | 267 | /* We need to do the following for when the base number size is < |
276 | * long, esp windows 3.1 :-(. */ | 268 | * long, esp windows 3.1 :-(. */ |
277 | l=0L; | 269 | l = 0L; |
278 | for (i=0; i<rsa->e->top; i++) | 270 | for (i = 0; i < rsa->e->top; i++) { |
279 | { | ||
280 | #ifndef SIXTY_FOUR_BIT | 271 | #ifndef SIXTY_FOUR_BIT |
281 | l<<=BN_BITS4; | 272 | l<<=BN_BITS4; |
282 | l<<=BN_BITS4; | 273 | l<<=BN_BITS4; |
283 | #endif | 274 | #endif |
284 | l+=rsa->e->d[i]; | 275 | l += rsa->e->d[i]; |
285 | } | 276 | } |
286 | BIO_printf(bio_err,"e is %ld (0x%lX)\n",l,l); | 277 | BIO_printf(bio_err, "e is %ld (0x%lX)\n",l,l); |
287 | { | 278 | { |
288 | PW_CB_DATA cb_data; | 279 | PW_CB_DATA cb_data; |
289 | cb_data.password = passout; | 280 | cb_data.password = passout; |
290 | cb_data.prompt_info = outfile; | 281 | cb_data.prompt_info = outfile; |
291 | if (!PEM_write_bio_RSAPrivateKey(out,rsa,enc,NULL,0, | 282 | if (!PEM_write_bio_RSAPrivateKey(out, rsa, enc, NULL, 0, |
292 | (pem_password_cb *)password_callback,&cb_data)) | 283 | (pem_password_cb *)password_callback, &cb_data)) |
293 | goto err; | 284 | goto err; |
294 | } | 285 | } |
295 | 286 | ||
296 | ret=0; | 287 | ret = 0; |
297 | err: | 288 | err: |
298 | if (bn) BN_free(bn); | 289 | if (bn) |
299 | if (rsa) RSA_free(rsa); | 290 | BN_free(bn); |
300 | if (out) BIO_free_all(out); | 291 | if (rsa) |
301 | if(passout) free(passout); | 292 | RSA_free(rsa); |
302 | if (ret != 0) | 293 | if (out) |
303 | ERR_print_errors(bio_err); | 294 | BIO_free_all(out); |
295 | if (passout) free(passout); | ||
296 | if (ret != 0) | ||
297 | ERR_print_errors(bio_err); | ||
304 | apps_shutdown(); | 298 | apps_shutdown(); |
305 | OPENSSL_EXIT(ret); | 299 | OPENSSL_EXIT(ret); |
306 | } | 300 | } |
307 | 301 | ||
308 | static int genrsa_cb(int p, int n, BN_GENCB *cb) | 302 | static int |
309 | { | 303 | genrsa_cb(int p, int n, BN_GENCB *cb) |
310 | char c='*'; | 304 | { |
305 | char c = '*'; | ||
311 | 306 | ||
312 | if (p == 0) c='.'; | 307 | if (p == 0) |
313 | if (p == 1) c='+'; | 308 | c = '.'; |
314 | if (p == 2) c='*'; | 309 | if (p == 1) |
315 | if (p == 3) c='\n'; | 310 | c = '+'; |
316 | BIO_write(cb->arg,&c,1); | 311 | if (p == 2) |
312 | c = '*'; | ||
313 | if (p == 3) | ||
314 | c = '\n'; | ||
315 | BIO_write(cb->arg, &c, 1); | ||
317 | (void)BIO_flush(cb->arg); | 316 | (void)BIO_flush(cb->arg); |
318 | #ifdef LINT | 317 | #ifdef LINT |
319 | p=n; | 318 | p = n; |
320 | #endif | 319 | #endif |
321 | return 1; | 320 | return 1; |
322 | } | 321 | } |
323 | #else /* !OPENSSL_NO_RSA */ | 322 | #else /* !OPENSSL_NO_RSA */ |
324 | 323 | ||
325 | # if PEDANTIC | 324 | # if PEDANTIC |
326 | static void *dummy=&dummy; | 325 | static void *dummy = &dummy; |
327 | # endif | 326 | # endif |
328 | 327 | ||
329 | #endif | 328 | #endif |