summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/asn1
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/asn1')
-rw-r--r--src/lib/libcrypto/asn1/Makefile.ssl120
-rw-r--r--src/lib/libcrypto/asn1/f.c80
-rw-r--r--src/lib/libcrypto/asn1/x_cinf.c197
3 files changed, 397 insertions, 0 deletions
diff --git a/src/lib/libcrypto/asn1/Makefile.ssl b/src/lib/libcrypto/asn1/Makefile.ssl
new file mode 100644
index 0000000000..30751bd156
--- /dev/null
+++ b/src/lib/libcrypto/asn1/Makefile.ssl
@@ -0,0 +1,120 @@
1#
2# SSLeay/crypto/asn1/Makefile
3#
4
5DIR= asn1
6TOP= ../..
7CC= cc
8INCLUDES= -I.. -I../../include
9CFLAG=-g
10INSTALLTOP=/usr/local/ssl
11MAKE= make -f Makefile.ssl
12MAKEDEPEND= makedepend -f Makefile.ssl
13MAKEFILE= Makefile.ssl
14AR= ar r
15
16CFLAGS= $(INCLUDES) $(CFLAG)
17
18ERR=asn1
19ERRC=asn1_err
20GENERAL=Makefile README
21TEST=
22APPS=
23
24LIB=$(TOP)/libcrypto.a
25LIBSRC= a_object.c a_bitstr.c a_utctm.c a_int.c a_octet.c a_print.c \
26 a_type.c a_set.c a_dup.c a_d2i_fp.c a_i2d_fp.c \
27 a_sign.c a_digest.c a_verify.c \
28 x_algor.c x_val.c x_pubkey.c x_sig.c x_req.c x_attrib.c \
29 x_name.c x_cinf.c x_x509.c x_crl.c x_info.c x_spki.c \
30 d2i_r_pr.c i2d_r_pr.c d2i_r_pu.c i2d_r_pu.c \
31 d2i_s_pr.c i2d_s_pr.c d2i_s_pu.c i2d_s_pu.c \
32 d2i_pu.c d2i_pr.c i2d_pu.c i2d_pr.c\
33 t_req.c t_x509.c t_pkey.c \
34 p7_i_s.c p7_signi.c p7_signd.c p7_recip.c p7_enc_c.c p7_evp.c \
35 p7_dgst.c p7_s_e.c p7_enc.c p7_lib.c \
36 f_int.c f_string.c i2d_dhp.c i2d_dsap.c d2i_dhp.c d2i_dsap.c n_pkey.c \
37 a_hdr.c x_pkey.c a_bool.c x_exten.c \
38 asn1_par.c asn1_lib.c $(ERRC).c a_meth.c a_bytes.c \
39 evp_asn1.c
40LIBOBJ= a_object.o a_bitstr.o a_utctm.o a_int.o a_octet.o a_print.o \
41 a_type.o a_set.o a_dup.o a_d2i_fp.o a_i2d_fp.o \
42 a_sign.o a_digest.o a_verify.o \
43 x_algor.o x_val.o x_pubkey.o x_sig.o x_req.o x_attrib.o \
44 x_name.o x_cinf.o x_x509.o x_crl.o x_info.o x_spki.o \
45 d2i_r_pr.o i2d_r_pr.o d2i_r_pu.o i2d_r_pu.o \
46 d2i_s_pr.o i2d_s_pr.o d2i_s_pu.o i2d_s_pu.o \
47 d2i_pu.o d2i_pr.o i2d_pu.o i2d_pr.o \
48 t_req.o t_x509.o t_pkey.o \
49 p7_i_s.o p7_signi.o p7_signd.o p7_recip.o p7_enc_c.o p7_evp.o \
50 p7_dgst.o p7_s_e.o p7_enc.o p7_lib.o \
51 f_int.o f_string.o i2d_dhp.o i2d_dsap.o d2i_dhp.o d2i_dsap.o n_pkey.o \
52 a_hdr.o x_pkey.o a_bool.o x_exten.o \
53 asn1_par.o asn1_lib.o $(ERRC).o a_meth.o a_bytes.o \
54 evp_asn1.o
55
56SRC= $(LIBSRC)
57
58EXHEADER= asn1.h asn1_mac.h
59HEADER= $(EXHEADER)
60
61ALL= $(GENERAL) $(SRC) $(HEADER)
62
63top:
64 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
65
66test: test.c
67 cc -g -I../../include -c test.c
68 cc -g -I../../include -o test test.o -L../.. -lcrypto
69
70pk: pk.c
71 cc -g -I../../include -c pk.c
72 cc -g -I../../include -o pk pk.o -L../.. -lcrypto
73
74all: lib
75
76lib: $(LIBOBJ)
77 $(AR) $(LIB) $(LIBOBJ)
78 sh $(TOP)/util/ranlib.sh $(LIB)
79 @touch lib
80
81files:
82 perl $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
83
84links:
85 /bin/rm -f Makefile
86 $(TOP)/util/point.sh Makefile.ssl Makefile ;
87 $(TOP)/util/mklink.sh ../../include $(EXHEADER)
88 $(TOP)/util/mklink.sh ../../test $(TEST)
89 $(TOP)/util/mklink.sh ../../apps $(APPS)
90
91install:
92 @for i in $(EXHEADER) ; \
93 do \
94 (cp $$i $(INSTALLTOP)/include/$$i; \
95 chmod 644 $(INSTALLTOP)/include/$$i ); \
96 done;
97
98tags:
99 ctags $(SRC)
100
101tests:
102
103lint:
104 lint -DLINT $(INCLUDES) $(SRC)>fluff
105
106depend:
107 $(MAKEDEPEND) $(INCLUDES) $(PROGS) $(LIBSRC)
108
109dclean:
110 perl -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
111 mv -f Makefile.new $(MAKEFILE)
112
113clean:
114 /bin/rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
115
116errors:
117 perl $(TOP)/util/err-ins.pl $(ERR).err $(ERR).h
118 perl ../err/err_genc.pl -s $(ERR).h $(ERRC).c
119
120# DO NOT DELETE THIS LINE -- make depend depends on it.
diff --git a/src/lib/libcrypto/asn1/f.c b/src/lib/libcrypto/asn1/f.c
new file mode 100644
index 0000000000..2ab3a262ac
--- /dev/null
+++ b/src/lib/libcrypto/asn1/f.c
@@ -0,0 +1,80 @@
1/* crypto/asn1/f.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#include <stdio.h>
59#include "asn1.h"
60#include "err.h"
61
62main()
63 {
64 ASN1_TYPE *at;
65 char buf[512];
66 int n;
67 long l;
68
69 at=ASN1_TYPE_new();
70
71 n=ASN1_TYPE_set_int_octetstring(at,98736,"01234567",8);
72 printf("%d\n",n);
73 n=ASN1_TYPE_get_int_octetstring(at,&l,buf,8);
74 buf[8]='\0';
75 printf("%ld %d %d\n",l,n,buf[8]);
76 buf[8]='\0';
77 printf("%s\n",buf);
78 ERR_load_crypto_strings();
79 ERR_print_errors_fp(stderr);
80 }
diff --git a/src/lib/libcrypto/asn1/x_cinf.c b/src/lib/libcrypto/asn1/x_cinf.c
new file mode 100644
index 0000000000..4fc2cc9f6e
--- /dev/null
+++ b/src/lib/libcrypto/asn1/x_cinf.c
@@ -0,0 +1,197 @@
1/* crypto/asn1/x_cinf.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 "asn1_mac.h"
62
63/*
64 * ASN1err(ASN1_F_D2I_X509_CINF,ASN1_R_LENGTH_MISMATCH);
65 * ASN1err(ASN1_F_X509_CINF_NEW,ASN1_R_LENGTH_MISMATCH);
66 */
67
68int i2d_X509_CINF(a,pp)
69X509_CINF *a;
70unsigned char **pp;
71 {
72 int v1=0,v2=0;
73 M_ASN1_I2D_vars(a);
74
75 M_ASN1_I2D_len_EXP_opt(a->version,i2d_ASN1_INTEGER,0,v1);
76 M_ASN1_I2D_len(a->serialNumber, i2d_ASN1_INTEGER);
77 M_ASN1_I2D_len(a->signature, i2d_X509_ALGOR);
78 M_ASN1_I2D_len(a->issuer, i2d_X509_NAME);
79 M_ASN1_I2D_len(a->validity, i2d_X509_VAL);
80 M_ASN1_I2D_len(a->subject, i2d_X509_NAME);
81 M_ASN1_I2D_len(a->key, i2d_X509_PUBKEY);
82 M_ASN1_I2D_len_IMP_opt(a->issuerUID, i2d_ASN1_BIT_STRING);
83 M_ASN1_I2D_len_IMP_opt(a->subjectUID, i2d_ASN1_BIT_STRING);
84 M_ASN1_I2D_len_EXP_set_opt(a->extensions,i2d_X509_EXTENSION,3,V_ASN1_SEQUENCE,v2);
85
86 M_ASN1_I2D_seq_total();
87
88 M_ASN1_I2D_put_EXP_opt(a->version,i2d_ASN1_INTEGER,0,v1);
89 M_ASN1_I2D_put(a->serialNumber, i2d_ASN1_INTEGER);
90 M_ASN1_I2D_put(a->signature, i2d_X509_ALGOR);
91 M_ASN1_I2D_put(a->issuer, i2d_X509_NAME);
92 M_ASN1_I2D_put(a->validity, i2d_X509_VAL);
93 M_ASN1_I2D_put(a->subject, i2d_X509_NAME);
94 M_ASN1_I2D_put(a->key, i2d_X509_PUBKEY);
95 M_ASN1_I2D_put_IMP_opt(a->issuerUID, i2d_ASN1_BIT_STRING,1);
96 M_ASN1_I2D_put_IMP_opt(a->subjectUID, i2d_ASN1_BIT_STRING,2);
97 M_ASN1_I2D_put_EXP_set_opt(a->extensions,i2d_X509_EXTENSION,3,V_ASN1_SEQUENCE,v2);
98
99 M_ASN1_I2D_finish();
100 }
101
102X509_CINF *d2i_X509_CINF(a,pp,length)
103X509_CINF **a;
104unsigned char **pp;
105long length;
106 {
107 int ver=0;
108 M_ASN1_D2I_vars(a,X509_CINF *,X509_CINF_new);
109
110 M_ASN1_D2I_Init();
111 M_ASN1_D2I_start_sequence();
112 /* we have the optional version field */
113 if (M_ASN1_next == (V_ASN1_CONTEXT_SPECIFIC | V_ASN1_CONSTRUCTED | 0))
114 {
115 M_ASN1_D2I_get_EXP_opt(ret->version,d2i_ASN1_INTEGER,0);
116 if (ret->version->data != NULL)
117 ver=ret->version->data[0];
118 }
119 else
120 {
121 if (ret->version != NULL)
122 {
123 ASN1_INTEGER_free(ret->version);
124 ret->version=NULL;
125 }
126 }
127 M_ASN1_D2I_get(ret->serialNumber,d2i_ASN1_INTEGER);
128 M_ASN1_D2I_get(ret->signature,d2i_X509_ALGOR);
129 M_ASN1_D2I_get(ret->issuer,d2i_X509_NAME);
130 M_ASN1_D2I_get(ret->validity,d2i_X509_VAL);
131 M_ASN1_D2I_get(ret->subject,d2i_X509_NAME);
132 M_ASN1_D2I_get(ret->key,d2i_X509_PUBKEY);
133 if (ver >= 1) /* version 2 extensions */
134 {
135 if (ret->issuerUID != NULL)
136 {
137 ASN1_BIT_STRING_free(ret->issuerUID);
138 ret->issuerUID=NULL;
139 }
140 if (ret->subjectUID != NULL)
141 {
142 ASN1_BIT_STRING_free(ret->subjectUID);
143 ret->issuerUID=NULL;
144 }
145 M_ASN1_D2I_get_IMP_opt(ret->issuerUID,d2i_ASN1_BIT_STRING, 1,
146 V_ASN1_BIT_STRING);
147 M_ASN1_D2I_get_IMP_opt(ret->subjectUID,d2i_ASN1_BIT_STRING, 2,
148 V_ASN1_BIT_STRING);
149 }
150 if (ver >= 2) /* version 3 extensions */
151 {
152 if (ret->extensions != NULL)
153 while (sk_num(ret->extensions))
154 X509_EXTENSION_free((X509_EXTENSION *)
155 sk_pop(ret->extensions));
156 M_ASN1_D2I_get_EXP_set_opt(ret->extensions,d2i_X509_EXTENSION,3,
157 V_ASN1_SEQUENCE);
158 }
159 M_ASN1_D2I_Finish(a,X509_CINF_free,ASN1_F_D2I_X509_CINF);
160 }
161
162X509_CINF *X509_CINF_new()
163 {
164 X509_CINF *ret=NULL;
165
166 M_ASN1_New_Malloc(ret,X509_CINF);
167 ret->version=NULL;
168 M_ASN1_New(ret->serialNumber,ASN1_INTEGER_new);
169 M_ASN1_New(ret->signature,X509_ALGOR_new);
170 M_ASN1_New(ret->issuer,X509_NAME_new);
171 M_ASN1_New(ret->validity,X509_VAL_new);
172 M_ASN1_New(ret->subject,X509_NAME_new);
173 M_ASN1_New(ret->key,X509_PUBKEY_new);
174 ret->issuerUID=NULL;
175 ret->subjectUID=NULL;
176 ret->extensions=NULL;
177 return(ret);
178 M_ASN1_New_Error(ASN1_F_X509_CINF_NEW);
179 }
180
181void X509_CINF_free(a)
182X509_CINF *a;
183 {
184 if (a == NULL) return;
185 ASN1_INTEGER_free(a->version);
186 ASN1_INTEGER_free(a->serialNumber);
187 X509_ALGOR_free(a->signature);
188 X509_NAME_free(a->issuer);
189 X509_VAL_free(a->validity);
190 X509_NAME_free(a->subject);
191 X509_PUBKEY_free(a->key);
192 ASN1_BIT_STRING_free(a->issuerUID);
193 ASN1_BIT_STRING_free(a->subjectUID);
194 sk_pop_free(a->extensions,X509_EXTENSION_free);
195 Free((char *)a);
196 }
197