1 /*
2  * Automatically generated by asn1_compiler.  Do not edit
3  *
4  * ASN.1 parser for x509_akid
5  */
6 #include <linux/asn1_ber_bytecode.h>
7 #include "x509_akid.asn1.h"
8 
9 enum x509_akid_actions {
10 	ACT_x509_akid_note_kid = 0,
11 	ACT_x509_akid_note_name = 1,
12 	ACT_x509_akid_note_serial = 2,
13 	ACT_x509_extract_name_segment = 3,
14 	ACT_x509_note_OID = 4,
15 	NR__x509_akid_actions = 5
16 };
17 
18 static const asn1_action_t x509_akid_action_table[NR__x509_akid_actions] = {
19 	[   0] = x509_akid_note_kid,
20 	[   1] = x509_akid_note_name,
21 	[   2] = x509_akid_note_serial,
22 	[   3] = x509_extract_name_segment,
23 	[   4] = x509_note_OID,
24 };
25 
26 static const unsigned char x509_akid_machine[] = {
27 	// AuthorityKeyIdentifier
28 	[   0] = ASN1_OP_MATCH,
29 	[   1] = _tag(UNIV, CONS, SEQ),
30 	// KeyIdentifier
31 	[   2] =  ASN1_OP_MATCH_ACT_OR_SKIP,		// keyIdentifier
32 	[   3] =  _tagn(CONT, PRIM,  0),
33 	[   4] =  _action(ACT_x509_akid_note_kid),
34 	// GeneralNames
35 	[   5] =  ASN1_OP_MATCH_JUMP_OR_SKIP,		// authorityCertIssuer
36 	[   6] =  _tagn(CONT, CONS,  1),
37 	[   7] =  _jump_target(13),		// --> GeneralNames
38 	// CertificateSerialNumber
39 	[   8] =  ASN1_OP_MATCH_ACT_OR_SKIP,		// authorityCertSerialNumber
40 	[   9] =  _tagn(CONT, PRIM,  2),
41 	[  10] =  _action(ACT_x509_akid_note_serial),
42 	[  11] = ASN1_OP_END_SEQ,
43 	[  12] = ASN1_OP_COMPLETE,
44 
45 	// GeneralName
46 	[  13] =  ASN1_OP_MATCH_JUMP_OR_SKIP,		// otherName
47 	[  14] =  _tagn(CONT, CONS,  0),
48 	[  15] =  _jump_target(44),
49 	[  16] =  ASN1_OP_COND_MATCH_JUMP_OR_SKIP,		// rfc822Name
50 	[  17] =  _tagn(CONT, CONS,  1),
51 	[  18] =  _jump_target(47),
52 	[  19] =  ASN1_OP_COND_MATCH_JUMP_OR_SKIP,		// dNSName
53 	[  20] =  _tagn(CONT, CONS,  2),
54 	[  21] =  _jump_target(51),
55 	[  22] =  ASN1_OP_COND_MATCH_JUMP_OR_SKIP,		// x400Address
56 	[  23] =  _tagn(CONT, CONS,  3),
57 	[  24] =  _jump_target(55),
58 	[  25] =  ASN1_OP_COND_MATCH_JUMP_OR_SKIP,		// directoryName
59 	[  26] =  _tagn(CONT, CONS,  4),
60 	[  27] =  _jump_target(58),
61 	[  28] =  ASN1_OP_COND_MATCH_JUMP_OR_SKIP,		// ediPartyName
62 	[  29] =  _tagn(CONT, CONS,  5),
63 	[  30] =  _jump_target(78),
64 	[  31] =  ASN1_OP_COND_MATCH_JUMP_OR_SKIP,		// uniformResourceIdentifier
65 	[  32] =  _tagn(CONT, CONS,  6),
66 	[  33] =  _jump_target(81),
67 	[  34] =  ASN1_OP_COND_MATCH_JUMP_OR_SKIP,		// iPAddress
68 	[  35] =  _tagn(CONT, CONS,  7),
69 	[  36] =  _jump_target(85),
70 	[  37] =  ASN1_OP_COND_MATCH_JUMP_OR_SKIP,		// registeredID
71 	[  38] =  _tagn(CONT, CONS,  8),
72 	[  39] =  _jump_target(89),
73 	[  40] =  ASN1_OP_COND_FAIL,
74 	[  41] = ASN1_OP_END_SEQ_OF,
75 	[  42] = _jump_target(13),
76 	[  43] = ASN1_OP_RETURN,
77 
78 	[  44] =  ASN1_OP_MATCH_ANY,		// otherName
79 	[  45] = ASN1_OP_END_SEQ,
80 	[  46] = ASN1_OP_RETURN,
81 
82 	[  47] =  ASN1_OP_MATCH,		// rfc822Name
83 	[  48] =  _tag(UNIV, PRIM, IA5STR),
84 	[  49] = ASN1_OP_END_SEQ,
85 	[  50] = ASN1_OP_RETURN,
86 
87 	[  51] =  ASN1_OP_MATCH,		// dNSName
88 	[  52] =  _tag(UNIV, PRIM, IA5STR),
89 	[  53] = ASN1_OP_END_SEQ,
90 	[  54] = ASN1_OP_RETURN,
91 
92 	[  55] =  ASN1_OP_MATCH_ANY,		// x400Address
93 	[  56] = ASN1_OP_END_SEQ,
94 	[  57] = ASN1_OP_RETURN,
95 
96 	// Name
97 	[  58] =  ASN1_OP_MATCH,
98 	[  59] =  _tag(UNIV, CONS, SEQ),
99 	// RelativeDistinguishedName
100 	[  60] =   ASN1_OP_MATCH,
101 	[  61] =   _tag(UNIV, CONS, SET),
102 	// AttributeValueAssertion
103 	[  62] =    ASN1_OP_MATCH,
104 	[  63] =    _tag(UNIV, CONS, SEQ),
105 	[  64] =     ASN1_OP_MATCH_ACT,		// attributeType
106 	[  65] =     _tag(UNIV, PRIM, OID),
107 	[  66] =     _action(ACT_x509_note_OID),
108 	[  67] =     ASN1_OP_MATCH_ANY_ACT,		// attributeValue
109 	[  68] =     _action(ACT_x509_extract_name_segment),
110 	[  69] =    ASN1_OP_END_SEQ,
111 	[  70] =   ASN1_OP_END_SET_OF,
112 	[  71] =   _jump_target(62),
113 	[  72] =  ASN1_OP_END_SEQ_OF,
114 	[  73] =  _jump_target(60),
115 	[  74] =  ASN1_OP_ACT,
116 	[  75] =  _action(ACT_x509_akid_note_name),
117 	[  76] = ASN1_OP_END_SEQ,
118 	[  77] = ASN1_OP_RETURN,
119 
120 	[  78] =  ASN1_OP_MATCH_ANY,		// ediPartyName
121 	[  79] = ASN1_OP_END_SEQ,
122 	[  80] = ASN1_OP_RETURN,
123 
124 	[  81] =  ASN1_OP_MATCH,		// uniformResourceIdentifier
125 	[  82] =  _tag(UNIV, PRIM, IA5STR),
126 	[  83] = ASN1_OP_END_SEQ,
127 	[  84] = ASN1_OP_RETURN,
128 
129 	[  85] =  ASN1_OP_MATCH,		// iPAddress
130 	[  86] =  _tag(UNIV, PRIM, OTS),
131 	[  87] = ASN1_OP_END_SEQ,
132 	[  88] = ASN1_OP_RETURN,
133 
134 	[  89] =  ASN1_OP_MATCH,		// registeredID
135 	[  90] =  _tag(UNIV, PRIM, OID),
136 	[  91] = ASN1_OP_END_SEQ,
137 	[  92] = ASN1_OP_RETURN,
138 };
139 
140 const struct asn1_decoder x509_akid_decoder = {
141 	.machine = x509_akid_machine,
142 	.machlen = sizeof(x509_akid_machine),
143 	.actions = x509_akid_action_table,
144 };
145