blob: 82ace9cc3fcfc9317efcf2368b4716ed583d97a4 [file] [log] [blame]
vlm7d576b32004-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
vlm7d576b32004-08-20 13:37:45 +000010/*** <<< TYPE-DECLS [Certificate] >>> ***/
11
vlm7d576b32004-08-20 13:37:45 +000012typedef struct Certificate {
13 struct toBeSigned {
14 INTEGER_t version;
15 OBJECT_IDENTIFIER_t signature;
16 Name_t issuer;
17
18 /* Context for parsing across buffer boundaries */
vlm02296432004-09-29 13:19:37 +000019 asn_struct_ctx_t _asn_ctx;
vlm7d576b32004-08-20 13:37:45 +000020 } toBeSigned;
21 OBJECT_IDENTIFIER_t algorithm;
22 BIT_STRING_t signature;
23
24 /* Context for parsing across buffer boundaries */
vlm02296432004-09-29 13:19:37 +000025 asn_struct_ctx_t _asn_ctx;
vlm7d576b32004-08-20 13:37:45 +000026} Certificate_t;
27
vlm0b567bf2005-03-04 22:18:20 +000028/*** <<< FUNC-DECLS [Certificate] >>> ***/
29
30extern asn_TYPE_descriptor_t asn_DEF_Certificate;
31
vlmff3a6772004-09-05 10:37:18 +000032/*** <<< CODE [Certificate] >>> ***/
33
34static int
vlm02296432004-09-29 13:19:37 +000035memb_signature_1_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
vlmff3a6772004-09-05 10:37:18 +000036 asn_app_consume_bytes_f *app_errlog, void *app_key) {
vlmdb87f2e2005-02-15 03:40:07 +000037 const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
vlmff3a6772004-09-05 10:37:18 +000038 size_t size;
39
40 if(!sptr) {
41 _ASN_ERRLOG(app_errlog, app_key,
42 "%s: value not given (%s:%d)",
43 td->name, __FILE__, __LINE__);
44 return -1;
45 }
46
47 if(st->size > 0) {
48 /* Size in bits */
49 size = 8 * (st->size - 1) - (st->buf[0] & 0x7);
50 } else {
51 size = 0;
52 }
53
54 if((size <= 256)) {
55 /* Constraint check succeeded */
56 return 0;
57 } else {
58 _ASN_ERRLOG(app_errlog, app_key,
59 "%s: constraint failed (%s:%d)",
60 td->name, __FILE__, __LINE__);
61 return -1;
62 }
63}
64
65
vlm7d576b32004-08-20 13:37:45 +000066/*** <<< STAT-DEFS [Certificate] >>> ***/
67
vlm44fe49a2005-03-04 11:26:08 +000068static asn_TYPE_member_t asn_MBR_toBeSigned_2[] = {
vlmddd5a7d2004-09-10 09:18:20 +000069 { ATF_NOFLAGS, 0, offsetof(struct toBeSigned, version),
vlm7d576b32004-08-20 13:37:45 +000070 .tag = (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
71 .tag_mode = 0,
vlm02296432004-09-29 13:19:37 +000072 .type = (void *)&asn_DEF_INTEGER,
vlm0a9af512005-01-17 12:20:19 +000073 .memb_constraints = 0, /* Defer constraints checking to the member type */
vlm7d576b32004-08-20 13:37:45 +000074 .name = "version"
75 },
vlmddd5a7d2004-09-10 09:18:20 +000076 { ATF_NOFLAGS, 0, offsetof(struct toBeSigned, signature),
vlm7d576b32004-08-20 13:37:45 +000077 .tag = (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)),
78 .tag_mode = 0,
vlm02296432004-09-29 13:19:37 +000079 .type = (void *)&asn_DEF_OBJECT_IDENTIFIER,
vlm0a9af512005-01-17 12:20:19 +000080 .memb_constraints = 0, /* Defer constraints checking to the member type */
vlm7d576b32004-08-20 13:37:45 +000081 .name = "signature"
82 },
vlmddd5a7d2004-09-10 09:18:20 +000083 { ATF_NOFLAGS, 0, offsetof(struct toBeSigned, issuer),
vlm7d576b32004-08-20 13:37:45 +000084 .tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
85 .tag_mode = 0,
vlm02296432004-09-29 13:19:37 +000086 .type = (void *)&asn_DEF_Name,
vlm0a9af512005-01-17 12:20:19 +000087 .memb_constraints = 0, /* Defer constraints checking to the member type */
vlm7d576b32004-08-20 13:37:45 +000088 .name = "issuer"
89 },
90};
vlm44fe49a2005-03-04 11:26:08 +000091static ber_tlv_tag_t asn_DEF_toBeSigned_2_tags[] = {
vlm7d576b32004-08-20 13:37:45 +000092 (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
93};
vlm44fe49a2005-03-04 11:26:08 +000094static asn_TYPE_tag2member_t asn_MAP_toBeSigned_2_tag2el[] = {
vlm7d576b32004-08-20 13:37:45 +000095 { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* version at 21 */
96 { (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)), 1, 0, 0 }, /* signature at 22 */
vlm7f061a72005-02-25 08:19:34 +000097 { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 } /* issuer at 24 */
vlm7d576b32004-08-20 13:37:45 +000098};
vlm44fe49a2005-03-04 11:26:08 +000099static asn_SEQUENCE_specifics_t asn_SPC_toBeSigned_2_specs = {
vlm7d576b32004-08-20 13:37:45 +0000100 sizeof(struct toBeSigned),
vlm02296432004-09-29 13:19:37 +0000101 offsetof(struct toBeSigned, _asn_ctx),
vlm44fe49a2005-03-04 11:26:08 +0000102 asn_MAP_toBeSigned_2_tag2el,
vlm7d576b32004-08-20 13:37:45 +0000103 3, /* Count of tags in the map */
104 -1, /* Start extensions */
105 -1 /* Stop extensions */
106};
vlm1dc848e2004-09-07 06:44:29 +0000107static /* Use -fall-defs-global to expose */
vlm44fe49a2005-03-04 11:26:08 +0000108asn_TYPE_descriptor_t asn_DEF_toBeSigned_2 = {
vlm7d576b32004-08-20 13:37:45 +0000109 "toBeSigned",
vlm9de248e2004-10-20 15:50:55 +0000110 "toBeSigned",
vlm39ba4c42004-09-22 16:06:28 +0000111 SEQUENCE_free,
112 SEQUENCE_print,
vlm7d576b32004-08-20 13:37:45 +0000113 SEQUENCE_constraint,
114 SEQUENCE_decode_ber,
115 SEQUENCE_encode_der,
vlm2dbab7c2004-10-23 15:07:45 +0000116 SEQUENCE_decode_xer,
vlm39ba4c42004-09-22 16:06:28 +0000117 SEQUENCE_encode_xer,
vlm7d576b32004-08-20 13:37:45 +0000118 0, /* Use generic outmost tag fetcher */
vlm44fe49a2005-03-04 11:26:08 +0000119 asn_DEF_toBeSigned_2_tags,
120 sizeof(asn_DEF_toBeSigned_2_tags)
121 /sizeof(asn_DEF_toBeSigned_2_tags[0]), /* 1 */
122 asn_DEF_toBeSigned_2_tags, /* Same as above */
123 sizeof(asn_DEF_toBeSigned_2_tags)
124 /sizeof(asn_DEF_toBeSigned_2_tags[0]), /* 1 */
125 asn_MBR_toBeSigned_2,
vlm7d576b32004-08-20 13:37:45 +0000126 3, /* Elements count */
vlm44fe49a2005-03-04 11:26:08 +0000127 &asn_SPC_toBeSigned_2_specs /* Additional specs */
vlm7d576b32004-08-20 13:37:45 +0000128};
129
vlm44fe49a2005-03-04 11:26:08 +0000130static asn_TYPE_member_t asn_MBR_Certificate_1[] = {
vlmddd5a7d2004-09-10 09:18:20 +0000131 { ATF_NOFLAGS, 0, offsetof(struct Certificate, toBeSigned),
vlm7d576b32004-08-20 13:37:45 +0000132 .tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
133 .tag_mode = 0,
vlm44fe49a2005-03-04 11:26:08 +0000134 .type = (void *)&asn_DEF_toBeSigned_2,
vlm0a9af512005-01-17 12:20:19 +0000135 .memb_constraints = 0, /* Defer constraints checking to the member type */
vlm7d576b32004-08-20 13:37:45 +0000136 .name = "toBeSigned"
137 },
vlmddd5a7d2004-09-10 09:18:20 +0000138 { ATF_NOFLAGS, 0, offsetof(struct Certificate, algorithm),
vlm7d576b32004-08-20 13:37:45 +0000139 .tag = (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)),
140 .tag_mode = 0,
vlm02296432004-09-29 13:19:37 +0000141 .type = (void *)&asn_DEF_OBJECT_IDENTIFIER,
vlm0a9af512005-01-17 12:20:19 +0000142 .memb_constraints = 0, /* Defer constraints checking to the member type */
vlm7d576b32004-08-20 13:37:45 +0000143 .name = "algorithm"
144 },
vlmddd5a7d2004-09-10 09:18:20 +0000145 { ATF_NOFLAGS, 0, offsetof(struct Certificate, signature),
vlm7d576b32004-08-20 13:37:45 +0000146 .tag = (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)),
147 .tag_mode = 0,
vlm02296432004-09-29 13:19:37 +0000148 .type = (void *)&asn_DEF_BIT_STRING,
vlmff3a6772004-09-05 10:37:18 +0000149 .memb_constraints = memb_signature_1_constraint,
vlm7d576b32004-08-20 13:37:45 +0000150 .name = "signature"
151 },
152};
vlm44fe49a2005-03-04 11:26:08 +0000153static ber_tlv_tag_t asn_DEF_Certificate_1_tags[] = {
vlm7d576b32004-08-20 13:37:45 +0000154 (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
155};
vlm44fe49a2005-03-04 11:26:08 +0000156static asn_TYPE_tag2member_t asn_MAP_Certificate_1_tag2el[] = {
vlmff3a6772004-09-05 10:37:18 +0000157 { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 2, 0, 0 }, /* signature at 17 */
vlm7d576b32004-08-20 13:37:45 +0000158 { (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)), 1, 0, 0 }, /* algorithm at 16 */
vlm7f061a72005-02-25 08:19:34 +0000159 { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* toBeSigned at 21 */
vlm7d576b32004-08-20 13:37:45 +0000160};
vlm44fe49a2005-03-04 11:26:08 +0000161static asn_SEQUENCE_specifics_t asn_SPC_Certificate_1_specs = {
vlm7d576b32004-08-20 13:37:45 +0000162 sizeof(struct Certificate),
vlm02296432004-09-29 13:19:37 +0000163 offsetof(struct Certificate, _asn_ctx),
vlm44fe49a2005-03-04 11:26:08 +0000164 asn_MAP_Certificate_1_tag2el,
vlm7d576b32004-08-20 13:37:45 +0000165 3, /* Count of tags in the map */
166 -1, /* Start extensions */
167 -1 /* Stop extensions */
168};
vlm02296432004-09-29 13:19:37 +0000169asn_TYPE_descriptor_t asn_DEF_Certificate = {
vlm7d576b32004-08-20 13:37:45 +0000170 "Certificate",
vlm9de248e2004-10-20 15:50:55 +0000171 "Certificate",
vlm39ba4c42004-09-22 16:06:28 +0000172 SEQUENCE_free,
173 SEQUENCE_print,
vlm7d576b32004-08-20 13:37:45 +0000174 SEQUENCE_constraint,
175 SEQUENCE_decode_ber,
176 SEQUENCE_encode_der,
vlm2dbab7c2004-10-23 15:07:45 +0000177 SEQUENCE_decode_xer,
vlm39ba4c42004-09-22 16:06:28 +0000178 SEQUENCE_encode_xer,
vlm7d576b32004-08-20 13:37:45 +0000179 0, /* Use generic outmost tag fetcher */
vlm44fe49a2005-03-04 11:26:08 +0000180 asn_DEF_Certificate_1_tags,
181 sizeof(asn_DEF_Certificate_1_tags)
182 /sizeof(asn_DEF_Certificate_1_tags[0]), /* 1 */
183 asn_DEF_Certificate_1_tags, /* Same as above */
184 sizeof(asn_DEF_Certificate_1_tags)
185 /sizeof(asn_DEF_Certificate_1_tags[0]), /* 1 */
186 asn_MBR_Certificate_1,
vlm7d576b32004-08-20 13:37:45 +0000187 3, /* Elements count */
vlm44fe49a2005-03-04 11:26:08 +0000188 &asn_SPC_Certificate_1_specs /* Additional specs */
vlm7d576b32004-08-20 13:37:45 +0000189};
190
191
192/*** <<< INCLUDES [Name] >>> ***/
193
vlm7d576b32004-08-20 13:37:45 +0000194#include <asn_SEQUENCE_OF.h>
195#include <constr_SEQUENCE_OF.h>
196
vlm0b567bf2005-03-04 22:18:20 +0000197/*** <<< FWD-DECLS [Name] >>> ***/
vlm7d576b32004-08-20 13:37:45 +0000198
vlm5feb7522005-03-04 23:50:56 +0000199struct RelativeDistinguishedName;
vlm7d576b32004-08-20 13:37:45 +0000200
201/*** <<< TYPE-DECLS [Name] >>> ***/
202
vlm7d576b32004-08-20 13:37:45 +0000203typedef struct Name {
vlm0b567bf2005-03-04 22:18:20 +0000204 A_SEQUENCE_OF(struct RelativeDistinguishedName) list;
vlm7d576b32004-08-20 13:37:45 +0000205
206 /* Context for parsing across buffer boundaries */
vlm02296432004-09-29 13:19:37 +0000207 asn_struct_ctx_t _asn_ctx;
vlm7d576b32004-08-20 13:37:45 +0000208} Name_t;
209
vlm0b567bf2005-03-04 22:18:20 +0000210/*** <<< FUNC-DECLS [Name] >>> ***/
211
212extern asn_TYPE_descriptor_t asn_DEF_Name;
213
214/*** <<< POST-INCLUDE [Name] >>> ***/
215
216#include <RelativeDistinguishedName.h>
217
vlm7d576b32004-08-20 13:37:45 +0000218/*** <<< STAT-DEFS [Name] >>> ***/
219
vlm44fe49a2005-03-04 11:26:08 +0000220static asn_TYPE_member_t asn_MBR_Name_1[] = {
vlmddd5a7d2004-09-10 09:18:20 +0000221 { ATF_NOFLAGS, 0, 0,
vlm7d576b32004-08-20 13:37:45 +0000222 .tag = (ASN_TAG_CLASS_UNIVERSAL | (17 << 2)),
223 .tag_mode = 0,
vlm02296432004-09-29 13:19:37 +0000224 .type = (void *)&asn_DEF_RelativeDistinguishedName,
vlm0a9af512005-01-17 12:20:19 +0000225 .memb_constraints = 0, /* Defer constraints checking to the member type */
vlm7d576b32004-08-20 13:37:45 +0000226 .name = ""
227 },
228};
vlm44fe49a2005-03-04 11:26:08 +0000229static ber_tlv_tag_t asn_DEF_Name_1_tags[] = {
vlm7d576b32004-08-20 13:37:45 +0000230 (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
231};
vlm44fe49a2005-03-04 11:26:08 +0000232static asn_SET_OF_specifics_t asn_SPC_Name_1_specs = {
vlm7d576b32004-08-20 13:37:45 +0000233 sizeof(struct Name),
vlm02296432004-09-29 13:19:37 +0000234 offsetof(struct Name, _asn_ctx),
vlm39ba4c42004-09-22 16:06:28 +0000235 0, /* XER encoding is XMLDelimitedItemList */
vlm7d576b32004-08-20 13:37:45 +0000236};
vlm02296432004-09-29 13:19:37 +0000237asn_TYPE_descriptor_t asn_DEF_Name = {
vlm7d576b32004-08-20 13:37:45 +0000238 "Name",
vlm9de248e2004-10-20 15:50:55 +0000239 "Name",
vlm39ba4c42004-09-22 16:06:28 +0000240 SEQUENCE_OF_free,
241 SEQUENCE_OF_print,
vlm7d576b32004-08-20 13:37:45 +0000242 SEQUENCE_OF_constraint,
243 SEQUENCE_OF_decode_ber,
244 SEQUENCE_OF_encode_der,
vlm9de212e2005-02-14 20:31:31 +0000245 SEQUENCE_OF_decode_xer,
vlm39ba4c42004-09-22 16:06:28 +0000246 SEQUENCE_OF_encode_xer,
vlm7d576b32004-08-20 13:37:45 +0000247 0, /* Use generic outmost tag fetcher */
vlm44fe49a2005-03-04 11:26:08 +0000248 asn_DEF_Name_1_tags,
249 sizeof(asn_DEF_Name_1_tags)
250 /sizeof(asn_DEF_Name_1_tags[0]), /* 1 */
251 asn_DEF_Name_1_tags, /* Same as above */
252 sizeof(asn_DEF_Name_1_tags)
253 /sizeof(asn_DEF_Name_1_tags[0]), /* 1 */
254 asn_MBR_Name_1,
vlm7d576b32004-08-20 13:37:45 +0000255 1, /* Single element */
vlm44fe49a2005-03-04 11:26:08 +0000256 &asn_SPC_Name_1_specs /* Additional specs */
vlm7d576b32004-08-20 13:37:45 +0000257};
258
259
260/*** <<< INCLUDES [RelativeDistinguishedName] >>> ***/
261
262#include <IA5String.h>
263#include <asn_SET_OF.h>
264#include <constr_SET_OF.h>
265
vlm7d576b32004-08-20 13:37:45 +0000266/*** <<< TYPE-DECLS [RelativeDistinguishedName] >>> ***/
267
vlm7d576b32004-08-20 13:37:45 +0000268typedef struct RelativeDistinguishedName {
269 A_SET_OF(IA5String_t) list;
270
271 /* Context for parsing across buffer boundaries */
vlm02296432004-09-29 13:19:37 +0000272 asn_struct_ctx_t _asn_ctx;
vlm7d576b32004-08-20 13:37:45 +0000273} RelativeDistinguishedName_t;
274
vlm0b567bf2005-03-04 22:18:20 +0000275/*** <<< FUNC-DECLS [RelativeDistinguishedName] >>> ***/
276
277extern asn_TYPE_descriptor_t asn_DEF_RelativeDistinguishedName;
278
vlm7d576b32004-08-20 13:37:45 +0000279/*** <<< CTABLES [RelativeDistinguishedName] >>> ***/
280
vlm67d57fe2005-03-06 09:29:03 +0000281static int permitted_alphabet_table_2[256] = {
vlm7d576b32004-08-20 13:37:45 +00002820,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* */
2830,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* */
2840,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0, /* ,-. */
2851,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, /* 0 9 */
2860,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ABCDEFGHIJKLMNO */
2871,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, /* PQRSTUVWXYZ */
2880,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* abcdefghijklmno */
2891,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, /* pqrstuvwxyz */
290};
291
vlm67d57fe2005-03-06 09:29:03 +0000292static int check_permitted_alphabet_2(const void *sptr) {
293 int *table = permitted_alphabet_table_2;
vlm7d576b32004-08-20 13:37:45 +0000294 /* The underlying type is IA5String */
vlmdb87f2e2005-02-15 03:40:07 +0000295 const IA5String_t *st = (const IA5String_t *)sptr;
vlm824aefc2004-08-22 03:19:00 +0000296 const uint8_t *ch = st->buf;
297 const uint8_t *end = ch + st->size;
vlm7d576b32004-08-20 13:37:45 +0000298
299 for(; ch < end; ch++) {
300 uint8_t cv = *ch;
vlmcdf661b2004-08-22 12:47:03 +0000301 if(!table[cv]) return -1;
vlm7d576b32004-08-20 13:37:45 +0000302 }
vlmcdf661b2004-08-22 12:47:03 +0000303 return 0;
vlm7d576b32004-08-20 13:37:45 +0000304}
305
306
307/*** <<< CODE [RelativeDistinguishedName] >>> ***/
308
309static int
vlm44fe49a2005-03-04 11:26:08 +0000310memb_IA5String_1_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
vlm7d576b32004-08-20 13:37:45 +0000311 asn_app_consume_bytes_f *app_errlog, void *app_key) {
vlmdb87f2e2005-02-15 03:40:07 +0000312 const IA5String_t *st = (const IA5String_t *)sptr;
vlm7d576b32004-08-20 13:37:45 +0000313
314 if(!sptr) {
315 _ASN_ERRLOG(app_errlog, app_key,
vlm758530a2004-08-22 13:47:59 +0000316 "%s: value not given (%s:%d)",
317 td->name, __FILE__, __LINE__);
vlm7d576b32004-08-20 13:37:45 +0000318 return -1;
319 }
320
321
vlm67d57fe2005-03-06 09:29:03 +0000322 if(!check_permitted_alphabet_2(st)) {
vlm7d576b32004-08-20 13:37:45 +0000323 /* Constraint check succeeded */
vlmcdf661b2004-08-22 12:47:03 +0000324 return 0;
vlm7d576b32004-08-20 13:37:45 +0000325 } else {
326 _ASN_ERRLOG(app_errlog, app_key,
vlm758530a2004-08-22 13:47:59 +0000327 "%s: constraint failed (%s:%d)",
328 td->name, __FILE__, __LINE__);
vlm7d576b32004-08-20 13:37:45 +0000329 return -1;
330 }
331}
332
333
334/*** <<< STAT-DEFS [RelativeDistinguishedName] >>> ***/
335
vlm44fe49a2005-03-04 11:26:08 +0000336static asn_TYPE_member_t asn_MBR_RelativeDistinguishedName_1[] = {
vlmddd5a7d2004-09-10 09:18:20 +0000337 { ATF_NOFLAGS, 0, 0,
vlm7d576b32004-08-20 13:37:45 +0000338 .tag = (ASN_TAG_CLASS_UNIVERSAL | (22 << 2)),
339 .tag_mode = 0,
vlm02296432004-09-29 13:19:37 +0000340 .type = (void *)&asn_DEF_IA5String,
vlm44fe49a2005-03-04 11:26:08 +0000341 .memb_constraints = memb_IA5String_1_constraint,
vlm7d576b32004-08-20 13:37:45 +0000342 .name = ""
343 },
344};
vlm44fe49a2005-03-04 11:26:08 +0000345static ber_tlv_tag_t asn_DEF_RelativeDistinguishedName_1_tags[] = {
vlm7d576b32004-08-20 13:37:45 +0000346 (ASN_TAG_CLASS_UNIVERSAL | (17 << 2))
347};
vlm44fe49a2005-03-04 11:26:08 +0000348static asn_SET_OF_specifics_t asn_SPC_RelativeDistinguishedName_1_specs = {
vlm7d576b32004-08-20 13:37:45 +0000349 sizeof(struct RelativeDistinguishedName),
vlm02296432004-09-29 13:19:37 +0000350 offsetof(struct RelativeDistinguishedName, _asn_ctx),
vlm39ba4c42004-09-22 16:06:28 +0000351 0, /* XER encoding is XMLDelimitedItemList */
vlm7d576b32004-08-20 13:37:45 +0000352};
vlm02296432004-09-29 13:19:37 +0000353asn_TYPE_descriptor_t asn_DEF_RelativeDistinguishedName = {
vlm7d576b32004-08-20 13:37:45 +0000354 "RelativeDistinguishedName",
vlm9de248e2004-10-20 15:50:55 +0000355 "RelativeDistinguishedName",
vlm39ba4c42004-09-22 16:06:28 +0000356 SET_OF_free,
357 SET_OF_print,
vlm7d576b32004-08-20 13:37:45 +0000358 SET_OF_constraint,
359 SET_OF_decode_ber,
360 SET_OF_encode_der,
vlm9de212e2005-02-14 20:31:31 +0000361 SET_OF_decode_xer,
vlm39ba4c42004-09-22 16:06:28 +0000362 SET_OF_encode_xer,
vlm7d576b32004-08-20 13:37:45 +0000363 0, /* Use generic outmost tag fetcher */
vlm44fe49a2005-03-04 11:26:08 +0000364 asn_DEF_RelativeDistinguishedName_1_tags,
365 sizeof(asn_DEF_RelativeDistinguishedName_1_tags)
366 /sizeof(asn_DEF_RelativeDistinguishedName_1_tags[0]), /* 1 */
367 asn_DEF_RelativeDistinguishedName_1_tags, /* Same as above */
368 sizeof(asn_DEF_RelativeDistinguishedName_1_tags)
369 /sizeof(asn_DEF_RelativeDistinguishedName_1_tags[0]), /* 1 */
370 asn_MBR_RelativeDistinguishedName_1,
vlm7d576b32004-08-20 13:37:45 +0000371 1, /* Single element */
vlm44fe49a2005-03-04 11:26:08 +0000372 &asn_SPC_RelativeDistinguishedName_1_specs /* Additional specs */
vlm7d576b32004-08-20 13:37:45 +0000373};
374