blob: 1268ffc153192e4653771bc5d05d3496d4eb4f2b [file] [log] [blame]
Lev Walkin006de1c2004-08-20 13:37:45 +00001
Lev Walkina00d6b32006-03-21 03:40:38 +00002/*** <<< INCLUDES [SIGNED] >>> ***/
Lev Walkin006de1c2004-08-20 13:37:45 +00003
4#include <OBJECT_IDENTIFIER.h>
5#include <BIT_STRING.h>
6#include <INTEGER.h>
Lev Walkin22b5ed42006-09-13 02:51:20 +00007#include "Name.h"
Lev Walkin006de1c2004-08-20 13:37:45 +00008#include <constr_SEQUENCE.h>
9
Lev Walkina00d6b32006-03-21 03:40:38 +000010/*** <<< TYPE-DECLS [SIGNED] >>> ***/
Lev Walkin006de1c2004-08-20 13:37:45 +000011
Lev Walkina00d6b32006-03-21 03:40:38 +000012typedef struct SIGNED_15P0 {
Lev Walkin006de1c2004-08-20 13:37:45 +000013 struct toBeSigned {
14 INTEGER_t version;
15 OBJECT_IDENTIFIER_t signature;
16 Name_t issuer;
17
18 /* Context for parsing across buffer boundaries */
Lev Walkindfae9752004-09-29 13:19:37 +000019 asn_struct_ctx_t _asn_ctx;
Lev Walkin006de1c2004-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 */
Lev Walkindfae9752004-09-29 13:19:37 +000025 asn_struct_ctx_t _asn_ctx;
Lev Walkina00d6b32006-03-21 03:40:38 +000026} SIGNED_15P0_t;
Lev Walkin006de1c2004-08-20 13:37:45 +000027
Lev Walkina00d6b32006-03-21 03:40:38 +000028/*** <<< FUNC-DECLS [SIGNED] >>> ***/
Lev Walkinc8285712005-03-04 22:18:20 +000029
Lev Walkina00d6b32006-03-21 03:40:38 +000030extern asn_TYPE_descriptor_t asn_DEF_SIGNED_15P0;
Bi-Ruei, Chiu1fa31c92016-05-16 13:50:09 +080031extern asn_SEQUENCE_specifics_t asn_SPC_SIGNED_15P0_specs_1;
32extern asn_TYPE_member_t asn_MBR_SIGNED_15P0_1[3];
Lev Walkinc8285712005-03-04 22:18:20 +000033
Lev Walkina00d6b32006-03-21 03:40:38 +000034/*** <<< CODE [SIGNED] >>> ***/
Lev Walkindaa7d2b2004-09-05 10:37:18 +000035
36static int
Lev Walkin59b176e2005-11-26 11:25:14 +000037memb_signature_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
Lev Walkin1eded352006-07-13 11:19:01 +000038 asn_app_constraint_failed_f *ctfailcb, void *app_key) {
Lev Walkin8a7af0e2005-02-15 03:40:07 +000039 const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
Lev Walkindaa7d2b2004-09-05 10:37:18 +000040 size_t size;
41
42 if(!sptr) {
Lev Walkin7c1dc052016-03-14 03:08:15 -070043 ASN__CTFAIL(app_key, td, sptr,
Lev Walkindaa7d2b2004-09-05 10:37:18 +000044 "%s: value not given (%s:%d)",
45 td->name, __FILE__, __LINE__);
46 return -1;
47 }
48
49 if(st->size > 0) {
50 /* Size in bits */
Lev Walkin1b1c5fc2006-09-08 19:38:11 +000051 size = 8 * st->size - (st->bits_unused & 0x07);
Lev Walkindaa7d2b2004-09-05 10:37:18 +000052 } else {
53 size = 0;
54 }
55
56 if((size <= 256)) {
57 /* Constraint check succeeded */
58 return 0;
59 } else {
Lev Walkin7c1dc052016-03-14 03:08:15 -070060 ASN__CTFAIL(app_key, td, sptr,
Lev Walkindaa7d2b2004-09-05 10:37:18 +000061 "%s: constraint failed (%s:%d)",
62 td->name, __FILE__, __LINE__);
63 return -1;
64 }
65}
66
67
Lev Walkina00d6b32006-03-21 03:40:38 +000068/*** <<< STAT-DEFS [SIGNED] >>> ***/
Lev Walkin006de1c2004-08-20 13:37:45 +000069
Lev Walkine0272aa2005-03-04 11:26:08 +000070static asn_TYPE_member_t asn_MBR_toBeSigned_2[] = {
Lev Walkincc93b0f2004-09-10 09:18:20 +000071 { ATF_NOFLAGS, 0, offsetof(struct toBeSigned, version),
Lev Walkin006de1c2004-08-20 13:37:45 +000072 .tag = (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
73 .tag_mode = 0,
Lev Walkinae7bf3f2005-08-29 10:31:14 +000074 .type = &asn_DEF_INTEGER,
Lev Walkinba58e1b2005-01-17 12:20:19 +000075 .memb_constraints = 0, /* Defer constraints checking to the member type */
Lev Walkinb33425f2017-07-14 14:59:52 +040076 .oer_constraints = 0, /* OER is not compiled, use -gen-OER */
Lev Walkin59b176e2005-11-26 11:25:14 +000077 .per_constraints = 0, /* PER is not compiled, use -gen-PER */
78 .default_value = 0,
Lev Walkin006de1c2004-08-20 13:37:45 +000079 .name = "version"
80 },
Lev Walkincc93b0f2004-09-10 09:18:20 +000081 { ATF_NOFLAGS, 0, offsetof(struct toBeSigned, signature),
Lev Walkin006de1c2004-08-20 13:37:45 +000082 .tag = (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)),
83 .tag_mode = 0,
Lev Walkinae7bf3f2005-08-29 10:31:14 +000084 .type = &asn_DEF_OBJECT_IDENTIFIER,
Lev Walkinba58e1b2005-01-17 12:20:19 +000085 .memb_constraints = 0, /* Defer constraints checking to the member type */
Lev Walkinb33425f2017-07-14 14:59:52 +040086 .oer_constraints = 0, /* OER is not compiled, use -gen-OER */
Lev Walkin59b176e2005-11-26 11:25:14 +000087 .per_constraints = 0, /* PER is not compiled, use -gen-PER */
88 .default_value = 0,
Lev Walkin006de1c2004-08-20 13:37:45 +000089 .name = "signature"
90 },
Lev Walkincc93b0f2004-09-10 09:18:20 +000091 { ATF_NOFLAGS, 0, offsetof(struct toBeSigned, issuer),
Lev Walkin006de1c2004-08-20 13:37:45 +000092 .tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
93 .tag_mode = 0,
Lev Walkinae7bf3f2005-08-29 10:31:14 +000094 .type = &asn_DEF_Name,
Lev Walkinba58e1b2005-01-17 12:20:19 +000095 .memb_constraints = 0, /* Defer constraints checking to the member type */
Lev Walkinb33425f2017-07-14 14:59:52 +040096 .oer_constraints = 0, /* OER is not compiled, use -gen-OER */
Lev Walkin59b176e2005-11-26 11:25:14 +000097 .per_constraints = 0, /* PER is not compiled, use -gen-PER */
98 .default_value = 0,
Lev Walkin006de1c2004-08-20 13:37:45 +000099 .name = "issuer"
100 },
101};
Lev Walkina7591b52014-10-12 18:37:35 -0700102static const ber_tlv_tag_t asn_DEF_toBeSigned_tags_2[] = {
Lev Walkin006de1c2004-08-20 13:37:45 +0000103 (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
104};
Lev Walkina7591b52014-10-12 18:37:35 -0700105static const asn_TYPE_tag2member_t asn_MAP_toBeSigned_tag2el_2[] = {
Lev Walkin4062b012013-10-11 14:29:38 -0700106 { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* version */
107 { (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)), 1, 0, 0 }, /* signature */
108 { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 } /* issuer */
Lev Walkin006de1c2004-08-20 13:37:45 +0000109};
Lev Walkin59b176e2005-11-26 11:25:14 +0000110static asn_SEQUENCE_specifics_t asn_SPC_toBeSigned_specs_2 = {
Lev Walkin006de1c2004-08-20 13:37:45 +0000111 sizeof(struct toBeSigned),
Lev Walkindfae9752004-09-29 13:19:37 +0000112 offsetof(struct toBeSigned, _asn_ctx),
Lev Walkin59b176e2005-11-26 11:25:14 +0000113 asn_MAP_toBeSigned_tag2el_2,
Lev Walkin006de1c2004-08-20 13:37:45 +0000114 3, /* Count of tags in the map */
Lev Walkin59b176e2005-11-26 11:25:14 +0000115 0, 0, 0, /* Optional elements (not needed) */
Lev Walkin006de1c2004-08-20 13:37:45 +0000116 -1, /* Start extensions */
117 -1 /* Stop extensions */
118};
Lev Walkind04430c2004-09-07 06:44:29 +0000119static /* Use -fall-defs-global to expose */
Lev Walkine0272aa2005-03-04 11:26:08 +0000120asn_TYPE_descriptor_t asn_DEF_toBeSigned_2 = {
Lev Walkin006de1c2004-08-20 13:37:45 +0000121 "toBeSigned",
Lev Walkindc06f6b2004-10-20 15:50:55 +0000122 "toBeSigned",
Lev Walkina9cc46e2004-09-22 16:06:28 +0000123 SEQUENCE_free,
124 SEQUENCE_print,
Lev Walkin006de1c2004-08-20 13:37:45 +0000125 SEQUENCE_constraint,
126 SEQUENCE_decode_ber,
127 SEQUENCE_encode_der,
Lev Walkin61b40d82004-10-23 15:07:45 +0000128 SEQUENCE_decode_xer,
Lev Walkina9cc46e2004-09-22 16:06:28 +0000129 SEQUENCE_encode_xer,
Lev Walkinba68c912017-07-06 07:52:39 -0700130 0, 0, /* No OER support, use "-gen-OER" to enable */
Lev Walkinb33425f2017-07-14 14:59:52 +0400131 0, 0, /* No PER support, use "-gen-PER" to enable */
Lev Walkin006de1c2004-08-20 13:37:45 +0000132 0, /* Use generic outmost tag fetcher */
Lev Walkin59b176e2005-11-26 11:25:14 +0000133 asn_DEF_toBeSigned_tags_2,
134 sizeof(asn_DEF_toBeSigned_tags_2)
135 /sizeof(asn_DEF_toBeSigned_tags_2[0]), /* 1 */
136 asn_DEF_toBeSigned_tags_2, /* Same as above */
137 sizeof(asn_DEF_toBeSigned_tags_2)
138 /sizeof(asn_DEF_toBeSigned_tags_2[0]), /* 1 */
Lev Walkinb33425f2017-07-14 14:59:52 +0400139 0, /* No OER visible constraints */
Lev Walkin59b176e2005-11-26 11:25:14 +0000140 0, /* No PER visible constraints */
Lev Walkine0272aa2005-03-04 11:26:08 +0000141 asn_MBR_toBeSigned_2,
Lev Walkin006de1c2004-08-20 13:37:45 +0000142 3, /* Elements count */
Lev Walkin59b176e2005-11-26 11:25:14 +0000143 &asn_SPC_toBeSigned_specs_2 /* Additional specs */
Lev Walkin006de1c2004-08-20 13:37:45 +0000144};
145
Bi-Ruei, Chiu1fa31c92016-05-16 13:50:09 +0800146asn_TYPE_member_t asn_MBR_SIGNED_15P0_1[] = {
Lev Walkina00d6b32006-03-21 03:40:38 +0000147 { ATF_NOFLAGS, 0, offsetof(struct SIGNED_15P0, toBeSigned),
Lev Walkin006de1c2004-08-20 13:37:45 +0000148 .tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
149 .tag_mode = 0,
Lev Walkinae7bf3f2005-08-29 10:31:14 +0000150 .type = &asn_DEF_toBeSigned_2,
Lev Walkinba58e1b2005-01-17 12:20:19 +0000151 .memb_constraints = 0, /* Defer constraints checking to the member type */
Lev Walkinb33425f2017-07-14 14:59:52 +0400152 .oer_constraints = 0, /* OER is not compiled, use -gen-OER */
Lev Walkin59b176e2005-11-26 11:25:14 +0000153 .per_constraints = 0, /* PER is not compiled, use -gen-PER */
154 .default_value = 0,
Lev Walkin006de1c2004-08-20 13:37:45 +0000155 .name = "toBeSigned"
156 },
Lev Walkina00d6b32006-03-21 03:40:38 +0000157 { ATF_NOFLAGS, 0, offsetof(struct SIGNED_15P0, algorithm),
Lev Walkin006de1c2004-08-20 13:37:45 +0000158 .tag = (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)),
159 .tag_mode = 0,
Lev Walkinae7bf3f2005-08-29 10:31:14 +0000160 .type = &asn_DEF_OBJECT_IDENTIFIER,
Lev Walkinba58e1b2005-01-17 12:20:19 +0000161 .memb_constraints = 0, /* Defer constraints checking to the member type */
Lev Walkinb33425f2017-07-14 14:59:52 +0400162 .oer_constraints = 0, /* OER is not compiled, use -gen-OER */
Lev Walkin59b176e2005-11-26 11:25:14 +0000163 .per_constraints = 0, /* PER is not compiled, use -gen-PER */
164 .default_value = 0,
Lev Walkin006de1c2004-08-20 13:37:45 +0000165 .name = "algorithm"
166 },
Lev Walkina00d6b32006-03-21 03:40:38 +0000167 { ATF_NOFLAGS, 0, offsetof(struct SIGNED_15P0, signature),
Lev Walkin006de1c2004-08-20 13:37:45 +0000168 .tag = (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)),
169 .tag_mode = 0,
Lev Walkinae7bf3f2005-08-29 10:31:14 +0000170 .type = &asn_DEF_BIT_STRING,
Lev Walkin59b176e2005-11-26 11:25:14 +0000171 .memb_constraints = memb_signature_constraint_1,
Lev Walkinb33425f2017-07-14 14:59:52 +0400172 .oer_constraints = 0, /* OER is not compiled, use -gen-OER */
Lev Walkin59b176e2005-11-26 11:25:14 +0000173 .per_constraints = 0, /* PER is not compiled, use -gen-PER */
174 .default_value = 0,
Lev Walkin006de1c2004-08-20 13:37:45 +0000175 .name = "signature"
176 },
177};
Lev Walkina7591b52014-10-12 18:37:35 -0700178static const ber_tlv_tag_t asn_DEF_SIGNED_15P0_tags_1[] = {
Lev Walkin006de1c2004-08-20 13:37:45 +0000179 (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
180};
Lev Walkina7591b52014-10-12 18:37:35 -0700181static const asn_TYPE_tag2member_t asn_MAP_SIGNED_15P0_tag2el_1[] = {
Lev Walkin4062b012013-10-11 14:29:38 -0700182 { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 2, 0, 0 }, /* signature */
183 { (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)), 1, 0, 0 }, /* algorithm */
184 { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* toBeSigned */
Lev Walkin006de1c2004-08-20 13:37:45 +0000185};
Bi-Ruei, Chiu1fa31c92016-05-16 13:50:09 +0800186asn_SEQUENCE_specifics_t asn_SPC_SIGNED_15P0_specs_1 = {
Lev Walkina00d6b32006-03-21 03:40:38 +0000187 sizeof(struct SIGNED_15P0),
188 offsetof(struct SIGNED_15P0, _asn_ctx),
189 asn_MAP_SIGNED_15P0_tag2el_1,
Lev Walkin006de1c2004-08-20 13:37:45 +0000190 3, /* Count of tags in the map */
Lev Walkin59b176e2005-11-26 11:25:14 +0000191 0, 0, 0, /* Optional elements (not needed) */
Lev Walkin006de1c2004-08-20 13:37:45 +0000192 -1, /* Start extensions */
193 -1 /* Stop extensions */
194};
Lev Walkina00d6b32006-03-21 03:40:38 +0000195asn_TYPE_descriptor_t asn_DEF_SIGNED_15P0 = {
196 "SIGNED",
197 "SIGNED",
Lev Walkina9cc46e2004-09-22 16:06:28 +0000198 SEQUENCE_free,
199 SEQUENCE_print,
Lev Walkin006de1c2004-08-20 13:37:45 +0000200 SEQUENCE_constraint,
201 SEQUENCE_decode_ber,
202 SEQUENCE_encode_der,
Lev Walkin61b40d82004-10-23 15:07:45 +0000203 SEQUENCE_decode_xer,
Lev Walkina9cc46e2004-09-22 16:06:28 +0000204 SEQUENCE_encode_xer,
Lev Walkinba68c912017-07-06 07:52:39 -0700205 0, 0, /* No OER support, use "-gen-OER" to enable */
Lev Walkinb33425f2017-07-14 14:59:52 +0400206 0, 0, /* No PER support, use "-gen-PER" to enable */
Lev Walkin006de1c2004-08-20 13:37:45 +0000207 0, /* Use generic outmost tag fetcher */
Lev Walkina00d6b32006-03-21 03:40:38 +0000208 asn_DEF_SIGNED_15P0_tags_1,
209 sizeof(asn_DEF_SIGNED_15P0_tags_1)
210 /sizeof(asn_DEF_SIGNED_15P0_tags_1[0]), /* 1 */
211 asn_DEF_SIGNED_15P0_tags_1, /* Same as above */
212 sizeof(asn_DEF_SIGNED_15P0_tags_1)
213 /sizeof(asn_DEF_SIGNED_15P0_tags_1[0]), /* 1 */
Lev Walkinb33425f2017-07-14 14:59:52 +0400214 0, /* No OER visible constraints */
Lev Walkina00d6b32006-03-21 03:40:38 +0000215 0, /* No PER visible constraints */
216 asn_MBR_SIGNED_15P0_1,
217 3, /* Elements count */
218 &asn_SPC_SIGNED_15P0_specs_1 /* Additional specs */
219};
220
221
222/*** <<< INCLUDES [Certificate] >>> ***/
223
Lev Walkin22b5ed42006-09-13 02:51:20 +0000224#include "SIGNED.h"
Lev Walkina00d6b32006-03-21 03:40:38 +0000225
226/*** <<< TYPE-DECLS [Certificate] >>> ***/
227
228typedef SIGNED_15P0_t Certificate_t;
229
230/*** <<< FUNC-DECLS [Certificate] >>> ***/
231
232extern asn_TYPE_descriptor_t asn_DEF_Certificate;
233asn_struct_free_f Certificate_free;
234asn_struct_print_f Certificate_print;
235asn_constr_check_f Certificate_constraint;
236ber_type_decoder_f Certificate_decode_ber;
237der_type_encoder_f Certificate_encode_der;
238xer_type_decoder_f Certificate_decode_xer;
239xer_type_encoder_f Certificate_encode_xer;
240
241/*** <<< CODE [Certificate] >>> ***/
242
Lev Walkina00d6b32006-03-21 03:40:38 +0000243/*
244 * This type is implemented using SIGNED_15P0,
245 * so here we adjust the DEF accordingly.
246 */
Lev Walkina00d6b32006-03-21 03:40:38 +0000247
248/*** <<< STAT-DEFS [Certificate] >>> ***/
249
Lev Walkina7591b52014-10-12 18:37:35 -0700250static const ber_tlv_tag_t asn_DEF_Certificate_tags_1[] = {
Lev Walkina00d6b32006-03-21 03:40:38 +0000251 (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
252};
253asn_TYPE_descriptor_t asn_DEF_Certificate = {
254 "Certificate",
255 "Certificate",
Bi-Ruei, Chiu1fa31c92016-05-16 13:50:09 +0800256 SEQUENCE_free,
257 SEQUENCE_print,
258 SEQUENCE_constraint,
259 SEQUENCE_decode_ber,
260 SEQUENCE_encode_der,
261 SEQUENCE_decode_xer,
262 SEQUENCE_encode_xer,
Lev Walkinba68c912017-07-06 07:52:39 -0700263 0, 0, /* No OER support, use "-gen-OER" to enable */
Lev Walkinb33425f2017-07-14 14:59:52 +0400264 0, 0, /* No PER support, use "-gen-PER" to enable */
Lev Walkina00d6b32006-03-21 03:40:38 +0000265 0, /* Use generic outmost tag fetcher */
Lev Walkin59b176e2005-11-26 11:25:14 +0000266 asn_DEF_Certificate_tags_1,
267 sizeof(asn_DEF_Certificate_tags_1)
268 /sizeof(asn_DEF_Certificate_tags_1[0]), /* 1 */
269 asn_DEF_Certificate_tags_1, /* Same as above */
270 sizeof(asn_DEF_Certificate_tags_1)
271 /sizeof(asn_DEF_Certificate_tags_1[0]), /* 1 */
Lev Walkinb33425f2017-07-14 14:59:52 +0400272 0, /* No OER visible constraints */
Lev Walkin59b176e2005-11-26 11:25:14 +0000273 0, /* No PER visible constraints */
Bi-Ruei, Chiu1fa31c92016-05-16 13:50:09 +0800274 asn_MBR_SIGNED_15P0_1,
275 3, /* Elements count */
276 &asn_SPC_SIGNED_15P0_specs_1 /* Additional specs */
Lev Walkin006de1c2004-08-20 13:37:45 +0000277};
278
279
280/*** <<< INCLUDES [Name] >>> ***/
281
Lev Walkin006de1c2004-08-20 13:37:45 +0000282#include <asn_SEQUENCE_OF.h>
283#include <constr_SEQUENCE_OF.h>
284
Lev Walkinc8285712005-03-04 22:18:20 +0000285/*** <<< FWD-DECLS [Name] >>> ***/
Lev Walkin006de1c2004-08-20 13:37:45 +0000286
Lev Walkinbf56d542005-03-04 23:50:56 +0000287struct RelativeDistinguishedName;
Lev Walkin006de1c2004-08-20 13:37:45 +0000288
289/*** <<< TYPE-DECLS [Name] >>> ***/
290
Lev Walkin006de1c2004-08-20 13:37:45 +0000291typedef struct Name {
Lev Walkinc8285712005-03-04 22:18:20 +0000292 A_SEQUENCE_OF(struct RelativeDistinguishedName) list;
Lev Walkin006de1c2004-08-20 13:37:45 +0000293
294 /* Context for parsing across buffer boundaries */
Lev Walkindfae9752004-09-29 13:19:37 +0000295 asn_struct_ctx_t _asn_ctx;
Lev Walkin006de1c2004-08-20 13:37:45 +0000296} Name_t;
297
Lev Walkinc8285712005-03-04 22:18:20 +0000298/*** <<< FUNC-DECLS [Name] >>> ***/
299
300extern asn_TYPE_descriptor_t asn_DEF_Name;
Bi-Ruei, Chiu1fa31c92016-05-16 13:50:09 +0800301extern asn_SET_OF_specifics_t asn_SPC_Name_specs_1;
302extern asn_TYPE_member_t asn_MBR_Name_1[1];
Lev Walkinc8285712005-03-04 22:18:20 +0000303
304/*** <<< POST-INCLUDE [Name] >>> ***/
305
Lev Walkin22b5ed42006-09-13 02:51:20 +0000306#include "RelativeDistinguishedName.h"
Lev Walkinc8285712005-03-04 22:18:20 +0000307
Lev Walkin006de1c2004-08-20 13:37:45 +0000308/*** <<< STAT-DEFS [Name] >>> ***/
309
Bi-Ruei, Chiu1fa31c92016-05-16 13:50:09 +0800310asn_TYPE_member_t asn_MBR_Name_1[] = {
Lev Walkin8eb4b572005-08-16 16:57:17 +0000311 { ATF_POINTER, 0, 0,
Lev Walkin006de1c2004-08-20 13:37:45 +0000312 .tag = (ASN_TAG_CLASS_UNIVERSAL | (17 << 2)),
313 .tag_mode = 0,
Lev Walkinae7bf3f2005-08-29 10:31:14 +0000314 .type = &asn_DEF_RelativeDistinguishedName,
Lev Walkinba58e1b2005-01-17 12:20:19 +0000315 .memb_constraints = 0, /* Defer constraints checking to the member type */
Lev Walkinb33425f2017-07-14 14:59:52 +0400316 .oer_constraints = 0, /* OER is not compiled, use -gen-OER */
Lev Walkin59b176e2005-11-26 11:25:14 +0000317 .per_constraints = 0, /* PER is not compiled, use -gen-PER */
318 .default_value = 0,
Lev Walkin006de1c2004-08-20 13:37:45 +0000319 .name = ""
320 },
321};
Lev Walkina7591b52014-10-12 18:37:35 -0700322static const ber_tlv_tag_t asn_DEF_Name_tags_1[] = {
Lev Walkin006de1c2004-08-20 13:37:45 +0000323 (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
324};
Bi-Ruei, Chiu1fa31c92016-05-16 13:50:09 +0800325asn_SET_OF_specifics_t asn_SPC_Name_specs_1 = {
Lev Walkin006de1c2004-08-20 13:37:45 +0000326 sizeof(struct Name),
Lev Walkindfae9752004-09-29 13:19:37 +0000327 offsetof(struct Name, _asn_ctx),
Lev Walkina9cc46e2004-09-22 16:06:28 +0000328 0, /* XER encoding is XMLDelimitedItemList */
Lev Walkin006de1c2004-08-20 13:37:45 +0000329};
Lev Walkindfae9752004-09-29 13:19:37 +0000330asn_TYPE_descriptor_t asn_DEF_Name = {
Lev Walkin006de1c2004-08-20 13:37:45 +0000331 "Name",
Lev Walkindc06f6b2004-10-20 15:50:55 +0000332 "Name",
Lev Walkina9cc46e2004-09-22 16:06:28 +0000333 SEQUENCE_OF_free,
334 SEQUENCE_OF_print,
Lev Walkin006de1c2004-08-20 13:37:45 +0000335 SEQUENCE_OF_constraint,
336 SEQUENCE_OF_decode_ber,
337 SEQUENCE_OF_encode_der,
Lev Walkinb2230802005-02-14 20:31:31 +0000338 SEQUENCE_OF_decode_xer,
Lev Walkina9cc46e2004-09-22 16:06:28 +0000339 SEQUENCE_OF_encode_xer,
Lev Walkinba68c912017-07-06 07:52:39 -0700340 0, 0, /* No OER support, use "-gen-OER" to enable */
Lev Walkinb33425f2017-07-14 14:59:52 +0400341 0, 0, /* No PER support, use "-gen-PER" to enable */
Lev Walkin006de1c2004-08-20 13:37:45 +0000342 0, /* Use generic outmost tag fetcher */
Lev Walkin59b176e2005-11-26 11:25:14 +0000343 asn_DEF_Name_tags_1,
344 sizeof(asn_DEF_Name_tags_1)
345 /sizeof(asn_DEF_Name_tags_1[0]), /* 1 */
346 asn_DEF_Name_tags_1, /* Same as above */
347 sizeof(asn_DEF_Name_tags_1)
348 /sizeof(asn_DEF_Name_tags_1[0]), /* 1 */
Lev Walkinb33425f2017-07-14 14:59:52 +0400349 0, /* No OER visible constraints */
Lev Walkin59b176e2005-11-26 11:25:14 +0000350 0, /* No PER visible constraints */
Lev Walkine0272aa2005-03-04 11:26:08 +0000351 asn_MBR_Name_1,
Lev Walkin006de1c2004-08-20 13:37:45 +0000352 1, /* Single element */
Lev Walkin59b176e2005-11-26 11:25:14 +0000353 &asn_SPC_Name_specs_1 /* Additional specs */
Lev Walkin006de1c2004-08-20 13:37:45 +0000354};
355
356
357/*** <<< INCLUDES [RelativeDistinguishedName] >>> ***/
358
359#include <IA5String.h>
360#include <asn_SET_OF.h>
361#include <constr_SET_OF.h>
362
Lev Walkin006de1c2004-08-20 13:37:45 +0000363/*** <<< TYPE-DECLS [RelativeDistinguishedName] >>> ***/
364
Lev Walkin006de1c2004-08-20 13:37:45 +0000365typedef struct RelativeDistinguishedName {
366 A_SET_OF(IA5String_t) list;
367
368 /* Context for parsing across buffer boundaries */
Lev Walkindfae9752004-09-29 13:19:37 +0000369 asn_struct_ctx_t _asn_ctx;
Lev Walkin006de1c2004-08-20 13:37:45 +0000370} RelativeDistinguishedName_t;
371
Lev Walkinc8285712005-03-04 22:18:20 +0000372/*** <<< FUNC-DECLS [RelativeDistinguishedName] >>> ***/
373
374extern asn_TYPE_descriptor_t asn_DEF_RelativeDistinguishedName;
Bi-Ruei, Chiu1fa31c92016-05-16 13:50:09 +0800375extern asn_SET_OF_specifics_t asn_SPC_RelativeDistinguishedName_specs_1;
376extern asn_TYPE_member_t asn_MBR_RelativeDistinguishedName_1[1];
Lev Walkinc8285712005-03-04 22:18:20 +0000377
Lev Walkin006de1c2004-08-20 13:37:45 +0000378/*** <<< CTABLES [RelativeDistinguishedName] >>> ***/
379
Lev Walkina7591b52014-10-12 18:37:35 -0700380static const int permitted_alphabet_table_2[256] = {
Lev Walkin5b62ca82006-09-21 01:52:07 +0000381 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
382 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
383 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, /* ,-. */
384 4, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, /* 0 9 */
385 0, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20, /* ABCDEFGHIJKLMNO */
38621,22,23,24,25,26,27,28,29,30,31, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */
387 0,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46, /* abcdefghijklmno */
38847,48,49,50,51,52,53,54,55,56,57, 0, 0, 0, 0, 0, /* pqrstuvwxyz */
Lev Walkin006de1c2004-08-20 13:37:45 +0000389};
390
Lev Walkine8318b82005-03-06 09:29:03 +0000391static int check_permitted_alphabet_2(const void *sptr) {
Lev Walkina7591b52014-10-12 18:37:35 -0700392 const int *table = permitted_alphabet_table_2;
Lev Walkin006de1c2004-08-20 13:37:45 +0000393 /* The underlying type is IA5String */
Lev Walkin8a7af0e2005-02-15 03:40:07 +0000394 const IA5String_t *st = (const IA5String_t *)sptr;
Lev Walkina09e5da2004-08-22 03:19:00 +0000395 const uint8_t *ch = st->buf;
396 const uint8_t *end = ch + st->size;
Lev Walkin006de1c2004-08-20 13:37:45 +0000397
398 for(; ch < end; ch++) {
399 uint8_t cv = *ch;
Lev Walkin775885e2004-08-22 12:47:03 +0000400 if(!table[cv]) return -1;
Lev Walkin006de1c2004-08-20 13:37:45 +0000401 }
Lev Walkin775885e2004-08-22 12:47:03 +0000402 return 0;
Lev Walkin006de1c2004-08-20 13:37:45 +0000403}
404
405
406/*** <<< CODE [RelativeDistinguishedName] >>> ***/
407
408static int
Lev Walkin59b176e2005-11-26 11:25:14 +0000409memb_IA5String_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
Lev Walkin1eded352006-07-13 11:19:01 +0000410 asn_app_constraint_failed_f *ctfailcb, void *app_key) {
Lev Walkin8a7af0e2005-02-15 03:40:07 +0000411 const IA5String_t *st = (const IA5String_t *)sptr;
Lev Walkin006de1c2004-08-20 13:37:45 +0000412
413 if(!sptr) {
Lev Walkin7c1dc052016-03-14 03:08:15 -0700414 ASN__CTFAIL(app_key, td, sptr,
Lev Walkin16835b62004-08-22 13:47:59 +0000415 "%s: value not given (%s:%d)",
416 td->name, __FILE__, __LINE__);
Lev Walkin006de1c2004-08-20 13:37:45 +0000417 return -1;
418 }
419
420
Lev Walkine8318b82005-03-06 09:29:03 +0000421 if(!check_permitted_alphabet_2(st)) {
Lev Walkin006de1c2004-08-20 13:37:45 +0000422 /* Constraint check succeeded */
Lev Walkin775885e2004-08-22 12:47:03 +0000423 return 0;
Lev Walkin006de1c2004-08-20 13:37:45 +0000424 } else {
Lev Walkin7c1dc052016-03-14 03:08:15 -0700425 ASN__CTFAIL(app_key, td, sptr,
Lev Walkin16835b62004-08-22 13:47:59 +0000426 "%s: constraint failed (%s:%d)",
427 td->name, __FILE__, __LINE__);
Lev Walkin006de1c2004-08-20 13:37:45 +0000428 return -1;
429 }
430}
431
432
433/*** <<< STAT-DEFS [RelativeDistinguishedName] >>> ***/
434
Bi-Ruei, Chiu1fa31c92016-05-16 13:50:09 +0800435asn_TYPE_member_t asn_MBR_RelativeDistinguishedName_1[] = {
Lev Walkin8eb4b572005-08-16 16:57:17 +0000436 { ATF_POINTER, 0, 0,
Lev Walkin006de1c2004-08-20 13:37:45 +0000437 .tag = (ASN_TAG_CLASS_UNIVERSAL | (22 << 2)),
438 .tag_mode = 0,
Lev Walkinae7bf3f2005-08-29 10:31:14 +0000439 .type = &asn_DEF_IA5String,
Lev Walkin59b176e2005-11-26 11:25:14 +0000440 .memb_constraints = memb_IA5String_constraint_1,
Lev Walkinb33425f2017-07-14 14:59:52 +0400441 .oer_constraints = 0, /* OER is not compiled, use -gen-OER */
Lev Walkin59b176e2005-11-26 11:25:14 +0000442 .per_constraints = 0, /* PER is not compiled, use -gen-PER */
443 .default_value = 0,
Lev Walkin006de1c2004-08-20 13:37:45 +0000444 .name = ""
445 },
446};
Lev Walkina7591b52014-10-12 18:37:35 -0700447static const ber_tlv_tag_t asn_DEF_RelativeDistinguishedName_tags_1[] = {
Lev Walkin006de1c2004-08-20 13:37:45 +0000448 (ASN_TAG_CLASS_UNIVERSAL | (17 << 2))
449};
Bi-Ruei, Chiu1fa31c92016-05-16 13:50:09 +0800450asn_SET_OF_specifics_t asn_SPC_RelativeDistinguishedName_specs_1 = {
Lev Walkin006de1c2004-08-20 13:37:45 +0000451 sizeof(struct RelativeDistinguishedName),
Lev Walkindfae9752004-09-29 13:19:37 +0000452 offsetof(struct RelativeDistinguishedName, _asn_ctx),
Lev Walkina9cc46e2004-09-22 16:06:28 +0000453 0, /* XER encoding is XMLDelimitedItemList */
Lev Walkin006de1c2004-08-20 13:37:45 +0000454};
Lev Walkindfae9752004-09-29 13:19:37 +0000455asn_TYPE_descriptor_t asn_DEF_RelativeDistinguishedName = {
Lev Walkin006de1c2004-08-20 13:37:45 +0000456 "RelativeDistinguishedName",
Lev Walkindc06f6b2004-10-20 15:50:55 +0000457 "RelativeDistinguishedName",
Lev Walkina9cc46e2004-09-22 16:06:28 +0000458 SET_OF_free,
459 SET_OF_print,
Lev Walkin006de1c2004-08-20 13:37:45 +0000460 SET_OF_constraint,
461 SET_OF_decode_ber,
462 SET_OF_encode_der,
Lev Walkinb2230802005-02-14 20:31:31 +0000463 SET_OF_decode_xer,
Lev Walkina9cc46e2004-09-22 16:06:28 +0000464 SET_OF_encode_xer,
Lev Walkinba68c912017-07-06 07:52:39 -0700465 0, 0, /* No OER support, use "-gen-OER" to enable */
Lev Walkinb33425f2017-07-14 14:59:52 +0400466 0, 0, /* No PER support, use "-gen-PER" to enable */
Lev Walkin006de1c2004-08-20 13:37:45 +0000467 0, /* Use generic outmost tag fetcher */
Lev Walkin59b176e2005-11-26 11:25:14 +0000468 asn_DEF_RelativeDistinguishedName_tags_1,
469 sizeof(asn_DEF_RelativeDistinguishedName_tags_1)
470 /sizeof(asn_DEF_RelativeDistinguishedName_tags_1[0]), /* 1 */
471 asn_DEF_RelativeDistinguishedName_tags_1, /* Same as above */
472 sizeof(asn_DEF_RelativeDistinguishedName_tags_1)
473 /sizeof(asn_DEF_RelativeDistinguishedName_tags_1[0]), /* 1 */
Lev Walkinb33425f2017-07-14 14:59:52 +0400474 0, /* No OER visible constraints */
Lev Walkin59b176e2005-11-26 11:25:14 +0000475 0, /* No PER visible constraints */
Lev Walkine0272aa2005-03-04 11:26:08 +0000476 asn_MBR_RelativeDistinguishedName_1,
Lev Walkin006de1c2004-08-20 13:37:45 +0000477 1, /* Single element */
Lev Walkin59b176e2005-11-26 11:25:14 +0000478 &asn_SPC_RelativeDistinguishedName_specs_1 /* Additional specs */
Lev Walkin006de1c2004-08-20 13:37:45 +0000479};
480