summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/objects
diff options
context:
space:
mode:
authorcvs2svn <admin@example.com>2000-10-25 15:23:17 +0000
committercvs2svn <admin@example.com>2000-10-25 15:23:17 +0000
commit690af28bdf827ab9c81648f507eb492c9076d5d3 (patch)
tree1ced1775de07c13c2a5a1d9e3bde843578ac541d /src/lib/libcrypto/objects
parent463e714935b9651a5eb2c08fcf3f8844fc6b653d (diff)
downloadopenbsd-OPENBSD_2_8.tar.gz
openbsd-OPENBSD_2_8.tar.bz2
openbsd-OPENBSD_2_8.zip
This commit was manufactured by cvs2git to create branch 'OPENBSD_2_8'.OPENBSD_2_8
Diffstat (limited to 'src/lib/libcrypto/objects')
-rw-r--r--src/lib/libcrypto/objects/o_names.c265
-rw-r--r--src/lib/libcrypto/objects/obj_dat.c649
-rw-r--r--src/lib/libcrypto/objects/obj_dat.pl275
-rw-r--r--src/lib/libcrypto/objects/obj_err.c99
-rw-r--r--src/lib/libcrypto/objects/obj_lib.c126
-rw-r--r--src/lib/libcrypto/objects/objects.h1032
-rw-r--r--src/lib/libcrypto/objects/objects.txt40
7 files changed, 0 insertions, 2486 deletions
diff --git a/src/lib/libcrypto/objects/o_names.c b/src/lib/libcrypto/objects/o_names.c
deleted file mode 100644
index d9389a5e5a..0000000000
--- a/src/lib/libcrypto/objects/o_names.c
+++ /dev/null
@@ -1,265 +0,0 @@
1#include <stdio.h>
2#include <stdlib.h>
3#include <string.h>
4
5#include <openssl/lhash.h>
6#include <openssl/objects.h>
7#include <openssl/safestack.h>
8
9/* I use the ex_data stuff to manage the identifiers for the obj_name_types
10 * that applications may define. I only really use the free function field.
11 */
12static LHASH *names_lh=NULL;
13static int names_type_num=OBJ_NAME_TYPE_NUM;
14
15typedef struct name_funcs_st
16 {
17 unsigned long (*hash_func)();
18 int (*cmp_func)();
19 void (*free_func)();
20 } NAME_FUNCS;
21
22DECLARE_STACK_OF(NAME_FUNCS)
23IMPLEMENT_STACK_OF(NAME_FUNCS)
24
25static STACK_OF(NAME_FUNCS) *name_funcs_stack;
26
27static unsigned long obj_name_hash(OBJ_NAME *a);
28static int obj_name_cmp(OBJ_NAME *a,OBJ_NAME *b);
29
30int OBJ_NAME_init(void)
31 {
32 if (names_lh != NULL) return(1);
33 MemCheck_off();
34 names_lh=lh_new(obj_name_hash,obj_name_cmp);
35 MemCheck_on();
36 return(names_lh != NULL);
37 }
38
39int OBJ_NAME_new_index(unsigned long (*hash_func)(), int (*cmp_func)(),
40 void (*free_func)())
41 {
42 int ret;
43 int i;
44 NAME_FUNCS *name_funcs;
45
46 if (name_funcs_stack == NULL)
47 {
48 MemCheck_off();
49 name_funcs_stack=sk_NAME_FUNCS_new_null();
50 MemCheck_on();
51 }
52 if ((name_funcs_stack == NULL))
53 {
54 /* ERROR */
55 return(0);
56 }
57 ret=names_type_num;
58 names_type_num++;
59 for (i=sk_NAME_FUNCS_num(name_funcs_stack); i<names_type_num; i++)
60 {
61 MemCheck_off();
62 name_funcs = Malloc(sizeof(NAME_FUNCS));
63 name_funcs->hash_func = lh_strhash;
64 name_funcs->cmp_func = (int (*)())strcmp;
65 name_funcs->free_func = 0; /* NULL is often declared to
66 * ((void *)0), which according
67 * to Compaq C is not really
68 * compatible with a function
69 * pointer. -- Richard Levitte*/
70 sk_NAME_FUNCS_push(name_funcs_stack,name_funcs);
71 MemCheck_on();
72 }
73 name_funcs = sk_NAME_FUNCS_value(name_funcs_stack, ret);
74 if (hash_func != NULL)
75 name_funcs->hash_func = hash_func;
76 if (cmp_func != NULL)
77 name_funcs->cmp_func = cmp_func;
78 if (free_func != NULL)
79 name_funcs->free_func = free_func;
80 return(ret);
81 }
82
83static int obj_name_cmp(OBJ_NAME *a, OBJ_NAME *b)
84 {
85 int ret;
86
87 ret=a->type-b->type;
88 if (ret == 0)
89 {
90 if ((name_funcs_stack != NULL)
91 && (sk_NAME_FUNCS_num(name_funcs_stack) > a->type))
92 {
93 ret=sk_NAME_FUNCS_value(name_funcs_stack,a->type)
94 ->cmp_func(a->name,b->name);
95 }
96 else
97 ret=strcmp(a->name,b->name);
98 }
99 return(ret);
100 }
101
102static unsigned long obj_name_hash(OBJ_NAME *a)
103 {
104 unsigned long ret;
105
106 if ((name_funcs_stack != NULL) && (sk_NAME_FUNCS_num(name_funcs_stack) > a->type))
107 {
108 ret=sk_NAME_FUNCS_value(name_funcs_stack,a->type)
109 ->hash_func(a->name);
110 }
111 else
112 {
113 ret=lh_strhash(a->name);
114 }
115 ret^=a->type;
116 return(ret);
117 }
118
119const char *OBJ_NAME_get(const char *name, int type)
120 {
121 OBJ_NAME on,*ret;
122 int num=0,alias;
123
124 if (name == NULL) return(NULL);
125 if ((names_lh == NULL) && !OBJ_NAME_init()) return(NULL);
126
127 alias=type&OBJ_NAME_ALIAS;
128 type&= ~OBJ_NAME_ALIAS;
129
130 on.name=name;
131 on.type=type;
132
133 for (;;)
134 {
135 ret=(OBJ_NAME *)lh_retrieve(names_lh,&on);
136 if (ret == NULL) return(NULL);
137 if ((ret->alias) && !alias)
138 {
139 if (++num > 10) return(NULL);
140 on.name=ret->data;
141 }
142 else
143 {
144 return(ret->data);
145 }
146 }
147 }
148
149int OBJ_NAME_add(const char *name, int type, const char *data)
150 {
151 OBJ_NAME *onp,*ret;
152 int alias;
153
154 if ((names_lh == NULL) && !OBJ_NAME_init()) return(0);
155
156 alias=type&OBJ_NAME_ALIAS;
157 type&= ~OBJ_NAME_ALIAS;
158
159 onp=(OBJ_NAME *)Malloc(sizeof(OBJ_NAME));
160 if (onp == NULL)
161 {
162 /* ERROR */
163 return(0);
164 }
165
166 onp->name=name;
167 onp->alias=alias;
168 onp->type=type;
169 onp->data=data;
170
171 ret=(OBJ_NAME *)lh_insert(names_lh,onp);
172 if (ret != NULL)
173 {
174 /* free things */
175 if ((name_funcs_stack != NULL) && (sk_NAME_FUNCS_num(name_funcs_stack) > ret->type))
176 {
177 /* XXX: I'm not sure I understand why the free
178 * function should get three arguments...
179 * -- Richard Levitte
180 */
181 sk_NAME_FUNCS_value(name_funcs_stack,ret->type)
182 ->free_func(ret->name,ret->type,ret->data);
183 }
184 Free(ret);
185 }
186 else
187 {
188 if (lh_error(names_lh))
189 {
190 /* ERROR */
191 return(0);
192 }
193 }
194 return(1);
195 }
196
197int OBJ_NAME_remove(const char *name, int type)
198 {
199 OBJ_NAME on,*ret;
200
201 if (names_lh == NULL) return(0);
202
203 type&= ~OBJ_NAME_ALIAS;
204 on.name=name;
205 on.type=type;
206 ret=(OBJ_NAME *)lh_delete(names_lh,&on);
207 if (ret != NULL)
208 {
209 /* free things */
210 if ((name_funcs_stack != NULL) && (sk_NAME_FUNCS_num(name_funcs_stack) > ret->type))
211 {
212 /* XXX: I'm not sure I understand why the free
213 * function should get three arguments...
214 * -- Richard Levitte
215 */
216 sk_NAME_FUNCS_value(name_funcs_stack,ret->type)
217 ->free_func(ret->name,ret->type,ret->data);
218 }
219 Free(ret);
220 return(1);
221 }
222 else
223 return(0);
224 }
225
226static int free_type;
227
228static void names_lh_free(OBJ_NAME *onp, int type)
229{
230 if(onp == NULL)
231 return;
232
233 if ((free_type < 0) || (free_type == onp->type))
234 {
235 OBJ_NAME_remove(onp->name,onp->type);
236 }
237 }
238
239static void name_funcs_free(NAME_FUNCS *ptr)
240 {
241 Free(ptr);
242 }
243
244void OBJ_NAME_cleanup(int type)
245 {
246 unsigned long down_load;
247
248 if (names_lh == NULL) return;
249
250 free_type=type;
251 down_load=names_lh->down_load;
252 names_lh->down_load=0;
253
254 lh_doall(names_lh,names_lh_free);
255 if (type < 0)
256 {
257 lh_free(names_lh);
258 sk_NAME_FUNCS_pop_free(name_funcs_stack,name_funcs_free);
259 names_lh=NULL;
260 name_funcs_stack = NULL;
261 }
262 else
263 names_lh->down_load=down_load;
264 }
265
diff --git a/src/lib/libcrypto/objects/obj_dat.c b/src/lib/libcrypto/objects/obj_dat.c
deleted file mode 100644
index da6df3762a..0000000000
--- a/src/lib/libcrypto/objects/obj_dat.c
+++ /dev/null
@@ -1,649 +0,0 @@
1/* crypto/objects/obj_dat.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 <ctype.h>
61#include "cryptlib.h"
62#include <openssl/lhash.h>
63#include <openssl/asn1.h>
64#include <openssl/objects.h>
65
66/* obj_dat.h is generated from objects.h by obj_dat.pl */
67#ifndef NO_OBJECT
68#include "obj_dat.h"
69#else
70/* You will have to load all the objects needed manually in the application */
71#define NUM_NID 0
72#define NUM_SN 0
73#define NUM_LN 0
74#define NUM_OBJ 0
75static unsigned char lvalues[1];
76static ASN1_OBJECT nid_objs[1];
77static ASN1_OBJECT *sn_objs[1];
78static ASN1_OBJECT *ln_objs[1];
79static ASN1_OBJECT *obj_objs[1];
80#endif
81
82static int sn_cmp(ASN1_OBJECT **a, ASN1_OBJECT **b);
83static int ln_cmp(ASN1_OBJECT **a, ASN1_OBJECT **b);
84static int obj_cmp(ASN1_OBJECT **a, ASN1_OBJECT **b);
85#define ADDED_DATA 0
86#define ADDED_SNAME 1
87#define ADDED_LNAME 2
88#define ADDED_NID 3
89
90typedef struct added_obj_st
91 {
92 int type;
93 ASN1_OBJECT *obj;
94 } ADDED_OBJ;
95
96static int new_nid=NUM_NID;
97static LHASH *added=NULL;
98
99static int sn_cmp(ASN1_OBJECT **ap, ASN1_OBJECT **bp)
100 { return(strcmp((*ap)->sn,(*bp)->sn)); }
101
102static int ln_cmp(ASN1_OBJECT **ap, ASN1_OBJECT **bp)
103 { return(strcmp((*ap)->ln,(*bp)->ln)); }
104
105static unsigned long add_hash(ADDED_OBJ *ca)
106 {
107 ASN1_OBJECT *a;
108 int i;
109 unsigned long ret=0;
110 unsigned char *p;
111
112 a=ca->obj;
113 switch (ca->type)
114 {
115 case ADDED_DATA:
116 ret=a->length<<20L;
117 p=(unsigned char *)a->data;
118 for (i=0; i<a->length; i++)
119 ret^=p[i]<<((i*3)%24);
120 break;
121 case ADDED_SNAME:
122 ret=lh_strhash(a->sn);
123 break;
124 case ADDED_LNAME:
125 ret=lh_strhash(a->ln);
126 break;
127 case ADDED_NID:
128 ret=a->nid;
129 break;
130 default:
131 abort();
132 }
133 ret&=0x3fffffffL;
134 ret|=ca->type<<30L;
135 return(ret);
136 }
137
138static int add_cmp(ADDED_OBJ *ca, ADDED_OBJ *cb)
139 {
140 ASN1_OBJECT *a,*b;
141 int i;
142
143 i=ca->type-cb->type;
144 if (i) return(i);
145 a=ca->obj;
146 b=cb->obj;
147 switch (ca->type)
148 {
149 case ADDED_DATA:
150 i=(a->length - b->length);
151 if (i) return(i);
152 return(memcmp(a->data,b->data,a->length));
153 case ADDED_SNAME:
154 if (a->sn == NULL) return(-1);
155 else if (b->sn == NULL) return(1);
156 else return(strcmp(a->sn,b->sn));
157 case ADDED_LNAME:
158 if (a->ln == NULL) return(-1);
159 else if (b->ln == NULL) return(1);
160 else return(strcmp(a->ln,b->ln));
161 case ADDED_NID:
162 return(a->nid-b->nid);
163 default:
164 abort();
165 }
166 return(1); /* should not get here */
167 }
168
169static int init_added(void)
170 {
171 if (added != NULL) return(1);
172 added=lh_new(add_hash,add_cmp);
173 return(added != NULL);
174 }
175
176static void cleanup1(ADDED_OBJ *a)
177 {
178 a->obj->nid=0;
179 a->obj->flags|=ASN1_OBJECT_FLAG_DYNAMIC|
180 ASN1_OBJECT_FLAG_DYNAMIC_STRINGS|
181 ASN1_OBJECT_FLAG_DYNAMIC_DATA;
182 }
183
184static void cleanup2(ADDED_OBJ *a)
185 { a->obj->nid++; }
186
187static void cleanup3(ADDED_OBJ *a)
188 {
189 if (--a->obj->nid == 0)
190 ASN1_OBJECT_free(a->obj);
191 Free(a);
192 }
193
194void OBJ_cleanup(void)
195 {
196 if (added == NULL) return;
197 added->down_load=0;
198 lh_doall(added,cleanup1); /* zero counters */
199 lh_doall(added,cleanup2); /* set counters */
200 lh_doall(added,cleanup3); /* free objects */
201 lh_free(added);
202 added=NULL;
203 }
204
205int OBJ_new_nid(int num)
206 {
207 int i;
208
209 i=new_nid;
210 new_nid+=num;
211 return(i);
212 }
213
214int OBJ_add_object(ASN1_OBJECT *obj)
215 {
216 ASN1_OBJECT *o;
217 ADDED_OBJ *ao[4]={NULL,NULL,NULL,NULL},*aop;
218 int i;
219
220 if (added == NULL)
221 if (!init_added()) return(0);
222 if ((o=OBJ_dup(obj)) == NULL) goto err;
223 ao[ADDED_NID]=(ADDED_OBJ *)Malloc(sizeof(ADDED_OBJ));
224 if ((o->length != 0) && (obj->data != NULL))
225 ao[ADDED_DATA]=(ADDED_OBJ *)Malloc(sizeof(ADDED_OBJ));
226 if (o->sn != NULL)
227 ao[ADDED_SNAME]=(ADDED_OBJ *)Malloc(sizeof(ADDED_OBJ));
228 if (o->ln != NULL)
229 ao[ADDED_LNAME]=(ADDED_OBJ *)Malloc(sizeof(ADDED_OBJ));
230
231 for (i=ADDED_DATA; i<=ADDED_NID; i++)
232 {
233 if (ao[i] != NULL)
234 {
235 ao[i]->type=i;
236 ao[i]->obj=o;
237 aop=(ADDED_OBJ *)lh_insert(added,ao[i]);
238 /* memory leak, buit should not normally matter */
239 if (aop != NULL)
240 Free(aop);
241 }
242 }
243 o->flags&= ~(ASN1_OBJECT_FLAG_DYNAMIC|ASN1_OBJECT_FLAG_DYNAMIC_STRINGS|
244 ASN1_OBJECT_FLAG_DYNAMIC_DATA);
245
246 return(o->nid);
247err:
248 for (i=ADDED_DATA; i<=ADDED_NID; i++)
249 if (ao[i] != NULL) Free(ao[i]);
250 if (o != NULL) Free(o);
251 return(NID_undef);
252 }
253
254ASN1_OBJECT *OBJ_nid2obj(int n)
255 {
256 ADDED_OBJ ad,*adp;
257 ASN1_OBJECT ob;
258
259 if ((n >= 0) && (n < NUM_NID))
260 {
261 if ((n != NID_undef) && (nid_objs[n].nid == NID_undef))
262 {
263 OBJerr(OBJ_F_OBJ_NID2OBJ,OBJ_R_UNKNOWN_NID);
264 return(NULL);
265 }
266 return((ASN1_OBJECT *)&(nid_objs[n]));
267 }
268 else if (added == NULL)
269 return(NULL);
270 else
271 {
272 ad.type=ADDED_NID;
273 ad.obj= &ob;
274 ob.nid=n;
275 adp=(ADDED_OBJ *)lh_retrieve(added,&ad);
276 if (adp != NULL)
277 return(adp->obj);
278 else
279 {
280 OBJerr(OBJ_F_OBJ_NID2OBJ,OBJ_R_UNKNOWN_NID);
281 return(NULL);
282 }
283 }
284 }
285
286const char *OBJ_nid2sn(int n)
287 {
288 ADDED_OBJ ad,*adp;
289 ASN1_OBJECT ob;
290
291 if ((n >= 0) && (n < NUM_NID))
292 {
293 if ((n != NID_undef) && (nid_objs[n].nid == NID_undef))
294 {
295 OBJerr(OBJ_F_OBJ_NID2SN,OBJ_R_UNKNOWN_NID);
296 return(NULL);
297 }
298 return(nid_objs[n].sn);
299 }
300 else if (added == NULL)
301 return(NULL);
302 else
303 {
304 ad.type=ADDED_NID;
305 ad.obj= &ob;
306 ob.nid=n;
307 adp=(ADDED_OBJ *)lh_retrieve(added,&ad);
308 if (adp != NULL)
309 return(adp->obj->sn);
310 else
311 {
312 OBJerr(OBJ_F_OBJ_NID2SN,OBJ_R_UNKNOWN_NID);
313 return(NULL);
314 }
315 }
316 }
317
318const char *OBJ_nid2ln(int n)
319 {
320 ADDED_OBJ ad,*adp;
321 ASN1_OBJECT ob;
322
323 if ((n >= 0) && (n < NUM_NID))
324 {
325 if ((n != NID_undef) && (nid_objs[n].nid == NID_undef))
326 {
327 OBJerr(OBJ_F_OBJ_NID2LN,OBJ_R_UNKNOWN_NID);
328 return(NULL);
329 }
330 return(nid_objs[n].ln);
331 }
332 else if (added == NULL)
333 return(NULL);
334 else
335 {
336 ad.type=ADDED_NID;
337 ad.obj= &ob;
338 ob.nid=n;
339 adp=(ADDED_OBJ *)lh_retrieve(added,&ad);
340 if (adp != NULL)
341 return(adp->obj->ln);
342 else
343 {
344 OBJerr(OBJ_F_OBJ_NID2LN,OBJ_R_UNKNOWN_NID);
345 return(NULL);
346 }
347 }
348 }
349
350int OBJ_obj2nid(ASN1_OBJECT *a)
351 {
352 ASN1_OBJECT **op;
353 ADDED_OBJ ad,*adp;
354
355 if (a == NULL)
356 return(NID_undef);
357 if (a->nid != 0)
358 return(a->nid);
359
360 if (added != NULL)
361 {
362 ad.type=ADDED_DATA;
363 ad.obj=a;
364 adp=(ADDED_OBJ *)lh_retrieve(added,&ad);
365 if (adp != NULL) return (adp->obj->nid);
366 }
367 op=(ASN1_OBJECT **)OBJ_bsearch((char *)&a,(char *)obj_objs,NUM_OBJ,
368 sizeof(ASN1_OBJECT *),(int (*)())obj_cmp);
369 if (op == NULL)
370 return(NID_undef);
371 return((*op)->nid);
372 }
373
374/* Convert an object name into an ASN1_OBJECT
375 * if "noname" is not set then search for short and long names first.
376 * This will convert the "dotted" form into an object: unlike OBJ_txt2nid
377 * it can be used with any objects, not just registered ones.
378 */
379
380ASN1_OBJECT *OBJ_txt2obj(const char *s, int no_name)
381 {
382 int nid = NID_undef;
383 ASN1_OBJECT *op=NULL;
384 unsigned char *buf,*p;
385 int i, j;
386
387 if(!no_name) {
388 if( ((nid = OBJ_sn2nid(s)) != NID_undef) ||
389 ((nid = OBJ_ln2nid(s)) != NID_undef) )
390 return OBJ_nid2obj(nid);
391 }
392
393 /* Work out size of content octets */
394 i=a2d_ASN1_OBJECT(NULL,0,s,-1);
395 if (i <= 0) {
396 /* Clear the error */
397 ERR_get_error();
398 return NULL;
399 }
400 /* Work out total size */
401 j = ASN1_object_size(0,i,V_ASN1_OBJECT);
402
403 if((buf=(unsigned char *)Malloc(j)) == NULL) return NULL;
404
405 p = buf;
406 /* Write out tag+length */
407 ASN1_put_object(&p,0,i,V_ASN1_OBJECT,V_ASN1_UNIVERSAL);
408 /* Write out contents */
409 a2d_ASN1_OBJECT(p,i,s,-1);
410
411 p=buf;
412 op=d2i_ASN1_OBJECT(NULL,&p,i);
413 Free(buf);
414 return op;
415 }
416
417int OBJ_obj2txt(char *buf, int buf_len, ASN1_OBJECT *a, int no_name)
418{
419 int i,idx=0,n=0,len,nid;
420 unsigned long l;
421 unsigned char *p;
422 const char *s;
423 char tbuf[32];
424
425 if (buf_len <= 0) return(0);
426
427 if ((a == NULL) || (a->data == NULL)) {
428 buf[0]='\0';
429 return(0);
430 }
431
432 nid=OBJ_obj2nid(a);
433 if ((nid == NID_undef) || no_name) {
434 len=a->length;
435 p=a->data;
436
437 idx=0;
438 l=0;
439 while (idx < a->length) {
440 l|=(p[idx]&0x7f);
441 if (!(p[idx] & 0x80)) break;
442 l<<=7L;
443 idx++;
444 }
445 idx++;
446 i=(int)(l/40);
447 if (i > 2) i=2;
448 l-=(long)(i*40);
449
450 sprintf(tbuf,"%d.%lu",i,l);
451 i=strlen(tbuf);
452 strncpy(buf,tbuf,buf_len);
453 buf_len-=i;
454 buf+=i;
455 n+=i;
456
457 l=0;
458 for (; idx<len; idx++) {
459 l|=p[idx]&0x7f;
460 if (!(p[idx] & 0x80)) {
461 sprintf(tbuf,".%lu",l);
462 i=strlen(tbuf);
463 if (buf_len > 0)
464 strncpy(buf,tbuf,buf_len);
465 buf_len-=i;
466 buf+=i;
467 n+=i;
468 l=0;
469 }
470 l<<=7L;
471 }
472 } else {
473 s=OBJ_nid2ln(nid);
474 if (s == NULL)
475 s=OBJ_nid2sn(nid);
476 strncpy(buf,s,buf_len);
477 n=strlen(s);
478 }
479 buf[buf_len-1]='\0';
480 return(n);
481}
482
483int OBJ_txt2nid(char *s)
484{
485 ASN1_OBJECT *obj;
486 int nid;
487 obj = OBJ_txt2obj(s, 0);
488 nid = OBJ_obj2nid(obj);
489 ASN1_OBJECT_free(obj);
490 return nid;
491}
492
493int OBJ_ln2nid(const char *s)
494 {
495 ASN1_OBJECT o,*oo= &o,**op;
496 ADDED_OBJ ad,*adp;
497
498 o.ln=s;
499 if (added != NULL)
500 {
501 ad.type=ADDED_LNAME;
502 ad.obj= &o;
503 adp=(ADDED_OBJ *)lh_retrieve(added,&ad);
504 if (adp != NULL) return (adp->obj->nid);
505 }
506 op=(ASN1_OBJECT **)OBJ_bsearch((char *)&oo,(char *)ln_objs,NUM_LN,
507 sizeof(ASN1_OBJECT *),(int (*)())ln_cmp);
508 if (op == NULL) return(NID_undef);
509 return((*op)->nid);
510 }
511
512int OBJ_sn2nid(const char *s)
513 {
514 ASN1_OBJECT o,*oo= &o,**op;
515 ADDED_OBJ ad,*adp;
516
517 o.sn=s;
518 if (added != NULL)
519 {
520 ad.type=ADDED_SNAME;
521 ad.obj= &o;
522 adp=(ADDED_OBJ *)lh_retrieve(added,&ad);
523 if (adp != NULL) return (adp->obj->nid);
524 }
525 op=(ASN1_OBJECT **)OBJ_bsearch((char *)&oo,(char *)sn_objs,NUM_SN,
526 sizeof(ASN1_OBJECT *),(int (*)())sn_cmp);
527 if (op == NULL) return(NID_undef);
528 return((*op)->nid);
529 }
530
531static int obj_cmp(ASN1_OBJECT **ap, ASN1_OBJECT **bp)
532 {
533 int j;
534 ASN1_OBJECT *a= *ap;
535 ASN1_OBJECT *b= *bp;
536
537 j=(a->length - b->length);
538 if (j) return(j);
539 return(memcmp(a->data,b->data,a->length));
540 }
541
542char *OBJ_bsearch(char *key, char *base, int num, int size, int (*cmp)())
543 {
544 int l,h,i,c;
545 char *p;
546
547 if (num == 0) return(NULL);
548 l=0;
549 h=num;
550 while (l < h)
551 {
552 i=(l+h)/2;
553 p= &(base[i*size]);
554 c=(*cmp)(key,p);
555 if (c < 0)
556 h=i;
557 else if (c > 0)
558 l=i+1;
559 else
560 return(p);
561 }
562#ifdef CHARSET_EBCDIC
563/* THIS IS A KLUDGE - Because the *_obj is sorted in ASCII order, and
564 * I don't have perl (yet), we revert to a *LINEAR* search
565 * when the object wasn't found in the binary search.
566 */
567 for (i=0; i<num; ++i) {
568 p= &(base[i*size]);
569 if ((*cmp)(key,p) == 0)
570 return p;
571 }
572#endif
573 return(NULL);
574 }
575
576int OBJ_create_objects(BIO *in)
577 {
578 MS_STATIC char buf[512];
579 int i,num=0;
580 char *o,*s,*l=NULL;
581
582 for (;;)
583 {
584 s=o=NULL;
585 i=BIO_gets(in,buf,512);
586 if (i <= 0) return(num);
587 buf[i-1]='\0';
588 if (!isalnum((unsigned char)buf[0])) return(num);
589 o=s=buf;
590 while (isdigit((unsigned char)*s) || (*s == '.'))
591 s++;
592 if (*s != '\0')
593 {
594 *(s++)='\0';
595 while (isspace((unsigned char)*s))
596 s++;
597 if (*s == '\0')
598 s=NULL;
599 else
600 {
601 l=s;
602 while ((*l != '\0') && !isspace((unsigned char)*l))
603 l++;
604 if (*l != '\0')
605 {
606 *(l++)='\0';
607 while (isspace((unsigned char)*l))
608 l++;
609 if (*l == '\0') l=NULL;
610 }
611 else
612 l=NULL;
613 }
614 }
615 else
616 s=NULL;
617 if ((o == NULL) || (*o == '\0')) return(num);
618 if (!OBJ_create(o,s,l)) return(num);
619 num++;
620 }
621 /* return(num); */
622 }
623
624int OBJ_create(char *oid, char *sn, char *ln)
625 {
626 int ok=0;
627 ASN1_OBJECT *op=NULL;
628 unsigned char *buf;
629 int i;
630
631 i=a2d_ASN1_OBJECT(NULL,0,oid,-1);
632 if (i <= 0) return(0);
633
634 if ((buf=(unsigned char *)Malloc(i)) == NULL)
635 {
636 OBJerr(OBJ_F_OBJ_CREATE,OBJ_R_MALLOC_FAILURE);
637 return(0);
638 }
639 i=a2d_ASN1_OBJECT(buf,i,oid,-1);
640 op=(ASN1_OBJECT *)ASN1_OBJECT_create(OBJ_new_nid(1),buf,i,sn,ln);
641 if (op == NULL)
642 goto err;
643 ok=OBJ_add_object(op);
644err:
645 ASN1_OBJECT_free(op);
646 Free(buf);
647 return(ok);
648 }
649
diff --git a/src/lib/libcrypto/objects/obj_dat.pl b/src/lib/libcrypto/objects/obj_dat.pl
deleted file mode 100644
index e6e3c3b9c0..0000000000
--- a/src/lib/libcrypto/objects/obj_dat.pl
+++ /dev/null
@@ -1,275 +0,0 @@
1#!/usr/local/bin/perl
2
3sub obj_cmp
4 {
5 local(@a,@b,$_,$r);
6
7 $A=$obj_len{$obj{$nid{$a}}};
8 $B=$obj_len{$obj{$nid{$b}}};
9
10 $r=($A-$B);
11 return($r) if $r != 0;
12
13 $A=$obj_der{$obj{$nid{$a}}};
14 $B=$obj_der{$obj{$nid{$b}}};
15
16 return($A cmp $B);
17 }
18
19sub expand_obj
20 {
21 local(*v)=@_;
22 local($k,$d);
23 local($i);
24
25 do {
26 $i=0;
27 foreach $k (keys %v)
28 {
29 if (($v{$k} =~ s/(OBJ_[^,]+),/$v{$1},/))
30 { $i++; }
31 }
32 } while($i);
33 foreach $k (keys %v)
34 {
35 @a=split(/,/,$v{$k});
36 $objn{$k}=$#a+1;
37 }
38 return(%objn);
39 }
40
41open (IN,"$ARGV[0]") || die "Can't open input file $ARGV[0]";
42open (OUT,">$ARGV[1]") || die "Can't open output file $ARGV[1]";
43
44while (<IN>)
45 {
46 next unless /^\#define\s+(\S+)\s+(.*)$/;
47 $v=$1;
48 $d=$2;
49 if ($v =~ /^SN_(.*)$/)
50 { $sn{$1}=$d; }
51 elsif ($v =~ /^LN_(.*)$/)
52 { $ln{$1}=$d; }
53 elsif ($v =~ /^NID_(.*)$/)
54 { $nid{$d}=$1; }
55 elsif ($v =~ /^OBJ_(.*)$/)
56 {
57 $obj{$1}=$v;
58 $objd{$v}=$d;
59 }
60 }
61close IN;
62
63%ob=&expand_obj(*objd);
64
65@a=sort { $a <=> $b } keys %nid;
66$n=$a[$#a]+1;
67
68@lvalues=();
69$lvalues=0;
70
71for ($i=0; $i<$n; $i++)
72 {
73 if (!defined($nid{$i}))
74 {
75 push(@out,"{NULL,NULL,NID_undef,0,NULL},\n");
76 }
77 else
78 {
79 $sn=defined($sn{$nid{$i}})?"$sn{$nid{$i}}":"NULL";
80 $ln=defined($ln{$nid{$i}})?"$ln{$nid{$i}}":"NULL";
81 $sn=$ln if ($sn eq "NULL");
82 $ln=$sn if ($ln eq "NULL");
83 $out ="{";
84 $out.=$sn;
85 $out.=",".$ln;
86 $out.=",NID_$nid{$i},";
87 if (defined($obj{$nid{$i}}))
88 {
89 $v=$objd{$obj{$nid{$i}}};
90 $v =~ s/L//g;
91 $v =~ s/,/ /g;
92 $r=&der_it($v);
93 $z="";
94 $length=0;
95 foreach (unpack("C*",$r))
96 {
97 $z.=sprintf("0x%02X,",$_);
98 $length++;
99 }
100 $obj_der{$obj{$nid{$i}}}=$z;
101 $obj_len{$obj{$nid{$i}}}=$length;
102
103 push(@lvalues,sprintf("%-45s/* [%3d] %s */\n",
104 $z,$lvalues,$obj{$nid{$i}}));
105 $out.="$length,&(lvalues[$lvalues]),0";
106 $lvalues+=$length;
107 }
108 else
109 {
110 $out.="0,NULL";
111 }
112 $out.="},\n";
113 push(@out,$out);
114 }
115 }
116
117@a=grep(defined($sn{$nid{$_}}),0 .. $n);
118foreach (sort { $sn{$nid{$a}} cmp $sn{$nid{$b}} } @a)
119 {
120 push(@sn,sprintf("&(nid_objs[%2d]),/* $sn{$nid{$_}} */\n",$_));
121 }
122
123@a=grep(defined($ln{$nid{$_}}),0 .. $n);
124foreach (sort { $ln{$nid{$a}} cmp $ln{$nid{$b}} } @a)
125 {
126 push(@ln,sprintf("&(nid_objs[%2d]),/* $ln{$nid{$_}} */\n",$_));
127 }
128
129@a=grep(defined($obj{$nid{$_}}),0 .. $n);
130foreach (sort obj_cmp @a)
131 {
132 $m=$obj{$nid{$_}};
133 $v=$objd{$m};
134 $v =~ s/L//g;
135 $v =~ s/,/ /g;
136 push(@ob,sprintf("&(nid_objs[%2d]),/* %-32s %s */\n",$_,$m,$v));
137 }
138
139print OUT <<'EOF';
140/* lib/obj/obj_dat.h */
141/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
142 * All rights reserved.
143 *
144 * This package is an SSL implementation written
145 * by Eric Young (eay@cryptsoft.com).
146 * The implementation was written so as to conform with Netscapes SSL.
147 *
148 * This library is free for commercial and non-commercial use as long as
149 * the following conditions are aheared to. The following conditions
150 * apply to all code found in this distribution, be it the RC4, RSA,
151 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
152 * included with this distribution is covered by the same copyright terms
153 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
154 *
155 * Copyright remains Eric Young's, and as such any Copyright notices in
156 * the code are not to be removed.
157 * If this package is used in a product, Eric Young should be given attribution
158 * as the author of the parts of the library used.
159 * This can be in the form of a textual message at program startup or
160 * in documentation (online or textual) provided with the package.
161 *
162 * Redistribution and use in source and binary forms, with or without
163 * modification, are permitted provided that the following conditions
164 * are met:
165 * 1. Redistributions of source code must retain the copyright
166 * notice, this list of conditions and the following disclaimer.
167 * 2. Redistributions in binary form must reproduce the above copyright
168 * notice, this list of conditions and the following disclaimer in the
169 * documentation and/or other materials provided with the distribution.
170 * 3. All advertising materials mentioning features or use of this software
171 * must display the following acknowledgement:
172 * "This product includes cryptographic software written by
173 * Eric Young (eay@cryptsoft.com)"
174 * The word 'cryptographic' can be left out if the rouines from the library
175 * being used are not cryptographic related :-).
176 * 4. If you include any Windows specific code (or a derivative thereof) from
177 * the apps directory (application code) you must include an acknowledgement:
178 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
179 *
180 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
181 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
182 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
183 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
184 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
185 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
186 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
187 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
188 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
189 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
190 * SUCH DAMAGE.
191 *
192 * The licence and distribution terms for any publically available version or
193 * derivative of this code cannot be changed. i.e. this code cannot simply be
194 * copied and put under another distribution licence
195 * [including the GNU Public Licence.]
196 */
197
198/* THIS FILE IS GENERATED FROM Objects.h by obj_dat.pl via the
199 * following command:
200 * perl obj_dat.pl objects.h obj_dat.h
201 */
202
203EOF
204
205printf OUT "#define NUM_NID %d\n",$n;
206printf OUT "#define NUM_SN %d\n",$#sn+1;
207printf OUT "#define NUM_LN %d\n",$#ln+1;
208printf OUT "#define NUM_OBJ %d\n\n",$#ob+1;
209
210printf OUT "static unsigned char lvalues[%d]={\n",$lvalues+1;
211print OUT @lvalues;
212print OUT "};\n\n";
213
214printf OUT "static ASN1_OBJECT nid_objs[NUM_NID]={\n";
215foreach (@out)
216 {
217 if (length($_) > 75)
218 {
219 $out="";
220 foreach (split(/,/))
221 {
222 $t=$out.$_.",";
223 if (length($t) > 70)
224 {
225 print OUT "$out\n";
226 $t="\t$_,";
227 }
228 $out=$t;
229 }
230 chop $out;
231 print OUT "$out";
232 }
233 else
234 { print OUT $_; }
235 }
236print OUT "};\n\n";
237
238printf OUT "static ASN1_OBJECT *sn_objs[NUM_SN]={\n";
239print OUT @sn;
240print OUT "};\n\n";
241
242printf OUT "static ASN1_OBJECT *ln_objs[NUM_LN]={\n";
243print OUT @ln;
244print OUT "};\n\n";
245
246printf OUT "static ASN1_OBJECT *obj_objs[NUM_OBJ]={\n";
247print OUT @ob;
248print OUT "};\n\n";
249
250close OUT;
251
252sub der_it
253 {
254 local($v)=@_;
255 local(@a,$i,$ret,@r);
256
257 @a=split(/\s+/,$v);
258 $ret.=pack("C*",$a[0]*40+$a[1]);
259 shift @a;
260 shift @a;
261 foreach (@a)
262 {
263 @r=();
264 $t=0;
265 while ($_ >= 128)
266 {
267 $x=$_%128;
268 $_/=128;
269 push(@r,((($t++)?0x80:0)|$x));
270 }
271 push(@r,((($t++)?0x80:0)|$_));
272 $ret.=pack("C*",reverse(@r));
273 }
274 return($ret);
275 }
diff --git a/src/lib/libcrypto/objects/obj_err.c b/src/lib/libcrypto/objects/obj_err.c
deleted file mode 100644
index 7aec0ed47a..0000000000
--- a/src/lib/libcrypto/objects/obj_err.c
+++ /dev/null
@@ -1,99 +0,0 @@
1/* crypto/objects/obj_err.c */
2/* ====================================================================
3 * Copyright (c) 1999 The OpenSSL Project. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in
14 * the documentation and/or other materials provided with the
15 * distribution.
16 *
17 * 3. All advertising materials mentioning features or use of this
18 * software must display the following acknowledgment:
19 * "This product includes software developed by the OpenSSL Project
20 * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
21 *
22 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
23 * endorse or promote products derived from this software without
24 * prior written permission. For written permission, please contact
25 * openssl-core@OpenSSL.org.
26 *
27 * 5. Products derived from this software may not be called "OpenSSL"
28 * nor may "OpenSSL" appear in their names without prior written
29 * permission of the OpenSSL Project.
30 *
31 * 6. Redistributions of any form whatsoever must retain the following
32 * acknowledgment:
33 * "This product includes software developed by the OpenSSL Project
34 * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
35 *
36 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
37 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
38 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
39 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
40 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
42 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
43 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
44 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
45 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
46 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
47 * OF THE POSSIBILITY OF SUCH DAMAGE.
48 * ====================================================================
49 *
50 * This product includes cryptographic software written by Eric Young
51 * (eay@cryptsoft.com). This product includes software written by Tim
52 * Hudson (tjh@cryptsoft.com).
53 *
54 */
55
56/* NOTE: this file was auto generated by the mkerr.pl script: any changes
57 * made to it will be overwritten when the script next updates this file,
58 * only reason strings will be preserved.
59 */
60
61#include <stdio.h>
62#include <openssl/err.h>
63#include <openssl/objects.h>
64
65/* BEGIN ERROR CODES */
66#ifndef NO_ERR
67static ERR_STRING_DATA OBJ_str_functs[]=
68 {
69{ERR_PACK(0,OBJ_F_OBJ_CREATE,0), "OBJ_create"},
70{ERR_PACK(0,OBJ_F_OBJ_DUP,0), "OBJ_dup"},
71{ERR_PACK(0,OBJ_F_OBJ_NID2LN,0), "OBJ_nid2ln"},
72{ERR_PACK(0,OBJ_F_OBJ_NID2OBJ,0), "OBJ_nid2obj"},
73{ERR_PACK(0,OBJ_F_OBJ_NID2SN,0), "OBJ_nid2sn"},
74{0,NULL}
75 };
76
77static ERR_STRING_DATA OBJ_str_reasons[]=
78 {
79{OBJ_R_MALLOC_FAILURE ,"malloc failure"},
80{OBJ_R_UNKNOWN_NID ,"unknown nid"},
81{0,NULL}
82 };
83
84#endif
85
86void ERR_load_OBJ_strings(void)
87 {
88 static int init=1;
89
90 if (init)
91 {
92 init=0;
93#ifndef NO_ERR
94 ERR_load_strings(ERR_LIB_OBJ,OBJ_str_functs);
95 ERR_load_strings(ERR_LIB_OBJ,OBJ_str_reasons);
96#endif
97
98 }
99 }
diff --git a/src/lib/libcrypto/objects/obj_lib.c b/src/lib/libcrypto/objects/obj_lib.c
deleted file mode 100644
index 1a1ba0fc06..0000000000
--- a/src/lib/libcrypto/objects/obj_lib.c
+++ /dev/null
@@ -1,126 +0,0 @@
1/* crypto/objects/obj_lib.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/lhash.h>
62#include <openssl/objects.h>
63#include <openssl/buffer.h>
64
65ASN1_OBJECT *OBJ_dup(ASN1_OBJECT *o)
66 {
67 ASN1_OBJECT *r;
68 int i;
69 char *ln=NULL;
70
71 if (o == NULL) return(NULL);
72 if (!(o->flags & ASN1_OBJECT_FLAG_DYNAMIC))
73 return(o);
74
75 r=ASN1_OBJECT_new();
76 if (r == NULL)
77 {
78 OBJerr(OBJ_F_OBJ_DUP,ERR_R_ASN1_LIB);
79 return(NULL);
80 }
81 r->data=Malloc(o->length);
82 if (r->data == NULL)
83 goto err;
84 memcpy(r->data,o->data,o->length);
85 r->length=o->length;
86 r->nid=o->nid;
87 r->ln=r->sn=NULL;
88 if (o->ln != NULL)
89 {
90 i=strlen(o->ln)+1;
91 r->ln=ln=Malloc(i);
92 if (r->ln == NULL) goto err;
93 memcpy(ln,o->ln,i);
94 }
95
96 if (o->sn != NULL)
97 {
98 char *s;
99
100 i=strlen(o->sn)+1;
101 r->sn=s=Malloc(i);
102 if (r->sn == NULL) goto err;
103 memcpy(s,o->sn,i);
104 }
105 r->flags=o->flags|(ASN1_OBJECT_FLAG_DYNAMIC|
106 ASN1_OBJECT_FLAG_DYNAMIC_STRINGS|ASN1_OBJECT_FLAG_DYNAMIC_DATA);
107 return(r);
108err:
109 OBJerr(OBJ_F_OBJ_DUP,ERR_R_MALLOC_FAILURE);
110 if (r != NULL)
111 {
112 if (ln != NULL) Free(ln);
113 if (r->data != NULL) Free(r->data);
114 Free(r);
115 }
116 return(NULL);
117 }
118
119int OBJ_cmp(ASN1_OBJECT *a, ASN1_OBJECT *b)
120 {
121 int ret;
122
123 ret=(a->length-b->length);
124 if (ret) return(ret);
125 return(memcmp(a->data,b->data,a->length));
126 }
diff --git a/src/lib/libcrypto/objects/objects.h b/src/lib/libcrypto/objects/objects.h
deleted file mode 100644
index 95c8a21568..0000000000
--- a/src/lib/libcrypto/objects/objects.h
+++ /dev/null
@@ -1,1032 +0,0 @@
1/* crypto/objects/objects.h */
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#ifndef HEADER_OBJECTS_H
60#define HEADER_OBJECTS_H
61
62#ifdef __cplusplus
63extern "C" {
64#endif
65
66#define SN_undef "UNDEF"
67#define LN_undef "undefined"
68#define NID_undef 0
69#define OBJ_undef 0L
70
71#define SN_Algorithm "Algorithm"
72#define LN_algorithm "algorithm"
73#define NID_algorithm 38
74#define OBJ_algorithm 1L,3L,14L,3L,2L
75
76#define LN_rsadsi "rsadsi"
77#define NID_rsadsi 1
78#define OBJ_rsadsi 1L,2L,840L,113549L
79
80#define LN_pkcs "pkcs"
81#define NID_pkcs 2
82#define OBJ_pkcs OBJ_rsadsi,1L
83
84#define SN_md2 "MD2"
85#define LN_md2 "md2"
86#define NID_md2 3
87#define OBJ_md2 OBJ_rsadsi,2L,2L
88
89#define SN_md5 "MD5"
90#define LN_md5 "md5"
91#define NID_md5 4
92#define OBJ_md5 OBJ_rsadsi,2L,5L
93
94#define SN_rc4 "RC4"
95#define LN_rc4 "rc4"
96#define NID_rc4 5
97#define OBJ_rc4 OBJ_rsadsi,3L,4L
98
99#define LN_rsaEncryption "rsaEncryption"
100#define NID_rsaEncryption 6
101#define OBJ_rsaEncryption OBJ_pkcs,1L,1L
102
103#define SN_md2WithRSAEncryption "RSA-MD2"
104#define LN_md2WithRSAEncryption "md2WithRSAEncryption"
105#define NID_md2WithRSAEncryption 7
106#define OBJ_md2WithRSAEncryption OBJ_pkcs,1L,2L
107
108#define SN_md5WithRSAEncryption "RSA-MD5"
109#define LN_md5WithRSAEncryption "md5WithRSAEncryption"
110#define NID_md5WithRSAEncryption 8
111#define OBJ_md5WithRSAEncryption OBJ_pkcs,1L,4L
112
113#define SN_pbeWithMD2AndDES_CBC "PBE-MD2-DES"
114#define LN_pbeWithMD2AndDES_CBC "pbeWithMD2AndDES-CBC"
115#define NID_pbeWithMD2AndDES_CBC 9
116#define OBJ_pbeWithMD2AndDES_CBC OBJ_pkcs,5L,1L
117
118#define SN_pbeWithMD5AndDES_CBC "PBE-MD5-DES"
119#define LN_pbeWithMD5AndDES_CBC "pbeWithMD5AndDES-CBC"
120#define NID_pbeWithMD5AndDES_CBC 10
121#define OBJ_pbeWithMD5AndDES_CBC OBJ_pkcs,5L,3L
122
123#define LN_X500 "X500"
124#define NID_X500 11
125#define OBJ_X500 2L,5L
126
127#define LN_X509 "X509"
128#define NID_X509 12
129#define OBJ_X509 OBJ_X500,4L
130
131#define SN_commonName "CN"
132#define LN_commonName "commonName"
133#define NID_commonName 13
134#define OBJ_commonName OBJ_X509,3L
135
136#define SN_countryName "C"
137#define LN_countryName "countryName"
138#define NID_countryName 14
139#define OBJ_countryName OBJ_X509,6L
140
141#define SN_localityName "L"
142#define LN_localityName "localityName"
143#define NID_localityName 15
144#define OBJ_localityName OBJ_X509,7L
145
146/* Postal Address? PA */
147
148/* should be "ST" (rfc1327) but MS uses 'S' */
149#define SN_stateOrProvinceName "ST"
150#define LN_stateOrProvinceName "stateOrProvinceName"
151#define NID_stateOrProvinceName 16
152#define OBJ_stateOrProvinceName OBJ_X509,8L
153
154#define SN_organizationName "O"
155#define LN_organizationName "organizationName"
156#define NID_organizationName 17
157#define OBJ_organizationName OBJ_X509,10L
158
159#define SN_organizationalUnitName "OU"
160#define LN_organizationalUnitName "organizationalUnitName"
161#define NID_organizationalUnitName 18
162#define OBJ_organizationalUnitName OBJ_X509,11L
163
164#define SN_rsa "RSA"
165#define LN_rsa "rsa"
166#define NID_rsa 19
167#define OBJ_rsa OBJ_X500,8L,1L,1L
168
169#define LN_pkcs7 "pkcs7"
170#define NID_pkcs7 20
171#define OBJ_pkcs7 OBJ_pkcs,7L
172
173#define LN_pkcs7_data "pkcs7-data"
174#define NID_pkcs7_data 21
175#define OBJ_pkcs7_data OBJ_pkcs7,1L
176
177#define LN_pkcs7_signed "pkcs7-signedData"
178#define NID_pkcs7_signed 22
179#define OBJ_pkcs7_signed OBJ_pkcs7,2L
180
181#define LN_pkcs7_enveloped "pkcs7-envelopedData"
182#define NID_pkcs7_enveloped 23
183#define OBJ_pkcs7_enveloped OBJ_pkcs7,3L
184
185#define LN_pkcs7_signedAndEnveloped "pkcs7-signedAndEnvelopedData"
186#define NID_pkcs7_signedAndEnveloped 24
187#define OBJ_pkcs7_signedAndEnveloped OBJ_pkcs7,4L
188
189#define LN_pkcs7_digest "pkcs7-digestData"
190#define NID_pkcs7_digest 25
191#define OBJ_pkcs7_digest OBJ_pkcs7,5L
192
193#define LN_pkcs7_encrypted "pkcs7-encryptedData"
194#define NID_pkcs7_encrypted 26
195#define OBJ_pkcs7_encrypted OBJ_pkcs7,6L
196
197#define LN_pkcs3 "pkcs3"
198#define NID_pkcs3 27
199#define OBJ_pkcs3 OBJ_pkcs,3L
200
201#define LN_dhKeyAgreement "dhKeyAgreement"
202#define NID_dhKeyAgreement 28
203#define OBJ_dhKeyAgreement OBJ_pkcs3,1L
204
205#define SN_des_ecb "DES-ECB"
206#define LN_des_ecb "des-ecb"
207#define NID_des_ecb 29
208#define OBJ_des_ecb OBJ_algorithm,6L
209
210#define SN_des_cfb64 "DES-CFB"
211#define LN_des_cfb64 "des-cfb"
212#define NID_des_cfb64 30
213/* IV + num */
214#define OBJ_des_cfb64 OBJ_algorithm,9L
215
216#define SN_des_cbc "DES-CBC"
217#define LN_des_cbc "des-cbc"
218#define NID_des_cbc 31
219/* IV */
220#define OBJ_des_cbc OBJ_algorithm,7L
221
222#define SN_des_ede "DES-EDE"
223#define LN_des_ede "des-ede"
224#define NID_des_ede 32
225/* ?? */
226#define OBJ_des_ede OBJ_algorithm,17L
227
228#define SN_des_ede3 "DES-EDE3"
229#define LN_des_ede3 "des-ede3"
230#define NID_des_ede3 33
231
232#define SN_idea_cbc "IDEA-CBC"
233#define LN_idea_cbc "idea-cbc"
234#define NID_idea_cbc 34
235#define OBJ_idea_cbc 1L,3L,6L,1L,4L,1L,188L,7L,1L,1L,2L
236
237#define SN_idea_cfb64 "IDEA-CFB"
238#define LN_idea_cfb64 "idea-cfb"
239#define NID_idea_cfb64 35
240
241#define SN_idea_ecb "IDEA-ECB"
242#define LN_idea_ecb "idea-ecb"
243#define NID_idea_ecb 36
244
245#define SN_rc2_cbc "RC2-CBC"
246#define LN_rc2_cbc "rc2-cbc"
247#define NID_rc2_cbc 37
248#define OBJ_rc2_cbc OBJ_rsadsi,3L,2L
249
250#define SN_rc2_ecb "RC2-ECB"
251#define LN_rc2_ecb "rc2-ecb"
252#define NID_rc2_ecb 38
253
254#define SN_rc2_cfb64 "RC2-CFB"
255#define LN_rc2_cfb64 "rc2-cfb"
256#define NID_rc2_cfb64 39
257
258#define SN_rc2_ofb64 "RC2-OFB"
259#define LN_rc2_ofb64 "rc2-ofb"
260#define NID_rc2_ofb64 40
261
262#define SN_sha "SHA"
263#define LN_sha "sha"
264#define NID_sha 41
265#define OBJ_sha OBJ_algorithm,18L
266
267#define SN_shaWithRSAEncryption "RSA-SHA"
268#define LN_shaWithRSAEncryption "shaWithRSAEncryption"
269#define NID_shaWithRSAEncryption 42
270#define OBJ_shaWithRSAEncryption OBJ_algorithm,15L
271
272#define SN_des_ede_cbc "DES-EDE-CBC"
273#define LN_des_ede_cbc "des-ede-cbc"
274#define NID_des_ede_cbc 43
275
276#define SN_des_ede3_cbc "DES-EDE3-CBC"
277#define LN_des_ede3_cbc "des-ede3-cbc"
278#define NID_des_ede3_cbc 44
279#define OBJ_des_ede3_cbc OBJ_rsadsi,3L,7L
280
281#define SN_des_ofb64 "DES-OFB"
282#define LN_des_ofb64 "des-ofb"
283#define NID_des_ofb64 45
284#define OBJ_des_ofb64 OBJ_algorithm,8L
285
286#define SN_idea_ofb64 "IDEA-OFB"
287#define LN_idea_ofb64 "idea-ofb"
288#define NID_idea_ofb64 46
289
290#define LN_pkcs9 "pkcs9"
291#define NID_pkcs9 47
292#define OBJ_pkcs9 OBJ_pkcs,9L
293
294#define SN_pkcs9_emailAddress "Email"
295#define LN_pkcs9_emailAddress "emailAddress"
296#define NID_pkcs9_emailAddress 48
297#define OBJ_pkcs9_emailAddress OBJ_pkcs9,1L
298
299#define LN_pkcs9_unstructuredName "unstructuredName"
300#define NID_pkcs9_unstructuredName 49
301#define OBJ_pkcs9_unstructuredName OBJ_pkcs9,2L
302
303#define LN_pkcs9_contentType "contentType"
304#define NID_pkcs9_contentType 50
305#define OBJ_pkcs9_contentType OBJ_pkcs9,3L
306
307#define LN_pkcs9_messageDigest "messageDigest"
308#define NID_pkcs9_messageDigest 51
309#define OBJ_pkcs9_messageDigest OBJ_pkcs9,4L
310
311#define LN_pkcs9_signingTime "signingTime"
312#define NID_pkcs9_signingTime 52
313#define OBJ_pkcs9_signingTime OBJ_pkcs9,5L
314
315#define LN_pkcs9_countersignature "countersignature"
316#define NID_pkcs9_countersignature 53
317#define OBJ_pkcs9_countersignature OBJ_pkcs9,6L
318
319#define LN_pkcs9_challengePassword "challengePassword"
320#define NID_pkcs9_challengePassword 54
321#define OBJ_pkcs9_challengePassword OBJ_pkcs9,7L
322
323#define LN_pkcs9_unstructuredAddress "unstructuredAddress"
324#define NID_pkcs9_unstructuredAddress 55
325#define OBJ_pkcs9_unstructuredAddress OBJ_pkcs9,8L
326
327#define LN_pkcs9_extCertAttributes "extendedCertificateAttributes"
328#define NID_pkcs9_extCertAttributes 56
329#define OBJ_pkcs9_extCertAttributes OBJ_pkcs9,9L
330
331#define SN_netscape "Netscape"
332#define LN_netscape "Netscape Communications Corp."
333#define NID_netscape 57
334#define OBJ_netscape 2L,16L,840L,1L,113730L
335
336#define SN_netscape_cert_extension "nsCertExt"
337#define LN_netscape_cert_extension "Netscape Certificate Extension"
338#define NID_netscape_cert_extension 58
339#define OBJ_netscape_cert_extension OBJ_netscape,1L
340
341#define SN_netscape_data_type "nsDataType"
342#define LN_netscape_data_type "Netscape Data Type"
343#define NID_netscape_data_type 59
344#define OBJ_netscape_data_type OBJ_netscape,2L
345
346#define SN_des_ede_cfb64 "DES-EDE-CFB"
347#define LN_des_ede_cfb64 "des-ede-cfb"
348#define NID_des_ede_cfb64 60
349
350#define SN_des_ede3_cfb64 "DES-EDE3-CFB"
351#define LN_des_ede3_cfb64 "des-ede3-cfb"
352#define NID_des_ede3_cfb64 61
353
354#define SN_des_ede_ofb64 "DES-EDE-OFB"
355#define LN_des_ede_ofb64 "des-ede-ofb"
356#define NID_des_ede_ofb64 62
357
358#define SN_des_ede3_ofb64 "DES-EDE3-OFB"
359#define LN_des_ede3_ofb64 "des-ede3-ofb"
360#define NID_des_ede3_ofb64 63
361
362/* I'm not sure about the object ID */
363#define SN_sha1 "SHA1"
364#define LN_sha1 "sha1"
365#define NID_sha1 64
366#define OBJ_sha1 OBJ_algorithm,26L
367/* 28 Jun 1996 - eay */
368/* #define OBJ_sha1 1L,3L,14L,2L,26L,05L <- wrong */
369
370#define SN_sha1WithRSAEncryption "RSA-SHA1"
371#define LN_sha1WithRSAEncryption "sha1WithRSAEncryption"
372#define NID_sha1WithRSAEncryption 65
373#define OBJ_sha1WithRSAEncryption OBJ_pkcs,1L,5L
374
375#define SN_dsaWithSHA "DSA-SHA"
376#define LN_dsaWithSHA "dsaWithSHA"
377#define NID_dsaWithSHA 66
378#define OBJ_dsaWithSHA OBJ_algorithm,13L
379
380#define SN_dsa_2 "DSA-old"
381#define LN_dsa_2 "dsaEncryption-old"
382#define NID_dsa_2 67
383#define OBJ_dsa_2 OBJ_algorithm,12L
384
385/* proposed by microsoft to RSA */
386#define SN_pbeWithSHA1AndRC2_CBC "PBE-SHA1-RC2-64"
387#define LN_pbeWithSHA1AndRC2_CBC "pbeWithSHA1AndRC2-CBC"
388#define NID_pbeWithSHA1AndRC2_CBC 68
389#define OBJ_pbeWithSHA1AndRC2_CBC OBJ_pkcs,5L,11L
390
391/* proposed by microsoft to RSA as pbeWithSHA1AndRC4: it is now
392 * defined explicitly in PKCS#5 v2.0 as id-PBKDF2 which is something
393 * completely different.
394 */
395#define LN_id_pbkdf2 "PBKDF2"
396#define NID_id_pbkdf2 69
397#define OBJ_id_pbkdf2 OBJ_pkcs,5L,12L
398
399#define SN_dsaWithSHA1_2 "DSA-SHA1-old"
400#define LN_dsaWithSHA1_2 "dsaWithSHA1-old"
401#define NID_dsaWithSHA1_2 70
402/* Got this one from 'sdn706r20.pdf' which is actually an NSA document :-) */
403#define OBJ_dsaWithSHA1_2 OBJ_algorithm,27L
404
405#define SN_netscape_cert_type "nsCertType"
406#define LN_netscape_cert_type "Netscape Cert Type"
407#define NID_netscape_cert_type 71
408#define OBJ_netscape_cert_type OBJ_netscape_cert_extension,1L
409
410#define SN_netscape_base_url "nsBaseUrl"
411#define LN_netscape_base_url "Netscape Base Url"
412#define NID_netscape_base_url 72
413#define OBJ_netscape_base_url OBJ_netscape_cert_extension,2L
414
415#define SN_netscape_revocation_url "nsRevocationUrl"
416#define LN_netscape_revocation_url "Netscape Revocation Url"
417#define NID_netscape_revocation_url 73
418#define OBJ_netscape_revocation_url OBJ_netscape_cert_extension,3L
419
420#define SN_netscape_ca_revocation_url "nsCaRevocationUrl"
421#define LN_netscape_ca_revocation_url "Netscape CA Revocation Url"
422#define NID_netscape_ca_revocation_url 74
423#define OBJ_netscape_ca_revocation_url OBJ_netscape_cert_extension,4L
424
425#define SN_netscape_renewal_url "nsRenewalUrl"
426#define LN_netscape_renewal_url "Netscape Renewal Url"
427#define NID_netscape_renewal_url 75
428#define OBJ_netscape_renewal_url OBJ_netscape_cert_extension,7L
429
430#define SN_netscape_ca_policy_url "nsCaPolicyUrl"
431#define LN_netscape_ca_policy_url "Netscape CA Policy Url"
432#define NID_netscape_ca_policy_url 76
433#define OBJ_netscape_ca_policy_url OBJ_netscape_cert_extension,8L
434
435#define SN_netscape_ssl_server_name "nsSslServerName"
436#define LN_netscape_ssl_server_name "Netscape SSL Server Name"
437#define NID_netscape_ssl_server_name 77
438#define OBJ_netscape_ssl_server_name OBJ_netscape_cert_extension,12L
439
440#define SN_netscape_comment "nsComment"
441#define LN_netscape_comment "Netscape Comment"
442#define NID_netscape_comment 78
443#define OBJ_netscape_comment OBJ_netscape_cert_extension,13L
444
445#define SN_netscape_cert_sequence "nsCertSequence"
446#define LN_netscape_cert_sequence "Netscape Certificate Sequence"
447#define NID_netscape_cert_sequence 79
448#define OBJ_netscape_cert_sequence OBJ_netscape_data_type,5L
449
450#define SN_desx_cbc "DESX-CBC"
451#define LN_desx_cbc "desx-cbc"
452#define NID_desx_cbc 80
453
454#define SN_ld_ce "ld-ce"
455#define NID_ld_ce 81
456#define OBJ_ld_ce 2L,5L,29L
457
458#define SN_subject_key_identifier "subjectKeyIdentifier"
459#define LN_subject_key_identifier "X509v3 Subject Key Identifier"
460#define NID_subject_key_identifier 82
461#define OBJ_subject_key_identifier OBJ_ld_ce,14L
462
463#define SN_key_usage "keyUsage"
464#define LN_key_usage "X509v3 Key Usage"
465#define NID_key_usage 83
466#define OBJ_key_usage OBJ_ld_ce,15L
467
468#define SN_private_key_usage_period "privateKeyUsagePeriod"
469#define LN_private_key_usage_period "X509v3 Private Key Usage Period"
470#define NID_private_key_usage_period 84
471#define OBJ_private_key_usage_period OBJ_ld_ce,16L
472
473#define SN_subject_alt_name "subjectAltName"
474#define LN_subject_alt_name "X509v3 Subject Alternative Name"
475#define NID_subject_alt_name 85
476#define OBJ_subject_alt_name OBJ_ld_ce,17L
477
478#define SN_issuer_alt_name "issuerAltName"
479#define LN_issuer_alt_name "X509v3 Issuer Alternative Name"
480#define NID_issuer_alt_name 86
481#define OBJ_issuer_alt_name OBJ_ld_ce,18L
482
483#define SN_basic_constraints "basicConstraints"
484#define LN_basic_constraints "X509v3 Basic Constraints"
485#define NID_basic_constraints 87
486#define OBJ_basic_constraints OBJ_ld_ce,19L
487
488#define SN_crl_number "crlNumber"
489#define LN_crl_number "X509v3 CRL Number"
490#define NID_crl_number 88
491#define OBJ_crl_number OBJ_ld_ce,20L
492
493#define SN_certificate_policies "certificatePolicies"
494#define LN_certificate_policies "X509v3 Certificate Policies"
495#define NID_certificate_policies 89
496#define OBJ_certificate_policies OBJ_ld_ce,32L
497
498#define SN_authority_key_identifier "authorityKeyIdentifier"
499#define LN_authority_key_identifier "X509v3 Authority Key Identifier"
500#define NID_authority_key_identifier 90
501#define OBJ_authority_key_identifier OBJ_ld_ce,35L
502
503#define SN_bf_cbc "BF-CBC"
504#define LN_bf_cbc "bf-cbc"
505#define NID_bf_cbc 91
506#define OBJ_bf_cbc 1L,3L,6L,1L,4L,1L,3029L,1L,2L
507
508#define SN_bf_ecb "BF-ECB"
509#define LN_bf_ecb "bf-ecb"
510#define NID_bf_ecb 92
511
512#define SN_bf_cfb64 "BF-CFB"
513#define LN_bf_cfb64 "bf-cfb"
514#define NID_bf_cfb64 93
515
516#define SN_bf_ofb64 "BF-OFB"
517#define LN_bf_ofb64 "bf-ofb"
518#define NID_bf_ofb64 94
519
520#define SN_mdc2 "MDC2"
521#define LN_mdc2 "mdc2"
522#define NID_mdc2 95
523#define OBJ_mdc2 2L,5L,8L,3L,101L
524/* An alternative? 1L,3L,14L,3L,2L,19L */
525
526#define SN_mdc2WithRSA "RSA-MDC2"
527#define LN_mdc2WithRSA "mdc2withRSA"
528#define NID_mdc2WithRSA 96
529#define OBJ_mdc2WithRSA 2L,5L,8L,3L,100L
530
531#define SN_rc4_40 "RC4-40"
532#define LN_rc4_40 "rc4-40"
533#define NID_rc4_40 97
534
535#define SN_rc2_40_cbc "RC2-40-CBC"
536#define LN_rc2_40_cbc "rc2-40-cbc"
537#define NID_rc2_40_cbc 98
538
539#define SN_givenName "G"
540#define LN_givenName "givenName"
541#define NID_givenName 99
542#define OBJ_givenName OBJ_X509,42L
543
544#define SN_surname "S"
545#define LN_surname "surname"
546#define NID_surname 100
547#define OBJ_surname OBJ_X509,4L
548
549#define SN_initials "I"
550#define LN_initials "initials"
551#define NID_initials 101
552#define OBJ_initials OBJ_X509,43L
553
554#define SN_uniqueIdentifier "UID"
555#define LN_uniqueIdentifier "uniqueIdentifier"
556#define NID_uniqueIdentifier 102
557#define OBJ_uniqueIdentifier OBJ_X509,45L
558
559#define SN_crl_distribution_points "crlDistributionPoints"
560#define LN_crl_distribution_points "X509v3 CRL Distribution Points"
561#define NID_crl_distribution_points 103
562#define OBJ_crl_distribution_points OBJ_ld_ce,31L
563
564#define SN_md5WithRSA "RSA-NP-MD5"
565#define LN_md5WithRSA "md5WithRSA"
566#define NID_md5WithRSA 104
567#define OBJ_md5WithRSA OBJ_algorithm,3L
568
569#define SN_serialNumber "SN"
570#define LN_serialNumber "serialNumber"
571#define NID_serialNumber 105
572#define OBJ_serialNumber OBJ_X509,5L
573
574#define SN_title "T"
575#define LN_title "title"
576#define NID_title 106
577#define OBJ_title OBJ_X509,12L
578
579#define SN_description "D"
580#define LN_description "description"
581#define NID_description 107
582#define OBJ_description OBJ_X509,13L
583
584/* CAST5 is CAST-128, I'm just sticking with the documentation */
585#define SN_cast5_cbc "CAST5-CBC"
586#define LN_cast5_cbc "cast5-cbc"
587#define NID_cast5_cbc 108
588#define OBJ_cast5_cbc 1L,2L,840L,113533L,7L,66L,10L
589
590#define SN_cast5_ecb "CAST5-ECB"
591#define LN_cast5_ecb "cast5-ecb"
592#define NID_cast5_ecb 109
593
594#define SN_cast5_cfb64 "CAST5-CFB"
595#define LN_cast5_cfb64 "cast5-cfb"
596#define NID_cast5_cfb64 110
597
598#define SN_cast5_ofb64 "CAST5-OFB"
599#define LN_cast5_ofb64 "cast5-ofb"
600#define NID_cast5_ofb64 111
601
602#define LN_pbeWithMD5AndCast5_CBC "pbeWithMD5AndCast5CBC"
603#define NID_pbeWithMD5AndCast5_CBC 112
604#define OBJ_pbeWithMD5AndCast5_CBC 1L,2L,840L,113533L,7L,66L,12L
605
606/* This is one sun will soon be using :-(
607 * id-dsa-with-sha1 ID ::= {
608 * iso(1) member-body(2) us(840) x9-57 (10040) x9cm(4) 3 }
609 */
610#define SN_dsaWithSHA1 "DSA-SHA1"
611#define LN_dsaWithSHA1 "dsaWithSHA1"
612#define NID_dsaWithSHA1 113
613#define OBJ_dsaWithSHA1 1L,2L,840L,10040L,4L,3L
614
615#define NID_md5_sha1 114
616#define SN_md5_sha1 "MD5-SHA1"
617#define LN_md5_sha1 "md5-sha1"
618
619#define SN_sha1WithRSA "RSA-SHA1-2"
620#define LN_sha1WithRSA "sha1WithRSA"
621#define NID_sha1WithRSA 115
622#define OBJ_sha1WithRSA OBJ_algorithm,29L
623
624#define SN_dsa "DSA"
625#define LN_dsa "dsaEncryption"
626#define NID_dsa 116
627#define OBJ_dsa 1L,2L,840L,10040L,4L,1L
628
629#define SN_ripemd160 "RIPEMD160"
630#define LN_ripemd160 "ripemd160"
631#define NID_ripemd160 117
632#define OBJ_ripemd160 1L,3L,36L,3L,2L,1L
633
634/* The name should actually be rsaSignatureWithripemd160, but I'm going
635 * to continue using the convention I'm using with the other ciphers */
636#define SN_ripemd160WithRSA "RSA-RIPEMD160"
637#define LN_ripemd160WithRSA "ripemd160WithRSA"
638#define NID_ripemd160WithRSA 119
639#define OBJ_ripemd160WithRSA 1L,3L,36L,3L,3L,1L,2L
640
641/* Taken from rfc2040
642 * RC5_CBC_Parameters ::= SEQUENCE {
643 * version INTEGER (v1_0(16)),
644 * rounds INTEGER (8..127),
645 * blockSizeInBits INTEGER (64, 128),
646 * iv OCTET STRING OPTIONAL
647 * }
648 */
649#define SN_rc5_cbc "RC5-CBC"
650#define LN_rc5_cbc "rc5-cbc"
651#define NID_rc5_cbc 120
652#define OBJ_rc5_cbc OBJ_rsadsi,3L,8L
653
654#define SN_rc5_ecb "RC5-ECB"
655#define LN_rc5_ecb "rc5-ecb"
656#define NID_rc5_ecb 121
657
658#define SN_rc5_cfb64 "RC5-CFB"
659#define LN_rc5_cfb64 "rc5-cfb"
660#define NID_rc5_cfb64 122
661
662#define SN_rc5_ofb64 "RC5-OFB"
663#define LN_rc5_ofb64 "rc5-ofb"
664#define NID_rc5_ofb64 123
665
666#define SN_rle_compression "RLE"
667#define LN_rle_compression "run length compression"
668#define NID_rle_compression 124
669#define OBJ_rle_compression 1L,1L,1L,1L,666L,1L
670
671#define SN_zlib_compression "ZLIB"
672#define LN_zlib_compression "zlib compression"
673#define NID_zlib_compression 125
674#define OBJ_zlib_compression 1L,1L,1L,1L,666L,2L
675
676#define SN_ext_key_usage "extendedKeyUsage"
677#define LN_ext_key_usage "X509v3 Extended Key Usage"
678#define NID_ext_key_usage 126
679#define OBJ_ext_key_usage OBJ_ld_ce,37
680
681#define SN_id_pkix "PKIX"
682#define NID_id_pkix 127
683#define OBJ_id_pkix 1L,3L,6L,1L,5L,5L,7L
684
685#define SN_id_kp "id-kp"
686#define NID_id_kp 128
687#define OBJ_id_kp OBJ_id_pkix,3L
688
689/* PKIX extended key usage OIDs */
690
691#define SN_server_auth "serverAuth"
692#define LN_server_auth "TLS Web Server Authentication"
693#define NID_server_auth 129
694#define OBJ_server_auth OBJ_id_kp,1L
695
696#define SN_client_auth "clientAuth"
697#define LN_client_auth "TLS Web Client Authentication"
698#define NID_client_auth 130
699#define OBJ_client_auth OBJ_id_kp,2L
700
701#define SN_code_sign "codeSigning"
702#define LN_code_sign "Code Signing"
703#define NID_code_sign 131
704#define OBJ_code_sign OBJ_id_kp,3L
705
706#define SN_email_protect "emailProtection"
707#define LN_email_protect "E-mail Protection"
708#define NID_email_protect 132
709#define OBJ_email_protect OBJ_id_kp,4L
710
711#define SN_time_stamp "timeStamping"
712#define LN_time_stamp "Time Stamping"
713#define NID_time_stamp 133
714#define OBJ_time_stamp OBJ_id_kp,8L
715
716/* Additional extended key usage OIDs: Microsoft */
717
718#define SN_ms_code_ind "msCodeInd"
719#define LN_ms_code_ind "Microsoft Individual Code Signing"
720#define NID_ms_code_ind 134
721#define OBJ_ms_code_ind 1L,3L,6L,1L,4L,1L,311L,2L,1L,21L
722
723#define SN_ms_code_com "msCodeCom"
724#define LN_ms_code_com "Microsoft Commercial Code Signing"
725#define NID_ms_code_com 135
726#define OBJ_ms_code_com 1L,3L,6L,1L,4L,1L,311L,2L,1L,22L
727
728#define SN_ms_ctl_sign "msCTLSign"
729#define LN_ms_ctl_sign "Microsoft Trust List Signing"
730#define NID_ms_ctl_sign 136
731#define OBJ_ms_ctl_sign 1L,3L,6L,1L,4L,1L,311L,10L,3L,1L
732
733#define SN_ms_sgc "msSGC"
734#define LN_ms_sgc "Microsoft Server Gated Crypto"
735#define NID_ms_sgc 137
736#define OBJ_ms_sgc 1L,3L,6L,1L,4L,1L,311L,10L,3L,3L
737
738#define SN_ms_efs "msEFS"
739#define LN_ms_efs "Microsoft Encrypted File System"
740#define NID_ms_efs 138
741#define OBJ_ms_efs 1L,3L,6L,1L,4L,1L,311L,10L,3L,4L
742
743/* Additional usage: Netscape */
744
745#define SN_ns_sgc "nsSGC"
746#define LN_ns_sgc "Netscape Server Gated Crypto"
747#define NID_ns_sgc 139
748#define OBJ_ns_sgc OBJ_netscape,4L,1L
749
750#define SN_delta_crl "deltaCRL"
751#define LN_delta_crl "X509v3 Delta CRL Indicator"
752#define NID_delta_crl 140
753#define OBJ_delta_crl OBJ_ld_ce,27L
754
755#define SN_crl_reason "CRLReason"
756#define LN_crl_reason "CRL Reason Code"
757#define NID_crl_reason 141
758#define OBJ_crl_reason OBJ_ld_ce,21L
759
760#define SN_invalidity_date "invalidityDate"
761#define LN_invalidity_date "Invalidity Date"
762#define NID_invalidity_date 142
763#define OBJ_invalidity_date OBJ_ld_ce,24L
764
765#define SN_sxnet "SXNetID"
766#define LN_sxnet "Strong Extranet ID"
767#define NID_sxnet 143
768#define OBJ_sxnet 1L,3L,101L,1L,4L,1L
769
770/* PKCS12 and related OBJECT IDENTIFIERS */
771
772#define OBJ_pkcs12 OBJ_pkcs,12L
773#define OBJ_pkcs12_pbeids OBJ_pkcs12, 1
774
775#define SN_pbe_WithSHA1And128BitRC4 "PBE-SHA1-RC4-128"
776#define LN_pbe_WithSHA1And128BitRC4 "pbeWithSHA1And128BitRC4"
777#define NID_pbe_WithSHA1And128BitRC4 144
778#define OBJ_pbe_WithSHA1And128BitRC4 OBJ_pkcs12_pbeids, 1L
779
780#define SN_pbe_WithSHA1And40BitRC4 "PBE-SHA1-RC4-40"
781#define LN_pbe_WithSHA1And40BitRC4 "pbeWithSHA1And40BitRC4"
782#define NID_pbe_WithSHA1And40BitRC4 145
783#define OBJ_pbe_WithSHA1And40BitRC4 OBJ_pkcs12_pbeids, 2L
784
785#define SN_pbe_WithSHA1And3_Key_TripleDES_CBC "PBE-SHA1-3DES"
786#define LN_pbe_WithSHA1And3_Key_TripleDES_CBC "pbeWithSHA1And3-KeyTripleDES-CBC"
787#define NID_pbe_WithSHA1And3_Key_TripleDES_CBC 146
788#define OBJ_pbe_WithSHA1And3_Key_TripleDES_CBC OBJ_pkcs12_pbeids, 3L
789
790#define SN_pbe_WithSHA1And2_Key_TripleDES_CBC "PBE-SHA1-2DES"
791#define LN_pbe_WithSHA1And2_Key_TripleDES_CBC "pbeWithSHA1And2-KeyTripleDES-CBC"
792#define NID_pbe_WithSHA1And2_Key_TripleDES_CBC 147
793#define OBJ_pbe_WithSHA1And2_Key_TripleDES_CBC OBJ_pkcs12_pbeids, 4L
794
795#define SN_pbe_WithSHA1And128BitRC2_CBC "PBE-SHA1-RC2-128"
796#define LN_pbe_WithSHA1And128BitRC2_CBC "pbeWithSHA1And128BitRC2-CBC"
797#define NID_pbe_WithSHA1And128BitRC2_CBC 148
798#define OBJ_pbe_WithSHA1And128BitRC2_CBC OBJ_pkcs12_pbeids, 5L
799
800#define SN_pbe_WithSHA1And40BitRC2_CBC "PBE-SHA1-RC2-40"
801#define LN_pbe_WithSHA1And40BitRC2_CBC "pbeWithSHA1And40BitRC2-CBC"
802#define NID_pbe_WithSHA1And40BitRC2_CBC 149
803#define OBJ_pbe_WithSHA1And40BitRC2_CBC OBJ_pkcs12_pbeids, 6L
804
805#define OBJ_pkcs12_Version1 OBJ_pkcs12, 10L
806
807#define OBJ_pkcs12_BagIds OBJ_pkcs12_Version1, 1L
808
809#define LN_keyBag "keyBag"
810#define NID_keyBag 150
811#define OBJ_keyBag OBJ_pkcs12_BagIds, 1L
812
813#define LN_pkcs8ShroudedKeyBag "pkcs8ShroudedKeyBag"
814#define NID_pkcs8ShroudedKeyBag 151
815#define OBJ_pkcs8ShroudedKeyBag OBJ_pkcs12_BagIds, 2L
816
817#define LN_certBag "certBag"
818#define NID_certBag 152
819#define OBJ_certBag OBJ_pkcs12_BagIds, 3L
820
821#define LN_crlBag "crlBag"
822#define NID_crlBag 153
823#define OBJ_crlBag OBJ_pkcs12_BagIds, 4L
824
825#define LN_secretBag "secretBag"
826#define NID_secretBag 154
827#define OBJ_secretBag OBJ_pkcs12_BagIds, 5L
828
829#define LN_safeContentsBag "safeContentsBag"
830#define NID_safeContentsBag 155
831#define OBJ_safeContentsBag OBJ_pkcs12_BagIds, 6L
832
833#define LN_friendlyName "friendlyName"
834#define NID_friendlyName 156
835#define OBJ_friendlyName OBJ_pkcs9, 20L
836
837#define LN_localKeyID "localKeyID"
838#define NID_localKeyID 157
839#define OBJ_localKeyID OBJ_pkcs9, 21L
840
841#define OBJ_certTypes OBJ_pkcs9, 22L
842
843#define LN_x509Certificate "x509Certificate"
844#define NID_x509Certificate 158
845#define OBJ_x509Certificate OBJ_certTypes, 1L
846
847#define LN_sdsiCertificate "sdsiCertificate"
848#define NID_sdsiCertificate 159
849#define OBJ_sdsiCertificate OBJ_certTypes, 2L
850
851#define OBJ_crlTypes OBJ_pkcs9, 23L
852
853#define LN_x509Crl "x509Crl"
854#define NID_x509Crl 160
855#define OBJ_x509Crl OBJ_crlTypes, 1L
856
857/* PKCS#5 v2 OIDs */
858
859#define LN_pbes2 "PBES2"
860#define NID_pbes2 161
861#define OBJ_pbes2 OBJ_pkcs,5L,13L
862
863#define LN_pbmac1 "PBMAC1"
864#define NID_pbmac1 162
865#define OBJ_pbmac1 OBJ_pkcs,5L,14L
866
867#define LN_hmacWithSHA1 "hmacWithSHA1"
868#define NID_hmacWithSHA1 163
869#define OBJ_hmacWithSHA1 OBJ_rsadsi,2L,7L
870
871/* Policy Qualifier Ids */
872
873#define LN_id_qt_cps "Policy Qualifier CPS"
874#define SN_id_qt_cps "id-qt-cps"
875#define NID_id_qt_cps 164
876#define OBJ_id_qt_cps OBJ_id_pkix,2L,1L
877
878#define LN_id_qt_unotice "Policy Qualifier User Notice"
879#define SN_id_qt_unotice "id-qt-unotice"
880#define NID_id_qt_unotice 165
881#define OBJ_id_qt_unotice OBJ_id_pkix,2L,2L
882
883#define SN_rc2_64_cbc "RC2-64-CBC"
884#define LN_rc2_64_cbc "rc2-64-cbc"
885#define NID_rc2_64_cbc 166
886
887#define SN_SMIMECapabilities "SMIME-CAPS"
888#define LN_SMIMECapabilities "S/MIME Capabilities"
889#define NID_SMIMECapabilities 167
890#define OBJ_SMIMECapabilities OBJ_pkcs9,15L
891
892#define SN_pbeWithMD2AndRC2_CBC "PBE-MD2-RC2-64"
893#define LN_pbeWithMD2AndRC2_CBC "pbeWithMD2AndRC2-CBC"
894#define NID_pbeWithMD2AndRC2_CBC 168
895#define OBJ_pbeWithMD2AndRC2_CBC OBJ_pkcs,5L,4L
896
897#define SN_pbeWithMD5AndRC2_CBC "PBE-MD5-RC2-64"
898#define LN_pbeWithMD5AndRC2_CBC "pbeWithMD5AndRC2-CBC"
899#define NID_pbeWithMD5AndRC2_CBC 169
900#define OBJ_pbeWithMD5AndRC2_CBC OBJ_pkcs,5L,6L
901
902#define SN_pbeWithSHA1AndDES_CBC "PBE-SHA1-DES"
903#define LN_pbeWithSHA1AndDES_CBC "pbeWithSHA1AndDES-CBC"
904#define NID_pbeWithSHA1AndDES_CBC 170
905#define OBJ_pbeWithSHA1AndDES_CBC OBJ_pkcs,5L,10L
906
907/* Extension request OIDs */
908
909#define LN_ms_ext_req "Microsoft Extension Request"
910#define SN_ms_ext_req "msExtReq"
911#define NID_ms_ext_req 171
912#define OBJ_ms_ext_req 1L,3L,6L,1L,4L,1L,311L,2L,1L,14L
913
914#define LN_ext_req "Extension Request"
915#define SN_ext_req "extReq"
916#define NID_ext_req 172
917#define OBJ_ext_req OBJ_pkcs9,14L
918
919#define SN_name "name"
920#define LN_name "name"
921#define NID_name 173
922#define OBJ_name OBJ_X509,41L
923
924#define SN_dnQualifier "dnQualifier"
925#define LN_dnQualifier "dnQualifier"
926#define NID_dnQualifier 174
927#define OBJ_dnQualifier OBJ_X509,46L
928
929#define SN_id_pe "id-pe"
930#define NID_id_pe 175
931#define OBJ_id_pe OBJ_id_pkix,1L
932
933#define SN_id_ad "id-ad"
934#define NID_id_ad 176
935#define OBJ_id_ad OBJ_id_pkix,48L
936
937#define SN_info_access "authorityInfoAccess"
938#define LN_info_access "Authority Information Access"
939#define NID_info_access 177
940#define OBJ_info_access OBJ_id_pe,1L
941
942#define SN_ad_OCSP "OCSP"
943#define LN_ad_OCSP "OCSP"
944#define NID_ad_OCSP 178
945#define OBJ_ad_OCSP OBJ_id_ad,1L
946
947#define SN_ad_ca_issuers "caIssuers"
948#define LN_ad_ca_issuers "CA Issuers"
949#define NID_ad_ca_issuers 179
950#define OBJ_ad_ca_issuers OBJ_id_ad,2L
951
952#define SN_OCSP_sign "OCSPSigning"
953#define LN_OCSP_sign "OCSP Signing"
954#define NID_OCSP_sign 180
955#define OBJ_OCSP_sign OBJ_id_kp,9L
956
957#include <openssl/bio.h>
958#include <openssl/asn1.h>
959
960#define OBJ_NAME_TYPE_UNDEF 0x00
961#define OBJ_NAME_TYPE_MD_METH 0x01
962#define OBJ_NAME_TYPE_CIPHER_METH 0x02
963#define OBJ_NAME_TYPE_PKEY_METH 0x03
964#define OBJ_NAME_TYPE_COMP_METH 0x04
965#define OBJ_NAME_TYPE_NUM 0x05
966
967#define OBJ_NAME_ALIAS 0x8000
968
969
970typedef struct obj_name_st
971 {
972 int type;
973 int alias;
974 const char *name;
975 const char *data;
976 } OBJ_NAME;
977
978#define OBJ_create_and_add_object(a,b,c) OBJ_create(a,b,c)
979
980
981int OBJ_NAME_init(void);
982int OBJ_NAME_new_index(unsigned long (*hash_func)(),int (*cmp_func)(),
983 void (*free_func)());
984const char *OBJ_NAME_get(const char *name,int type);
985int OBJ_NAME_add(const char *name,int type,const char *data);
986int OBJ_NAME_remove(const char *name,int type);
987void OBJ_NAME_cleanup(int type); /* -1 for everything */
988
989ASN1_OBJECT * OBJ_dup(ASN1_OBJECT *o);
990ASN1_OBJECT * OBJ_nid2obj(int n);
991const char * OBJ_nid2ln(int n);
992const char * OBJ_nid2sn(int n);
993int OBJ_obj2nid(ASN1_OBJECT *o);
994ASN1_OBJECT * OBJ_txt2obj(const char *s, int no_name);
995int OBJ_obj2txt(char *buf, int buf_len, ASN1_OBJECT *a, int no_name);
996int OBJ_txt2nid(char *s);
997int OBJ_ln2nid(const char *s);
998int OBJ_sn2nid(const char *s);
999int OBJ_cmp(ASN1_OBJECT *a,ASN1_OBJECT *b);
1000char * OBJ_bsearch(char *key,char *base,int num,int size,int (*cmp)());
1001
1002void ERR_load_OBJ_strings(void );
1003
1004int OBJ_new_nid(int num);
1005int OBJ_add_object(ASN1_OBJECT *obj);
1006int OBJ_create(char *oid,char *sn,char *ln);
1007void OBJ_cleanup(void );
1008int OBJ_create_objects(BIO *in);
1009
1010/* BEGIN ERROR CODES */
1011/* The following lines are auto generated by the script mkerr.pl. Any changes
1012 * made after this point may be overwritten when the script is next run.
1013 */
1014
1015/* Error codes for the OBJ functions. */
1016
1017/* Function codes. */
1018#define OBJ_F_OBJ_CREATE 100
1019#define OBJ_F_OBJ_DUP 101
1020#define OBJ_F_OBJ_NID2LN 102
1021#define OBJ_F_OBJ_NID2OBJ 103
1022#define OBJ_F_OBJ_NID2SN 104
1023
1024/* Reason codes. */
1025#define OBJ_R_MALLOC_FAILURE 100
1026#define OBJ_R_UNKNOWN_NID 101
1027
1028#ifdef __cplusplus
1029}
1030#endif
1031#endif
1032
diff --git a/src/lib/libcrypto/objects/objects.txt b/src/lib/libcrypto/objects/objects.txt
deleted file mode 100644
index cb276e90e9..0000000000
--- a/src/lib/libcrypto/objects/objects.txt
+++ /dev/null
@@ -1,40 +0,0 @@
11 2 : ISO member bodies
21 2 840 : US (ANSI)
31 2 840 113549 : rsadsi : RSA Data Security, Inc.
41 2 840 113549 1 : pkcs : RSA Data Security, Inc. PKCS
51 2 840 113549 1 1 1 : rsaEncryption
61 2 840 113549 1 1 2 : md2withRSAEncryption
71 2 840 113549 1 1 4 : md5withRSAEncryption
81 2 840 113549 1 7 : pkcs-7
91 2 840 113549 1 7 1 : pkcs-7-data
101 2 840 113549 1 7 2 : pkcs-7-signedData
111 2 840 113549 1 7 3 : pkcs-7-envelopedData
121 2 840 113549 1 7 4 : pkcs-7-signedAndEnvelopedData
131 2 840 113549 1 7 5 : pkcs-7-digestData
141 2 840 113549 1 7 6 : pkcs-7-encryptedData
151 2 840 113549 2 2 : md2
161 2 840 113549 2 4 : md4
171 2 840 113549 2 5 : md5
181 2 840 113549 3 4 : rc4
191 2 840 113549 5 1 : pbeWithMD2AndDES_CBC
201 2 840 113549 5 3 : pbeWithMD5AndDES_CBC
212 5 : X500 : directory services (X.500)
222 5 4 : X509
232 5 4 3 : commonName
242 5 4 6 : countryName
252 5 4 7 : localityName
262 5 4 8 : stateOrProvinceName
272 5 4 10 : organizationName
282 5 4 11 : organizationalUnitName
292 5 8 : directory services - algorithms
302 5 8 1 1 : rsa
31
32algorithm 18 : sha
33encryptionAlgorithm 1 : rsa
34algorithm 11 : rsaSignature
35
36algorithm 6 : desECB
37algorithm 7 : desCBC
38algorithm 8 : desOFB
39algorithm 9 : desCFB
40algorithm 17 : desEDE2