summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/asn1/t_pkey.c
diff options
context:
space:
mode:
authorcvs2svn <admin@example.com>2003-03-22 08:02:04 +0000
committercvs2svn <admin@example.com>2003-03-22 08:02:04 +0000
commitdf32a1286ae06981a79e30b678165a784696be4b (patch)
tree3d70e9a28e2db2eee8cd542ce0ce859502668178 /src/lib/libcrypto/asn1/t_pkey.c
parent2850ebd15c3cfddf6fb7edcd08cb6b2c6f717be9 (diff)
downloadopenbsd-OPENBSD_3_3_BASE.tar.gz
openbsd-OPENBSD_3_3_BASE.tar.bz2
openbsd-OPENBSD_3_3_BASE.zip
This commit was manufactured by cvs2git to create tag 'OPENBSD_3_3_BASE'.OPENBSD_3_3_BASE
Diffstat (limited to 'src/lib/libcrypto/asn1/t_pkey.c')
-rw-r--r--src/lib/libcrypto/asn1/t_pkey.c401
1 files changed, 0 insertions, 401 deletions
diff --git a/src/lib/libcrypto/asn1/t_pkey.c b/src/lib/libcrypto/asn1/t_pkey.c
deleted file mode 100644
index 2d46914cb1..0000000000
--- a/src/lib/libcrypto/asn1/t_pkey.c
+++ /dev/null
@@ -1,401 +0,0 @@
1/* crypto/asn1/t_pkey.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
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
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
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.
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.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
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:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
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
51 * SUCH DAMAGE.
52 *
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
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#include <stdio.h>
60#include "cryptlib.h"
61#include <openssl/buffer.h>
62#include <openssl/bn.h>
63#ifndef OPENSSL_NO_RSA
64#include <openssl/rsa.h>
65#endif
66#ifndef OPENSSL_NO_DH
67#include <openssl/dh.h>
68#endif
69#ifndef OPENSSL_NO_DSA
70#include <openssl/dsa.h>
71#endif
72
73static int print(BIO *fp,const char *str,BIGNUM *num,
74 unsigned char *buf,int off);
75#ifndef OPENSSL_NO_RSA
76#ifndef OPENSSL_NO_FP_API
77int RSA_print_fp(FILE *fp, const RSA *x, int off)
78 {
79 BIO *b;
80 int ret;
81
82 if ((b=BIO_new(BIO_s_file())) == NULL)
83 {
84 RSAerr(RSA_F_RSA_PRINT_FP,ERR_R_BUF_LIB);
85 return(0);
86 }
87 BIO_set_fp(b,fp,BIO_NOCLOSE);
88 ret=RSA_print(b,x,off);
89 BIO_free(b);
90 return(ret);
91 }
92#endif
93
94int RSA_print(BIO *bp, const RSA *x, int off)
95 {
96 char str[128];
97 const char *s;
98 unsigned char *m=NULL;
99 int ret=0;
100 size_t buf_len=0, i;
101
102 if (x->n)
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);
127 if (m == NULL)
128 {
129 RSAerr(RSA_F_RSA_PRINT,ERR_R_MALLOC_FAILURE);
130 goto err;
131 }
132
133 if (off)
134 {
135 if (off > 128) off=128;
136 memset(str,' ',off);
137 }
138 if (x->d != NULL)
139 {
140 if (off && (BIO_write(bp,str,off) <= 0)) goto err;
141 if (BIO_printf(bp,"Private-Key: (%d bit)\n",BN_num_bits(x->n))
142 <= 0) goto err;
143 }
144
145 if (x->d == NULL)
146 sprintf(str,"Modulus (%d bit):",BN_num_bits(x->n));
147 else
148 strcpy(str,"modulus:");
149 if (!print(bp,str,x->n,m,off)) goto err;
150 s=(x->d == NULL)?"Exponent:":"publicExponent:";
151 if (!print(bp,s,x->e,m,off)) goto err;
152 if (!print(bp,"privateExponent:",x->d,m,off)) goto err;
153 if (!print(bp,"prime1:",x->p,m,off)) goto err;
154 if (!print(bp,"prime2:",x->q,m,off)) goto err;
155 if (!print(bp,"exponent1:",x->dmp1,m,off)) goto err;
156 if (!print(bp,"exponent2:",x->dmq1,m,off)) goto err;
157 if (!print(bp,"coefficient:",x->iqmp,m,off)) goto err;
158 ret=1;
159err:
160 if (m != NULL) OPENSSL_free(m);
161 return(ret);
162 }
163#endif /* OPENSSL_NO_RSA */
164
165#ifndef OPENSSL_NO_DSA
166#ifndef OPENSSL_NO_FP_API
167int DSA_print_fp(FILE *fp, const DSA *x, int off)
168 {
169 BIO *b;
170 int ret;
171
172 if ((b=BIO_new(BIO_s_file())) == NULL)
173 {
174 DSAerr(DSA_F_DSA_PRINT_FP,ERR_R_BUF_LIB);
175 return(0);
176 }
177 BIO_set_fp(b,fp,BIO_NOCLOSE);
178 ret=DSA_print(b,x,off);
179 BIO_free(b);
180 return(ret);
181 }
182#endif
183
184int DSA_print(BIO *bp, const DSA *x, int off)
185 {
186 char str[128];
187 unsigned char *m=NULL;
188 int ret=0;
189 size_t buf_len=0,i;
190
191 if (x->p)
192 buf_len = (size_t)BN_num_bytes(x->p);
193 if (x->q)
194 if (buf_len < (i = (size_t)BN_num_bytes(x->q)))
195 buf_len = i;
196 if (x->g)
197 if (buf_len < (i = (size_t)BN_num_bytes(x->g)))
198 buf_len = i;
199 if (x->priv_key)
200 if (buf_len < (i = (size_t)BN_num_bytes(x->priv_key)))
201 buf_len = i;
202 if (x->pub_key)
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);
207 if (m == NULL)
208 {
209 DSAerr(DSA_F_DSA_PRINT,ERR_R_MALLOC_FAILURE);
210 goto err;
211 }
212
213 if (off)
214 {
215 if (off > 128) off=128;
216 memset(str,' ',off);
217 }
218 if (x->priv_key != NULL)
219 {
220 if (off && (BIO_write(bp,str,off) <= 0)) goto err;
221 if (BIO_printf(bp,"Private-Key: (%d bit)\n",BN_num_bits(x->p))
222 <= 0) goto err;
223 }
224
225 if ((x->priv_key != NULL) && !print(bp,"priv:",x->priv_key,m,off))
226 goto err;
227 if ((x->pub_key != NULL) && !print(bp,"pub: ",x->pub_key,m,off))
228 goto err;
229 if ((x->p != NULL) && !print(bp,"P: ",x->p,m,off)) goto err;
230 if ((x->q != NULL) && !print(bp,"Q: ",x->q,m,off)) goto err;
231 if ((x->g != NULL) && !print(bp,"G: ",x->g,m,off)) goto err;
232 ret=1;
233err:
234 if (m != NULL) OPENSSL_free(m);
235 return(ret);
236 }
237#endif /* !OPENSSL_NO_DSA */
238
239static int print(BIO *bp, const char *number, BIGNUM *num, unsigned char *buf,
240 int off)
241 {
242 int n,i;
243 char str[128];
244 const char *neg;
245
246 if (num == NULL) return(1);
247 neg=(num->neg)?"-":"";
248 if (off)
249 {
250 if (off > 128) off=128;
251 memset(str,' ',off);
252 if (BIO_write(bp,str,off) <= 0) return(0);
253 }
254
255 if (BN_num_bytes(num) <= BN_BYTES)
256 {
257 if (BIO_printf(bp,"%s %s%lu (%s0x%lx)\n",number,neg,
258 (unsigned long)num->d[0],neg,(unsigned long)num->d[0])
259 <= 0) return(0);
260 }
261 else
262 {
263 buf[0]=0;
264 if (BIO_printf(bp,"%s%s",number,
265 (neg[0] == '-')?" (Negative)":"") <= 0)
266 return(0);
267 n=BN_bn2bin(num,&buf[1]);
268
269 if (buf[1] & 0x80)
270 n++;
271 else buf++;
272
273 for (i=0; i<n; i++)
274 {
275 if ((i%15) == 0)
276 {
277 str[0]='\n';
278 memset(&(str[1]),' ',off+4);
279 if (BIO_write(bp,str,off+1+4) <= 0) return(0);
280 }
281 if (BIO_printf(bp,"%02x%s",buf[i],((i+1) == n)?"":":")
282 <= 0) return(0);
283 }
284 if (BIO_write(bp,"\n",1) <= 0) return(0);
285 }
286 return(1);
287 }
288
289#ifndef OPENSSL_NO_DH
290#ifndef OPENSSL_NO_FP_API
291int DHparams_print_fp(FILE *fp, const DH *x)
292 {
293 BIO *b;
294 int ret;
295
296 if ((b=BIO_new(BIO_s_file())) == NULL)
297 {
298 DHerr(DH_F_DHPARAMS_PRINT_FP,ERR_R_BUF_LIB);
299 return(0);
300 }
301 BIO_set_fp(b,fp,BIO_NOCLOSE);
302 ret=DHparams_print(b, x);
303 BIO_free(b);
304 return(ret);
305 }
306#endif
307
308int DHparams_print(BIO *bp, const DH *x)
309 {
310 unsigned char *m=NULL;
311 int reason=ERR_R_BUF_LIB,ret=0;
312 size_t buf_len=0, i;
313
314 if (x->p)
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);
320 if (m == NULL)
321 {
322 reason=ERR_R_MALLOC_FAILURE;
323 goto err;
324 }
325
326 if (BIO_printf(bp,"Diffie-Hellman-Parameters: (%d bit)\n",
327 BN_num_bits(x->p)) <= 0)
328 goto err;
329 if (!print(bp,"prime:",x->p,m,4)) goto err;
330 if (!print(bp,"generator:",x->g,m,4)) goto err;
331 if (x->length != 0)
332 {
333 if (BIO_printf(bp," recommended-private-length: %d bits\n",
334 (int)x->length) <= 0) goto err;
335 }
336 ret=1;
337 if (0)
338 {
339err:
340 DHerr(DH_F_DHPARAMS_PRINT,reason);
341 }
342 if (m != NULL) OPENSSL_free(m);
343 return(ret);
344 }
345#endif
346
347#ifndef OPENSSL_NO_DSA
348#ifndef OPENSSL_NO_FP_API
349int DSAparams_print_fp(FILE *fp, const DSA *x)
350 {
351 BIO *b;
352 int ret;
353
354 if ((b=BIO_new(BIO_s_file())) == NULL)
355 {
356 DSAerr(DSA_F_DSAPARAMS_PRINT_FP,ERR_R_BUF_LIB);
357 return(0);
358 }
359 BIO_set_fp(b,fp,BIO_NOCLOSE);
360 ret=DSAparams_print(b, x);
361 BIO_free(b);
362 return(ret);
363 }
364#endif
365
366int DSAparams_print(BIO *bp, const DSA *x)
367 {
368 unsigned char *m=NULL;
369 int reason=ERR_R_BUF_LIB,ret=0;
370 size_t buf_len=0,i;
371
372 if (x->p)
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);
381 if (m == NULL)
382 {
383 reason=ERR_R_MALLOC_FAILURE;
384 goto err;
385 }
386
387 if (BIO_printf(bp,"DSA-Parameters: (%d bit)\n",
388 BN_num_bits(x->p)) <= 0)
389 goto err;
390 if (!print(bp,"p:",x->p,m,4)) goto err;
391 if (!print(bp,"q:",x->q,m,4)) goto err;
392 if (!print(bp,"g:",x->g,m,4)) goto err;
393 ret=1;
394err:
395 if (m != NULL) OPENSSL_free(m);
396 DSAerr(DSA_F_DSAPARAMS_PRINT,reason);
397 return(ret);
398 }
399
400#endif /* !OPENSSL_NO_DSA */
401