summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/objects
diff options
context:
space:
mode:
authormarkus <>2002-09-05 12:51:50 +0000
committermarkus <>2002-09-05 12:51:50 +0000
commit15b5d84f9da2ce4bfae8580e56e34a859f74ad71 (patch)
treebf939e82d7fd73cc8a01cf6959002209972091bc /src/lib/libcrypto/objects
parent027351f729b9e837200dae6e1520cda6577ab930 (diff)
downloadopenbsd-15b5d84f9da2ce4bfae8580e56e34a859f74ad71.tar.gz
openbsd-15b5d84f9da2ce4bfae8580e56e34a859f74ad71.tar.bz2
openbsd-15b5d84f9da2ce4bfae8580e56e34a859f74ad71.zip
import openssl-0.9.7-beta1
Diffstat (limited to 'src/lib/libcrypto/objects')
-rw-r--r--src/lib/libcrypto/objects/o_names.c229
-rw-r--r--src/lib/libcrypto/objects/obj_dat.c359
-rw-r--r--src/lib/libcrypto/objects/obj_dat.pl112
-rw-r--r--src/lib/libcrypto/objects/obj_err.c123
-rw-r--r--src/lib/libcrypto/objects/obj_lib.c39
-rw-r--r--src/lib/libcrypto/objects/obj_mac.num121
-rw-r--r--src/lib/libcrypto/objects/objects.h444
-rw-r--r--src/lib/libcrypto/objects/objects.pl17
-rw-r--r--src/lib/libcrypto/objects/objects.txt800
9 files changed, 1828 insertions, 416 deletions
diff --git a/src/lib/libcrypto/objects/o_names.c b/src/lib/libcrypto/objects/o_names.c
index 4da5e45b9c..b4453b4a98 100644
--- a/src/lib/libcrypto/objects/o_names.c
+++ b/src/lib/libcrypto/objects/o_names.c
@@ -4,78 +4,119 @@
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>
8#include <openssl/e_os2.h>
9
10/* Later versions of DEC C has started to add lnkage information to certain
11 * functions, which makes it tricky to use them as values to regular function
12 * pointers. One way is to define a macro that takes care of casting them
13 * correctly.
14 */
15#ifdef OPENSSL_SYS_VMS_DECC
16# define OPENSSL_strcmp (int (*)(const char *,const char *))strcmp
17#else
18# define OPENSSL_strcmp strcmp
19#endif
7 20
8/* I use the ex_data stuff to manage the identifiers for the obj_name_types 21/* 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. 22 * that applications may define. I only really use the free function field.
10 */ 23 */
11static LHASH *names_lh=NULL; 24static LHASH *names_lh=NULL;
12static int names_type_num=OBJ_NAME_TYPE_NUM; 25static int names_type_num=OBJ_NAME_TYPE_NUM;
13static STACK *names_cmp=NULL;
14static STACK *names_hash=NULL;
15static STACK *names_free=NULL;
16 26
17static unsigned long obj_name_hash(OBJ_NAME *a); 27typedef struct name_funcs_st
18static int obj_name_cmp(OBJ_NAME *a,OBJ_NAME *b); 28 {
29 unsigned long (*hash_func)(const char *name);
30 int (*cmp_func)(const char *a,const char *b);
31 void (*free_func)(const char *, int, const char *);
32 } NAME_FUNCS;
33
34DECLARE_STACK_OF(NAME_FUNCS)
35IMPLEMENT_STACK_OF(NAME_FUNCS)
36
37static STACK_OF(NAME_FUNCS) *name_funcs_stack;
38
39/* The LHASH callbacks now use the raw "void *" prototypes and do per-variable
40 * casting in the functions. This prevents function pointer casting without the
41 * need for macro-generated wrapper functions. */
42
43/* static unsigned long obj_name_hash(OBJ_NAME *a); */
44static unsigned long obj_name_hash(const void *a_void);
45/* static int obj_name_cmp(OBJ_NAME *a,OBJ_NAME *b); */
46static int obj_name_cmp(const void *a_void,const void *b_void);
19 47
20int OBJ_NAME_init(void) 48int OBJ_NAME_init(void)
21 { 49 {
22 if (names_lh != NULL) return(1); 50 if (names_lh != NULL) return(1);
23 MemCheck_off(); 51 MemCheck_off();
24 names_lh=lh_new(obj_name_hash,obj_name_cmp); 52 names_lh=lh_new(obj_name_hash, obj_name_cmp);
25 MemCheck_on(); 53 MemCheck_on();
26 return(names_lh != NULL); 54 return(names_lh != NULL);
27 } 55 }
28 56
29int OBJ_NAME_new_index(unsigned long (*hash_func)(), int (*cmp_func)(), 57int OBJ_NAME_new_index(unsigned long (*hash_func)(const char *),
30 void (*free_func)()) 58 int (*cmp_func)(const char *, const char *),
59 void (*free_func)(const char *, int, const char *))
31 { 60 {
32 int ret; 61 int ret;
33 int i; 62 int i;
63 NAME_FUNCS *name_funcs;
34 64
35 if (names_free == NULL) 65 if (name_funcs_stack == NULL)
36 { 66 {
37 MemCheck_off(); 67 MemCheck_off();
38 names_hash=sk_new_null(); 68 name_funcs_stack=sk_NAME_FUNCS_new_null();
39 names_cmp=sk_new_null();
40 names_free=sk_new_null();
41 MemCheck_on(); 69 MemCheck_on();
42 } 70 }
43 if ((names_free == NULL) || (names_hash == NULL) || (names_cmp == NULL)) 71 if ((name_funcs_stack == NULL))
44 { 72 {
45 /* ERROR */ 73 /* ERROR */
46 return(0); 74 return(0);
47 } 75 }
48 ret=names_type_num; 76 ret=names_type_num;
49 names_type_num++; 77 names_type_num++;
50 for (i=sk_num(names_free); i<names_type_num; i++) 78 for (i=sk_NAME_FUNCS_num(name_funcs_stack); i<names_type_num; i++)
51 { 79 {
52 MemCheck_off(); 80 MemCheck_off();
53 sk_push(names_hash,(char *)strcmp); 81 name_funcs = OPENSSL_malloc(sizeof(NAME_FUNCS));
54 sk_push(names_cmp,(char *)lh_strhash); 82 MemCheck_on();
55 sk_push(names_free,NULL); 83 if (!name_funcs) return(0);
84 name_funcs->hash_func = lh_strhash;
85 name_funcs->cmp_func = OPENSSL_strcmp;
86 name_funcs->free_func = 0; /* NULL is often declared to
87 * ((void *)0), which according
88 * to Compaq C is not really
89 * compatible with a function
90 * pointer. -- Richard Levitte*/
91 MemCheck_off();
92 sk_NAME_FUNCS_push(name_funcs_stack,name_funcs);
56 MemCheck_on(); 93 MemCheck_on();
57 } 94 }
95 name_funcs = sk_NAME_FUNCS_value(name_funcs_stack, ret);
58 if (hash_func != NULL) 96 if (hash_func != NULL)
59 sk_set(names_hash,ret,(char *)hash_func); 97 name_funcs->hash_func = hash_func;
60 if (cmp_func != NULL) 98 if (cmp_func != NULL)
61 sk_set(names_cmp,ret,(char *)cmp_func); 99 name_funcs->cmp_func = cmp_func;
62 if (free_func != NULL) 100 if (free_func != NULL)
63 sk_set(names_free,ret,(char *)free_func); 101 name_funcs->free_func = free_func;
64 return(ret); 102 return(ret);
65 } 103 }
66 104
67static int obj_name_cmp(OBJ_NAME *a, OBJ_NAME *b) 105/* static int obj_name_cmp(OBJ_NAME *a, OBJ_NAME *b) */
106static int obj_name_cmp(const void *a_void, const void *b_void)
68 { 107 {
69 int ret; 108 int ret;
70 int (*cmp)(); 109 OBJ_NAME *a = (OBJ_NAME *)a_void;
110 OBJ_NAME *b = (OBJ_NAME *)b_void;
71 111
72 ret=a->type-b->type; 112 ret=a->type-b->type;
73 if (ret == 0) 113 if (ret == 0)
74 { 114 {
75 if ((names_cmp != NULL) && (sk_num(names_cmp) > a->type)) 115 if ((name_funcs_stack != NULL)
116 && (sk_NAME_FUNCS_num(name_funcs_stack) > a->type))
76 { 117 {
77 cmp=(int (*)())sk_value(names_cmp,a->type); 118 ret=sk_NAME_FUNCS_value(name_funcs_stack,
78 ret=cmp(a->name,b->name); 119 a->type)->cmp_func(a->name,b->name);
79 } 120 }
80 else 121 else
81 ret=strcmp(a->name,b->name); 122 ret=strcmp(a->name,b->name);
@@ -83,15 +124,16 @@ static int obj_name_cmp(OBJ_NAME *a, OBJ_NAME *b)
83 return(ret); 124 return(ret);
84 } 125 }
85 126
86static unsigned long obj_name_hash(OBJ_NAME *a) 127/* static unsigned long obj_name_hash(OBJ_NAME *a) */
128static unsigned long obj_name_hash(const void *a_void)
87 { 129 {
88 unsigned long ret; 130 unsigned long ret;
89 unsigned long (*hash)(); 131 OBJ_NAME *a = (OBJ_NAME *)a_void;
90 132
91 if ((names_hash != NULL) && (sk_num(names_hash) > a->type)) 133 if ((name_funcs_stack != NULL) && (sk_NAME_FUNCS_num(name_funcs_stack) > a->type))
92 { 134 {
93 hash=(unsigned long (*)())sk_value(names_hash,a->type); 135 ret=sk_NAME_FUNCS_value(name_funcs_stack,
94 ret=hash(a->name); 136 a->type)->hash_func(a->name);
95 } 137 }
96 else 138 else
97 { 139 {
@@ -116,8 +158,8 @@ const char *OBJ_NAME_get(const char *name, int type)
116 on.type=type; 158 on.type=type;
117 159
118 for (;;) 160 for (;;)
119 { 161 {
120 ret=(OBJ_NAME *)lh_retrieve(names_lh,(char *)&on); 162 ret=(OBJ_NAME *)lh_retrieve(names_lh,&on);
121 if (ret == NULL) return(NULL); 163 if (ret == NULL) return(NULL);
122 if ((ret->alias) && !alias) 164 if ((ret->alias) && !alias)
123 { 165 {
@@ -133,7 +175,6 @@ const char *OBJ_NAME_get(const char *name, int type)
133 175
134int OBJ_NAME_add(const char *name, int type, const char *data) 176int OBJ_NAME_add(const char *name, int type, const char *data)
135 { 177 {
136 void (*f)();
137 OBJ_NAME *onp,*ret; 178 OBJ_NAME *onp,*ret;
138 int alias; 179 int alias;
139 180
@@ -142,7 +183,7 @@ int OBJ_NAME_add(const char *name, int type, const char *data)
142 alias=type&OBJ_NAME_ALIAS; 183 alias=type&OBJ_NAME_ALIAS;
143 type&= ~OBJ_NAME_ALIAS; 184 type&= ~OBJ_NAME_ALIAS;
144 185
145 onp=(OBJ_NAME *)Malloc(sizeof(OBJ_NAME)); 186 onp=(OBJ_NAME *)OPENSSL_malloc(sizeof(OBJ_NAME));
146 if (onp == NULL) 187 if (onp == NULL)
147 { 188 {
148 /* ERROR */ 189 /* ERROR */
@@ -154,16 +195,20 @@ int OBJ_NAME_add(const char *name, int type, const char *data)
154 onp->type=type; 195 onp->type=type;
155 onp->data=data; 196 onp->data=data;
156 197
157 ret=(OBJ_NAME *)lh_insert(names_lh,(char *)onp); 198 ret=(OBJ_NAME *)lh_insert(names_lh,onp);
158 if (ret != NULL) 199 if (ret != NULL)
159 { 200 {
160 /* free things */ 201 /* free things */
161 if ((names_free != NULL) && (sk_num(names_free) > ret->type)) 202 if ((name_funcs_stack != NULL) && (sk_NAME_FUNCS_num(name_funcs_stack) > ret->type))
162 { 203 {
163 f=(void (*)())sk_value(names_free,ret->type); 204 /* XXX: I'm not sure I understand why the free
164 f(ret->name,ret->type,ret->data); 205 * function should get three arguments...
206 * -- Richard Levitte
207 */
208 sk_NAME_FUNCS_value(name_funcs_stack,
209 ret->type)->free_func(ret->name,ret->type,ret->data);
165 } 210 }
166 Free((char *)ret); 211 OPENSSL_free(ret);
167 } 212 }
168 else 213 else
169 { 214 {
@@ -179,35 +224,108 @@ int OBJ_NAME_add(const char *name, int type, const char *data)
179int OBJ_NAME_remove(const char *name, int type) 224int OBJ_NAME_remove(const char *name, int type)
180 { 225 {
181 OBJ_NAME on,*ret; 226 OBJ_NAME on,*ret;
182 void (*f)();
183 227
184 if (names_lh == NULL) return(0); 228 if (names_lh == NULL) return(0);
185 229
186 type&= ~OBJ_NAME_ALIAS; 230 type&= ~OBJ_NAME_ALIAS;
187 on.name=name; 231 on.name=name;
188 on.type=type; 232 on.type=type;
189 ret=(OBJ_NAME *)lh_delete(names_lh,(char *)&on); 233 ret=(OBJ_NAME *)lh_delete(names_lh,&on);
190 if (ret != NULL) 234 if (ret != NULL)
191 { 235 {
192 /* free things */ 236 /* free things */
193 if ((names_free != NULL) && (sk_num(names_free) > type)) 237 if ((name_funcs_stack != NULL) && (sk_NAME_FUNCS_num(name_funcs_stack) > ret->type))
194 { 238 {
195 f=(void (*)())sk_value(names_free,type); 239 /* XXX: I'm not sure I understand why the free
196 f(ret->name,ret->type,ret->data); 240 * function should get three arguments...
241 * -- Richard Levitte
242 */
243 sk_NAME_FUNCS_value(name_funcs_stack,
244 ret->type)->free_func(ret->name,ret->type,ret->data);
197 } 245 }
198 Free((char *)ret); 246 OPENSSL_free(ret);
199 return(1); 247 return(1);
200 } 248 }
201 else 249 else
202 return(0); 250 return(0);
203 } 251 }
204 252
253struct doall
254 {
255 int type;
256 void (*fn)(const OBJ_NAME *,void *arg);
257 void *arg;
258 };
259
260static void do_all_fn(const OBJ_NAME *name,struct doall *d)
261 {
262 if(name->type == d->type)
263 d->fn(name,d->arg);
264 }
265
266static IMPLEMENT_LHASH_DOALL_ARG_FN(do_all_fn, const OBJ_NAME *, struct doall *)
267
268void OBJ_NAME_do_all(int type,void (*fn)(const OBJ_NAME *,void *arg),void *arg)
269 {
270 struct doall d;
271
272 d.type=type;
273 d.fn=fn;
274 d.arg=arg;
275
276 lh_doall_arg(names_lh,LHASH_DOALL_ARG_FN(do_all_fn),&d);
277 }
278
279struct doall_sorted
280 {
281 int type;
282 int n;
283 const OBJ_NAME **names;
284 };
285
286static void do_all_sorted_fn(const OBJ_NAME *name,void *d_)
287 {
288 struct doall_sorted *d=d_;
289
290 if(name->type != d->type)
291 return;
292
293 d->names[d->n++]=name;
294 }
295
296static int do_all_sorted_cmp(const void *n1_,const void *n2_)
297 {
298 const OBJ_NAME * const *n1=n1_;
299 const OBJ_NAME * const *n2=n2_;
300
301 return strcmp((*n1)->name,(*n2)->name);
302 }
303
304void OBJ_NAME_do_all_sorted(int type,void (*fn)(const OBJ_NAME *,void *arg),
305 void *arg)
306 {
307 struct doall_sorted d;
308 int n;
309
310 d.type=type;
311 d.names=OPENSSL_malloc(lh_num_items(names_lh)*sizeof *d.names);
312 d.n=0;
313 OBJ_NAME_do_all(type,do_all_sorted_fn,&d);
314
315 qsort((void *)d.names,d.n,sizeof *d.names,do_all_sorted_cmp);
316
317 for(n=0 ; n < d.n ; ++n)
318 fn(d.names[n],arg);
319
320 OPENSSL_free((void *)d.names);
321 }
322
205static int free_type; 323static int free_type;
206 324
207static void names_lh_free(OBJ_NAME *onp, int type) 325static void names_lh_free(OBJ_NAME *onp)
208{ 326{
209 if(onp == NULL) 327 if(onp == NULL)
210 return; 328 return;
211 329
212 if ((free_type < 0) || (free_type == onp->type)) 330 if ((free_type < 0) || (free_type == onp->type))
213 { 331 {
@@ -215,6 +333,13 @@ static void names_lh_free(OBJ_NAME *onp, int type)
215 } 333 }
216 } 334 }
217 335
336static IMPLEMENT_LHASH_DOALL_FN(names_lh_free, OBJ_NAME *)
337
338static void name_funcs_free(NAME_FUNCS *ptr)
339 {
340 OPENSSL_free(ptr);
341 }
342
218void OBJ_NAME_cleanup(int type) 343void OBJ_NAME_cleanup(int type)
219 { 344 {
220 unsigned long down_load; 345 unsigned long down_load;
@@ -225,17 +350,13 @@ void OBJ_NAME_cleanup(int type)
225 down_load=names_lh->down_load; 350 down_load=names_lh->down_load;
226 names_lh->down_load=0; 351 names_lh->down_load=0;
227 352
228 lh_doall(names_lh,names_lh_free); 353 lh_doall(names_lh,LHASH_DOALL_FN(names_lh_free));
229 if (type < 0) 354 if (type < 0)
230 { 355 {
231 lh_free(names_lh); 356 lh_free(names_lh);
232 sk_free(names_hash); 357 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; 358 names_lh=NULL;
236 names_hash=NULL; 359 name_funcs_stack = NULL;
237 names_cmp=NULL;
238 names_free=NULL;
239 } 360 }
240 else 361 else
241 names_lh->down_load=down_load; 362 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 34866ebbd2..3ff64bb8d1 100644
--- a/src/lib/libcrypto/objects/obj_dat.c
+++ b/src/lib/libcrypto/objects/obj_dat.c
@@ -59,23 +59,29 @@
59#include <stdio.h> 59#include <stdio.h>
60#include <ctype.h> 60#include <ctype.h>
61#include "cryptlib.h" 61#include "cryptlib.h"
62#include "lhash.h" 62#include <openssl/lhash.h>
63#include "asn1.h" 63#include <openssl/asn1.h>
64#include "objects.h" 64#include <openssl/objects.h>
65 65
66/* obj_dat.h is generated from objects.h by obj_dat.pl */ 66/* obj_dat.h is generated from objects.h by obj_dat.pl */
67#ifndef OPENSSL_NO_OBJECT
67#include "obj_dat.h" 68#include "obj_dat.h"
68
69#ifndef NOPROTO
70static int sn_cmp(ASN1_OBJECT **a, ASN1_OBJECT **b);
71static int ln_cmp(ASN1_OBJECT **a, ASN1_OBJECT **b);
72static int obj_cmp(ASN1_OBJECT **a, ASN1_OBJECT **b);
73#else 69#else
74static int sn_cmp(); 70/* You will have to load all the objects needed manually in the application */
75static int ln_cmp(); 71#define NUM_NID 0
76static int obj_cmp(); 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];
77#endif 80#endif
78 81
82static int sn_cmp(const void *a, const void *b);
83static int ln_cmp(const void *a, const void *b);
84static int obj_cmp(const void *a, const void *b);
79#define ADDED_DATA 0 85#define ADDED_DATA 0
80#define ADDED_SNAME 1 86#define ADDED_SNAME 1
81#define ADDED_LNAME 2 87#define ADDED_LNAME 2
@@ -90,23 +96,26 @@ typedef struct added_obj_st
90static int new_nid=NUM_NID; 96static int new_nid=NUM_NID;
91static LHASH *added=NULL; 97static LHASH *added=NULL;
92 98
93static int sn_cmp(ap,bp) 99static int sn_cmp(const void *a, const void *b)
94ASN1_OBJECT **ap; 100 {
95ASN1_OBJECT **bp; 101 const ASN1_OBJECT * const *ap = a, * const *bp = b;
96 { return(strcmp((*ap)->sn,(*bp)->sn)); } 102 return(strcmp((*ap)->sn,(*bp)->sn));
103 }
97 104
98static int ln_cmp(ap,bp) 105static int ln_cmp(const void *a, const void *b)
99ASN1_OBJECT **ap; 106 {
100ASN1_OBJECT **bp; 107 const ASN1_OBJECT * const *ap = a, * const *bp = b;
101 { return(strcmp((*ap)->ln,(*bp)->ln)); } 108 return(strcmp((*ap)->ln,(*bp)->ln));
109 }
102 110
103static unsigned long add_hash(ca) 111/* static unsigned long add_hash(ADDED_OBJ *ca) */
104ADDED_OBJ *ca; 112static unsigned long add_hash(const void *ca_void)
105 { 113 {
106 ASN1_OBJECT *a; 114 const ASN1_OBJECT *a;
107 int i; 115 int i;
108 unsigned long ret=0; 116 unsigned long ret=0;
109 unsigned char *p; 117 unsigned char *p;
118 ADDED_OBJ *ca = (ADDED_OBJ *)ca_void;
110 119
111 a=ca->obj; 120 a=ca->obj;
112 switch (ca->type) 121 switch (ca->type)
@@ -127,18 +136,21 @@ ADDED_OBJ *ca;
127 ret=a->nid; 136 ret=a->nid;
128 break; 137 break;
129 default: 138 default:
130 abort(); 139 /* abort(); */
140 return 0;
131 } 141 }
132 ret&=0x3fffffffL; 142 ret&=0x3fffffffL;
133 ret|=ca->type<<30L; 143 ret|=ca->type<<30L;
134 return(ret); 144 return(ret);
135 } 145 }
136 146
137static int add_cmp(ca,cb) 147/* static int add_cmp(ADDED_OBJ *ca, ADDED_OBJ *cb) */
138ADDED_OBJ *ca,*cb; 148static int add_cmp(const void *ca_void, const void *cb_void)
139 { 149 {
140 ASN1_OBJECT *a,*b; 150 ASN1_OBJECT *a,*b;
141 int i; 151 int i;
152 ADDED_OBJ *ca = (ADDED_OBJ *)ca_void;
153 ADDED_OBJ *cb = (ADDED_OBJ *)cb_void;
142 154
143 i=ca->type-cb->type; 155 i=ca->type-cb->type;
144 if (i) return(i); 156 if (i) return(i);
@@ -161,50 +173,52 @@ ADDED_OBJ *ca,*cb;
161 case ADDED_NID: 173 case ADDED_NID:
162 return(a->nid-b->nid); 174 return(a->nid-b->nid);
163 default: 175 default:
164 abort(); 176 /* abort(); */
177 return 0;
165 } 178 }
166 } 179 }
167 180
168static int init_added() 181static int init_added(void)
169 { 182 {
170 if (added != NULL) return(1); 183 if (added != NULL) return(1);
171 added=lh_new(add_hash,add_cmp); 184 added=lh_new(add_hash,add_cmp);
172 return(added != NULL); 185 return(added != NULL);
173 } 186 }
174 187
175static void cleanup1(a) 188static void cleanup1(ADDED_OBJ *a)
176ADDED_OBJ *a;
177 { 189 {
178 a->obj->nid=0; 190 a->obj->nid=0;
179 a->obj->flags|=ASN1_OBJECT_FLAG_DYNAMIC| 191 a->obj->flags|=ASN1_OBJECT_FLAG_DYNAMIC|
180 ASN1_OBJECT_FLAG_DYNAMIC_STRINGS; 192 ASN1_OBJECT_FLAG_DYNAMIC_STRINGS|
193 ASN1_OBJECT_FLAG_DYNAMIC_DATA;
181 } 194 }
182 195
183static void cleanup2(a) 196static void cleanup2(ADDED_OBJ *a)
184ADDED_OBJ *a;
185 { a->obj->nid++; } 197 { a->obj->nid++; }
186 198
187static void cleanup3(a) 199static void cleanup3(ADDED_OBJ *a)
188ADDED_OBJ *a;
189 { 200 {
190 if (--a->obj->nid == 0) 201 if (--a->obj->nid == 0)
191 ASN1_OBJECT_free(a->obj); 202 ASN1_OBJECT_free(a->obj);
192 Free(a); 203 OPENSSL_free(a);
193 } 204 }
194 205
195void OBJ_cleanup() 206static IMPLEMENT_LHASH_DOALL_FN(cleanup1, ADDED_OBJ *)
207static IMPLEMENT_LHASH_DOALL_FN(cleanup2, ADDED_OBJ *)
208static IMPLEMENT_LHASH_DOALL_FN(cleanup3, ADDED_OBJ *)
209
210void OBJ_cleanup(void)
196 { 211 {
197 if (added == NULL) return; 212 if (added == NULL) return;
198 added->down_load=0; 213 added->down_load=0;
199 lh_doall(added,cleanup1); /* zero counters */ 214 lh_doall(added,LHASH_DOALL_FN(cleanup1)); /* zero counters */
200 lh_doall(added,cleanup2); /* set counters */ 215 lh_doall(added,LHASH_DOALL_FN(cleanup2)); /* set counters */
201 lh_doall(added,cleanup3); /* free objects */ 216 lh_doall(added,LHASH_DOALL_FN(cleanup3)); /* free objects */
202 lh_free(added); 217 lh_free(added);
203 added=NULL; 218 added=NULL;
204 } 219 }
205 220
206int OBJ_new_nid(num) 221int OBJ_new_nid(int num)
207int num;
208 { 222 {
209 int i; 223 int i;
210 224
@@ -213,27 +227,22 @@ int num;
213 return(i); 227 return(i);
214 } 228 }
215 229
216int OBJ_add_object(obj) 230int OBJ_add_object(const ASN1_OBJECT *obj)
217ASN1_OBJECT *obj;
218 { 231 {
219 ASN1_OBJECT *o; 232 ASN1_OBJECT *o;
220 ADDED_OBJ *ao[4],*aop; 233 ADDED_OBJ *ao[4]={NULL,NULL,NULL,NULL},*aop;
221 int i; 234 int i;
222 235
223 if (added == NULL) 236 if (added == NULL)
224 if (!init_added()) return(0); 237 if (!init_added()) return(0);
225 if ((o=OBJ_dup(obj)) == NULL) goto err; 238 if ((o=OBJ_dup(obj)) == NULL) goto err;
226 ao[ADDED_DATA]=NULL; 239 if (!(ao[ADDED_NID]=(ADDED_OBJ *)OPENSSL_malloc(sizeof(ADDED_OBJ)))) goto err;
227 ao[ADDED_SNAME]=NULL;
228 ao[ADDED_LNAME]=NULL;
229 ao[ADDED_NID]=NULL;
230 ao[ADDED_NID]=(ADDED_OBJ *)Malloc(sizeof(ADDED_OBJ));
231 if ((o->length != 0) && (obj->data != NULL)) 240 if ((o->length != 0) && (obj->data != NULL))
232 ao[ADDED_DATA]=(ADDED_OBJ *)Malloc(sizeof(ADDED_OBJ)); 241 ao[ADDED_DATA]=(ADDED_OBJ *)OPENSSL_malloc(sizeof(ADDED_OBJ));
233 if (o->sn != NULL) 242 if (o->sn != NULL)
234 ao[ADDED_SNAME]=(ADDED_OBJ *)Malloc(sizeof(ADDED_OBJ)); 243 ao[ADDED_SNAME]=(ADDED_OBJ *)OPENSSL_malloc(sizeof(ADDED_OBJ));
235 if (o->ln != NULL) 244 if (o->ln != NULL)
236 ao[ADDED_LNAME]=(ADDED_OBJ *)Malloc(sizeof(ADDED_OBJ)); 245 ao[ADDED_LNAME]=(ADDED_OBJ *)OPENSSL_malloc(sizeof(ADDED_OBJ));
237 246
238 for (i=ADDED_DATA; i<=ADDED_NID; i++) 247 for (i=ADDED_DATA; i<=ADDED_NID; i++)
239 { 248 {
@@ -241,23 +250,24 @@ ASN1_OBJECT *obj;
241 { 250 {
242 ao[i]->type=i; 251 ao[i]->type=i;
243 ao[i]->obj=o; 252 ao[i]->obj=o;
244 aop=(ADDED_OBJ *)lh_insert(added,(char *)ao[i]); 253 aop=(ADDED_OBJ *)lh_insert(added,ao[i]);
245 /* memory leak, buit should not normally matter */ 254 /* memory leak, buit should not normally matter */
246 if (aop != NULL) 255 if (aop != NULL)
247 Free(aop); 256 OPENSSL_free(aop);
248 } 257 }
249 } 258 }
250 o->flags&= ~(ASN1_OBJECT_FLAG_DYNAMIC|ASN1_OBJECT_FLAG_DYNAMIC_STRINGS); 259 o->flags&= ~(ASN1_OBJECT_FLAG_DYNAMIC|ASN1_OBJECT_FLAG_DYNAMIC_STRINGS|
260 ASN1_OBJECT_FLAG_DYNAMIC_DATA);
261
251 return(o->nid); 262 return(o->nid);
252err: 263err:
253 for (i=ADDED_DATA; i<=ADDED_NID; i++) 264 for (i=ADDED_DATA; i<=ADDED_NID; i++)
254 if (ao[i] != NULL) Free(ao[i]); 265 if (ao[i] != NULL) OPENSSL_free(ao[i]);
255 if (o != NULL) Free(o); 266 if (o != NULL) OPENSSL_free(o);
256 return(NID_undef); 267 return(NID_undef);
257 } 268 }
258 269
259ASN1_OBJECT *OBJ_nid2obj(n) 270ASN1_OBJECT *OBJ_nid2obj(int n)
260int n;
261 { 271 {
262 ADDED_OBJ ad,*adp; 272 ADDED_OBJ ad,*adp;
263 ASN1_OBJECT ob; 273 ASN1_OBJECT ob;
@@ -278,7 +288,7 @@ int n;
278 ad.type=ADDED_NID; 288 ad.type=ADDED_NID;
279 ad.obj= &ob; 289 ad.obj= &ob;
280 ob.nid=n; 290 ob.nid=n;
281 adp=(ADDED_OBJ *)lh_retrieve(added,(char *)&ad); 291 adp=(ADDED_OBJ *)lh_retrieve(added,&ad);
282 if (adp != NULL) 292 if (adp != NULL)
283 return(adp->obj); 293 return(adp->obj);
284 else 294 else
@@ -289,8 +299,7 @@ int n;
289 } 299 }
290 } 300 }
291 301
292char *OBJ_nid2sn(n) 302const char *OBJ_nid2sn(int n)
293int n;
294 { 303 {
295 ADDED_OBJ ad,*adp; 304 ADDED_OBJ ad,*adp;
296 ASN1_OBJECT ob; 305 ASN1_OBJECT ob;
@@ -311,7 +320,7 @@ int n;
311 ad.type=ADDED_NID; 320 ad.type=ADDED_NID;
312 ad.obj= &ob; 321 ad.obj= &ob;
313 ob.nid=n; 322 ob.nid=n;
314 adp=(ADDED_OBJ *)lh_retrieve(added,(char *)&ad); 323 adp=(ADDED_OBJ *)lh_retrieve(added,&ad);
315 if (adp != NULL) 324 if (adp != NULL)
316 return(adp->obj->sn); 325 return(adp->obj->sn);
317 else 326 else
@@ -322,8 +331,7 @@ int n;
322 } 331 }
323 } 332 }
324 333
325char *OBJ_nid2ln(n) 334const char *OBJ_nid2ln(int n)
326int n;
327 { 335 {
328 ADDED_OBJ ad,*adp; 336 ADDED_OBJ ad,*adp;
329 ASN1_OBJECT ob; 337 ASN1_OBJECT ob;
@@ -344,7 +352,7 @@ int n;
344 ad.type=ADDED_NID; 352 ad.type=ADDED_NID;
345 ad.obj= &ob; 353 ad.obj= &ob;
346 ob.nid=n; 354 ob.nid=n;
347 adp=(ADDED_OBJ *)lh_retrieve(added,(char *)&ad); 355 adp=(ADDED_OBJ *)lh_retrieve(added,&ad);
348 if (adp != NULL) 356 if (adp != NULL)
349 return(adp->obj->ln); 357 return(adp->obj->ln);
350 else 358 else
@@ -355,8 +363,7 @@ int n;
355 } 363 }
356 } 364 }
357 365
358int OBJ_obj2nid(a) 366int OBJ_obj2nid(const ASN1_OBJECT *a)
359ASN1_OBJECT *a;
360 { 367 {
361 ASN1_OBJECT **op; 368 ASN1_OBJECT **op;
362 ADDED_OBJ ad,*adp; 369 ADDED_OBJ ad,*adp;
@@ -369,56 +376,136 @@ ASN1_OBJECT *a;
369 if (added != NULL) 376 if (added != NULL)
370 { 377 {
371 ad.type=ADDED_DATA; 378 ad.type=ADDED_DATA;
372 ad.obj=a; 379 ad.obj=(ASN1_OBJECT *)a; /* XXX: ugly but harmless */
373 adp=(ADDED_OBJ *)lh_retrieve(added,(char *)&ad); 380 adp=(ADDED_OBJ *)lh_retrieve(added,&ad);
374 if (adp != NULL) return (adp->obj->nid); 381 if (adp != NULL) return (adp->obj->nid);
375 } 382 }
376 op=(ASN1_OBJECT **)OBJ_bsearch((char *)&a,(char *)obj_objs,NUM_OBJ, 383 op=(ASN1_OBJECT **)OBJ_bsearch((char *)&a,(char *)obj_objs,NUM_OBJ,
377 sizeof(ASN1_OBJECT *),(int (*)())obj_cmp); 384 sizeof(ASN1_OBJECT *),obj_cmp);
378 if (op == NULL) 385 if (op == NULL)
379 return(NID_undef); 386 return(NID_undef);
380 return((*op)->nid); 387 return((*op)->nid);
381 } 388 }
382 389
383int OBJ_txt2nid(s) 390/* Convert an object name into an ASN1_OBJECT
384char *s; 391 * if "noname" is not set then search for short and long names first.
392 * This will convert the "dotted" form into an object: unlike OBJ_txt2nid
393 * it can be used with any objects, not just registered ones.
394 */
395
396ASN1_OBJECT *OBJ_txt2obj(const char *s, int no_name)
385 { 397 {
386 int ret; 398 int nid = NID_undef;
399 ASN1_OBJECT *op=NULL;
400 unsigned char *buf,*p;
401 int i, j;
387 402
388 ret=OBJ_sn2nid(s); 403 if(!no_name) {
389 if (ret == NID_undef) 404 if( ((nid = OBJ_sn2nid(s)) != NID_undef) ||
390 { 405 ((nid = OBJ_ln2nid(s)) != NID_undef) )
391 ret=OBJ_ln2nid(s); 406 return OBJ_nid2obj(nid);
392 if (ret == NID_undef) 407 }
393 {
394 ASN1_OBJECT *op=NULL;
395 unsigned char *buf,*p;
396 int i;
397 408
398 i=a2d_ASN1_OBJECT(NULL,0,s,-1); 409 /* Work out size of content octets */
399 if (i <= 0) 410 i=a2d_ASN1_OBJECT(NULL,0,s,-1);
400 { 411 if (i <= 0) {
401 /* clear the error */ 412 /* Clear the error */
402 ERR_get_error(); 413 ERR_get_error();
403 return(0); 414 return NULL;
404 } 415 }
416 /* Work out total size */
417 j = ASN1_object_size(0,i,V_ASN1_OBJECT);
418
419 if((buf=(unsigned char *)OPENSSL_malloc(j)) == NULL) return NULL;
420
421 p = buf;
422 /* Write out tag+length */
423 ASN1_put_object(&p,0,i,V_ASN1_OBJECT,V_ASN1_UNIVERSAL);
424 /* Write out contents */
425 a2d_ASN1_OBJECT(p,i,s,-1);
426
427 p=buf;
428 op=d2i_ASN1_OBJECT(NULL,&p,i);
429 OPENSSL_free(buf);
430 return op;
431 }
432
433int OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name)
434{
435 int i,idx=0,n=0,len,nid;
436 unsigned long l;
437 unsigned char *p;
438 const char *s;
439 char tbuf[32];
440
441 if (buf_len <= 0) return(0);
405 442
406 if ((buf=(unsigned char *)Malloc(i)) == NULL) 443 if ((a == NULL) || (a->data == NULL)) {
407 return(NID_undef); 444 buf[0]='\0';
408 a2d_ASN1_OBJECT(buf,i,s,-1); 445 return(0);
409 p=buf; 446 }
410 op=d2i_ASN1_OBJECT(NULL,&p,i); 447
411 if (op == NULL) return(NID_undef); 448 if (no_name || (nid=OBJ_obj2nid(a)) == NID_undef) {
412 ret=OBJ_obj2nid(op); 449 len=a->length;
413 ASN1_OBJECT_free(op); 450 p=a->data;
414 Free(buf); 451
452 idx=0;
453 l=0;
454 while (idx < a->length) {
455 l|=(p[idx]&0x7f);
456 if (!(p[idx] & 0x80)) break;
457 l<<=7L;
458 idx++;
459 }
460 idx++;
461 i=(int)(l/40);
462 if (i > 2) i=2;
463 l-=(long)(i*40);
464
465 sprintf(tbuf,"%d.%lu",i,l);
466 i=strlen(tbuf);
467 strncpy(buf,tbuf,buf_len);
468 buf_len-=i;
469 buf+=i;
470 n+=i;
471
472 l=0;
473 for (; idx<len; idx++) {
474 l|=p[idx]&0x7f;
475 if (!(p[idx] & 0x80)) {
476 sprintf(tbuf,".%lu",l);
477 i=strlen(tbuf);
478 if (buf_len > 0)
479 strncpy(buf,tbuf,buf_len);
480 buf_len-=i;
481 buf+=i;
482 n+=i;
483 l=0;
415 } 484 }
485 l<<=7L;
416 } 486 }
417 return(ret); 487 } else {
488 s=OBJ_nid2ln(nid);
489 if (s == NULL)
490 s=OBJ_nid2sn(nid);
491 strncpy(buf,s,buf_len);
492 n=strlen(s);
418 } 493 }
494 buf[buf_len-1]='\0';
495 return(n);
496}
419 497
420int OBJ_ln2nid(s) 498int OBJ_txt2nid(const char *s)
421char *s; 499{
500 ASN1_OBJECT *obj;
501 int nid;
502 obj = OBJ_txt2obj(s, 0);
503 nid = OBJ_obj2nid(obj);
504 ASN1_OBJECT_free(obj);
505 return nid;
506}
507
508int OBJ_ln2nid(const char *s)
422 { 509 {
423 ASN1_OBJECT o,*oo= &o,**op; 510 ASN1_OBJECT o,*oo= &o,**op;
424 ADDED_OBJ ad,*adp; 511 ADDED_OBJ ad,*adp;
@@ -428,17 +515,16 @@ char *s;
428 { 515 {
429 ad.type=ADDED_LNAME; 516 ad.type=ADDED_LNAME;
430 ad.obj= &o; 517 ad.obj= &o;
431 adp=(ADDED_OBJ *)lh_retrieve(added,(char *)&ad); 518 adp=(ADDED_OBJ *)lh_retrieve(added,&ad);
432 if (adp != NULL) return (adp->obj->nid); 519 if (adp != NULL) return (adp->obj->nid);
433 } 520 }
434 op=(ASN1_OBJECT **)OBJ_bsearch((char *)&oo,(char *)ln_objs,NUM_LN, 521 op=(ASN1_OBJECT **)OBJ_bsearch((char *)&oo,(char *)ln_objs,NUM_LN,
435 sizeof(ASN1_OBJECT *),(int (*)())ln_cmp); 522 sizeof(ASN1_OBJECT *),ln_cmp);
436 if (op == NULL) return(NID_undef); 523 if (op == NULL) return(NID_undef);
437 return((*op)->nid); 524 return((*op)->nid);
438 } 525 }
439 526
440int OBJ_sn2nid(s) 527int OBJ_sn2nid(const char *s)
441char *s;
442 { 528 {
443 ASN1_OBJECT o,*oo= &o,**op; 529 ASN1_OBJECT o,*oo= &o,**op;
444 ADDED_OBJ ad,*adp; 530 ADDED_OBJ ad,*adp;
@@ -448,37 +534,31 @@ char *s;
448 { 534 {
449 ad.type=ADDED_SNAME; 535 ad.type=ADDED_SNAME;
450 ad.obj= &o; 536 ad.obj= &o;
451 adp=(ADDED_OBJ *)lh_retrieve(added,(char *)&ad); 537 adp=(ADDED_OBJ *)lh_retrieve(added,&ad);
452 if (adp != NULL) return (adp->obj->nid); 538 if (adp != NULL) return (adp->obj->nid);
453 } 539 }
454 op=(ASN1_OBJECT **)OBJ_bsearch((char *)&oo,(char *)sn_objs,NUM_SN, 540 op=(ASN1_OBJECT **)OBJ_bsearch((char *)&oo,(char *)sn_objs,NUM_SN,
455 sizeof(ASN1_OBJECT *),(int (*)())sn_cmp); 541 sizeof(ASN1_OBJECT *),sn_cmp);
456 if (op == NULL) return(NID_undef); 542 if (op == NULL) return(NID_undef);
457 return((*op)->nid); 543 return((*op)->nid);
458 } 544 }
459 545
460static int obj_cmp(ap, bp) 546static int obj_cmp(const void *ap, const void *bp)
461ASN1_OBJECT **ap;
462ASN1_OBJECT **bp;
463 { 547 {
464 int j; 548 int j;
465 ASN1_OBJECT *a= *ap; 549 ASN1_OBJECT *a= *(ASN1_OBJECT **)ap;
466 ASN1_OBJECT *b= *bp; 550 ASN1_OBJECT *b= *(ASN1_OBJECT **)bp;
467 551
468 j=(a->length - b->length); 552 j=(a->length - b->length);
469 if (j) return(j); 553 if (j) return(j);
470 return(memcmp(a->data,b->data,a->length)); 554 return(memcmp(a->data,b->data,a->length));
471 } 555 }
472 556
473char *OBJ_bsearch(key,base,num,size,cmp) 557const char *OBJ_bsearch(const char *key, const char *base, int num, int size,
474char *key; 558 int (*cmp)(const void *, const void *))
475char *base;
476int num;
477int size;
478int (*cmp)();
479 { 559 {
480 int l,h,i,c; 560 int l,h,i,c;
481 char *p; 561 const char *p;
482 562
483 if (num == 0) return(NULL); 563 if (num == 0) return(NULL);
484 l=0; 564 l=0;
@@ -495,14 +575,24 @@ int (*cmp)();
495 else 575 else
496 return(p); 576 return(p);
497 } 577 }
578#ifdef CHARSET_EBCDIC
579/* THIS IS A KLUDGE - Because the *_obj is sorted in ASCII order, and
580 * I don't have perl (yet), we revert to a *LINEAR* search
581 * when the object wasn't found in the binary search.
582 */
583 for (i=0; i<num; ++i) {
584 p= &(base[i*size]);
585 if ((*cmp)(key,p) == 0)
586 return p;
587 }
588#endif
498 return(NULL); 589 return(NULL);
499 } 590 }
500 591
501int OBJ_create_objects(in) 592int OBJ_create_objects(BIO *in)
502BIO *in;
503 { 593 {
504 MS_STATIC char buf[512]; 594 MS_STATIC char buf[512];
505 int i,num= -1; 595 int i,num=0;
506 char *o,*s,*l=NULL; 596 char *o,*s,*l=NULL;
507 597
508 for (;;) 598 for (;;)
@@ -511,26 +601,26 @@ BIO *in;
511 i=BIO_gets(in,buf,512); 601 i=BIO_gets(in,buf,512);
512 if (i <= 0) return(num); 602 if (i <= 0) return(num);
513 buf[i-1]='\0'; 603 buf[i-1]='\0';
514 if (!isalnum(buf[0])) return(num); 604 if (!isalnum((unsigned char)buf[0])) return(num);
515 o=s=buf; 605 o=s=buf;
516 while (isdigit(*s) || (*s == '.')) 606 while (isdigit((unsigned char)*s) || (*s == '.'))
517 s++; 607 s++;
518 if (*s != '\0') 608 if (*s != '\0')
519 { 609 {
520 *(s++)='\0'; 610 *(s++)='\0';
521 while (isspace(*s)) 611 while (isspace((unsigned char)*s))
522 s++; 612 s++;
523 if (*s == '\0') 613 if (*s == '\0')
524 s=NULL; 614 s=NULL;
525 else 615 else
526 { 616 {
527 l=s; 617 l=s;
528 while ((*l != '\0') && !isspace(*l)) 618 while ((*l != '\0') && !isspace((unsigned char)*l))
529 l++; 619 l++;
530 if (*l != '\0') 620 if (*l != '\0')
531 { 621 {
532 *(l++)='\0'; 622 *(l++)='\0';
533 while (isspace(*l)) 623 while (isspace((unsigned char)*l))
534 l++; 624 l++;
535 if (*l == '\0') l=NULL; 625 if (*l == '\0') l=NULL;
536 } 626 }
@@ -544,13 +634,10 @@ BIO *in;
544 if (!OBJ_create(o,s,l)) return(num); 634 if (!OBJ_create(o,s,l)) return(num);
545 num++; 635 num++;
546 } 636 }
547 return(num); 637 /* return(num); */
548 } 638 }
549 639
550int OBJ_create(oid,sn,ln) 640int OBJ_create(const char *oid, const char *sn, const char *ln)
551char *oid;
552char *sn;
553char *ln;
554 { 641 {
555 int ok=0; 642 int ok=0;
556 ASN1_OBJECT *op=NULL; 643 ASN1_OBJECT *op=NULL;
@@ -560,19 +647,21 @@ char *ln;
560 i=a2d_ASN1_OBJECT(NULL,0,oid,-1); 647 i=a2d_ASN1_OBJECT(NULL,0,oid,-1);
561 if (i <= 0) return(0); 648 if (i <= 0) return(0);
562 649
563 if ((buf=(unsigned char *)Malloc(i)) == NULL) 650 if ((buf=(unsigned char *)OPENSSL_malloc(i)) == NULL)
564 { 651 {
565 OBJerr(OBJ_F_OBJ_CREATE,OBJ_R_MALLOC_FAILURE); 652 OBJerr(OBJ_F_OBJ_CREATE,OBJ_R_MALLOC_FAILURE);
566 return(0); 653 return(0);
567 } 654 }
568 i=a2d_ASN1_OBJECT(buf,i,oid,-1); 655 i=a2d_ASN1_OBJECT(buf,i,oid,-1);
656 if (i == 0)
657 goto err;
569 op=(ASN1_OBJECT *)ASN1_OBJECT_create(OBJ_new_nid(1),buf,i,sn,ln); 658 op=(ASN1_OBJECT *)ASN1_OBJECT_create(OBJ_new_nid(1),buf,i,sn,ln);
570 if (op == NULL) 659 if (op == NULL)
571 goto err; 660 goto err;
572 ok=OBJ_add_object(op); 661 ok=OBJ_add_object(op);
573err: 662err:
574 ASN1_OBJECT_free(op); 663 ASN1_OBJECT_free(op);
575 Free((char *)buf); 664 OPENSSL_free(buf);
576 return(ok); 665 return(ok);
577 } 666 }
578 667
diff --git a/src/lib/libcrypto/objects/obj_dat.pl b/src/lib/libcrypto/objects/obj_dat.pl
index 4e7879d3f3..5dfb84ea00 100644
--- a/src/lib/libcrypto/objects/obj_dat.pl
+++ b/src/lib/libcrypto/objects/obj_dat.pl
@@ -1,4 +1,4 @@
1#!/usr/bin/perl 1#!/usr/local/bin/perl
2 2
3sub obj_cmp 3sub obj_cmp
4 { 4 {
@@ -38,15 +38,36 @@ 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;
45 $d=$2; 48 $d=$2;
49 $d =~ s/^\"//;
50 $d =~ s/\"$//;
46 if ($v =~ /^SN_(.*)$/) 51 if ($v =~ /^SN_(.*)$/)
47 { $sn{$1}=$d; } 52 {
53 if(defined $snames{$d})
54 {
55 print "WARNING: Duplicate short name \"$d\"\n";
56 }
57 else
58 { $snames{$d} = "X"; }
59 $sn{$1}=$d;
60 }
48 elsif ($v =~ /^LN_(.*)$/) 61 elsif ($v =~ /^LN_(.*)$/)
49 { $ln{$1}=$d; } 62 {
63 if(defined $lnames{$d})
64 {
65 print "WARNING: Duplicate long name \"$d\"\n";
66 }
67 else
68 { $lnames{$d} = "X"; }
69 $ln{$1}=$d;
70 }
50 elsif ($v =~ /^NID_(.*)$/) 71 elsif ($v =~ /^NID_(.*)$/)
51 { $nid{$d}=$1; } 72 { $nid{$d}=$1; }
52 elsif ($v =~ /^OBJ_(.*)$/) 73 elsif ($v =~ /^OBJ_(.*)$/)
@@ -55,6 +76,7 @@ while (<>)
55 $objd{$v}=$d; 76 $objd{$v}=$d;
56 } 77 }
57 } 78 }
79close IN;
58 80
59%ob=&expand_obj(*objd); 81%ob=&expand_obj(*objd);
60 82
@@ -74,11 +96,20 @@ for ($i=0; $i<$n; $i++)
74 { 96 {
75 $sn=defined($sn{$nid{$i}})?"$sn{$nid{$i}}":"NULL"; 97 $sn=defined($sn{$nid{$i}})?"$sn{$nid{$i}}":"NULL";
76 $ln=defined($ln{$nid{$i}})?"$ln{$nid{$i}}":"NULL"; 98 $ln=defined($ln{$nid{$i}})?"$ln{$nid{$i}}":"NULL";
77 $sn=$ln if ($sn eq "NULL"); 99
78 $ln=$sn if ($ln eq "NULL"); 100 if ($sn eq "NULL") {
101 $sn=$ln;
102 $sn{$nid{$i}} = $ln;
103 }
104
105 if ($ln eq "NULL") {
106 $ln=$sn;
107 $ln{$nid{$i}} = $sn;
108 }
109
79 $out ="{"; 110 $out ="{";
80 $out.=$sn; 111 $out.="\"$sn\"";
81 $out.=",".$ln; 112 $out.=","."\"$ln\"";
82 $out.=",NID_$nid{$i},"; 113 $out.=",NID_$nid{$i},";
83 if (defined($obj{$nid{$i}})) 114 if (defined($obj{$nid{$i}}))
84 { 115 {
@@ -113,13 +144,13 @@ for ($i=0; $i<$n; $i++)
113@a=grep(defined($sn{$nid{$_}}),0 .. $n); 144@a=grep(defined($sn{$nid{$_}}),0 .. $n);
114foreach (sort { $sn{$nid{$a}} cmp $sn{$nid{$b}} } @a) 145foreach (sort { $sn{$nid{$a}} cmp $sn{$nid{$b}} } @a)
115 { 146 {
116 push(@sn,sprintf("&(nid_objs[%2d]),/* $sn{$nid{$_}} */\n",$_)); 147 push(@sn,sprintf("&(nid_objs[%2d]),/* \"$sn{$nid{$_}}\" */\n",$_));
117 } 148 }
118 149
119@a=grep(defined($ln{$nid{$_}}),0 .. $n); 150@a=grep(defined($ln{$nid{$_}}),0 .. $n);
120foreach (sort { $ln{$nid{$a}} cmp $ln{$nid{$b}} } @a) 151foreach (sort { $ln{$nid{$a}} cmp $ln{$nid{$b}} } @a)
121 { 152 {
122 push(@ln,sprintf("&(nid_objs[%2d]),/* $ln{$nid{$_}} */\n",$_)); 153 push(@ln,sprintf("&(nid_objs[%2d]),/* \"$ln{$nid{$_}}\" */\n",$_));
123 } 154 }
124 155
125@a=grep(defined($obj{$nid{$_}}),0 .. $n); 156@a=grep(defined($obj{$nid{$_}}),0 .. $n);
@@ -132,8 +163,14 @@ foreach (sort obj_cmp @a)
132 push(@ob,sprintf("&(nid_objs[%2d]),/* %-32s %s */\n",$_,$m,$v)); 163 push(@ob,sprintf("&(nid_objs[%2d]),/* %-32s %s */\n",$_,$m,$v));
133 } 164 }
134 165
135print <<'EOF'; 166print OUT <<'EOF';
136/* lib/obj/obj_dat.h */ 167/* crypto/objects/obj_dat.h */
168
169/* THIS FILE IS GENERATED FROM objects.h by obj_dat.pl via the
170 * following command:
171 * perl obj_dat.pl obj_mac.h obj_dat.h
172 */
173
137/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) 174/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
138 * All rights reserved. 175 * All rights reserved.
139 * 176 *
@@ -191,23 +228,18 @@ print <<'EOF';
191 * [including the GNU Public Licence.] 228 * [including the GNU Public Licence.]
192 */ 229 */
193 230
194/* THIS FILE IS GENERATED FROM Objects.h by obj_dat.pl via the
195 * following command:
196 * perl obj_dat.pl < objects.h > obj_dat.h
197 */
198
199EOF 231EOF
200 232
201printf "#define NUM_NID %d\n",$n; 233printf OUT "#define NUM_NID %d\n",$n;
202printf "#define NUM_SN %d\n",$#sn+1; 234printf OUT "#define NUM_SN %d\n",$#sn+1;
203printf "#define NUM_LN %d\n",$#ln+1; 235printf OUT "#define NUM_LN %d\n",$#ln+1;
204printf "#define NUM_OBJ %d\n\n",$#ob+1; 236printf OUT "#define NUM_OBJ %d\n\n",$#ob+1;
205 237
206printf "static unsigned char lvalues[%d]={\n",$lvalues+1; 238printf OUT "static unsigned char lvalues[%d]={\n",$lvalues+1;
207print @lvalues; 239print OUT @lvalues;
208print "};\n\n"; 240print OUT "};\n\n";
209 241
210printf "static ASN1_OBJECT nid_objs[NUM_NID]={\n"; 242printf OUT "static ASN1_OBJECT nid_objs[NUM_NID]={\n";
211foreach (@out) 243foreach (@out)
212 { 244 {
213 if (length($_) > 75) 245 if (length($_) > 75)
@@ -218,30 +250,32 @@ foreach (@out)
218 $t=$out.$_.","; 250 $t=$out.$_.",";
219 if (length($t) > 70) 251 if (length($t) > 70)
220 { 252 {
221 print "$out\n"; 253 print OUT "$out\n";
222 $t="\t$_,"; 254 $t="\t$_,";
223 } 255 }
224 $out=$t; 256 $out=$t;
225 } 257 }
226 chop $out; 258 chop $out;
227 print "$out"; 259 print OUT "$out";
228 } 260 }
229 else 261 else
230 { print $_; } 262 { print OUT $_; }
231 } 263 }
232print "};\n\n"; 264print OUT "};\n\n";
265
266printf OUT "static ASN1_OBJECT *sn_objs[NUM_SN]={\n";
267print OUT @sn;
268print OUT "};\n\n";
233 269
234printf "static ASN1_OBJECT *sn_objs[NUM_SN]={\n"; 270printf OUT "static ASN1_OBJECT *ln_objs[NUM_LN]={\n";
235print @sn; 271print OUT @ln;
236print "};\n\n"; 272print OUT "};\n\n";
237 273
238printf "static ASN1_OBJECT *ln_objs[NUM_LN]={\n"; 274printf OUT "static ASN1_OBJECT *obj_objs[NUM_OBJ]={\n";
239print @ln; 275print OUT @ob;
240print "};\n\n"; 276print OUT "};\n\n";
241 277
242printf "static ASN1_OBJECT *obj_objs[NUM_OBJ]={\n"; 278close OUT;
243print @ob;
244print "};\n\n";
245 279
246sub der_it 280sub der_it
247 { 281 {
@@ -252,7 +286,7 @@ sub der_it
252 $ret.=pack("C*",$a[0]*40+$a[1]); 286 $ret.=pack("C*",$a[0]*40+$a[1]);
253 shift @a; 287 shift @a;
254 shift @a; 288 shift @a;
255 while ($_=shift(@a)) 289 foreach (@a)
256 { 290 {
257 @r=(); 291 @r=();
258 $t=0; 292 $t=0;
diff --git a/src/lib/libcrypto/objects/obj_err.c b/src/lib/libcrypto/objects/obj_err.c
index 45206c616c..80ab6855af 100644
--- a/src/lib/libcrypto/objects/obj_err.c
+++ b/src/lib/libcrypto/objects/obj_err.c
@@ -1,66 +1,69 @@
1/* lib/obj/obj_err.c */ 1/* crypto/objects/obj_err.c */
2/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) 2/* ====================================================================
3 * All rights reserved. 3 * Copyright (c) 1999 The OpenSSL Project. All rights reserved.
4 * 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 5 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
25 * are met: 7 * are met:
26 * 1. Redistributions of source code must retain the copyright 8 *
27 * notice, this list of conditions and the following disclaimer. 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
28 * 2. Redistributions in binary form must reproduce the above copyright 12 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the 13 * notice, this list of conditions and the following disclaimer in
30 * documentation and/or other materials provided with the distribution. 14 * the documentation and/or other materials provided with the
31 * 3. All advertising materials mentioning features or use of this software 15 * distribution.
32 * must display the following acknowledgement: 16 *
33 * "This product includes cryptographic software written by 17 * 3. All advertising materials mentioning features or use of this
34 * Eric Young (eay@cryptsoft.com)" 18 * software must display the following acknowledgment:
35 * The word 'cryptographic' can be left out if the rouines from the library 19 * "This product includes software developed by the OpenSSL Project
36 * being used are not cryptographic related :-). 20 * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
37 * 4. If you include any Windows specific code (or a derivative thereof) from 21 *
38 * the apps directory (application code) you must include an acknowledgement: 22 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 23 * endorse or promote products derived from this software without
40 * 24 * prior written permission. For written permission, please contact
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 25 * openssl-core@OpenSSL.org.
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 26 *
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 27 * 5. Products derived from this software may not be called "OpenSSL"
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 28 * nor may "OpenSSL" appear in their names without prior written
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 29 * permission of the OpenSSL Project.
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 30 *
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 31 * 6. Redistributions of any form whatsoever must retain the following
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32 * acknowledgment:
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 33 * "This product includes software developed by the OpenSSL Project
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 34 * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
51 * SUCH DAMAGE. 35 *
52 * 36 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
53 * The licence and distribution terms for any publically available version or 37 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
54 * derivative of this code cannot be changed. i.e. this code cannot simply be 38 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
55 * copied and put under another distribution licence 39 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
56 * [including the GNU Public Licence.] 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 *
57 */ 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
58#include <stdio.h> 61#include <stdio.h>
59#include "err.h" 62#include <openssl/err.h>
60#include "objects.h" 63#include <openssl/objects.h>
61 64
62/* BEGIN ERROR CODES */ 65/* BEGIN ERROR CODES */
63#ifndef NO_ERR 66#ifndef OPENSSL_NO_ERR
64static ERR_STRING_DATA OBJ_str_functs[]= 67static ERR_STRING_DATA OBJ_str_functs[]=
65 { 68 {
66{ERR_PACK(0,OBJ_F_OBJ_CREATE,0), "OBJ_create"}, 69{ERR_PACK(0,OBJ_F_OBJ_CREATE,0), "OBJ_create"},
@@ -68,26 +71,26 @@ static ERR_STRING_DATA OBJ_str_functs[]=
68{ERR_PACK(0,OBJ_F_OBJ_NID2LN,0), "OBJ_nid2ln"}, 71{ERR_PACK(0,OBJ_F_OBJ_NID2LN,0), "OBJ_nid2ln"},
69{ERR_PACK(0,OBJ_F_OBJ_NID2OBJ,0), "OBJ_nid2obj"}, 72{ERR_PACK(0,OBJ_F_OBJ_NID2OBJ,0), "OBJ_nid2obj"},
70{ERR_PACK(0,OBJ_F_OBJ_NID2SN,0), "OBJ_nid2sn"}, 73{ERR_PACK(0,OBJ_F_OBJ_NID2SN,0), "OBJ_nid2sn"},
71{0,NULL}, 74{0,NULL}
72 }; 75 };
73 76
74static ERR_STRING_DATA OBJ_str_reasons[]= 77static ERR_STRING_DATA OBJ_str_reasons[]=
75 { 78 {
76{OBJ_R_MALLOC_FAILURE ,"malloc failure"}, 79{OBJ_R_MALLOC_FAILURE ,"malloc failure"},
77{OBJ_R_UNKNOWN_NID ,"unknown nid"}, 80{OBJ_R_UNKNOWN_NID ,"unknown nid"},
78{0,NULL}, 81{0,NULL}
79 }; 82 };
80 83
81#endif 84#endif
82 85
83void ERR_load_OBJ_strings() 86void ERR_load_OBJ_strings(void)
84 { 87 {
85 static int init=1; 88 static int init=1;
86 89
87 if (init); 90 if (init)
88 {; 91 {
89 init=0; 92 init=0;
90#ifndef NO_ERR 93#ifndef OPENSSL_NO_ERR
91 ERR_load_strings(ERR_LIB_OBJ,OBJ_str_functs); 94 ERR_load_strings(ERR_LIB_OBJ,OBJ_str_functs);
92 ERR_load_strings(ERR_LIB_OBJ,OBJ_str_reasons); 95 ERR_load_strings(ERR_LIB_OBJ,OBJ_str_reasons);
93#endif 96#endif
diff --git a/src/lib/libcrypto/objects/obj_lib.c b/src/lib/libcrypto/objects/obj_lib.c
index 0a9c756197..b0b0f2ff24 100644
--- a/src/lib/libcrypto/objects/obj_lib.c
+++ b/src/lib/libcrypto/objects/obj_lib.c
@@ -58,27 +58,28 @@
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include "cryptlib.h" 60#include "cryptlib.h"
61#include "lhash.h" 61#include <openssl/lhash.h>
62#include "objects.h" 62#include <openssl/objects.h>
63#include "buffer.h" 63#include <openssl/buffer.h>
64 64
65ASN1_OBJECT *OBJ_dup(o) 65ASN1_OBJECT *OBJ_dup(const ASN1_OBJECT *o)
66ASN1_OBJECT *o;
67 { 66 {
68 ASN1_OBJECT *r; 67 ASN1_OBJECT *r;
69 int i; 68 int i;
69 char *ln=NULL;
70 70
71 if (o == NULL) return(NULL); 71 if (o == NULL) return(NULL);
72 if (!(o->flags & ASN1_OBJECT_FLAG_DYNAMIC)) 72 if (!(o->flags & ASN1_OBJECT_FLAG_DYNAMIC))
73 return(o); 73 return((ASN1_OBJECT *)o); /* XXX: ugh! Why? What kind of
74 duplication is this??? */
74 75
75 r=(ASN1_OBJECT *)ASN1_OBJECT_new(); 76 r=ASN1_OBJECT_new();
76 if (r == NULL) 77 if (r == NULL)
77 { 78 {
78 OBJerr(OBJ_F_OBJ_DUP,ERR_R_ASN1_LIB); 79 OBJerr(OBJ_F_OBJ_DUP,ERR_R_ASN1_LIB);
79 return(NULL); 80 return(NULL);
80 } 81 }
81 r->data=(unsigned char *)Malloc(o->length); 82 r->data=OPENSSL_malloc(o->length);
82 if (r->data == NULL) 83 if (r->data == NULL)
83 goto err; 84 goto err;
84 memcpy(r->data,o->data,o->length); 85 memcpy(r->data,o->data,o->length);
@@ -88,35 +89,35 @@ ASN1_OBJECT *o;
88 if (o->ln != NULL) 89 if (o->ln != NULL)
89 { 90 {
90 i=strlen(o->ln)+1; 91 i=strlen(o->ln)+1;
91 r->ln=(char *)Malloc(i); 92 r->ln=ln=OPENSSL_malloc(i);
92 if (r->ln == NULL) goto err; 93 if (r->ln == NULL) goto err;
93 memcpy(r->ln,o->ln,i); 94 memcpy(ln,o->ln,i);
94 } 95 }
95 96
96 if (o->sn != NULL) 97 if (o->sn != NULL)
97 { 98 {
99 char *s;
100
98 i=strlen(o->sn)+1; 101 i=strlen(o->sn)+1;
99 r->sn=(char *)Malloc(i); 102 r->sn=s=OPENSSL_malloc(i);
100 if (r->sn == NULL) goto err; 103 if (r->sn == NULL) goto err;
101 memcpy(r->sn,o->sn,i); 104 memcpy(s,o->sn,i);
102 } 105 }
103 r->flags=o->flags|(ASN1_OBJECT_FLAG_DYNAMIC| 106 r->flags=o->flags|(ASN1_OBJECT_FLAG_DYNAMIC|
104 ASN1_OBJECT_FLAG_DYNAMIC_STRINGS); 107 ASN1_OBJECT_FLAG_DYNAMIC_STRINGS|ASN1_OBJECT_FLAG_DYNAMIC_DATA);
105 return(r); 108 return(r);
106err: 109err:
107 OBJerr(OBJ_F_OBJ_DUP,ERR_R_MALLOC_FAILURE); 110 OBJerr(OBJ_F_OBJ_DUP,ERR_R_MALLOC_FAILURE);
108 if (r != NULL) 111 if (r != NULL)
109 { 112 {
110 if (r->ln != NULL) Free(r->ln); 113 if (ln != NULL) OPENSSL_free(ln);
111 if (r->data != NULL) Free(r->data); 114 if (r->data != NULL) OPENSSL_free(r->data);
112 Free(r); 115 OPENSSL_free(r);
113 } 116 }
114 return(NULL); 117 return(NULL);
115 } 118 }
116 119
117int OBJ_cmp(a,b) 120int OBJ_cmp(const ASN1_OBJECT *a, const ASN1_OBJECT *b)
118ASN1_OBJECT *a;
119ASN1_OBJECT *b;
120 { 121 {
121 int ret; 122 int ret;
122 123
diff --git a/src/lib/libcrypto/objects/obj_mac.num b/src/lib/libcrypto/objects/obj_mac.num
index d73a51370f..02b39062fe 100644
--- a/src/lib/libcrypto/objects/obj_mac.num
+++ b/src/lib/libcrypto/objects/obj_mac.num
@@ -30,8 +30,8 @@ dhKeyAgreement 28
30des_ecb 29 30des_ecb 29
31des_cfb64 30 31des_cfb64 30
32des_cbc 31 32des_cbc 31
33des_ede 32 33des_ede_ecb 32
34des_ede3 33 34des_ede3_ecb 33
35idea_cbc 34 35idea_cbc 34
36idea_cfb64 35 36idea_cfb64 35
37idea_ecb 36 37idea_ecb 36
@@ -390,3 +390,120 @@ Enterprises 389
390dcObject 390 390dcObject 390
391domainComponent 391 391domainComponent 391
392Domain 392 392Domain 392
393joint_iso_ccitt 393
394selected_attribute_types 394
395clearance 395
396md4WithRSAEncryption 396
397ac_proxying 397
398sinfo_access 398
399id_aca_encAttrs 399
400role 400
401policy_constraints 401
402target_information 402
403no_rev_avail 403
404ccitt 404
405ansi_X9_62 405
406X9_62_prime_field 406
407X9_62_characteristic_two_field 407
408X9_62_id_ecPublicKey 408
409X9_62_prime192v1 409
410X9_62_prime192v2 410
411X9_62_prime192v3 411
412X9_62_prime239v1 412
413X9_62_prime239v2 413
414X9_62_prime239v3 414
415X9_62_prime256v1 415
416ecdsa_with_SHA1 416
417ms_csp_name 417
418aes_128_ecb 418
419aes_128_cbc 419
420aes_128_ofb128 420
421aes_128_cfb128 421
422aes_192_ecb 422
423aes_192_cbc 423
424aes_192_ofb128 424
425aes_192_cfb128 425
426aes_256_ecb 426
427aes_256_cbc 427
428aes_256_ofb128 428
429aes_256_cfb128 429
430hold_instruction_code 430
431hold_instruction_none 431
432hold_instruction_call_issuer 432
433hold_instruction_reject 433
434data 434
435pss 435
436ucl 436
437pilot 437
438pilotAttributeType 438
439pilotAttributeSyntax 439
440pilotObjectClass 440
441pilotGroups 441
442iA5StringSyntax 442
443caseIgnoreIA5StringSyntax 443
444pilotObject 444
445pilotPerson 445
446account 446
447document 447
448room 448
449documentSeries 449
450rFC822localPart 450
451dNSDomain 451
452domainRelatedObject 452
453friendlyCountry 453
454simpleSecurityObject 454
455pilotOrganization 455
456pilotDSA 456
457qualityLabelledData 457
458userId 458
459textEncodedORAddress 459
460rfc822Mailbox 460
461info 461
462favouriteDrink 462
463roomNumber 463
464photo 464
465userClass 465
466host 466
467manager 467
468documentIdentifier 468
469documentTitle 469
470documentVersion 470
471documentAuthor 471
472documentLocation 472
473homeTelephoneNumber 473
474secretary 474
475otherMailbox 475
476lastModifiedTime 476
477lastModifiedBy 477
478aRecord 478
479pilotAttributeType27 479
480mXRecord 480
481nSRecord 481
482sOARecord 482
483cNAMERecord 483
484associatedDomain 484
485associatedName 485
486homePostalAddress 486
487personalTitle 487
488mobileTelephoneNumber 488
489pagerTelephoneNumber 489
490friendlyCountryName 490
491organizationalStatus 491
492janetMailbox 492
493mailPreferenceOption 493
494buildingName 494
495dSAQuality 495
496singleLevelQuality 496
497subtreeMinimumQuality 497
498subtreeMaximumQuality 498
499personalSignature 499
500dITRedirect 500
501audio 501
502documentPublisher 502
503x500UniqueIdentifier 503
504mime_mhs 504
505mime_mhs_headings 505
506mime_mhs_bodies 506
507id_hex_partial_message 507
508id_hex_multipart_message 508
509generationQualifier 509
diff --git a/src/lib/libcrypto/objects/objects.h b/src/lib/libcrypto/objects/objects.h
index e1d555b47c..de10532813 100644
--- a/src/lib/libcrypto/objects/objects.h
+++ b/src/lib/libcrypto/objects/objects.h
@@ -59,13 +59,15 @@
59#ifndef HEADER_OBJECTS_H 59#ifndef HEADER_OBJECTS_H
60#define HEADER_OBJECTS_H 60#define HEADER_OBJECTS_H
61 61
62#ifdef __cplusplus 62#define USE_OBJ_MAC
63extern "C" {
64#endif
65 63
64#ifdef USE_OBJ_MAC
65#include <openssl/obj_mac.h>
66#else
66#define SN_undef "UNDEF" 67#define SN_undef "UNDEF"
67#define LN_undef "undefined" 68#define LN_undef "undefined"
68#define NID_undef 0 69#define NID_undef 0
70#define OBJ_undef 0L
69 71
70#define SN_Algorithm "Algorithm" 72#define SN_Algorithm "Algorithm"
71#define LN_algorithm "algorithm" 73#define LN_algorithm "algorithm"
@@ -109,10 +111,12 @@ extern "C" {
109#define NID_md5WithRSAEncryption 8 111#define NID_md5WithRSAEncryption 8
110#define OBJ_md5WithRSAEncryption OBJ_pkcs,1L,4L 112#define OBJ_md5WithRSAEncryption OBJ_pkcs,1L,4L
111 113
114#define SN_pbeWithMD2AndDES_CBC "PBE-MD2-DES"
112#define LN_pbeWithMD2AndDES_CBC "pbeWithMD2AndDES-CBC" 115#define LN_pbeWithMD2AndDES_CBC "pbeWithMD2AndDES-CBC"
113#define NID_pbeWithMD2AndDES_CBC 9 116#define NID_pbeWithMD2AndDES_CBC 9
114#define OBJ_pbeWithMD2AndDES_CBC OBJ_pkcs,5L,1L 117#define OBJ_pbeWithMD2AndDES_CBC OBJ_pkcs,5L,1L
115 118
119#define SN_pbeWithMD5AndDES_CBC "PBE-MD5-DES"
116#define LN_pbeWithMD5AndDES_CBC "pbeWithMD5AndDES-CBC" 120#define LN_pbeWithMD5AndDES_CBC "pbeWithMD5AndDES-CBC"
117#define NID_pbeWithMD5AndDES_CBC 10 121#define NID_pbeWithMD5AndDES_CBC 10
118#define OBJ_pbeWithMD5AndDES_CBC OBJ_pkcs,5L,3L 122#define OBJ_pbeWithMD5AndDES_CBC OBJ_pkcs,5L,3L
@@ -229,6 +233,7 @@ extern "C" {
229#define SN_idea_cbc "IDEA-CBC" 233#define SN_idea_cbc "IDEA-CBC"
230#define LN_idea_cbc "idea-cbc" 234#define LN_idea_cbc "idea-cbc"
231#define NID_idea_cbc 34 235#define NID_idea_cbc 34
236#define OBJ_idea_cbc 1L,3L,6L,1L,4L,1L,188L,7L,1L,1L,2L
232 237
233#define SN_idea_cfb64 "IDEA-CFB" 238#define SN_idea_cfb64 "IDEA-CFB"
234#define LN_idea_cfb64 "idea-cfb" 239#define LN_idea_cfb64 "idea-cfb"
@@ -379,17 +384,21 @@ extern "C" {
379#define OBJ_dsa_2 OBJ_algorithm,12L 384#define OBJ_dsa_2 OBJ_algorithm,12L
380 385
381/* proposed by microsoft to RSA */ 386/* proposed by microsoft to RSA */
387#define SN_pbeWithSHA1AndRC2_CBC "PBE-SHA1-RC2-64"
382#define LN_pbeWithSHA1AndRC2_CBC "pbeWithSHA1AndRC2-CBC" 388#define LN_pbeWithSHA1AndRC2_CBC "pbeWithSHA1AndRC2-CBC"
383#define NID_pbeWithSHA1AndRC2_CBC 68 389#define NID_pbeWithSHA1AndRC2_CBC 68
384#define OBJ_pbeWithSHA1AndRC2_CBC OBJ_pkcs,5L,11L 390#define OBJ_pbeWithSHA1AndRC2_CBC OBJ_pkcs,5L,11L
385 391
386/* proposed by microsoft to RSA */ 392/* proposed by microsoft to RSA as pbeWithSHA1AndRC4: it is now
387#define LN_pbeWithSHA1AndRC4 "pbeWithSHA1AndRC4" 393 * defined explicitly in PKCS#5 v2.0 as id-PBKDF2 which is something
388#define NID_pbeWithSHA1AndRC4 69 394 * completely different.
389#define OBJ_pbeWithSHA1AndRC4 OBJ_pkcs,5L,12L 395 */
396#define LN_id_pbkdf2 "PBKDF2"
397#define NID_id_pbkdf2 69
398#define OBJ_id_pbkdf2 OBJ_pkcs,5L,12L
390 399
391#define SN_dsaWithSHA1_2 "DSA-SHA1-old" 400#define SN_dsaWithSHA1_2 "DSA-SHA1-old"
392#define LN_dsaWithSHA1_2 "dsaWithSHA1" 401#define LN_dsaWithSHA1_2 "dsaWithSHA1-old"
393#define NID_dsaWithSHA1_2 70 402#define NID_dsaWithSHA1_2 70
394/* Got this one from 'sdn706r20.pdf' which is actually an NSA document :-) */ 403/* Got this one from 'sdn706r20.pdf' which is actually an NSA document :-) */
395#define OBJ_dsaWithSHA1_2 OBJ_algorithm,27L 404#define OBJ_dsaWithSHA1_2 OBJ_algorithm,27L
@@ -443,58 +452,59 @@ extern "C" {
443#define LN_desx_cbc "desx-cbc" 452#define LN_desx_cbc "desx-cbc"
444#define NID_desx_cbc 80 453#define NID_desx_cbc 80
445 454
446#define SN_ld_ce "ld-ce" 455#define SN_id_ce "id-ce"
447#define NID_ld_ce 81 456#define NID_id_ce 81
448#define OBJ_ld_ce 2L,5L,29L 457#define OBJ_id_ce 2L,5L,29L
449 458
450#define SN_subject_key_identifier "subjectKeyIdentifier" 459#define SN_subject_key_identifier "subjectKeyIdentifier"
451#define LN_subject_key_identifier "X509v3 Subject Key Identifier" 460#define LN_subject_key_identifier "X509v3 Subject Key Identifier"
452#define NID_subject_key_identifier 82 461#define NID_subject_key_identifier 82
453#define OBJ_subject_key_identifier OBJ_ld_ce,14L 462#define OBJ_subject_key_identifier OBJ_id_ce,14L
454 463
455#define SN_key_usage "keyUsage" 464#define SN_key_usage "keyUsage"
456#define LN_key_usage "X509v3 Key Usage" 465#define LN_key_usage "X509v3 Key Usage"
457#define NID_key_usage 83 466#define NID_key_usage 83
458#define OBJ_key_usage OBJ_ld_ce,15L 467#define OBJ_key_usage OBJ_id_ce,15L
459 468
460#define SN_private_key_usage_period "privateKeyUsagePeriod" 469#define SN_private_key_usage_period "privateKeyUsagePeriod"
461#define LN_private_key_usage_period "X509v3 Private Key Usage Period" 470#define LN_private_key_usage_period "X509v3 Private Key Usage Period"
462#define NID_private_key_usage_period 84 471#define NID_private_key_usage_period 84
463#define OBJ_private_key_usage_period OBJ_ld_ce,16L 472#define OBJ_private_key_usage_period OBJ_id_ce,16L
464 473
465#define SN_subject_alt_name "subjectAltName" 474#define SN_subject_alt_name "subjectAltName"
466#define LN_subject_alt_name "X509v3 Subject Alternative Name" 475#define LN_subject_alt_name "X509v3 Subject Alternative Name"
467#define NID_subject_alt_name 85 476#define NID_subject_alt_name 85
468#define OBJ_subject_alt_name OBJ_ld_ce,17L 477#define OBJ_subject_alt_name OBJ_id_ce,17L
469 478
470#define SN_issuer_alt_name "issuerAltName" 479#define SN_issuer_alt_name "issuerAltName"
471#define LN_issuer_alt_name "X509v3 Issuer Alternative Name" 480#define LN_issuer_alt_name "X509v3 Issuer Alternative Name"
472#define NID_issuer_alt_name 86 481#define NID_issuer_alt_name 86
473#define OBJ_issuer_alt_name OBJ_ld_ce,18L 482#define OBJ_issuer_alt_name OBJ_id_ce,18L
474 483
475#define SN_basic_constraints "basicConstraints" 484#define SN_basic_constraints "basicConstraints"
476#define LN_basic_constraints "X509v3 Basic Constraints" 485#define LN_basic_constraints "X509v3 Basic Constraints"
477#define NID_basic_constraints 87 486#define NID_basic_constraints 87
478#define OBJ_basic_constraints OBJ_ld_ce,19L 487#define OBJ_basic_constraints OBJ_id_ce,19L
479 488
480#define SN_crl_number "crlNumber" 489#define SN_crl_number "crlNumber"
481#define LN_crl_number "X509v3 CRL Number" 490#define LN_crl_number "X509v3 CRL Number"
482#define NID_crl_number 88 491#define NID_crl_number 88
483#define OBJ_crl_number OBJ_ld_ce,20L 492#define OBJ_crl_number OBJ_id_ce,20L
484 493
485#define SN_certificate_policies "certificatePolicies" 494#define SN_certificate_policies "certificatePolicies"
486#define LN_certificate_policies "X509v3 Certificate Policies" 495#define LN_certificate_policies "X509v3 Certificate Policies"
487#define NID_certificate_policies 89 496#define NID_certificate_policies 89
488#define OBJ_certificate_policies OBJ_ld_ce,32L 497#define OBJ_certificate_policies OBJ_id_ce,32L
489 498
490#define SN_authority_key_identifier "authorityKeyIdentifier" 499#define SN_authority_key_identifier "authorityKeyIdentifier"
491#define LN_authority_key_identifier "X509v3 Authority Key Identifier" 500#define LN_authority_key_identifier "X509v3 Authority Key Identifier"
492#define NID_authority_key_identifier 90 501#define NID_authority_key_identifier 90
493#define OBJ_authority_key_identifier OBJ_ld_ce,35L 502#define OBJ_authority_key_identifier OBJ_id_ce,35L
494 503
495#define SN_bf_cbc "BF-CBC" 504#define SN_bf_cbc "BF-CBC"
496#define LN_bf_cbc "bf-cbc" 505#define LN_bf_cbc "bf-cbc"
497#define NID_bf_cbc 91 506#define NID_bf_cbc 91
507#define OBJ_bf_cbc 1L,3L,6L,1L,4L,1L,3029L,1L,2L
498 508
499#define SN_bf_ecb "BF-ECB" 509#define SN_bf_ecb "BF-ECB"
500#define LN_bf_ecb "bf-ecb" 510#define LN_bf_ecb "bf-ecb"
@@ -550,7 +560,7 @@ extern "C" {
550#define SN_crl_distribution_points "crlDistributionPoints" 560#define SN_crl_distribution_points "crlDistributionPoints"
551#define LN_crl_distribution_points "X509v3 CRL Distribution Points" 561#define LN_crl_distribution_points "X509v3 CRL Distribution Points"
552#define NID_crl_distribution_points 103 562#define NID_crl_distribution_points 103
553#define OBJ_crl_distribution_points OBJ_ld_ce,31L 563#define OBJ_crl_distribution_points OBJ_id_ce,31L
554 564
555#define SN_md5WithRSA "RSA-NP-MD5" 565#define SN_md5WithRSA "RSA-NP-MD5"
556#define LN_md5WithRSA "md5WithRSA" 566#define LN_md5WithRSA "md5WithRSA"
@@ -623,7 +633,7 @@ extern "C" {
623#define OBJ_ripemd160 1L,3L,36L,3L,2L,1L 633#define OBJ_ripemd160 1L,3L,36L,3L,2L,1L
624 634
625/* The name should actually be rsaSignatureWithripemd160, but I'm going 635/* The name should actually be rsaSignatureWithripemd160, but I'm going
626 * to contiune using the convention I'm using with the other ciphers */ 636 * to continue using the convention I'm using with the other ciphers */
627#define SN_ripemd160WithRSA "RSA-RIPEMD160" 637#define SN_ripemd160WithRSA "RSA-RIPEMD160"
628#define LN_ripemd160WithRSA "ripemd160WithRSA" 638#define LN_ripemd160WithRSA "ripemd160WithRSA"
629#define NID_ripemd160WithRSA 119 639#define NID_ripemd160WithRSA 119
@@ -654,56 +664,365 @@ extern "C" {
654#define LN_rc5_ofb64 "rc5-ofb" 664#define LN_rc5_ofb64 "rc5-ofb"
655#define NID_rc5_ofb64 123 665#define NID_rc5_ofb64 123
656 666
657#include "bio.h" 667#define SN_rle_compression "RLE"
658#include "asn1.h" 668#define LN_rle_compression "run length compression"
669#define NID_rle_compression 124
670#define OBJ_rle_compression 1L,1L,1L,1L,666L,1L
671
672#define SN_zlib_compression "ZLIB"
673#define LN_zlib_compression "zlib compression"
674#define NID_zlib_compression 125
675#define OBJ_zlib_compression 1L,1L,1L,1L,666L,2L
676
677#define SN_ext_key_usage "extendedKeyUsage"
678#define LN_ext_key_usage "X509v3 Extended Key Usage"
679#define NID_ext_key_usage 126
680#define OBJ_ext_key_usage OBJ_id_ce,37
681
682#define SN_id_pkix "PKIX"
683#define NID_id_pkix 127
684#define OBJ_id_pkix 1L,3L,6L,1L,5L,5L,7L
685
686#define SN_id_kp "id-kp"
687#define NID_id_kp 128
688#define OBJ_id_kp OBJ_id_pkix,3L
689
690/* PKIX extended key usage OIDs */
691
692#define SN_server_auth "serverAuth"
693#define LN_server_auth "TLS Web Server Authentication"
694#define NID_server_auth 129
695#define OBJ_server_auth OBJ_id_kp,1L
696
697#define SN_client_auth "clientAuth"
698#define LN_client_auth "TLS Web Client Authentication"
699#define NID_client_auth 130
700#define OBJ_client_auth OBJ_id_kp,2L
701
702#define SN_code_sign "codeSigning"
703#define LN_code_sign "Code Signing"
704#define NID_code_sign 131
705#define OBJ_code_sign OBJ_id_kp,3L
706
707#define SN_email_protect "emailProtection"
708#define LN_email_protect "E-mail Protection"
709#define NID_email_protect 132
710#define OBJ_email_protect OBJ_id_kp,4L
711
712#define SN_time_stamp "timeStamping"
713#define LN_time_stamp "Time Stamping"
714#define NID_time_stamp 133
715#define OBJ_time_stamp OBJ_id_kp,8L
716
717/* Additional extended key usage OIDs: Microsoft */
718
719#define SN_ms_code_ind "msCodeInd"
720#define LN_ms_code_ind "Microsoft Individual Code Signing"
721#define NID_ms_code_ind 134
722#define OBJ_ms_code_ind 1L,3L,6L,1L,4L,1L,311L,2L,1L,21L
723
724#define SN_ms_code_com "msCodeCom"
725#define LN_ms_code_com "Microsoft Commercial Code Signing"
726#define NID_ms_code_com 135
727#define OBJ_ms_code_com 1L,3L,6L,1L,4L,1L,311L,2L,1L,22L
728
729#define SN_ms_ctl_sign "msCTLSign"
730#define LN_ms_ctl_sign "Microsoft Trust List Signing"
731#define NID_ms_ctl_sign 136
732#define OBJ_ms_ctl_sign 1L,3L,6L,1L,4L,1L,311L,10L,3L,1L
733
734#define SN_ms_sgc "msSGC"
735#define LN_ms_sgc "Microsoft Server Gated Crypto"
736#define NID_ms_sgc 137
737#define OBJ_ms_sgc 1L,3L,6L,1L,4L,1L,311L,10L,3L,3L
738
739#define SN_ms_efs "msEFS"
740#define LN_ms_efs "Microsoft Encrypted File System"
741#define NID_ms_efs 138
742#define OBJ_ms_efs 1L,3L,6L,1L,4L,1L,311L,10L,3L,4L
743
744/* Additional usage: Netscape */
745
746#define SN_ns_sgc "nsSGC"
747#define LN_ns_sgc "Netscape Server Gated Crypto"
748#define NID_ns_sgc 139
749#define OBJ_ns_sgc OBJ_netscape,4L,1L
750
751#define SN_delta_crl "deltaCRL"
752#define LN_delta_crl "X509v3 Delta CRL Indicator"
753#define NID_delta_crl 140
754#define OBJ_delta_crl OBJ_id_ce,27L
755
756#define SN_crl_reason "CRLReason"
757#define LN_crl_reason "CRL Reason Code"
758#define NID_crl_reason 141
759#define OBJ_crl_reason OBJ_id_ce,21L
659 760
660#define OBJ_create_and_add_object(a,b,c) OBJ_create(a,b,c) 761#define SN_invalidity_date "invalidityDate"
762#define LN_invalidity_date "Invalidity Date"
763#define NID_invalidity_date 142
764#define OBJ_invalidity_date OBJ_id_ce,24L
765
766#define SN_sxnet "SXNetID"
767#define LN_sxnet "Strong Extranet ID"
768#define NID_sxnet 143
769#define OBJ_sxnet 1L,3L,101L,1L,4L,1L
770
771/* PKCS12 and related OBJECT IDENTIFIERS */
772
773#define OBJ_pkcs12 OBJ_pkcs,12L
774#define OBJ_pkcs12_pbeids OBJ_pkcs12, 1
661 775
662#ifndef NOPROTO 776#define SN_pbe_WithSHA1And128BitRC4 "PBE-SHA1-RC4-128"
777#define LN_pbe_WithSHA1And128BitRC4 "pbeWithSHA1And128BitRC4"
778#define NID_pbe_WithSHA1And128BitRC4 144
779#define OBJ_pbe_WithSHA1And128BitRC4 OBJ_pkcs12_pbeids, 1L
663 780
664ASN1_OBJECT * OBJ_dup(ASN1_OBJECT *o); 781#define SN_pbe_WithSHA1And40BitRC4 "PBE-SHA1-RC4-40"
665ASN1_OBJECT * OBJ_nid2obj(int n); 782#define LN_pbe_WithSHA1And40BitRC4 "pbeWithSHA1And40BitRC4"
666char * OBJ_nid2ln(int n); 783#define NID_pbe_WithSHA1And40BitRC4 145
667char * OBJ_nid2sn(int n); 784#define OBJ_pbe_WithSHA1And40BitRC4 OBJ_pkcs12_pbeids, 2L
668int OBJ_obj2nid(ASN1_OBJECT *o);
669int OBJ_txt2nid(char *s);
670int OBJ_ln2nid(char *s);
671int OBJ_sn2nid(char *s);
672int OBJ_cmp(ASN1_OBJECT *a,ASN1_OBJECT *b);
673char * OBJ_bsearch(char *key,char *base,int num,int size,int (*cmp)());
674 785
675void ERR_load_OBJ_strings(void ); 786#define SN_pbe_WithSHA1And3_Key_TripleDES_CBC "PBE-SHA1-3DES"
787#define LN_pbe_WithSHA1And3_Key_TripleDES_CBC "pbeWithSHA1And3-KeyTripleDES-CBC"
788#define NID_pbe_WithSHA1And3_Key_TripleDES_CBC 146
789#define OBJ_pbe_WithSHA1And3_Key_TripleDES_CBC OBJ_pkcs12_pbeids, 3L
790
791#define SN_pbe_WithSHA1And2_Key_TripleDES_CBC "PBE-SHA1-2DES"
792#define LN_pbe_WithSHA1And2_Key_TripleDES_CBC "pbeWithSHA1And2-KeyTripleDES-CBC"
793#define NID_pbe_WithSHA1And2_Key_TripleDES_CBC 147
794#define OBJ_pbe_WithSHA1And2_Key_TripleDES_CBC OBJ_pkcs12_pbeids, 4L
795
796#define SN_pbe_WithSHA1And128BitRC2_CBC "PBE-SHA1-RC2-128"
797#define LN_pbe_WithSHA1And128BitRC2_CBC "pbeWithSHA1And128BitRC2-CBC"
798#define NID_pbe_WithSHA1And128BitRC2_CBC 148
799#define OBJ_pbe_WithSHA1And128BitRC2_CBC OBJ_pkcs12_pbeids, 5L
800
801#define SN_pbe_WithSHA1And40BitRC2_CBC "PBE-SHA1-RC2-40"
802#define LN_pbe_WithSHA1And40BitRC2_CBC "pbeWithSHA1And40BitRC2-CBC"
803#define NID_pbe_WithSHA1And40BitRC2_CBC 149
804#define OBJ_pbe_WithSHA1And40BitRC2_CBC OBJ_pkcs12_pbeids, 6L
805
806#define OBJ_pkcs12_Version1 OBJ_pkcs12, 10L
807
808#define OBJ_pkcs12_BagIds OBJ_pkcs12_Version1, 1L
676 809
677int OBJ_new_nid(int num); 810#define LN_keyBag "keyBag"
678int OBJ_add_object(ASN1_OBJECT *obj); 811#define NID_keyBag 150
679int OBJ_create(char *oid,char *sn,char *ln); 812#define OBJ_keyBag OBJ_pkcs12_BagIds, 1L
680void OBJ_cleanup(void ); 813
681int OBJ_create_objects(BIO *in); 814#define LN_pkcs8ShroudedKeyBag "pkcs8ShroudedKeyBag"
815#define NID_pkcs8ShroudedKeyBag 151
816#define OBJ_pkcs8ShroudedKeyBag OBJ_pkcs12_BagIds, 2L
817
818#define LN_certBag "certBag"
819#define NID_certBag 152
820#define OBJ_certBag OBJ_pkcs12_BagIds, 3L
821
822#define LN_crlBag "crlBag"
823#define NID_crlBag 153
824#define OBJ_crlBag OBJ_pkcs12_BagIds, 4L
825
826#define LN_secretBag "secretBag"
827#define NID_secretBag 154
828#define OBJ_secretBag OBJ_pkcs12_BagIds, 5L
829
830#define LN_safeContentsBag "safeContentsBag"
831#define NID_safeContentsBag 155
832#define OBJ_safeContentsBag OBJ_pkcs12_BagIds, 6L
682 833
683#else 834#define LN_friendlyName "friendlyName"
835#define NID_friendlyName 156
836#define OBJ_friendlyName OBJ_pkcs9, 20L
837
838#define LN_localKeyID "localKeyID"
839#define NID_localKeyID 157
840#define OBJ_localKeyID OBJ_pkcs9, 21L
841
842#define OBJ_certTypes OBJ_pkcs9, 22L
843
844#define LN_x509Certificate "x509Certificate"
845#define NID_x509Certificate 158
846#define OBJ_x509Certificate OBJ_certTypes, 1L
847
848#define LN_sdsiCertificate "sdsiCertificate"
849#define NID_sdsiCertificate 159
850#define OBJ_sdsiCertificate OBJ_certTypes, 2L
851
852#define OBJ_crlTypes OBJ_pkcs9, 23L
853
854#define LN_x509Crl "x509Crl"
855#define NID_x509Crl 160
856#define OBJ_x509Crl OBJ_crlTypes, 1L
857
858/* PKCS#5 v2 OIDs */
859
860#define LN_pbes2 "PBES2"
861#define NID_pbes2 161
862#define OBJ_pbes2 OBJ_pkcs,5L,13L
863
864#define LN_pbmac1 "PBMAC1"
865#define NID_pbmac1 162
866#define OBJ_pbmac1 OBJ_pkcs,5L,14L
867
868#define LN_hmacWithSHA1 "hmacWithSHA1"
869#define NID_hmacWithSHA1 163
870#define OBJ_hmacWithSHA1 OBJ_rsadsi,2L,7L
871
872/* Policy Qualifier Ids */
873
874#define LN_id_qt_cps "Policy Qualifier CPS"
875#define SN_id_qt_cps "id-qt-cps"
876#define NID_id_qt_cps 164
877#define OBJ_id_qt_cps OBJ_id_pkix,2L,1L
878
879#define LN_id_qt_unotice "Policy Qualifier User Notice"
880#define SN_id_qt_unotice "id-qt-unotice"
881#define NID_id_qt_unotice 165
882#define OBJ_id_qt_unotice OBJ_id_pkix,2L,2L
883
884#define SN_rc2_64_cbc "RC2-64-CBC"
885#define LN_rc2_64_cbc "rc2-64-cbc"
886#define NID_rc2_64_cbc 166
887
888#define SN_SMIMECapabilities "SMIME-CAPS"
889#define LN_SMIMECapabilities "S/MIME Capabilities"
890#define NID_SMIMECapabilities 167
891#define OBJ_SMIMECapabilities OBJ_pkcs9,15L
892
893#define SN_pbeWithMD2AndRC2_CBC "PBE-MD2-RC2-64"
894#define LN_pbeWithMD2AndRC2_CBC "pbeWithMD2AndRC2-CBC"
895#define NID_pbeWithMD2AndRC2_CBC 168
896#define OBJ_pbeWithMD2AndRC2_CBC OBJ_pkcs,5L,4L
897
898#define SN_pbeWithMD5AndRC2_CBC "PBE-MD5-RC2-64"
899#define LN_pbeWithMD5AndRC2_CBC "pbeWithMD5AndRC2-CBC"
900#define NID_pbeWithMD5AndRC2_CBC 169
901#define OBJ_pbeWithMD5AndRC2_CBC OBJ_pkcs,5L,6L
902
903#define SN_pbeWithSHA1AndDES_CBC "PBE-SHA1-DES"
904#define LN_pbeWithSHA1AndDES_CBC "pbeWithSHA1AndDES-CBC"
905#define NID_pbeWithSHA1AndDES_CBC 170
906#define OBJ_pbeWithSHA1AndDES_CBC OBJ_pkcs,5L,10L
907
908/* Extension request OIDs */
909
910#define LN_ms_ext_req "Microsoft Extension Request"
911#define SN_ms_ext_req "msExtReq"
912#define NID_ms_ext_req 171
913#define OBJ_ms_ext_req 1L,3L,6L,1L,4L,1L,311L,2L,1L,14L
684 914
685ASN1_OBJECT * OBJ_dup(); 915#define LN_ext_req "Extension Request"
686ASN1_OBJECT * OBJ_nid2obj(); 916#define SN_ext_req "extReq"
687char * OBJ_nid2ln(); 917#define NID_ext_req 172
688char * OBJ_nid2sn(); 918#define OBJ_ext_req OBJ_pkcs9,14L
689int OBJ_obj2nid();
690int OBJ_txt2nid();
691int OBJ_ln2nid();
692int OBJ_sn2nid();
693int OBJ_cmp();
694char * OBJ_bsearch();
695
696void ERR_load_OBJ_strings();
697
698int OBJ_new_nid();
699int OBJ_add_object();
700int OBJ_create();
701void OBJ_cleanup();
702int OBJ_create_objects();
703 919
920#define SN_name "name"
921#define LN_name "name"
922#define NID_name 173
923#define OBJ_name OBJ_X509,41L
924
925#define SN_dnQualifier "dnQualifier"
926#define LN_dnQualifier "dnQualifier"
927#define NID_dnQualifier 174
928#define OBJ_dnQualifier OBJ_X509,46L
929
930#define SN_id_pe "id-pe"
931#define NID_id_pe 175
932#define OBJ_id_pe OBJ_id_pkix,1L
933
934#define SN_id_ad "id-ad"
935#define NID_id_ad 176
936#define OBJ_id_ad OBJ_id_pkix,48L
937
938#define SN_info_access "authorityInfoAccess"
939#define LN_info_access "Authority Information Access"
940#define NID_info_access 177
941#define OBJ_info_access OBJ_id_pe,1L
942
943#define SN_ad_OCSP "OCSP"
944#define LN_ad_OCSP "OCSP"
945#define NID_ad_OCSP 178
946#define OBJ_ad_OCSP OBJ_id_ad,1L
947
948#define SN_ad_ca_issuers "caIssuers"
949#define LN_ad_ca_issuers "CA Issuers"
950#define NID_ad_ca_issuers 179
951#define OBJ_ad_ca_issuers OBJ_id_ad,2L
952
953#define SN_OCSP_sign "OCSPSigning"
954#define LN_OCSP_sign "OCSP Signing"
955#define NID_OCSP_sign 180
956#define OBJ_OCSP_sign OBJ_id_kp,9L
957#endif /* USE_OBJ_MAC */
958
959#include <openssl/bio.h>
960#include <openssl/asn1.h>
961
962#define OBJ_NAME_TYPE_UNDEF 0x00
963#define OBJ_NAME_TYPE_MD_METH 0x01
964#define OBJ_NAME_TYPE_CIPHER_METH 0x02
965#define OBJ_NAME_TYPE_PKEY_METH 0x03
966#define OBJ_NAME_TYPE_COMP_METH 0x04
967#define OBJ_NAME_TYPE_NUM 0x05
968
969#define OBJ_NAME_ALIAS 0x8000
970
971
972#ifdef __cplusplus
973extern "C" {
704#endif 974#endif
705 975
976typedef struct obj_name_st
977 {
978 int type;
979 int alias;
980 const char *name;
981 const char *data;
982 } OBJ_NAME;
983
984#define OBJ_create_and_add_object(a,b,c) OBJ_create(a,b,c)
985
986
987int OBJ_NAME_init(void);
988int OBJ_NAME_new_index(unsigned long (*hash_func)(const char *),
989 int (*cmp_func)(const char *, const char *),
990 void (*free_func)(const char *, int, const char *));
991const char *OBJ_NAME_get(const char *name,int type);
992int OBJ_NAME_add(const char *name,int type,const char *data);
993int OBJ_NAME_remove(const char *name,int type);
994void OBJ_NAME_cleanup(int type); /* -1 for everything */
995void OBJ_NAME_do_all(int type,void (*fn)(const OBJ_NAME *,void *arg),
996 void *arg);
997void OBJ_NAME_do_all_sorted(int type,void (*fn)(const OBJ_NAME *,void *arg),
998 void *arg);
999
1000ASN1_OBJECT * OBJ_dup(const ASN1_OBJECT *o);
1001ASN1_OBJECT * OBJ_nid2obj(int n);
1002const char * OBJ_nid2ln(int n);
1003const char * OBJ_nid2sn(int n);
1004int OBJ_obj2nid(const ASN1_OBJECT *o);
1005ASN1_OBJECT * OBJ_txt2obj(const char *s, int no_name);
1006int OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name);
1007int OBJ_txt2nid(const char *s);
1008int OBJ_ln2nid(const char *s);
1009int OBJ_sn2nid(const char *s);
1010int OBJ_cmp(const ASN1_OBJECT *a,const ASN1_OBJECT *b);
1011const char * OBJ_bsearch(const char *key,const char *base,int num,int size,
1012 int (*cmp)(const void *, const void *));
1013
1014int OBJ_new_nid(int num);
1015int OBJ_add_object(const ASN1_OBJECT *obj);
1016int OBJ_create(const char *oid,const char *sn,const char *ln);
1017void OBJ_cleanup(void );
1018int OBJ_create_objects(BIO *in);
1019
706/* BEGIN ERROR CODES */ 1020/* BEGIN ERROR CODES */
1021/* The following lines are auto generated by the script mkerr.pl. Any changes
1022 * made after this point may be overwritten when the script is next run.
1023 */
1024void ERR_load_OBJ_strings(void);
1025
707/* Error codes for the OBJ functions. */ 1026/* Error codes for the OBJ functions. */
708 1027
709/* Function codes. */ 1028/* Function codes. */
@@ -716,9 +1035,8 @@ int OBJ_create_objects();
716/* Reason codes. */ 1035/* Reason codes. */
717#define OBJ_R_MALLOC_FAILURE 100 1036#define OBJ_R_MALLOC_FAILURE 100
718#define OBJ_R_UNKNOWN_NID 101 1037#define OBJ_R_UNKNOWN_NID 101
719 1038
720#ifdef __cplusplus 1039#ifdef __cplusplus
721} 1040}
722#endif 1041#endif
723#endif 1042#endif
724
diff --git a/src/lib/libcrypto/objects/objects.pl b/src/lib/libcrypto/objects/objects.pl
index c956bbb841..76c06cc8f9 100644
--- a/src/lib/libcrypto/objects/objects.pl
+++ b/src/lib/libcrypto/objects/objects.pl
@@ -9,7 +9,9 @@ while(<NUMIN>)
9 $o++; 9 $o++;
10 s/#.*$//; 10 s/#.*$//;
11 next if /^\s*$/; 11 next if /^\s*$/;
12 $_ = 'X'.$_;
12 ($Cname,$mynum) = split; 13 ($Cname,$mynum) = split;
14 $Cname =~ s/^X//;
13 if (defined($nidn{$mynum})) 15 if (defined($nidn{$mynum}))
14 { die "$ARGV[1]:$o:There's already an object with NID ",$mynum," on line ",$order{$mynum},"\n"; } 16 { die "$ARGV[1]:$o:There's already an object with NID ",$mynum," on line ",$order{$mynum},"\n"; }
15 $nid{$Cname} = $mynum; 17 $nid{$Cname} = $mynum;
@@ -114,7 +116,13 @@ close NUMOUT;
114 116
115open (OUT,">$ARGV[2]") || die "Can't open output file $ARGV[2]"; 117open (OUT,">$ARGV[2]") || die "Can't open output file $ARGV[2]";
116print OUT <<'EOF'; 118print OUT <<'EOF';
117/* lib/obj/obj_mac.h */ 119/* crypto/objects/obj_mac.h */
120
121/* THIS FILE IS GENERATED FROM objects.txt by objects.pl via the
122 * following command:
123 * perl objects.pl objects.txt obj_mac.num obj_mac.h
124 */
125
118/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) 126/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
119 * All rights reserved. 127 * All rights reserved.
120 * 128 *
@@ -172,11 +180,6 @@ print OUT <<'EOF';
172 * [including the GNU Public Licence.] 180 * [including the GNU Public Licence.]
173 */ 181 */
174 182
175/* THIS FILE IS GENERATED FROM objects.txt by objects.pl via the
176 * following command:
177 * perl objects.pl objects.txt obj_mac.num obj_mac.h
178 */
179
180#define SN_undef "UNDEF" 183#define SN_undef "UNDEF"
181#define LN_undef "undefined" 184#define LN_undef "undefined"
182#define NID_undef 0 185#define NID_undef 0
@@ -207,6 +210,8 @@ sub process_oid
207 if (!($a[0] =~ /^[0-9]+$/)) 210 if (!($a[0] =~ /^[0-9]+$/))
208 { 211 {
209 $a[0] =~ s/-/_/g; 212 $a[0] =~ s/-/_/g;
213 if (!defined($obj{$a[0]}))
214 { die "$ARGV[0]:$o:Undefined identifier ",$a[0],"\n"; }
210 $pref_oid = "OBJ_" . $a[0]; 215 $pref_oid = "OBJ_" . $a[0];
211 $pref_sep = ","; 216 $pref_sep = ",";
212 shift @a; 217 shift @a;
diff --git a/src/lib/libcrypto/objects/objects.txt b/src/lib/libcrypto/objects/objects.txt
index cb276e90e9..65d0b15629 100644
--- a/src/lib/libcrypto/objects/objects.txt
+++ b/src/lib/libcrypto/objects/objects.txt
@@ -1,40 +1,764 @@
11 2 : ISO member bodies 10 : CCITT : ccitt
21 2 840 : US (ANSI) 2
31 2 840 113549 : rsadsi : RSA Data Security, Inc. 31 : ISO : iso
41 2 840 113549 1 : pkcs : RSA Data Security, Inc. PKCS 4
51 2 840 113549 1 1 1 : rsaEncryption 52 : JOINT-ISO-CCITT : joint-iso-ccitt
61 2 840 113549 1 1 2 : md2withRSAEncryption 6
71 2 840 113549 1 1 4 : md5withRSAEncryption 7iso 2 : member-body : ISO Member Body
81 2 840 113549 1 7 : pkcs-7 8
91 2 840 113549 1 7 1 : pkcs-7-data 9joint-iso-ccitt 5 1 5 : selected-attribute-types : Selected Attribute Types
101 2 840 113549 1 7 2 : pkcs-7-signedData 10
111 2 840 113549 1 7 3 : pkcs-7-envelopedData 11selected-attribute-types 55 : clearance
121 2 840 113549 1 7 4 : pkcs-7-signedAndEnvelopedData 12
131 2 840 113549 1 7 5 : pkcs-7-digestData 13member-body 840 : ISO-US : ISO US Member Body
141 2 840 113549 1 7 6 : pkcs-7-encryptedData 14ISO-US 10040 : X9-57 : X9.57
151 2 840 113549 2 2 : md2 15X9-57 4 : X9cm : X9.57 CM ?
161 2 840 113549 2 4 : md4 16
171 2 840 113549 2 5 : md5 17!Cname dsa
181 2 840 113549 3 4 : rc4 18X9cm 1 : DSA : dsaEncryption
191 2 840 113549 5 1 : pbeWithMD2AndDES_CBC 19X9cm 3 : DSA-SHA1 : dsaWithSHA1
201 2 840 113549 5 3 : pbeWithMD5AndDES_CBC 20
212 5 : X500 : directory services (X.500) 21
222 5 4 : X509 22ISO-US 10045 : ansi-X9-62 : ANSI X9.62
232 5 4 3 : commonName 23!module X9-62
242 5 4 6 : countryName 24!Alias id-fieldType ansi-X9-62 1
252 5 4 7 : localityName 25X9-62_id-fieldType 1 : prime-field
262 5 4 8 : stateOrProvinceName 26X9-62_id-fieldType 2 : characteristic-two-field
272 5 4 10 : organizationName 27# ... characteristic-two-field OID subtree
282 5 4 11 : organizationalUnitName 28!Alias id-publicKeyType ansi-X9-62 2
292 5 8 : directory services - algorithms 29X9-62_id-publicKeyType 1 : id-ecPublicKey
302 5 8 1 1 : rsa 30!Alias ellipticCurve ansi-X9-62 3
31 31!Alias c-TwoCurve X9-62_ellipticCurve 0
32algorithm 18 : sha 32# ... characteristic 2 curve OIDs
33encryptionAlgorithm 1 : rsa 33!Alias primeCurve X9-62_ellipticCurve 1
34X9-62_primeCurve 1 : prime192v1
35X9-62_primeCurve 2 : prime192v2
36X9-62_primeCurve 3 : prime192v3
37X9-62_primeCurve 4 : prime239v1
38X9-62_primeCurve 5 : prime239v2
39X9-62_primeCurve 6 : prime239v3
40X9-62_primeCurve 7 : prime256v1
41!Alias id-ecSigType ansi-X9-62 4
42!global
43X9-62_id-ecSigType 1 : ecdsa-with-SHA1
44
45
46
47ISO-US 113533 7 66 10 : CAST5-CBC : cast5-cbc
48 : CAST5-ECB : cast5-ecb
49!Cname cast5-cfb64
50 : CAST5-CFB : cast5-cfb
51!Cname cast5-ofb64
52 : CAST5-OFB : cast5-ofb
53!Cname pbeWithMD5AndCast5-CBC
54ISO-US 113533 7 66 12 : : pbeWithMD5AndCast5CBC
55
56ISO-US 113549 : rsadsi : RSA Data Security, Inc.
57
58rsadsi 1 : pkcs : RSA Data Security, Inc. PKCS
59
60pkcs 1 : pkcs1
61pkcs1 1 : : rsaEncryption
62pkcs1 2 : RSA-MD2 : md2WithRSAEncryption
63pkcs1 3 : RSA-MD4 : md4WithRSAEncryption
64pkcs1 4 : RSA-MD5 : md5WithRSAEncryption
65pkcs1 5 : RSA-SHA1 : sha1WithRSAEncryption
66
67pkcs 3 : pkcs3
68pkcs3 1 : : dhKeyAgreement
69
70pkcs 5 : pkcs5
71pkcs5 1 : PBE-MD2-DES : pbeWithMD2AndDES-CBC
72pkcs5 3 : PBE-MD5-DES : pbeWithMD5AndDES-CBC
73pkcs5 4 : PBE-MD2-RC2-64 : pbeWithMD2AndRC2-CBC
74pkcs5 6 : PBE-MD5-RC2-64 : pbeWithMD5AndRC2-CBC
75pkcs5 10 : PBE-SHA1-DES : pbeWithSHA1AndDES-CBC
76pkcs5 11 : PBE-SHA1-RC2-64 : pbeWithSHA1AndRC2-CBC
77!Cname id_pbkdf2
78pkcs5 12 : : PBKDF2
79!Cname pbes2
80pkcs5 13 : : PBES2
81!Cname pbmac1
82pkcs5 14 : : PBMAC1
83
84pkcs 7 : pkcs7
85pkcs7 1 : : pkcs7-data
86!Cname pkcs7-signed
87pkcs7 2 : : pkcs7-signedData
88!Cname pkcs7-enveloped
89pkcs7 3 : : pkcs7-envelopedData
90!Cname pkcs7-signedAndEnveloped
91pkcs7 4 : : pkcs7-signedAndEnvelopedData
92!Cname pkcs7-digest
93pkcs7 5 : : pkcs7-digestData
94!Cname pkcs7-encrypted
95pkcs7 6 : : pkcs7-encryptedData
96
97pkcs 9 : pkcs9
98!module pkcs9
99pkcs9 1 : : emailAddress
100pkcs9 2 : : unstructuredName
101pkcs9 3 : : contentType
102pkcs9 4 : : messageDigest
103pkcs9 5 : : signingTime
104pkcs9 6 : : countersignature
105pkcs9 7 : : challengePassword
106pkcs9 8 : : unstructuredAddress
107!Cname extCertAttributes
108pkcs9 9 : : extendedCertificateAttributes
109!global
110
111!Cname ext-req
112pkcs9 14 : extReq : Extension Request
113
114!Cname SMIMECapabilities
115pkcs9 15 : SMIME-CAPS : S/MIME Capabilities
116
117# S/MIME
118!Cname SMIME
119pkcs9 16 : SMIME : S/MIME
120SMIME 0 : id-smime-mod
121SMIME 1 : id-smime-ct
122SMIME 2 : id-smime-aa
123SMIME 3 : id-smime-alg
124SMIME 4 : id-smime-cd
125SMIME 5 : id-smime-spq
126SMIME 6 : id-smime-cti
127
128# S/MIME Modules
129id-smime-mod 1 : id-smime-mod-cms
130id-smime-mod 2 : id-smime-mod-ess
131id-smime-mod 3 : id-smime-mod-oid
132id-smime-mod 4 : id-smime-mod-msg-v3
133id-smime-mod 5 : id-smime-mod-ets-eSignature-88
134id-smime-mod 6 : id-smime-mod-ets-eSignature-97
135id-smime-mod 7 : id-smime-mod-ets-eSigPolicy-88
136id-smime-mod 8 : id-smime-mod-ets-eSigPolicy-97
137
138# S/MIME Content Types
139id-smime-ct 1 : id-smime-ct-receipt
140id-smime-ct 2 : id-smime-ct-authData
141id-smime-ct 3 : id-smime-ct-publishCert
142id-smime-ct 4 : id-smime-ct-TSTInfo
143id-smime-ct 5 : id-smime-ct-TDTInfo
144id-smime-ct 6 : id-smime-ct-contentInfo
145id-smime-ct 7 : id-smime-ct-DVCSRequestData
146id-smime-ct 8 : id-smime-ct-DVCSResponseData
147
148# S/MIME Attributes
149id-smime-aa 1 : id-smime-aa-receiptRequest
150id-smime-aa 2 : id-smime-aa-securityLabel
151id-smime-aa 3 : id-smime-aa-mlExpandHistory
152id-smime-aa 4 : id-smime-aa-contentHint
153id-smime-aa 5 : id-smime-aa-msgSigDigest
154# obsolete
155id-smime-aa 6 : id-smime-aa-encapContentType
156id-smime-aa 7 : id-smime-aa-contentIdentifier
157# obsolete
158id-smime-aa 8 : id-smime-aa-macValue
159id-smime-aa 9 : id-smime-aa-equivalentLabels
160id-smime-aa 10 : id-smime-aa-contentReference
161id-smime-aa 11 : id-smime-aa-encrypKeyPref
162id-smime-aa 12 : id-smime-aa-signingCertificate
163id-smime-aa 13 : id-smime-aa-smimeEncryptCerts
164id-smime-aa 14 : id-smime-aa-timeStampToken
165id-smime-aa 15 : id-smime-aa-ets-sigPolicyId
166id-smime-aa 16 : id-smime-aa-ets-commitmentType
167id-smime-aa 17 : id-smime-aa-ets-signerLocation
168id-smime-aa 18 : id-smime-aa-ets-signerAttr
169id-smime-aa 19 : id-smime-aa-ets-otherSigCert
170id-smime-aa 20 : id-smime-aa-ets-contentTimestamp
171id-smime-aa 21 : id-smime-aa-ets-CertificateRefs
172id-smime-aa 22 : id-smime-aa-ets-RevocationRefs
173id-smime-aa 23 : id-smime-aa-ets-certValues
174id-smime-aa 24 : id-smime-aa-ets-revocationValues
175id-smime-aa 25 : id-smime-aa-ets-escTimeStamp
176id-smime-aa 26 : id-smime-aa-ets-certCRLTimestamp
177id-smime-aa 27 : id-smime-aa-ets-archiveTimeStamp
178id-smime-aa 28 : id-smime-aa-signatureType
179id-smime-aa 29 : id-smime-aa-dvcs-dvc
180
181# S/MIME Algorithm Identifiers
182# obsolete
183id-smime-alg 1 : id-smime-alg-ESDHwith3DES
184# obsolete
185id-smime-alg 2 : id-smime-alg-ESDHwithRC2
186# obsolete
187id-smime-alg 3 : id-smime-alg-3DESwrap
188# obsolete
189id-smime-alg 4 : id-smime-alg-RC2wrap
190id-smime-alg 5 : id-smime-alg-ESDH
191id-smime-alg 6 : id-smime-alg-CMS3DESwrap
192id-smime-alg 7 : id-smime-alg-CMSRC2wrap
193
194# S/MIME Certificate Distribution
195id-smime-cd 1 : id-smime-cd-ldap
196
197# S/MIME Signature Policy Qualifier
198id-smime-spq 1 : id-smime-spq-ets-sqt-uri
199id-smime-spq 2 : id-smime-spq-ets-sqt-unotice
200
201# S/MIME Commitment Type Identifier
202id-smime-cti 1 : id-smime-cti-ets-proofOfOrigin
203id-smime-cti 2 : id-smime-cti-ets-proofOfReceipt
204id-smime-cti 3 : id-smime-cti-ets-proofOfDelivery
205id-smime-cti 4 : id-smime-cti-ets-proofOfSender
206id-smime-cti 5 : id-smime-cti-ets-proofOfApproval
207id-smime-cti 6 : id-smime-cti-ets-proofOfCreation
208
209pkcs9 20 : : friendlyName
210pkcs9 21 : : localKeyID
211!Cname ms-csp-name
2121 3 6 1 4 1 311 17 1 : CSPName : Microsoft CSP Name
213!Alias certTypes pkcs9 22
214certTypes 1 : : x509Certificate
215certTypes 2 : : sdsiCertificate
216!Alias crlTypes pkcs9 23
217crlTypes 1 : : x509Crl
218
219!Alias pkcs12 pkcs 12
220!Alias pkcs12-pbeids pkcs12 1
221
222!Cname pbe-WithSHA1And128BitRC4
223pkcs12-pbeids 1 : PBE-SHA1-RC4-128 : pbeWithSHA1And128BitRC4
224!Cname pbe-WithSHA1And40BitRC4
225pkcs12-pbeids 2 : PBE-SHA1-RC4-40 : pbeWithSHA1And40BitRC4
226!Cname pbe-WithSHA1And3_Key_TripleDES-CBC
227pkcs12-pbeids 3 : PBE-SHA1-3DES : pbeWithSHA1And3-KeyTripleDES-CBC
228!Cname pbe-WithSHA1And2_Key_TripleDES-CBC
229pkcs12-pbeids 4 : PBE-SHA1-2DES : pbeWithSHA1And2-KeyTripleDES-CBC
230!Cname pbe-WithSHA1And128BitRC2-CBC
231pkcs12-pbeids 5 : PBE-SHA1-RC2-128 : pbeWithSHA1And128BitRC2-CBC
232!Cname pbe-WithSHA1And40BitRC2-CBC
233pkcs12-pbeids 6 : PBE-SHA1-RC2-40 : pbeWithSHA1And40BitRC2-CBC
234
235!Alias pkcs12-Version1 pkcs12 10
236!Alias pkcs12-BagIds pkcs12-Version1 1
237pkcs12-BagIds 1 : : keyBag
238pkcs12-BagIds 2 : : pkcs8ShroudedKeyBag
239pkcs12-BagIds 3 : : certBag
240pkcs12-BagIds 4 : : crlBag
241pkcs12-BagIds 5 : : secretBag
242pkcs12-BagIds 6 : : safeContentsBag
243
244rsadsi 2 2 : MD2 : md2
245rsadsi 2 4 : MD4 : md4
246rsadsi 2 5 : MD5 : md5
247 : MD5-SHA1 : md5-sha1
248rsadsi 2 7 : : hmacWithSHA1
249rsadsi 3 2 : RC2-CBC : rc2-cbc
250 : RC2-ECB : rc2-ecb
251!Cname rc2-cfb64
252 : RC2-CFB : rc2-cfb
253!Cname rc2-ofb64
254 : RC2-OFB : rc2-ofb
255 : RC2-40-CBC : rc2-40-cbc
256 : RC2-64-CBC : rc2-64-cbc
257rsadsi 3 4 : RC4 : rc4
258 : RC4-40 : rc4-40
259rsadsi 3 7 : DES-EDE3-CBC : des-ede3-cbc
260rsadsi 3 8 : RC5-CBC : rc5-cbc
261 : RC5-ECB : rc5-ecb
262!Cname rc5-cfb64
263 : RC5-CFB : rc5-cfb
264!Cname rc5-ofb64
265 : RC5-OFB : rc5-ofb
266
267!Cname ms-ext-req
2681 3 6 1 4 1 311 2 1 14 : msExtReq : Microsoft Extension Request
269!Cname ms-code-ind
2701 3 6 1 4 1 311 2 1 21 : msCodeInd : Microsoft Individual Code Signing
271!Cname ms-code-com
2721 3 6 1 4 1 311 2 1 22 : msCodeCom : Microsoft Commercial Code Signing
273!Cname ms-ctl-sign
2741 3 6 1 4 1 311 10 3 1 : msCTLSign : Microsoft Trust List Signing
275!Cname ms-sgc
2761 3 6 1 4 1 311 10 3 3 : msSGC : Microsoft Server Gated Crypto
277!Cname ms-efs
2781 3 6 1 4 1 311 10 3 4 : msEFS : Microsoft Encrypted File System
279
2801 3 6 1 4 1 188 7 1 1 2 : IDEA-CBC : idea-cbc
281 : IDEA-ECB : idea-ecb
282!Cname idea-cfb64
283 : IDEA-CFB : idea-cfb
284!Cname idea-ofb64
285 : IDEA-OFB : idea-ofb
286
2871 3 6 1 4 1 3029 1 2 : BF-CBC : bf-cbc
288 : BF-ECB : bf-ecb
289!Cname bf-cfb64
290 : BF-CFB : bf-cfb
291!Cname bf-ofb64
292 : BF-OFB : bf-ofb
293
294!Cname id-pkix
2951 3 6 1 5 5 7 : PKIX
296
297# PKIX Arcs
298id-pkix 0 : id-pkix-mod
299id-pkix 1 : id-pe
300id-pkix 2 : id-qt
301id-pkix 3 : id-kp
302id-pkix 4 : id-it
303id-pkix 5 : id-pkip
304id-pkix 6 : id-alg
305id-pkix 7 : id-cmc
306id-pkix 8 : id-on
307id-pkix 9 : id-pda
308id-pkix 10 : id-aca
309id-pkix 11 : id-qcs
310id-pkix 12 : id-cct
311id-pkix 48 : id-ad
312
313# PKIX Modules
314id-pkix-mod 1 : id-pkix1-explicit-88
315id-pkix-mod 2 : id-pkix1-implicit-88
316id-pkix-mod 3 : id-pkix1-explicit-93
317id-pkix-mod 4 : id-pkix1-implicit-93
318id-pkix-mod 5 : id-mod-crmf
319id-pkix-mod 6 : id-mod-cmc
320id-pkix-mod 7 : id-mod-kea-profile-88
321id-pkix-mod 8 : id-mod-kea-profile-93
322id-pkix-mod 9 : id-mod-cmp
323id-pkix-mod 10 : id-mod-qualified-cert-88
324id-pkix-mod 11 : id-mod-qualified-cert-93
325id-pkix-mod 12 : id-mod-attribute-cert
326id-pkix-mod 13 : id-mod-timestamp-protocol
327id-pkix-mod 14 : id-mod-ocsp
328id-pkix-mod 15 : id-mod-dvcs
329id-pkix-mod 16 : id-mod-cmp2000
330
331# PKIX Private Extensions
332!Cname info-access
333id-pe 1 : authorityInfoAccess : Authority Information Access
334id-pe 2 : biometricInfo : Biometric Info
335id-pe 3 : qcStatements
336id-pe 4 : ac-auditEntity
337id-pe 5 : ac-targeting
338id-pe 6 : aaControls
339id-pe 7 : sbqp-ipAddrBlock
340id-pe 8 : sbqp-autonomousSysNum
341id-pe 9 : sbqp-routerIdentifier
342id-pe 10 : ac-proxying
343!Cname sinfo-access
344id-pe 11 : subjectInfoAccess : Subject Information Access
345
346# PKIX policyQualifiers for Internet policy qualifiers
347id-qt 1 : id-qt-cps : Policy Qualifier CPS
348id-qt 2 : id-qt-unotice : Policy Qualifier User Notice
349id-qt 3 : textNotice
350
351# PKIX key purpose identifiers
352!Cname server-auth
353id-kp 1 : serverAuth : TLS Web Server Authentication
354!Cname client-auth
355id-kp 2 : clientAuth : TLS Web Client Authentication
356!Cname code-sign
357id-kp 3 : codeSigning : Code Signing
358!Cname email-protect
359id-kp 4 : emailProtection : E-mail Protection
360id-kp 5 : ipsecEndSystem : IPSec End System
361id-kp 6 : ipsecTunnel : IPSec Tunnel
362id-kp 7 : ipsecUser : IPSec User
363!Cname time-stamp
364id-kp 8 : timeStamping : Time Stamping
365# From OCSP spec RFC2560
366!Cname OCSP-sign
367id-kp 9 : OCSPSigning : OCSP Signing
368id-kp 10 : DVCS : dvcs
369
370# CMP information types
371id-it 1 : id-it-caProtEncCert
372id-it 2 : id-it-signKeyPairTypes
373id-it 3 : id-it-encKeyPairTypes
374id-it 4 : id-it-preferredSymmAlg
375id-it 5 : id-it-caKeyUpdateInfo
376id-it 6 : id-it-currentCRL
377id-it 7 : id-it-unsupportedOIDs
378# obsolete
379id-it 8 : id-it-subscriptionRequest
380# obsolete
381id-it 9 : id-it-subscriptionResponse
382id-it 10 : id-it-keyPairParamReq
383id-it 11 : id-it-keyPairParamRep
384id-it 12 : id-it-revPassphrase
385id-it 13 : id-it-implicitConfirm
386id-it 14 : id-it-confirmWaitTime
387id-it 15 : id-it-origPKIMessage
388
389# CRMF registration
390id-pkip 1 : id-regCtrl
391id-pkip 2 : id-regInfo
392
393# CRMF registration controls
394id-regCtrl 1 : id-regCtrl-regToken
395id-regCtrl 2 : id-regCtrl-authenticator
396id-regCtrl 3 : id-regCtrl-pkiPublicationInfo
397id-regCtrl 4 : id-regCtrl-pkiArchiveOptions
398id-regCtrl 5 : id-regCtrl-oldCertID
399id-regCtrl 6 : id-regCtrl-protocolEncrKey
400
401# CRMF registration information
402id-regInfo 1 : id-regInfo-utf8Pairs
403id-regInfo 2 : id-regInfo-certReq
404
405# algorithms
406id-alg 1 : id-alg-des40
407id-alg 2 : id-alg-noSignature
408id-alg 3 : id-alg-dh-sig-hmac-sha1
409id-alg 4 : id-alg-dh-pop
410
411# CMC controls
412id-cmc 1 : id-cmc-statusInfo
413id-cmc 2 : id-cmc-identification
414id-cmc 3 : id-cmc-identityProof
415id-cmc 4 : id-cmc-dataReturn
416id-cmc 5 : id-cmc-transactionId
417id-cmc 6 : id-cmc-senderNonce
418id-cmc 7 : id-cmc-recipientNonce
419id-cmc 8 : id-cmc-addExtensions
420id-cmc 9 : id-cmc-encryptedPOP
421id-cmc 10 : id-cmc-decryptedPOP
422id-cmc 11 : id-cmc-lraPOPWitness
423id-cmc 15 : id-cmc-getCert
424id-cmc 16 : id-cmc-getCRL
425id-cmc 17 : id-cmc-revokeRequest
426id-cmc 18 : id-cmc-regInfo
427id-cmc 19 : id-cmc-responseInfo
428id-cmc 21 : id-cmc-queryPending
429id-cmc 22 : id-cmc-popLinkRandom
430id-cmc 23 : id-cmc-popLinkWitness
431id-cmc 24 : id-cmc-confirmCertAcceptance
432
433# other names
434id-on 1 : id-on-personalData
435
436# personal data attributes
437id-pda 1 : id-pda-dateOfBirth
438id-pda 2 : id-pda-placeOfBirth
439id-pda 3 : id-pda-gender
440id-pda 4 : id-pda-countryOfCitizenship
441id-pda 5 : id-pda-countryOfResidence
442
443# attribute certificate attributes
444id-aca 1 : id-aca-authenticationInfo
445id-aca 2 : id-aca-accessIdentity
446id-aca 3 : id-aca-chargingIdentity
447id-aca 4 : id-aca-group
448# attention : the following seems to be obsolete, replace by 'role'
449id-aca 5 : id-aca-role
450id-aca 6 : id-aca-encAttrs
451
452# qualified certificate statements
453id-qcs 1 : id-qcs-pkixQCSyntax-v1
454
455# CMC content types
456id-cct 1 : id-cct-crs
457id-cct 2 : id-cct-PKIData
458id-cct 3 : id-cct-PKIResponse
459
460# access descriptors for authority info access extension
461!Cname ad-OCSP
462id-ad 1 : OCSP : OCSP
463!Cname ad-ca-issuers
464id-ad 2 : caIssuers : CA Issuers
465!Cname ad-timeStamping
466id-ad 3 : ad_timestamping : AD Time Stamping
467!Cname ad-dvcs
468id-ad 4 : AD_DVCS : ad dvcs
469
470
471!Alias id-pkix-OCSP ad-OCSP
472!module id-pkix-OCSP
473!Cname basic
474id-pkix-OCSP 1 : basicOCSPResponse : Basic OCSP Response
475id-pkix-OCSP 2 : Nonce : OCSP Nonce
476id-pkix-OCSP 3 : CrlID : OCSP CRL ID
477id-pkix-OCSP 4 : acceptableResponses : Acceptable OCSP Responses
478id-pkix-OCSP 5 : noCheck : OCSP No Check
479id-pkix-OCSP 6 : archiveCutoff : OCSP Archive Cutoff
480id-pkix-OCSP 7 : serviceLocator : OCSP Service Locator
481id-pkix-OCSP 8 : extendedStatus : Extended OCSP Status
482id-pkix-OCSP 9 : valid
483id-pkix-OCSP 10 : path
484id-pkix-OCSP 11 : trustRoot : Trust Root
485!global
486
4871 3 14 3 2 : algorithm : algorithm
488algorithm 3 : RSA-NP-MD5 : md5WithRSA
489algorithm 6 : DES-ECB : des-ecb
490algorithm 7 : DES-CBC : des-cbc
491!Cname des-ofb64
492algorithm 8 : DES-OFB : des-ofb
493!Cname des-cfb64
494algorithm 9 : DES-CFB : des-cfb
34algorithm 11 : rsaSignature 495algorithm 11 : rsaSignature
496!Cname dsa-2
497algorithm 12 : DSA-old : dsaEncryption-old
498algorithm 13 : DSA-SHA : dsaWithSHA
499algorithm 15 : RSA-SHA : shaWithRSAEncryption
500!Cname des-ede-ecb
501algorithm 17 : DES-EDE : des-ede
502!Cname des-ede3-ecb
503 : DES-EDE3 : des-ede3
504 : DES-EDE-CBC : des-ede-cbc
505!Cname des-ede-cfb64
506 : DES-EDE-CFB : des-ede-cfb
507!Cname des-ede3-cfb64
508 : DES-EDE3-CFB : des-ede3-cfb
509!Cname des-ede-ofb64
510 : DES-EDE-OFB : des-ede-ofb
511!Cname des-ede3-ofb64
512 : DES-EDE3-OFB : des-ede3-ofb
513 : DESX-CBC : desx-cbc
514algorithm 18 : SHA : sha
515algorithm 26 : SHA1 : sha1
516!Cname dsaWithSHA1-2
517algorithm 27 : DSA-SHA1-old : dsaWithSHA1-old
518algorithm 29 : RSA-SHA1-2 : sha1WithRSA
519
5201 3 36 3 2 1 : RIPEMD160 : ripemd160
5211 3 36 3 3 1 2 : RSA-RIPEMD160 : ripemd160WithRSA
522
523!Cname sxnet
5241 3 101 1 4 1 : SXNetID : Strong Extranet ID
525
5262 5 : X500 : directory services (X.500)
527
528X500 4 : X509
529X509 3 : CN : commonName
530X509 4 : SN : surname
531X509 5 : : serialNumber
532X509 6 : C : countryName
533X509 7 : L : localityName
534X509 8 : ST : stateOrProvinceName
535X509 10 : O : organizationName
536X509 11 : OU : organizationalUnitName
537X509 12 : : title
538X509 13 : : description
539X509 41 : name : name
540X509 42 : gn : givenName
541X509 43 : : initials
542X509 44 : : generationQualifier
543X509 45 : : x500UniqueIdentifier
544X509 46 : dnQualifier : dnQualifier
545X509 72 : role : role
546
547X500 8 : X500algorithms : directory services - algorithms
548X500algorithms 1 1 : RSA : rsa
549X500algorithms 3 100 : RSA-MDC2 : mdc2WithRSA
550X500algorithms 3 101 : MDC2 : mdc2
551
552X500 29 : id-ce
553!Cname subject-key-identifier
554id-ce 14 : subjectKeyIdentifier : X509v3 Subject Key Identifier
555!Cname key-usage
556id-ce 15 : keyUsage : X509v3 Key Usage
557!Cname private-key-usage-period
558id-ce 16 : privateKeyUsagePeriod : X509v3 Private Key Usage Period
559!Cname subject-alt-name
560id-ce 17 : subjectAltName : X509v3 Subject Alternative Name
561!Cname issuer-alt-name
562id-ce 18 : issuerAltName : X509v3 Issuer Alternative Name
563!Cname basic-constraints
564id-ce 19 : basicConstraints : X509v3 Basic Constraints
565!Cname crl-number
566id-ce 20 : crlNumber : X509v3 CRL Number
567!Cname crl-reason
568id-ce 21 : CRLReason : X509v3 CRL Reason Code
569!Cname invalidity-date
570id-ce 24 : invalidityDate : Invalidity Date
571!Cname delta-crl
572id-ce 27 : deltaCRL : X509v3 Delta CRL Indicator
573!Cname crl-distribution-points
574id-ce 31 : crlDistributionPoints : X509v3 CRL Distribution Points
575!Cname certificate-policies
576id-ce 32 : certificatePolicies : X509v3 Certificate Policies
577!Cname authority-key-identifier
578id-ce 35 : authorityKeyIdentifier : X509v3 Authority Key Identifier
579!Cname policy-constraints
580id-ce 36 : policyConstraints : X509v3 Policy Constraints
581!Cname ext-key-usage
582id-ce 37 : extendedKeyUsage : X509v3 Extended Key Usage
583!Cname target-information
584id-ce 55 : targetInformation : X509v3 AC Targeting
585!Cname no-rev-avail
586id-ce 56 : noRevAvail : X509v3 No Revocation Available
587
588!Cname netscape
5892 16 840 1 113730 : Netscape : Netscape Communications Corp.
590!Cname netscape-cert-extension
591netscape 1 : nsCertExt : Netscape Certificate Extension
592!Cname netscape-data-type
593netscape 2 : nsDataType : Netscape Data Type
594!Cname netscape-cert-type
595netscape-cert-extension 1 : nsCertType : Netscape Cert Type
596!Cname netscape-base-url
597netscape-cert-extension 2 : nsBaseUrl : Netscape Base Url
598!Cname netscape-revocation-url
599netscape-cert-extension 3 : nsRevocationUrl : Netscape Revocation Url
600!Cname netscape-ca-revocation-url
601netscape-cert-extension 4 : nsCaRevocationUrl : Netscape CA Revocation Url
602!Cname netscape-renewal-url
603netscape-cert-extension 7 : nsRenewalUrl : Netscape Renewal Url
604!Cname netscape-ca-policy-url
605netscape-cert-extension 8 : nsCaPolicyUrl : Netscape CA Policy Url
606!Cname netscape-ssl-server-name
607netscape-cert-extension 12 : nsSslServerName : Netscape SSL Server Name
608!Cname netscape-comment
609netscape-cert-extension 13 : nsComment : Netscape Comment
610!Cname netscape-cert-sequence
611netscape-data-type 5 : nsCertSequence : Netscape Certificate Sequence
612!Cname ns-sgc
613netscape 4 1 : nsSGC : Netscape Server Gated Crypto
614
615# iso(1)
616iso 3 : ORG : org
617org 6 : DOD : dod
618dod 1 : IANA : iana
619!Alias internet iana
620
621internet 1 : directory : Directory
622internet 2 : mgmt : Management
623internet 3 : experimental : Experimental
624internet 4 : private : Private
625internet 5 : security : Security
626internet 6 : snmpv2 : SNMPv2
627# Documents refer to "internet 7" as "mail". This however leads to ambiguities
628# with RFC2798, Section 9.1.3, where "mail" is defined as the short name for
629# rfc822Mailbox. The short name is therefore here left out for a reason.
630# Subclasses of "mail", e.g. "MIME MHS" don't consitute a problem, as
631# references are realized via long name "Mail" (with capital M).
632internet 7 : : Mail
633
634Private 1 : enterprises : Enterprises
635
636# RFC 2247
637Enterprises 1466 344 : dcobject : dcObject
638
639# RFC 1495
640Mail 1 : mime-mhs : MIME MHS
641mime-mhs 1 : mime-mhs-headings : mime-mhs-headings
642mime-mhs 2 : mime-mhs-bodies : mime-mhs-bodies
643mime-mhs-headings 1 : id-hex-partial-message : id-hex-partial-message
644mime-mhs-headings 2 : id-hex-multipart-message : id-hex-multipart-message
645
646# What the hell are these OIDs, really?
647!Cname rle-compression
6481 1 1 1 666 1 : RLE : run length compression
649!Cname zlib-compression
6501 1 1 1 666 2 : ZLIB : zlib compression
651
652# AES aka Rijndael
653
654!Alias csor 2 16 840 1 101 3
655!Alias nistAlgorithms csor 4
656!Alias aes nistAlgorithms 1
657
658aes 1 : AES-128-ECB : aes-128-ecb
659aes 2 : AES-128-CBC : aes-128-cbc
660!Cname aes-128-ofb128
661aes 3 : AES-128-OFB : aes-128-ofb
662!Cname aes-128-cfb128
663aes 4 : AES-128-CFB : aes-128-cfb
664
665aes 21 : AES-192-ECB : aes-192-ecb
666aes 22 : AES-192-CBC : aes-192-cbc
667!Cname aes-192-ofb128
668aes 23 : AES-192-OFB : aes-192-ofb
669!Cname aes-192-cfb128
670aes 24 : AES-192-CFB : aes-192-cfb
671
672aes 41 : AES-256-ECB : aes-256-ecb
673aes 42 : AES-256-CBC : aes-256-cbc
674!Cname aes-256-ofb128
675aes 43 : AES-256-OFB : aes-256-ofb
676!Cname aes-256-cfb128
677aes 44 : AES-256-CFB : aes-256-cfb
678
679# Hold instruction CRL entry extension
680!Cname hold-instruction-code
681id-ce 23 : holdInstructionCode : Hold Instruction Code
682!Alias holdInstruction X9-57 2
683!Cname hold-instruction-none
684holdInstruction 1 : holdInstructionNone : Hold Instruction None
685!Cname hold-instruction-call-issuer
686holdInstruction 2 : holdInstructionCallIssuer : Hold Instruction Call Issuer
687!Cname hold-instruction-reject
688holdInstruction 3 : holdInstructionReject : Hold Instruction Reject
35 689
36algorithm 6 : desECB 690# OID's from CCITT. Most of this is defined in RFC 1274. A couple of
37algorithm 7 : desCBC 691# them are also mentioned in RFC 2247
38algorithm 8 : desOFB 692ccitt 9 : data
39algorithm 9 : desCFB 693data 2342 : pss
40algorithm 17 : desEDE2 694pss 19200300 : ucl
695ucl 100 : pilot
696pilot 1 : : pilotAttributeType
697pilot 3 : : pilotAttributeSyntax
698pilot 4 : : pilotObjectClass
699pilot 10 : : pilotGroups
700pilotAttributeSyntax 4 : : iA5StringSyntax
701pilotAttributeSyntax 5 : : caseIgnoreIA5StringSyntax
702pilotObjectClass 3 : : pilotObject
703pilotObjectClass 4 : : pilotPerson
704pilotObjectClass 5 : account
705pilotObjectClass 6 : document
706pilotObjectClass 7 : room
707pilotObjectClass 9 : : documentSeries
708pilotObjectClass 13 : domain : Domain
709pilotObjectClass 14 : : rFC822localPart
710pilotObjectClass 15 : : dNSDomain
711pilotObjectClass 17 : : domainRelatedObject
712pilotObjectClass 18 : : friendlyCountry
713pilotObjectClass 19 : : simpleSecurityObject
714pilotObjectClass 20 : : pilotOrganization
715pilotObjectClass 21 : : pilotDSA
716pilotObjectClass 22 : : qualityLabelledData
717pilotAttributeType 1 : UID : userId
718pilotAttributeType 2 : : textEncodedORAddress
719pilotAttributeType 3 : mail : rfc822Mailbox
720pilotAttributeType 4 : info
721pilotAttributeType 5 : : favouriteDrink
722pilotAttributeType 6 : : roomNumber
723pilotAttributeType 7 : photo
724pilotAttributeType 8 : : userClass
725pilotAttributeType 9 : host
726pilotAttributeType 10 : manager
727pilotAttributeType 11 : : documentIdentifier
728pilotAttributeType 12 : : documentTitle
729pilotAttributeType 13 : : documentVersion
730pilotAttributeType 14 : : documentAuthor
731pilotAttributeType 15 : : documentLocation
732pilotAttributeType 20 : : homeTelephoneNumber
733pilotAttributeType 21 : secretary
734pilotAttributeType 22 : : otherMailbox
735pilotAttributeType 23 : : lastModifiedTime
736pilotAttributeType 24 : : lastModifiedBy
737pilotAttributeType 25 : DC : domainComponent
738pilotAttributeType 26 : : aRecord
739pilotAttributeType 27 : : pilotAttributeType27
740pilotAttributeType 28 : : mXRecord
741pilotAttributeType 29 : : nSRecord
742pilotAttributeType 30 : : sOARecord
743pilotAttributeType 31 : : cNAMERecord
744pilotAttributeType 37 : : associatedDomain
745pilotAttributeType 38 : : associatedName
746pilotAttributeType 39 : : homePostalAddress
747pilotAttributeType 40 : : personalTitle
748pilotAttributeType 41 : : mobileTelephoneNumber
749pilotAttributeType 42 : : pagerTelephoneNumber
750pilotAttributeType 43 : : friendlyCountryName
751# The following clashes with 2.5.4.45, so commented away
752#pilotAttributeType 44 : uid : uniqueIdentifier
753pilotAttributeType 45 : : organizationalStatus
754pilotAttributeType 46 : : janetMailbox
755pilotAttributeType 47 : : mailPreferenceOption
756pilotAttributeType 48 : : buildingName
757pilotAttributeType 49 : : dSAQuality
758pilotAttributeType 50 : : singleLevelQuality
759pilotAttributeType 51 : : subtreeMinimumQuality
760pilotAttributeType 52 : : subtreeMaximumQuality
761pilotAttributeType 53 : : personalSignature
762pilotAttributeType 54 : : dITRedirect
763pilotAttributeType 55 : audio
764pilotAttributeType 56 : : documentPublisher