summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/objects
diff options
context:
space:
mode:
authorbeck <>2000-03-19 11:13:58 +0000
committerbeck <>2000-03-19 11:13:58 +0000
commit796d609550df3a33fc11468741c5d2f6d3df4c11 (patch)
tree6c6d539061caa20372dad0ac4ddb1dfae2fbe7fe /src/lib/libcrypto/objects
parent5be3114c1fd7e0dfea1e38d3abb4cbba75244419 (diff)
downloadopenbsd-796d609550df3a33fc11468741c5d2f6d3df4c11.tar.gz
openbsd-796d609550df3a33fc11468741c5d2f6d3df4c11.tar.bz2
openbsd-796d609550df3a33fc11468741c5d2f6d3df4c11.zip
OpenSSL 0.9.5 merge
*warning* this bumps shared lib minors for libssl and libcrypto from 2.1 to 2.2 if you are using the ssl26 packages for ssh and other things to work you will need to get new ones (see ~beck/libsslsnap/<arch>) on cvs or ~beck/src-patent.tar.gz on cvs
Diffstat (limited to 'src/lib/libcrypto/objects')
-rw-r--r--src/lib/libcrypto/objects/Makefile.ssl3
-rw-r--r--src/lib/libcrypto/objects/o_names.c106
-rw-r--r--src/lib/libcrypto/objects/obj_dat.c22
-rw-r--r--src/lib/libcrypto/objects/obj_dat.pl54
-rw-r--r--src/lib/libcrypto/objects/objects.h74
5 files changed, 172 insertions, 87 deletions
diff --git a/src/lib/libcrypto/objects/Makefile.ssl b/src/lib/libcrypto/objects/Makefile.ssl
index 53450f8754..f05e15df96 100644
--- a/src/lib/libcrypto/objects/Makefile.ssl
+++ b/src/lib/libcrypto/objects/Makefile.ssl
@@ -37,9 +37,6 @@ top:
37 37
38all: obj_dat.h lib 38all: obj_dat.h lib
39 39
40obj_dat.h: objects.h obj_dat.pl
41 $(PERL) ./obj_dat.pl < objects.h > obj_dat.h
42
43lib: $(LIBOBJ) 40lib: $(LIBOBJ)
44 $(AR) $(LIB) $(LIBOBJ) 41 $(AR) $(LIB) $(LIBOBJ)
45 $(RANLIB) $(LIB) 42 $(RANLIB) $(LIB)
diff --git a/src/lib/libcrypto/objects/o_names.c b/src/lib/libcrypto/objects/o_names.c
index 4da5e45b9c..d654eb220e 100644
--- a/src/lib/libcrypto/objects/o_names.c
+++ b/src/lib/libcrypto/objects/o_names.c
@@ -4,15 +4,25 @@
4 4
5#include <openssl/lhash.h> 5#include <openssl/lhash.h>
6#include <openssl/objects.h> 6#include <openssl/objects.h>
7#include <openssl/safestack.h>
7 8
8/* I use the ex_data stuff to manage the identifiers for the obj_name_types 9/* I use the ex_data stuff to manage the identifiers for the obj_name_types
9 * that applications may define. I only really use the free function field. 10 * that applications may define. I only really use the free function field.
10 */ 11 */
11static LHASH *names_lh=NULL; 12static LHASH *names_lh=NULL;
12static int names_type_num=OBJ_NAME_TYPE_NUM; 13static int names_type_num=OBJ_NAME_TYPE_NUM;
13static STACK *names_cmp=NULL; 14
14static STACK *names_hash=NULL; 15typedef struct name_funcs_st
15static STACK *names_free=NULL; 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
25STACK_OF(NAME_FUNCS) *name_funcs_stack;
16 26
17static unsigned long obj_name_hash(OBJ_NAME *a); 27static unsigned long obj_name_hash(OBJ_NAME *a);
18static int obj_name_cmp(OBJ_NAME *a,OBJ_NAME *b); 28static int obj_name_cmp(OBJ_NAME *a,OBJ_NAME *b);
@@ -31,51 +41,57 @@ int OBJ_NAME_new_index(unsigned long (*hash_func)(), int (*cmp_func)(),
31 { 41 {
32 int ret; 42 int ret;
33 int i; 43 int i;
44 NAME_FUNCS *name_funcs;
34 45
35 if (names_free == NULL) 46 if (name_funcs_stack == NULL)
36 { 47 {
37 MemCheck_off(); 48 MemCheck_off();
38 names_hash=sk_new_null(); 49 name_funcs_stack=sk_NAME_FUNCS_new_null();
39 names_cmp=sk_new_null();
40 names_free=sk_new_null();
41 MemCheck_on(); 50 MemCheck_on();
42 } 51 }
43 if ((names_free == NULL) || (names_hash == NULL) || (names_cmp == NULL)) 52 if ((name_funcs_stack == NULL))
44 { 53 {
45 /* ERROR */ 54 /* ERROR */
46 return(0); 55 return(0);
47 } 56 }
48 ret=names_type_num; 57 ret=names_type_num;
49 names_type_num++; 58 names_type_num++;
50 for (i=sk_num(names_free); i<names_type_num; i++) 59 for (i=sk_NAME_FUNCS_num(name_funcs_stack); i<names_type_num; i++)
51 { 60 {
52 MemCheck_off(); 61 MemCheck_off();
53 sk_push(names_hash,(char *)strcmp); 62 name_funcs = Malloc(sizeof(NAME_FUNCS));
54 sk_push(names_cmp,(char *)lh_strhash); 63 name_funcs->hash_func = lh_strhash;
55 sk_push(names_free,NULL); 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);
56 MemCheck_on(); 71 MemCheck_on();
57 } 72 }
73 name_funcs = sk_NAME_FUNCS_value(name_funcs_stack, ret);
58 if (hash_func != NULL) 74 if (hash_func != NULL)
59 sk_set(names_hash,ret,(char *)hash_func); 75 name_funcs->hash_func = hash_func;
60 if (cmp_func != NULL) 76 if (cmp_func != NULL)
61 sk_set(names_cmp,ret,(char *)cmp_func); 77 name_funcs->cmp_func = cmp_func;
62 if (free_func != NULL) 78 if (free_func != NULL)
63 sk_set(names_free,ret,(char *)free_func); 79 name_funcs->free_func = free_func;
64 return(ret); 80 return(ret);
65 } 81 }
66 82
67static int obj_name_cmp(OBJ_NAME *a, OBJ_NAME *b) 83static int obj_name_cmp(OBJ_NAME *a, OBJ_NAME *b)
68 { 84 {
69 int ret; 85 int ret;
70 int (*cmp)();
71 86
72 ret=a->type-b->type; 87 ret=a->type-b->type;
73 if (ret == 0) 88 if (ret == 0)
74 { 89 {
75 if ((names_cmp != NULL) && (sk_num(names_cmp) > a->type)) 90 if ((name_funcs_stack != NULL)
91 && (sk_NAME_FUNCS_num(name_funcs_stack) > a->type))
76 { 92 {
77 cmp=(int (*)())sk_value(names_cmp,a->type); 93 ret=sk_NAME_FUNCS_value(name_funcs_stack,a->type)
78 ret=cmp(a->name,b->name); 94 ->cmp_func(a->name,b->name);
79 } 95 }
80 else 96 else
81 ret=strcmp(a->name,b->name); 97 ret=strcmp(a->name,b->name);
@@ -86,12 +102,11 @@ static int obj_name_cmp(OBJ_NAME *a, OBJ_NAME *b)
86static unsigned long obj_name_hash(OBJ_NAME *a) 102static unsigned long obj_name_hash(OBJ_NAME *a)
87 { 103 {
88 unsigned long ret; 104 unsigned long ret;
89 unsigned long (*hash)();
90 105
91 if ((names_hash != NULL) && (sk_num(names_hash) > a->type)) 106 if ((name_funcs_stack != NULL) && (sk_NAME_FUNCS_num(name_funcs_stack) > a->type))
92 { 107 {
93 hash=(unsigned long (*)())sk_value(names_hash,a->type); 108 ret=sk_NAME_FUNCS_value(name_funcs_stack,a->type)
94 ret=hash(a->name); 109 ->hash_func(a->name);
95 } 110 }
96 else 111 else
97 { 112 {
@@ -117,7 +132,7 @@ const char *OBJ_NAME_get(const char *name, int type)
117 132
118 for (;;) 133 for (;;)
119 { 134 {
120 ret=(OBJ_NAME *)lh_retrieve(names_lh,(char *)&on); 135 ret=(OBJ_NAME *)lh_retrieve(names_lh,&on);
121 if (ret == NULL) return(NULL); 136 if (ret == NULL) return(NULL);
122 if ((ret->alias) && !alias) 137 if ((ret->alias) && !alias)
123 { 138 {
@@ -133,7 +148,6 @@ const char *OBJ_NAME_get(const char *name, int type)
133 148
134int OBJ_NAME_add(const char *name, int type, const char *data) 149int OBJ_NAME_add(const char *name, int type, const char *data)
135 { 150 {
136 void (*f)();
137 OBJ_NAME *onp,*ret; 151 OBJ_NAME *onp,*ret;
138 int alias; 152 int alias;
139 153
@@ -154,16 +168,20 @@ int OBJ_NAME_add(const char *name, int type, const char *data)
154 onp->type=type; 168 onp->type=type;
155 onp->data=data; 169 onp->data=data;
156 170
157 ret=(OBJ_NAME *)lh_insert(names_lh,(char *)onp); 171 ret=(OBJ_NAME *)lh_insert(names_lh,onp);
158 if (ret != NULL) 172 if (ret != NULL)
159 { 173 {
160 /* free things */ 174 /* free things */
161 if ((names_free != NULL) && (sk_num(names_free) > ret->type)) 175 if ((name_funcs_stack != NULL) && (sk_NAME_FUNCS_num(name_funcs_stack) > ret->type))
162 { 176 {
163 f=(void (*)())sk_value(names_free,ret->type); 177 /* XXX: I'm not sure I understand why the free
164 f(ret->name,ret->type,ret->data); 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);
165 } 183 }
166 Free((char *)ret); 184 Free(ret);
167 } 185 }
168 else 186 else
169 { 187 {
@@ -179,23 +197,26 @@ int OBJ_NAME_add(const char *name, int type, const char *data)
179int OBJ_NAME_remove(const char *name, int type) 197int OBJ_NAME_remove(const char *name, int type)
180 { 198 {
181 OBJ_NAME on,*ret; 199 OBJ_NAME on,*ret;
182 void (*f)();
183 200
184 if (names_lh == NULL) return(0); 201 if (names_lh == NULL) return(0);
185 202
186 type&= ~OBJ_NAME_ALIAS; 203 type&= ~OBJ_NAME_ALIAS;
187 on.name=name; 204 on.name=name;
188 on.type=type; 205 on.type=type;
189 ret=(OBJ_NAME *)lh_delete(names_lh,(char *)&on); 206 ret=(OBJ_NAME *)lh_delete(names_lh,&on);
190 if (ret != NULL) 207 if (ret != NULL)
191 { 208 {
192 /* free things */ 209 /* free things */
193 if ((names_free != NULL) && (sk_num(names_free) > type)) 210 if ((name_funcs_stack != NULL) && (sk_NAME_FUNCS_num(name_funcs_stack) > ret->type))
194 { 211 {
195 f=(void (*)())sk_value(names_free,type); 212 /* XXX: I'm not sure I understand why the free
196 f(ret->name,ret->type,ret->data); 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);
197 } 218 }
198 Free((char *)ret); 219 Free(ret);
199 return(1); 220 return(1);
200 } 221 }
201 else 222 else
@@ -215,6 +236,11 @@ static void names_lh_free(OBJ_NAME *onp, int type)
215 } 236 }
216 } 237 }
217 238
239static void name_funcs_free(NAME_FUNCS *ptr)
240 {
241 Free(ptr);
242 }
243
218void OBJ_NAME_cleanup(int type) 244void OBJ_NAME_cleanup(int type)
219 { 245 {
220 unsigned long down_load; 246 unsigned long down_load;
@@ -229,13 +255,9 @@ void OBJ_NAME_cleanup(int type)
229 if (type < 0) 255 if (type < 0)
230 { 256 {
231 lh_free(names_lh); 257 lh_free(names_lh);
232 sk_free(names_hash); 258 sk_NAME_FUNCS_pop_free(name_funcs_stack,name_funcs_free);
233 sk_free(names_cmp);
234 sk_free(names_free);
235 names_lh=NULL; 259 names_lh=NULL;
236 names_hash=NULL; 260 name_funcs_stack = NULL;
237 names_cmp=NULL;
238 names_free=NULL;
239 } 261 }
240 else 262 else
241 names_lh->down_load=down_load; 263 names_lh->down_load=down_load;
diff --git a/src/lib/libcrypto/objects/obj_dat.c b/src/lib/libcrypto/objects/obj_dat.c
index d47b874399..da6df3762a 100644
--- a/src/lib/libcrypto/objects/obj_dat.c
+++ b/src/lib/libcrypto/objects/obj_dat.c
@@ -214,16 +214,12 @@ int OBJ_new_nid(int num)
214int OBJ_add_object(ASN1_OBJECT *obj) 214int OBJ_add_object(ASN1_OBJECT *obj)
215 { 215 {
216 ASN1_OBJECT *o; 216 ASN1_OBJECT *o;
217 ADDED_OBJ *ao[4],*aop; 217 ADDED_OBJ *ao[4]={NULL,NULL,NULL,NULL},*aop;
218 int i; 218 int i;
219 219
220 if (added == NULL) 220 if (added == NULL)
221 if (!init_added()) return(0); 221 if (!init_added()) return(0);
222 if ((o=OBJ_dup(obj)) == NULL) goto err; 222 if ((o=OBJ_dup(obj)) == NULL) goto err;
223 ao[ADDED_DATA]=NULL;
224 ao[ADDED_SNAME]=NULL;
225 ao[ADDED_LNAME]=NULL;
226 ao[ADDED_NID]=NULL;
227 ao[ADDED_NID]=(ADDED_OBJ *)Malloc(sizeof(ADDED_OBJ)); 223 ao[ADDED_NID]=(ADDED_OBJ *)Malloc(sizeof(ADDED_OBJ));
228 if ((o->length != 0) && (obj->data != NULL)) 224 if ((o->length != 0) && (obj->data != NULL))
229 ao[ADDED_DATA]=(ADDED_OBJ *)Malloc(sizeof(ADDED_OBJ)); 225 ao[ADDED_DATA]=(ADDED_OBJ *)Malloc(sizeof(ADDED_OBJ));
@@ -238,7 +234,7 @@ int OBJ_add_object(ASN1_OBJECT *obj)
238 { 234 {
239 ao[i]->type=i; 235 ao[i]->type=i;
240 ao[i]->obj=o; 236 ao[i]->obj=o;
241 aop=(ADDED_OBJ *)lh_insert(added,(char *)ao[i]); 237 aop=(ADDED_OBJ *)lh_insert(added,ao[i]);
242 /* memory leak, buit should not normally matter */ 238 /* memory leak, buit should not normally matter */
243 if (aop != NULL) 239 if (aop != NULL)
244 Free(aop); 240 Free(aop);
@@ -276,7 +272,7 @@ ASN1_OBJECT *OBJ_nid2obj(int n)
276 ad.type=ADDED_NID; 272 ad.type=ADDED_NID;
277 ad.obj= &ob; 273 ad.obj= &ob;
278 ob.nid=n; 274 ob.nid=n;
279 adp=(ADDED_OBJ *)lh_retrieve(added,(char *)&ad); 275 adp=(ADDED_OBJ *)lh_retrieve(added,&ad);
280 if (adp != NULL) 276 if (adp != NULL)
281 return(adp->obj); 277 return(adp->obj);
282 else 278 else
@@ -308,7 +304,7 @@ const char *OBJ_nid2sn(int n)
308 ad.type=ADDED_NID; 304 ad.type=ADDED_NID;
309 ad.obj= &ob; 305 ad.obj= &ob;
310 ob.nid=n; 306 ob.nid=n;
311 adp=(ADDED_OBJ *)lh_retrieve(added,(char *)&ad); 307 adp=(ADDED_OBJ *)lh_retrieve(added,&ad);
312 if (adp != NULL) 308 if (adp != NULL)
313 return(adp->obj->sn); 309 return(adp->obj->sn);
314 else 310 else
@@ -340,7 +336,7 @@ const char *OBJ_nid2ln(int n)
340 ad.type=ADDED_NID; 336 ad.type=ADDED_NID;
341 ad.obj= &ob; 337 ad.obj= &ob;
342 ob.nid=n; 338 ob.nid=n;
343 adp=(ADDED_OBJ *)lh_retrieve(added,(char *)&ad); 339 adp=(ADDED_OBJ *)lh_retrieve(added,&ad);
344 if (adp != NULL) 340 if (adp != NULL)
345 return(adp->obj->ln); 341 return(adp->obj->ln);
346 else 342 else
@@ -365,7 +361,7 @@ int OBJ_obj2nid(ASN1_OBJECT *a)
365 { 361 {
366 ad.type=ADDED_DATA; 362 ad.type=ADDED_DATA;
367 ad.obj=a; 363 ad.obj=a;
368 adp=(ADDED_OBJ *)lh_retrieve(added,(char *)&ad); 364 adp=(ADDED_OBJ *)lh_retrieve(added,&ad);
369 if (adp != NULL) return (adp->obj->nid); 365 if (adp != NULL) return (adp->obj->nid);
370 } 366 }
371 op=(ASN1_OBJECT **)OBJ_bsearch((char *)&a,(char *)obj_objs,NUM_OBJ, 367 op=(ASN1_OBJECT **)OBJ_bsearch((char *)&a,(char *)obj_objs,NUM_OBJ,
@@ -504,7 +500,7 @@ int OBJ_ln2nid(const char *s)
504 { 500 {
505 ad.type=ADDED_LNAME; 501 ad.type=ADDED_LNAME;
506 ad.obj= &o; 502 ad.obj= &o;
507 adp=(ADDED_OBJ *)lh_retrieve(added,(char *)&ad); 503 adp=(ADDED_OBJ *)lh_retrieve(added,&ad);
508 if (adp != NULL) return (adp->obj->nid); 504 if (adp != NULL) return (adp->obj->nid);
509 } 505 }
510 op=(ASN1_OBJECT **)OBJ_bsearch((char *)&oo,(char *)ln_objs,NUM_LN, 506 op=(ASN1_OBJECT **)OBJ_bsearch((char *)&oo,(char *)ln_objs,NUM_LN,
@@ -523,7 +519,7 @@ int OBJ_sn2nid(const char *s)
523 { 519 {
524 ad.type=ADDED_SNAME; 520 ad.type=ADDED_SNAME;
525 ad.obj= &o; 521 ad.obj= &o;
526 adp=(ADDED_OBJ *)lh_retrieve(added,(char *)&ad); 522 adp=(ADDED_OBJ *)lh_retrieve(added,&ad);
527 if (adp != NULL) return (adp->obj->nid); 523 if (adp != NULL) return (adp->obj->nid);
528 } 524 }
529 op=(ASN1_OBJECT **)OBJ_bsearch((char *)&oo,(char *)sn_objs,NUM_SN, 525 op=(ASN1_OBJECT **)OBJ_bsearch((char *)&oo,(char *)sn_objs,NUM_SN,
@@ -647,7 +643,7 @@ int OBJ_create(char *oid, char *sn, char *ln)
647 ok=OBJ_add_object(op); 643 ok=OBJ_add_object(op);
648err: 644err:
649 ASN1_OBJECT_free(op); 645 ASN1_OBJECT_free(op);
650 Free((char *)buf); 646 Free(buf);
651 return(ok); 647 return(ok);
652 } 648 }
653 649
diff --git a/src/lib/libcrypto/objects/obj_dat.pl b/src/lib/libcrypto/objects/obj_dat.pl
index 5043daef2a..e6e3c3b9c0 100644
--- a/src/lib/libcrypto/objects/obj_dat.pl
+++ b/src/lib/libcrypto/objects/obj_dat.pl
@@ -38,7 +38,10 @@ sub expand_obj
38 return(%objn); 38 return(%objn);
39 } 39 }
40 40
41while (<>) 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>)
42 { 45 {
43 next unless /^\#define\s+(\S+)\s+(.*)$/; 46 next unless /^\#define\s+(\S+)\s+(.*)$/;
44 $v=$1; 47 $v=$1;
@@ -55,6 +58,7 @@ while (<>)
55 $objd{$v}=$d; 58 $objd{$v}=$d;
56 } 59 }
57 } 60 }
61close IN;
58 62
59%ob=&expand_obj(*objd); 63%ob=&expand_obj(*objd);
60 64
@@ -132,7 +136,7 @@ foreach (sort obj_cmp @a)
132 push(@ob,sprintf("&(nid_objs[%2d]),/* %-32s %s */\n",$_,$m,$v)); 136 push(@ob,sprintf("&(nid_objs[%2d]),/* %-32s %s */\n",$_,$m,$v));
133 } 137 }
134 138
135print <<'EOF'; 139print OUT <<'EOF';
136/* lib/obj/obj_dat.h */ 140/* lib/obj/obj_dat.h */
137/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) 141/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
138 * All rights reserved. 142 * All rights reserved.
@@ -193,21 +197,21 @@ print <<'EOF';
193 197
194/* THIS FILE IS GENERATED FROM Objects.h by obj_dat.pl via the 198/* THIS FILE IS GENERATED FROM Objects.h by obj_dat.pl via the
195 * following command: 199 * following command:
196 * perl obj_dat.pl < objects.h > obj_dat.h 200 * perl obj_dat.pl objects.h obj_dat.h
197 */ 201 */
198 202
199EOF 203EOF
200 204
201printf "#define NUM_NID %d\n",$n; 205printf OUT "#define NUM_NID %d\n",$n;
202printf "#define NUM_SN %d\n",$#sn+1; 206printf OUT "#define NUM_SN %d\n",$#sn+1;
203printf "#define NUM_LN %d\n",$#ln+1; 207printf OUT "#define NUM_LN %d\n",$#ln+1;
204printf "#define NUM_OBJ %d\n\n",$#ob+1; 208printf OUT "#define NUM_OBJ %d\n\n",$#ob+1;
205 209
206printf "static unsigned char lvalues[%d]={\n",$lvalues+1; 210printf OUT "static unsigned char lvalues[%d]={\n",$lvalues+1;
207print @lvalues; 211print OUT @lvalues;
208print "};\n\n"; 212print OUT "};\n\n";
209 213
210printf "static ASN1_OBJECT nid_objs[NUM_NID]={\n"; 214printf OUT "static ASN1_OBJECT nid_objs[NUM_NID]={\n";
211foreach (@out) 215foreach (@out)
212 { 216 {
213 if (length($_) > 75) 217 if (length($_) > 75)
@@ -218,30 +222,32 @@ foreach (@out)
218 $t=$out.$_.","; 222 $t=$out.$_.",";
219 if (length($t) > 70) 223 if (length($t) > 70)
220 { 224 {
221 print "$out\n"; 225 print OUT "$out\n";
222 $t="\t$_,"; 226 $t="\t$_,";
223 } 227 }
224 $out=$t; 228 $out=$t;
225 } 229 }
226 chop $out; 230 chop $out;
227 print "$out"; 231 print OUT "$out";
228 } 232 }
229 else 233 else
230 { print $_; } 234 { print OUT $_; }
231 } 235 }
232print "};\n\n"; 236print OUT "};\n\n";
237
238printf OUT "static ASN1_OBJECT *sn_objs[NUM_SN]={\n";
239print OUT @sn;
240print OUT "};\n\n";
233 241
234printf "static ASN1_OBJECT *sn_objs[NUM_SN]={\n"; 242printf OUT "static ASN1_OBJECT *ln_objs[NUM_LN]={\n";
235print @sn; 243print OUT @ln;
236print "};\n\n"; 244print OUT "};\n\n";
237 245
238printf "static ASN1_OBJECT *ln_objs[NUM_LN]={\n"; 246printf OUT "static ASN1_OBJECT *obj_objs[NUM_OBJ]={\n";
239print @ln; 247print OUT @ob;
240print "};\n\n"; 248print OUT "};\n\n";
241 249
242printf "static ASN1_OBJECT *obj_objs[NUM_OBJ]={\n"; 250close OUT;
243print @ob;
244print "};\n\n";
245 251
246sub der_it 252sub der_it
247 { 253 {
diff --git a/src/lib/libcrypto/objects/objects.h b/src/lib/libcrypto/objects/objects.h
index d03748e022..d1a5ad2502 100644
--- a/src/lib/libcrypto/objects/objects.h
+++ b/src/lib/libcrypto/objects/objects.h
@@ -110,10 +110,12 @@ extern "C" {
110#define NID_md5WithRSAEncryption 8 110#define NID_md5WithRSAEncryption 8
111#define OBJ_md5WithRSAEncryption OBJ_pkcs,1L,4L 111#define OBJ_md5WithRSAEncryption OBJ_pkcs,1L,4L
112 112
113#define SN_pbeWithMD2AndDES_CBC "PBE-MD2-DES"
113#define LN_pbeWithMD2AndDES_CBC "pbeWithMD2AndDES-CBC" 114#define LN_pbeWithMD2AndDES_CBC "pbeWithMD2AndDES-CBC"
114#define NID_pbeWithMD2AndDES_CBC 9 115#define NID_pbeWithMD2AndDES_CBC 9
115#define OBJ_pbeWithMD2AndDES_CBC OBJ_pkcs,5L,1L 116#define OBJ_pbeWithMD2AndDES_CBC OBJ_pkcs,5L,1L
116 117
118#define SN_pbeWithMD5AndDES_CBC "PBE-MD5-DES"
117#define LN_pbeWithMD5AndDES_CBC "pbeWithMD5AndDES-CBC" 119#define LN_pbeWithMD5AndDES_CBC "pbeWithMD5AndDES-CBC"
118#define NID_pbeWithMD5AndDES_CBC 10 120#define NID_pbeWithMD5AndDES_CBC 10
119#define OBJ_pbeWithMD5AndDES_CBC OBJ_pkcs,5L,3L 121#define OBJ_pbeWithMD5AndDES_CBC OBJ_pkcs,5L,3L
@@ -230,6 +232,7 @@ extern "C" {
230#define SN_idea_cbc "IDEA-CBC" 232#define SN_idea_cbc "IDEA-CBC"
231#define LN_idea_cbc "idea-cbc" 233#define LN_idea_cbc "idea-cbc"
232#define NID_idea_cbc 34 234#define NID_idea_cbc 34
235#define OBJ_idea_cbc 1L,3L,6L,1L,4L,1L,188L,7L,1L,1L,2L
233 236
234#define SN_idea_cfb64 "IDEA-CFB" 237#define SN_idea_cfb64 "IDEA-CFB"
235#define LN_idea_cfb64 "idea-cfb" 238#define LN_idea_cfb64 "idea-cfb"
@@ -380,6 +383,7 @@ extern "C" {
380#define OBJ_dsa_2 OBJ_algorithm,12L 383#define OBJ_dsa_2 OBJ_algorithm,12L
381 384
382/* proposed by microsoft to RSA */ 385/* proposed by microsoft to RSA */
386#define SN_pbeWithSHA1AndRC2_CBC "PBE-SHA1-RC2-64"
383#define LN_pbeWithSHA1AndRC2_CBC "pbeWithSHA1AndRC2-CBC" 387#define LN_pbeWithSHA1AndRC2_CBC "pbeWithSHA1AndRC2-CBC"
384#define NID_pbeWithSHA1AndRC2_CBC 68 388#define NID_pbeWithSHA1AndRC2_CBC 68
385#define OBJ_pbeWithSHA1AndRC2_CBC OBJ_pkcs,5L,11L 389#define OBJ_pbeWithSHA1AndRC2_CBC OBJ_pkcs,5L,11L
@@ -499,6 +503,7 @@ extern "C" {
499#define SN_bf_cbc "BF-CBC" 503#define SN_bf_cbc "BF-CBC"
500#define LN_bf_cbc "bf-cbc" 504#define LN_bf_cbc "bf-cbc"
501#define NID_bf_cbc 91 505#define NID_bf_cbc 91
506#define OBJ_bf_cbc 1L,3L,6L,1L,4L,1L,3029L,1L,2L
502 507
503#define SN_bf_ecb "BF-ECB" 508#define SN_bf_ecb "BF-ECB"
504#define LN_bf_ecb "bf-ecb" 509#define LN_bf_ecb "bf-ecb"
@@ -627,7 +632,7 @@ extern "C" {
627#define OBJ_ripemd160 1L,3L,36L,3L,2L,1L 632#define OBJ_ripemd160 1L,3L,36L,3L,2L,1L
628 633
629/* The name should actually be rsaSignatureWithripemd160, but I'm going 634/* The name should actually be rsaSignatureWithripemd160, but I'm going
630 * to contiune using the convention I'm using with the other ciphers */ 635 * to continue using the convention I'm using with the other ciphers */
631#define SN_ripemd160WithRSA "RSA-RIPEMD160" 636#define SN_ripemd160WithRSA "RSA-RIPEMD160"
632#define LN_ripemd160WithRSA "ripemd160WithRSA" 637#define LN_ripemd160WithRSA "ripemd160WithRSA"
633#define NID_ripemd160WithRSA 119 638#define NID_ripemd160WithRSA 119
@@ -661,12 +666,12 @@ extern "C" {
661#define SN_rle_compression "RLE" 666#define SN_rle_compression "RLE"
662#define LN_rle_compression "run length compression" 667#define LN_rle_compression "run length compression"
663#define NID_rle_compression 124 668#define NID_rle_compression 124
664#define OBJ_rle_compression 1L,1L,1L,1L,666L.1L 669#define OBJ_rle_compression 1L,1L,1L,1L,666L,1L
665 670
666#define SN_zlib_compression "ZLIB" 671#define SN_zlib_compression "ZLIB"
667#define LN_zlib_compression "zlib compression" 672#define LN_zlib_compression "zlib compression"
668#define NID_zlib_compression 125 673#define NID_zlib_compression 125
669#define OBJ_zlib_compression 1L,1L,1L,1L,666L.2L 674#define OBJ_zlib_compression 1L,1L,1L,1L,666L,2L
670 675
671#define SN_ext_key_usage "extendedKeyUsage" 676#define SN_ext_key_usage "extendedKeyUsage"
672#define LN_ext_key_usage "X509v3 Extended Key Usage" 677#define LN_ext_key_usage "X509v3 Extended Key Usage"
@@ -735,7 +740,7 @@ extern "C" {
735#define NID_ms_efs 138 740#define NID_ms_efs 138
736#define OBJ_ms_efs 1L,3L,6L,1L,4L,1L,311L,10L,3L,4L 741#define OBJ_ms_efs 1L,3L,6L,1L,4L,1L,311L,10L,3L,4L
737 742
738/* Addidional usage: Netscape */ 743/* Additional usage: Netscape */
739 744
740#define SN_ns_sgc "nsSGC" 745#define SN_ns_sgc "nsSGC"
741#define LN_ns_sgc "Netscape Server Gated Crypto" 746#define LN_ns_sgc "Netscape Server Gated Crypto"
@@ -767,26 +772,32 @@ extern "C" {
767#define OBJ_pkcs12 OBJ_pkcs,12L 772#define OBJ_pkcs12 OBJ_pkcs,12L
768#define OBJ_pkcs12_pbeids OBJ_pkcs12, 1 773#define OBJ_pkcs12_pbeids OBJ_pkcs12, 1
769 774
775#define SN_pbe_WithSHA1And128BitRC4 "PBE-SHA1-RC4-128"
770#define LN_pbe_WithSHA1And128BitRC4 "pbeWithSHA1And128BitRC4" 776#define LN_pbe_WithSHA1And128BitRC4 "pbeWithSHA1And128BitRC4"
771#define NID_pbe_WithSHA1And128BitRC4 144 777#define NID_pbe_WithSHA1And128BitRC4 144
772#define OBJ_pbe_WithSHA1And128BitRC4 OBJ_pkcs12_pbeids, 1L 778#define OBJ_pbe_WithSHA1And128BitRC4 OBJ_pkcs12_pbeids, 1L
773 779
780#define SN_pbe_WithSHA1And40BitRC4 "PBE-SHA1-RC4-40"
774#define LN_pbe_WithSHA1And40BitRC4 "pbeWithSHA1And40BitRC4" 781#define LN_pbe_WithSHA1And40BitRC4 "pbeWithSHA1And40BitRC4"
775#define NID_pbe_WithSHA1And40BitRC4 145 782#define NID_pbe_WithSHA1And40BitRC4 145
776#define OBJ_pbe_WithSHA1And40BitRC4 OBJ_pkcs12_pbeids, 2L 783#define OBJ_pbe_WithSHA1And40BitRC4 OBJ_pkcs12_pbeids, 2L
777 784
785#define SN_pbe_WithSHA1And3_Key_TripleDES_CBC "PBE-SHA1-3DES"
778#define LN_pbe_WithSHA1And3_Key_TripleDES_CBC "pbeWithSHA1And3-KeyTripleDES-CBC" 786#define LN_pbe_WithSHA1And3_Key_TripleDES_CBC "pbeWithSHA1And3-KeyTripleDES-CBC"
779#define NID_pbe_WithSHA1And3_Key_TripleDES_CBC 146 787#define NID_pbe_WithSHA1And3_Key_TripleDES_CBC 146
780#define OBJ_pbe_WithSHA1And3_Key_TripleDES_CBC OBJ_pkcs12_pbeids, 3L 788#define OBJ_pbe_WithSHA1And3_Key_TripleDES_CBC OBJ_pkcs12_pbeids, 3L
781 789
790#define SN_pbe_WithSHA1And2_Key_TripleDES_CBC "PBE-SHA1-2DES"
782#define LN_pbe_WithSHA1And2_Key_TripleDES_CBC "pbeWithSHA1And2-KeyTripleDES-CBC" 791#define LN_pbe_WithSHA1And2_Key_TripleDES_CBC "pbeWithSHA1And2-KeyTripleDES-CBC"
783#define NID_pbe_WithSHA1And2_Key_TripleDES_CBC 147 792#define NID_pbe_WithSHA1And2_Key_TripleDES_CBC 147
784#define OBJ_pbe_WithSHA1And2_Key_TripleDES_CBC OBJ_pkcs12_pbeids, 4L 793#define OBJ_pbe_WithSHA1And2_Key_TripleDES_CBC OBJ_pkcs12_pbeids, 4L
785 794
795#define SN_pbe_WithSHA1And128BitRC2_CBC "PBE-SHA1-RC2-128"
786#define LN_pbe_WithSHA1And128BitRC2_CBC "pbeWithSHA1And128BitRC2-CBC" 796#define LN_pbe_WithSHA1And128BitRC2_CBC "pbeWithSHA1And128BitRC2-CBC"
787#define NID_pbe_WithSHA1And128BitRC2_CBC 148 797#define NID_pbe_WithSHA1And128BitRC2_CBC 148
788#define OBJ_pbe_WithSHA1And128BitRC2_CBC OBJ_pkcs12_pbeids, 5L 798#define OBJ_pbe_WithSHA1And128BitRC2_CBC OBJ_pkcs12_pbeids, 5L
789 799
800#define SN_pbe_WithSHA1And40BitRC2_CBC "PBE-SHA1-RC2-40"
790#define LN_pbe_WithSHA1And40BitRC2_CBC "pbeWithSHA1And40BitRC2-CBC" 801#define LN_pbe_WithSHA1And40BitRC2_CBC "pbeWithSHA1And40BitRC2-CBC"
791#define NID_pbe_WithSHA1And40BitRC2_CBC 149 802#define NID_pbe_WithSHA1And40BitRC2_CBC 149
792#define OBJ_pbe_WithSHA1And40BitRC2_CBC OBJ_pkcs12_pbeids, 6L 803#define OBJ_pbe_WithSHA1And40BitRC2_CBC OBJ_pkcs12_pbeids, 6L
@@ -876,20 +887,73 @@ extern "C" {
876#define SN_SMIMECapabilities "SMIME-CAPS" 887#define SN_SMIMECapabilities "SMIME-CAPS"
877#define LN_SMIMECapabilities "S/MIME Capabilities" 888#define LN_SMIMECapabilities "S/MIME Capabilities"
878#define NID_SMIMECapabilities 167 889#define NID_SMIMECapabilities 167
879#define OBJ_SMIMECapabilities OBJ_id_pkcs9,15L 890#define OBJ_SMIMECapabilities OBJ_pkcs9,15L
880 891
892#define SN_pbeWithMD2AndRC2_CBC "PBE-MD2-RC2-64"
881#define LN_pbeWithMD2AndRC2_CBC "pbeWithMD2AndRC2-CBC" 893#define LN_pbeWithMD2AndRC2_CBC "pbeWithMD2AndRC2-CBC"
882#define NID_pbeWithMD2AndRC2_CBC 168 894#define NID_pbeWithMD2AndRC2_CBC 168
883#define OBJ_pbeWithMD2AndRC2_CBC OBJ_pkcs,5L,4L 895#define OBJ_pbeWithMD2AndRC2_CBC OBJ_pkcs,5L,4L
884 896
897#define SN_pbeWithMD5AndRC2_CBC "PBE-MD5-RC2-64"
885#define LN_pbeWithMD5AndRC2_CBC "pbeWithMD5AndRC2-CBC" 898#define LN_pbeWithMD5AndRC2_CBC "pbeWithMD5AndRC2-CBC"
886#define NID_pbeWithMD5AndRC2_CBC 169 899#define NID_pbeWithMD5AndRC2_CBC 169
887#define OBJ_pbeWithMD5AndRC2_CBC OBJ_pkcs,5L,6L 900#define OBJ_pbeWithMD5AndRC2_CBC OBJ_pkcs,5L,6L
888 901
902#define SN_pbeWithSHA1AndDES_CBC "PBE-SHA1-DES"
889#define LN_pbeWithSHA1AndDES_CBC "pbeWithSHA1AndDES-CBC" 903#define LN_pbeWithSHA1AndDES_CBC "pbeWithSHA1AndDES-CBC"
890#define NID_pbeWithSHA1AndDES_CBC 170 904#define NID_pbeWithSHA1AndDES_CBC 170
891#define OBJ_pbeWithSHA1AndDES_CBC OBJ_pkcs,5L,10L 905#define OBJ_pbeWithSHA1AndDES_CBC OBJ_pkcs,5L,10L
892 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_OSCP_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
893#include <openssl/bio.h> 957#include <openssl/bio.h>
894#include <openssl/asn1.h> 958#include <openssl/asn1.h>
895 959