blob: 6f05bba9b1d025ba432885b9ab34f340ab4277b2 [file] [log] [blame]
Lev Walkin006de1c2004-08-20 13:37:45 +00001
2/*** <<< INCLUDES [Certificate] >>> ***/
3
4#include <OBJECT_IDENTIFIER.h>
5#include <BIT_STRING.h>
6#include <INTEGER.h>
7#include <Name.h>
8#include <constr_SEQUENCE.h>
9
10/*** <<< DEPS [Certificate] >>> ***/
11
Lev Walkindfae9752004-09-29 13:19:37 +000012extern asn_TYPE_descriptor_t asn_DEF_Certificate;
Lev Walkin006de1c2004-08-20 13:37:45 +000013
14/*** <<< TYPE-DECLS [Certificate] >>> ***/
15
16
17typedef struct Certificate {
18 struct toBeSigned {
19 INTEGER_t version;
20 OBJECT_IDENTIFIER_t signature;
21 Name_t issuer;
22
23 /* Context for parsing across buffer boundaries */
Lev Walkindfae9752004-09-29 13:19:37 +000024 asn_struct_ctx_t _asn_ctx;
Lev Walkin006de1c2004-08-20 13:37:45 +000025 } toBeSigned;
26 OBJECT_IDENTIFIER_t algorithm;
27 BIT_STRING_t signature;
28
29 /* Context for parsing across buffer boundaries */
Lev Walkindfae9752004-09-29 13:19:37 +000030 asn_struct_ctx_t _asn_ctx;
Lev Walkin006de1c2004-08-20 13:37:45 +000031} Certificate_t;
32
Lev Walkindaa7d2b2004-09-05 10:37:18 +000033/*** <<< CODE [Certificate] >>> ***/
34
35static int
Lev Walkindfae9752004-09-29 13:19:37 +000036memb_signature_1_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
Lev Walkindaa7d2b2004-09-05 10:37:18 +000037 asn_app_consume_bytes_f *app_errlog, void *app_key) {
38 const BIT_STRING_t *st = sptr;
39 size_t size;
40
41 if(!sptr) {
42 _ASN_ERRLOG(app_errlog, app_key,
43 "%s: value not given (%s:%d)",
44 td->name, __FILE__, __LINE__);
45 return -1;
46 }
47
48 if(st->size > 0) {
49 /* Size in bits */
50 size = 8 * (st->size - 1) - (st->buf[0] & 0x7);
51 } else {
52 size = 0;
53 }
54
55 if((size <= 256)) {
56 /* Constraint check succeeded */
57 return 0;
58 } else {
59 _ASN_ERRLOG(app_errlog, app_key,
60 "%s: constraint failed (%s:%d)",
61 td->name, __FILE__, __LINE__);
62 return -1;
63 }
64}
65
66
Lev Walkin006de1c2004-08-20 13:37:45 +000067/*** <<< STAT-DEFS [Certificate] >>> ***/
68
Lev Walkindfae9752004-09-29 13:19:37 +000069static asn_TYPE_member_t asn_MBR_toBeSigned[] = {
Lev Walkincc93b0f2004-09-10 09:18:20 +000070 { ATF_NOFLAGS, 0, offsetof(struct toBeSigned, version),
Lev Walkin006de1c2004-08-20 13:37:45 +000071 .tag = (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
72 .tag_mode = 0,
Lev Walkindfae9752004-09-29 13:19:37 +000073 .type = (void *)&asn_DEF_INTEGER,
Lev Walkinba58e1b2005-01-17 12:20:19 +000074 .memb_constraints = 0, /* Defer constraints checking to the member type */
Lev Walkin006de1c2004-08-20 13:37:45 +000075 .name = "version"
76 },
Lev Walkincc93b0f2004-09-10 09:18:20 +000077 { ATF_NOFLAGS, 0, offsetof(struct toBeSigned, signature),
Lev Walkin006de1c2004-08-20 13:37:45 +000078 .tag = (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)),
79 .tag_mode = 0,
Lev Walkindfae9752004-09-29 13:19:37 +000080 .type = (void *)&asn_DEF_OBJECT_IDENTIFIER,
Lev Walkinba58e1b2005-01-17 12:20:19 +000081 .memb_constraints = 0, /* Defer constraints checking to the member type */
Lev Walkin006de1c2004-08-20 13:37:45 +000082 .name = "signature"
83 },
Lev Walkincc93b0f2004-09-10 09:18:20 +000084 { ATF_NOFLAGS, 0, offsetof(struct toBeSigned, issuer),
Lev Walkin006de1c2004-08-20 13:37:45 +000085 .tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
86 .tag_mode = 0,
Lev Walkindfae9752004-09-29 13:19:37 +000087 .type = (void *)&asn_DEF_Name,
Lev Walkinba58e1b2005-01-17 12:20:19 +000088 .memb_constraints = 0, /* Defer constraints checking to the member type */
Lev Walkin006de1c2004-08-20 13:37:45 +000089 .name = "issuer"
90 },
91};
Lev Walkindfae9752004-09-29 13:19:37 +000092static ber_tlv_tag_t asn_DEF_toBeSigned_tags[] = {
Lev Walkin006de1c2004-08-20 13:37:45 +000093 (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
94};
Lev Walkindfae9752004-09-29 13:19:37 +000095static asn_TYPE_tag2member_t asn_DEF_toBeSigned_tag2el[] = {
Lev Walkin006de1c2004-08-20 13:37:45 +000096 { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* version at 21 */
97 { (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)), 1, 0, 0 }, /* signature at 22 */
98 { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 }, /* issuer at 24 */
99};
Lev Walkindfae9752004-09-29 13:19:37 +0000100static asn_SEQUENCE_specifics_t asn_DEF_toBeSigned_specs = {
Lev Walkin006de1c2004-08-20 13:37:45 +0000101 sizeof(struct toBeSigned),
Lev Walkindfae9752004-09-29 13:19:37 +0000102 offsetof(struct toBeSigned, _asn_ctx),
103 asn_DEF_toBeSigned_tag2el,
Lev Walkin006de1c2004-08-20 13:37:45 +0000104 3, /* Count of tags in the map */
105 -1, /* Start extensions */
106 -1 /* Stop extensions */
107};
Lev Walkind04430c2004-09-07 06:44:29 +0000108static /* Use -fall-defs-global to expose */
Lev Walkindfae9752004-09-29 13:19:37 +0000109asn_TYPE_descriptor_t asn_DEF_toBeSigned = {
Lev Walkin006de1c2004-08-20 13:37:45 +0000110 "toBeSigned",
Lev Walkindc06f6b2004-10-20 15:50:55 +0000111 "toBeSigned",
Lev Walkina9cc46e2004-09-22 16:06:28 +0000112 SEQUENCE_free,
113 SEQUENCE_print,
Lev Walkin006de1c2004-08-20 13:37:45 +0000114 SEQUENCE_constraint,
115 SEQUENCE_decode_ber,
116 SEQUENCE_encode_der,
Lev Walkin61b40d82004-10-23 15:07:45 +0000117 SEQUENCE_decode_xer,
Lev Walkina9cc46e2004-09-22 16:06:28 +0000118 SEQUENCE_encode_xer,
Lev Walkin006de1c2004-08-20 13:37:45 +0000119 0, /* Use generic outmost tag fetcher */
Lev Walkindfae9752004-09-29 13:19:37 +0000120 asn_DEF_toBeSigned_tags,
121 sizeof(asn_DEF_toBeSigned_tags)
122 /sizeof(asn_DEF_toBeSigned_tags[0]), /* 1 */
123 asn_DEF_toBeSigned_tags, /* Same as above */
124 sizeof(asn_DEF_toBeSigned_tags)
125 /sizeof(asn_DEF_toBeSigned_tags[0]), /* 1 */
126 asn_MBR_toBeSigned,
Lev Walkin006de1c2004-08-20 13:37:45 +0000127 3, /* Elements count */
Lev Walkindfae9752004-09-29 13:19:37 +0000128 &asn_DEF_toBeSigned_specs /* Additional specs */
Lev Walkin006de1c2004-08-20 13:37:45 +0000129};
130
Lev Walkindfae9752004-09-29 13:19:37 +0000131static asn_TYPE_member_t asn_MBR_Certificate[] = {
Lev Walkincc93b0f2004-09-10 09:18:20 +0000132 { ATF_NOFLAGS, 0, offsetof(struct Certificate, toBeSigned),
Lev Walkin006de1c2004-08-20 13:37:45 +0000133 .tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
134 .tag_mode = 0,
Lev Walkindfae9752004-09-29 13:19:37 +0000135 .type = (void *)&asn_DEF_toBeSigned,
Lev Walkinba58e1b2005-01-17 12:20:19 +0000136 .memb_constraints = 0, /* Defer constraints checking to the member type */
Lev Walkin006de1c2004-08-20 13:37:45 +0000137 .name = "toBeSigned"
138 },
Lev Walkincc93b0f2004-09-10 09:18:20 +0000139 { ATF_NOFLAGS, 0, offsetof(struct Certificate, algorithm),
Lev Walkin006de1c2004-08-20 13:37:45 +0000140 .tag = (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)),
141 .tag_mode = 0,
Lev Walkindfae9752004-09-29 13:19:37 +0000142 .type = (void *)&asn_DEF_OBJECT_IDENTIFIER,
Lev Walkinba58e1b2005-01-17 12:20:19 +0000143 .memb_constraints = 0, /* Defer constraints checking to the member type */
Lev Walkin006de1c2004-08-20 13:37:45 +0000144 .name = "algorithm"
145 },
Lev Walkincc93b0f2004-09-10 09:18:20 +0000146 { ATF_NOFLAGS, 0, offsetof(struct Certificate, signature),
Lev Walkin006de1c2004-08-20 13:37:45 +0000147 .tag = (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)),
148 .tag_mode = 0,
Lev Walkindfae9752004-09-29 13:19:37 +0000149 .type = (void *)&asn_DEF_BIT_STRING,
Lev Walkindaa7d2b2004-09-05 10:37:18 +0000150 .memb_constraints = memb_signature_1_constraint,
Lev Walkin006de1c2004-08-20 13:37:45 +0000151 .name = "signature"
152 },
153};
Lev Walkindfae9752004-09-29 13:19:37 +0000154static ber_tlv_tag_t asn_DEF_Certificate_tags[] = {
Lev Walkin006de1c2004-08-20 13:37:45 +0000155 (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
156};
Lev Walkindfae9752004-09-29 13:19:37 +0000157static asn_TYPE_tag2member_t asn_DEF_Certificate_tag2el[] = {
Lev Walkindaa7d2b2004-09-05 10:37:18 +0000158 { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 2, 0, 0 }, /* signature at 17 */
Lev Walkin006de1c2004-08-20 13:37:45 +0000159 { (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)), 1, 0, 0 }, /* algorithm at 16 */
160 { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 }, /* toBeSigned at 21 */
161};
Lev Walkindfae9752004-09-29 13:19:37 +0000162static asn_SEQUENCE_specifics_t asn_DEF_Certificate_specs = {
Lev Walkin006de1c2004-08-20 13:37:45 +0000163 sizeof(struct Certificate),
Lev Walkindfae9752004-09-29 13:19:37 +0000164 offsetof(struct Certificate, _asn_ctx),
165 asn_DEF_Certificate_tag2el,
Lev Walkin006de1c2004-08-20 13:37:45 +0000166 3, /* Count of tags in the map */
167 -1, /* Start extensions */
168 -1 /* Stop extensions */
169};
Lev Walkindfae9752004-09-29 13:19:37 +0000170asn_TYPE_descriptor_t asn_DEF_Certificate = {
Lev Walkin006de1c2004-08-20 13:37:45 +0000171 "Certificate",
Lev Walkindc06f6b2004-10-20 15:50:55 +0000172 "Certificate",
Lev Walkina9cc46e2004-09-22 16:06:28 +0000173 SEQUENCE_free,
174 SEQUENCE_print,
Lev Walkin006de1c2004-08-20 13:37:45 +0000175 SEQUENCE_constraint,
176 SEQUENCE_decode_ber,
177 SEQUENCE_encode_der,
Lev Walkin61b40d82004-10-23 15:07:45 +0000178 SEQUENCE_decode_xer,
Lev Walkina9cc46e2004-09-22 16:06:28 +0000179 SEQUENCE_encode_xer,
Lev Walkin006de1c2004-08-20 13:37:45 +0000180 0, /* Use generic outmost tag fetcher */
Lev Walkindfae9752004-09-29 13:19:37 +0000181 asn_DEF_Certificate_tags,
182 sizeof(asn_DEF_Certificate_tags)
183 /sizeof(asn_DEF_Certificate_tags[0]), /* 1 */
184 asn_DEF_Certificate_tags, /* Same as above */
185 sizeof(asn_DEF_Certificate_tags)
186 /sizeof(asn_DEF_Certificate_tags[0]), /* 1 */
187 asn_MBR_Certificate,
Lev Walkin006de1c2004-08-20 13:37:45 +0000188 3, /* Elements count */
Lev Walkindfae9752004-09-29 13:19:37 +0000189 &asn_DEF_Certificate_specs /* Additional specs */
Lev Walkin006de1c2004-08-20 13:37:45 +0000190};
191
192
193/*** <<< INCLUDES [Name] >>> ***/
194
195#include <RelativeDistinguishedName.h>
196#include <asn_SEQUENCE_OF.h>
197#include <constr_SEQUENCE_OF.h>
198
199/*** <<< DEPS [Name] >>> ***/
200
Lev Walkindfae9752004-09-29 13:19:37 +0000201extern asn_TYPE_descriptor_t asn_DEF_Name;
Lev Walkin006de1c2004-08-20 13:37:45 +0000202
203/*** <<< TYPE-DECLS [Name] >>> ***/
204
205
206typedef struct Name {
Lev Walkin8dd0eed2004-09-17 06:32:12 +0000207 A_SEQUENCE_OF(RelativeDistinguishedName_t) list;
Lev Walkin006de1c2004-08-20 13:37:45 +0000208
209 /* Context for parsing across buffer boundaries */
Lev Walkindfae9752004-09-29 13:19:37 +0000210 asn_struct_ctx_t _asn_ctx;
Lev Walkin006de1c2004-08-20 13:37:45 +0000211} Name_t;
212
213/*** <<< STAT-DEFS [Name] >>> ***/
214
Lev Walkindfae9752004-09-29 13:19:37 +0000215static asn_TYPE_member_t asn_MBR_Name[] = {
Lev Walkincc93b0f2004-09-10 09:18:20 +0000216 { ATF_NOFLAGS, 0, 0,
Lev Walkin006de1c2004-08-20 13:37:45 +0000217 .tag = (ASN_TAG_CLASS_UNIVERSAL | (17 << 2)),
218 .tag_mode = 0,
Lev Walkindfae9752004-09-29 13:19:37 +0000219 .type = (void *)&asn_DEF_RelativeDistinguishedName,
Lev Walkinba58e1b2005-01-17 12:20:19 +0000220 .memb_constraints = 0, /* Defer constraints checking to the member type */
Lev Walkin006de1c2004-08-20 13:37:45 +0000221 .name = ""
222 },
223};
Lev Walkindfae9752004-09-29 13:19:37 +0000224static ber_tlv_tag_t asn_DEF_Name_tags[] = {
Lev Walkin006de1c2004-08-20 13:37:45 +0000225 (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
226};
Lev Walkindfae9752004-09-29 13:19:37 +0000227static asn_SET_OF_specifics_t asn_DEF_Name_specs = {
Lev Walkin006de1c2004-08-20 13:37:45 +0000228 sizeof(struct Name),
Lev Walkindfae9752004-09-29 13:19:37 +0000229 offsetof(struct Name, _asn_ctx),
Lev Walkina9cc46e2004-09-22 16:06:28 +0000230 0, /* XER encoding is XMLDelimitedItemList */
Lev Walkin006de1c2004-08-20 13:37:45 +0000231};
Lev Walkindfae9752004-09-29 13:19:37 +0000232asn_TYPE_descriptor_t asn_DEF_Name = {
Lev Walkin006de1c2004-08-20 13:37:45 +0000233 "Name",
Lev Walkindc06f6b2004-10-20 15:50:55 +0000234 "Name",
Lev Walkina9cc46e2004-09-22 16:06:28 +0000235 SEQUENCE_OF_free,
236 SEQUENCE_OF_print,
Lev Walkin006de1c2004-08-20 13:37:45 +0000237 SEQUENCE_OF_constraint,
238 SEQUENCE_OF_decode_ber,
239 SEQUENCE_OF_encode_der,
Lev Walkina9cc46e2004-09-22 16:06:28 +0000240 0, /* Not implemented yet */
241 SEQUENCE_OF_encode_xer,
Lev Walkin006de1c2004-08-20 13:37:45 +0000242 0, /* Use generic outmost tag fetcher */
Lev Walkindfae9752004-09-29 13:19:37 +0000243 asn_DEF_Name_tags,
244 sizeof(asn_DEF_Name_tags)
245 /sizeof(asn_DEF_Name_tags[0]), /* 1 */
246 asn_DEF_Name_tags, /* Same as above */
247 sizeof(asn_DEF_Name_tags)
248 /sizeof(asn_DEF_Name_tags[0]), /* 1 */
249 asn_MBR_Name,
Lev Walkin006de1c2004-08-20 13:37:45 +0000250 1, /* Single element */
Lev Walkindfae9752004-09-29 13:19:37 +0000251 &asn_DEF_Name_specs /* Additional specs */
Lev Walkin006de1c2004-08-20 13:37:45 +0000252};
253
254
255/*** <<< INCLUDES [RelativeDistinguishedName] >>> ***/
256
257#include <IA5String.h>
258#include <asn_SET_OF.h>
259#include <constr_SET_OF.h>
260
261/*** <<< DEPS [RelativeDistinguishedName] >>> ***/
262
Lev Walkindfae9752004-09-29 13:19:37 +0000263extern asn_TYPE_descriptor_t asn_DEF_RelativeDistinguishedName;
Lev Walkin006de1c2004-08-20 13:37:45 +0000264
265/*** <<< TYPE-DECLS [RelativeDistinguishedName] >>> ***/
266
267
268typedef struct RelativeDistinguishedName {
269 A_SET_OF(IA5String_t) list;
270
271 /* Context for parsing across buffer boundaries */
Lev Walkindfae9752004-09-29 13:19:37 +0000272 asn_struct_ctx_t _asn_ctx;
Lev Walkin006de1c2004-08-20 13:37:45 +0000273} RelativeDistinguishedName_t;
274
275/*** <<< CTABLES [RelativeDistinguishedName] >>> ***/
276
277static int permitted_alphabet_table_1[256] = {
2780,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* */
2790,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* */
2800,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0, /* ,-. */
2811,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, /* 0 9 */
2820,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ABCDEFGHIJKLMNO */
2831,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, /* PQRSTUVWXYZ */
2840,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* abcdefghijklmno */
2851,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, /* pqrstuvwxyz */
286};
287
288static int check_permitted_alphabet_1(const void *sptr) {
289 int *table = permitted_alphabet_table_1;
290 /* The underlying type is IA5String */
Lev Walkind1e54942004-08-21 07:34:17 +0000291 const IA5String_t *st = sptr;
Lev Walkina09e5da2004-08-22 03:19:00 +0000292 const uint8_t *ch = st->buf;
293 const uint8_t *end = ch + st->size;
Lev Walkin006de1c2004-08-20 13:37:45 +0000294
295 for(; ch < end; ch++) {
296 uint8_t cv = *ch;
Lev Walkin775885e2004-08-22 12:47:03 +0000297 if(!table[cv]) return -1;
Lev Walkin006de1c2004-08-20 13:37:45 +0000298 }
Lev Walkin775885e2004-08-22 12:47:03 +0000299 return 0;
Lev Walkin006de1c2004-08-20 13:37:45 +0000300}
301
302
303/*** <<< CODE [RelativeDistinguishedName] >>> ***/
304
305static int
Lev Walkindfae9752004-09-29 13:19:37 +0000306memb_IA5String_2_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
Lev Walkin006de1c2004-08-20 13:37:45 +0000307 asn_app_consume_bytes_f *app_errlog, void *app_key) {
Lev Walkina09e5da2004-08-22 03:19:00 +0000308 const IA5String_t *st = sptr;
Lev Walkin006de1c2004-08-20 13:37:45 +0000309
310 if(!sptr) {
311 _ASN_ERRLOG(app_errlog, app_key,
Lev Walkin16835b62004-08-22 13:47:59 +0000312 "%s: value not given (%s:%d)",
313 td->name, __FILE__, __LINE__);
Lev Walkin006de1c2004-08-20 13:37:45 +0000314 return -1;
315 }
316
317
Lev Walkin730b15a2004-08-22 13:11:40 +0000318 if(!check_permitted_alphabet_1(sptr)) {
Lev Walkin006de1c2004-08-20 13:37:45 +0000319 /* Constraint check succeeded */
Lev Walkin775885e2004-08-22 12:47:03 +0000320 return 0;
Lev Walkin006de1c2004-08-20 13:37:45 +0000321 } else {
322 _ASN_ERRLOG(app_errlog, app_key,
Lev Walkin16835b62004-08-22 13:47:59 +0000323 "%s: constraint failed (%s:%d)",
324 td->name, __FILE__, __LINE__);
Lev Walkin006de1c2004-08-20 13:37:45 +0000325 return -1;
326 }
327}
328
329
330/*** <<< STAT-DEFS [RelativeDistinguishedName] >>> ***/
331
Lev Walkindfae9752004-09-29 13:19:37 +0000332static asn_TYPE_member_t asn_MBR_RelativeDistinguishedName[] = {
Lev Walkincc93b0f2004-09-10 09:18:20 +0000333 { ATF_NOFLAGS, 0, 0,
Lev Walkin006de1c2004-08-20 13:37:45 +0000334 .tag = (ASN_TAG_CLASS_UNIVERSAL | (22 << 2)),
335 .tag_mode = 0,
Lev Walkindfae9752004-09-29 13:19:37 +0000336 .type = (void *)&asn_DEF_IA5String,
Lev Walkindaa7d2b2004-09-05 10:37:18 +0000337 .memb_constraints = memb_IA5String_2_constraint,
Lev Walkin006de1c2004-08-20 13:37:45 +0000338 .name = ""
339 },
340};
Lev Walkindfae9752004-09-29 13:19:37 +0000341static ber_tlv_tag_t asn_DEF_RelativeDistinguishedName_tags[] = {
Lev Walkin006de1c2004-08-20 13:37:45 +0000342 (ASN_TAG_CLASS_UNIVERSAL | (17 << 2))
343};
Lev Walkindfae9752004-09-29 13:19:37 +0000344static asn_SET_OF_specifics_t asn_DEF_RelativeDistinguishedName_specs = {
Lev Walkin006de1c2004-08-20 13:37:45 +0000345 sizeof(struct RelativeDistinguishedName),
Lev Walkindfae9752004-09-29 13:19:37 +0000346 offsetof(struct RelativeDistinguishedName, _asn_ctx),
Lev Walkina9cc46e2004-09-22 16:06:28 +0000347 0, /* XER encoding is XMLDelimitedItemList */
Lev Walkin006de1c2004-08-20 13:37:45 +0000348};
Lev Walkindfae9752004-09-29 13:19:37 +0000349asn_TYPE_descriptor_t asn_DEF_RelativeDistinguishedName = {
Lev Walkin006de1c2004-08-20 13:37:45 +0000350 "RelativeDistinguishedName",
Lev Walkindc06f6b2004-10-20 15:50:55 +0000351 "RelativeDistinguishedName",
Lev Walkina9cc46e2004-09-22 16:06:28 +0000352 SET_OF_free,
353 SET_OF_print,
Lev Walkin006de1c2004-08-20 13:37:45 +0000354 SET_OF_constraint,
355 SET_OF_decode_ber,
356 SET_OF_encode_der,
Lev Walkina9cc46e2004-09-22 16:06:28 +0000357 0, /* Not implemented yet */
358 SET_OF_encode_xer,
Lev Walkin006de1c2004-08-20 13:37:45 +0000359 0, /* Use generic outmost tag fetcher */
Lev Walkindfae9752004-09-29 13:19:37 +0000360 asn_DEF_RelativeDistinguishedName_tags,
361 sizeof(asn_DEF_RelativeDistinguishedName_tags)
362 /sizeof(asn_DEF_RelativeDistinguishedName_tags[0]), /* 1 */
363 asn_DEF_RelativeDistinguishedName_tags, /* Same as above */
364 sizeof(asn_DEF_RelativeDistinguishedName_tags)
365 /sizeof(asn_DEF_RelativeDistinguishedName_tags[0]), /* 1 */
366 asn_MBR_RelativeDistinguishedName,
Lev Walkin006de1c2004-08-20 13:37:45 +0000367 1, /* Single element */
Lev Walkindfae9752004-09-29 13:19:37 +0000368 &asn_DEF_RelativeDistinguishedName_specs /* Additional specs */
Lev Walkin006de1c2004-08-20 13:37:45 +0000369};
370