summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/x509/x509_addr.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/x509/x509_addr.c')
-rw-r--r--src/lib/libcrypto/x509/x509_addr.c136
1 files changed, 112 insertions, 24 deletions
diff --git a/src/lib/libcrypto/x509/x509_addr.c b/src/lib/libcrypto/x509/x509_addr.c
index 5946c71238..4e5e0b3b7e 100644
--- a/src/lib/libcrypto/x509/x509_addr.c
+++ b/src/lib/libcrypto/x509/x509_addr.c
@@ -29,29 +29,117 @@
29 * OpenSSL ASN.1 template translation of RFC 3779 2.2.3. 29 * OpenSSL ASN.1 template translation of RFC 3779 2.2.3.
30 */ 30 */
31 31
32ASN1_SEQUENCE(IPAddressRange) = { 32static const ASN1_TEMPLATE IPAddressRange_seq_tt[] = {
33 ASN1_SIMPLE(IPAddressRange, min, ASN1_BIT_STRING), 33 {
34 ASN1_SIMPLE(IPAddressRange, max, ASN1_BIT_STRING) 34 .flags = 0,
35} ASN1_SEQUENCE_END(IPAddressRange) 35 .tag = 0,
36 36 .offset = offsetof(IPAddressRange, min),
37ASN1_CHOICE(IPAddressOrRange) = { 37 .field_name = "min",
38 ASN1_SIMPLE(IPAddressOrRange, u.addressPrefix, ASN1_BIT_STRING), 38 .item = &ASN1_BIT_STRING_it,
39 ASN1_SIMPLE(IPAddressOrRange, u.addressRange, IPAddressRange) 39 },
40} ASN1_CHOICE_END(IPAddressOrRange) 40 {
41 41 .flags = 0,
42ASN1_CHOICE(IPAddressChoice) = { 42 .tag = 0,
43 ASN1_SIMPLE(IPAddressChoice, u.inherit, ASN1_NULL), 43 .offset = offsetof(IPAddressRange, max),
44 ASN1_SEQUENCE_OF(IPAddressChoice, u.addressesOrRanges, IPAddressOrRange) 44 .field_name = "max",
45} ASN1_CHOICE_END(IPAddressChoice) 45 .item = &ASN1_BIT_STRING_it,
46 46 },
47ASN1_SEQUENCE(IPAddressFamily) = { 47};
48 ASN1_SIMPLE(IPAddressFamily, addressFamily, ASN1_OCTET_STRING), 48
49 ASN1_SIMPLE(IPAddressFamily, ipAddressChoice, IPAddressChoice) 49const ASN1_ITEM IPAddressRange_it = {
50} ASN1_SEQUENCE_END(IPAddressFamily) 50 .itype = ASN1_ITYPE_SEQUENCE,
51 51 .utype = V_ASN1_SEQUENCE,
52ASN1_ITEM_TEMPLATE(IPAddrBlocks) = 52 .templates = IPAddressRange_seq_tt,
53 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, 53 .tcount = sizeof(IPAddressRange_seq_tt) / sizeof(ASN1_TEMPLATE),
54 IPAddrBlocks, IPAddressFamily) 54 .funcs = NULL,
55 .size = sizeof(IPAddressRange),
56 .sname = "IPAddressRange",
57};
58
59static const ASN1_TEMPLATE IPAddressOrRange_ch_tt[] = {
60 {
61 .flags = 0,
62 .tag = 0,
63 .offset = offsetof(IPAddressOrRange, u.addressPrefix),
64 .field_name = "u.addressPrefix",
65 .item = &ASN1_BIT_STRING_it,
66 },
67 {
68 .flags = 0,
69 .tag = 0,
70 .offset = offsetof(IPAddressOrRange, u.addressRange),
71 .field_name = "u.addressRange",
72 .item = &IPAddressRange_it,
73 },
74};
75
76const ASN1_ITEM IPAddressOrRange_it = {
77 .itype = ASN1_ITYPE_CHOICE,
78 .utype = offsetof(IPAddressOrRange, type),
79 .templates = IPAddressOrRange_ch_tt,
80 .tcount = sizeof(IPAddressOrRange_ch_tt) / sizeof(ASN1_TEMPLATE),
81 .funcs = NULL,
82 .size = sizeof(IPAddressOrRange),
83 .sname = "IPAddressOrRange",
84};
85
86static const ASN1_TEMPLATE IPAddressChoice_ch_tt[] = {
87 {
88 .flags = 0,
89 .tag = 0,
90 .offset = offsetof(IPAddressChoice, u.inherit),
91 .field_name = "u.inherit",
92 .item = &ASN1_NULL_it,
93 },
94 {
95 .flags = ASN1_TFLG_SEQUENCE_OF,
96 .tag = 0,
97 .offset = offsetof(IPAddressChoice, u.addressesOrRanges),
98 .field_name = "u.addressesOrRanges",
99 .item = &IPAddressOrRange_it,
100 },
101};
102
103const ASN1_ITEM IPAddressChoice_it = {
104 .itype = ASN1_ITYPE_CHOICE,
105 .utype = offsetof(IPAddressChoice, type),
106 .templates = IPAddressChoice_ch_tt,
107 .tcount = sizeof(IPAddressChoice_ch_tt) / sizeof(ASN1_TEMPLATE),
108 .funcs = NULL,
109 .size = sizeof(IPAddressChoice),
110 .sname = "IPAddressChoice",
111};
112
113static const ASN1_TEMPLATE IPAddressFamily_seq_tt[] = {
114 {
115 .flags = 0,
116 .tag = 0,
117 .offset = offsetof(IPAddressFamily, addressFamily),
118 .field_name = "addressFamily",
119 .item = &ASN1_OCTET_STRING_it,
120 },
121 {
122 .flags = 0,
123 .tag = 0,
124 .offset = offsetof(IPAddressFamily, ipAddressChoice),
125 .field_name = "ipAddressChoice",
126 .item = &IPAddressChoice_it,
127 },
128};
129
130const ASN1_ITEM IPAddressFamily_it = {
131 .itype = ASN1_ITYPE_SEQUENCE,
132 .utype = V_ASN1_SEQUENCE,
133 .templates = IPAddressFamily_seq_tt,
134 .tcount = sizeof(IPAddressFamily_seq_tt) / sizeof(ASN1_TEMPLATE),
135 .funcs = NULL,
136 .size = sizeof(IPAddressFamily),
137 .sname = "IPAddressFamily",
138};
139
140static const ASN1_TEMPLATE IPAddrBlocks_item_tt =
141 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, IPAddrBlocks,
142 IPAddressFamily)
55static_ASN1_ITEM_TEMPLATE_END(IPAddrBlocks) 143static_ASN1_ITEM_TEMPLATE_END(IPAddrBlocks)
56 144
57IPAddressRange * 145IPAddressRange *
@@ -1154,7 +1242,7 @@ static void *v2i_IPAddrBlocks(const struct v3_ext_method *method,
1154const X509V3_EXT_METHOD v3_addr = { 1242const X509V3_EXT_METHOD v3_addr = {
1155 NID_sbgp_ipAddrBlock, /* nid */ 1243 NID_sbgp_ipAddrBlock, /* nid */
1156 0, /* flags */ 1244 0, /* flags */
1157 ASN1_ITEM_ref(IPAddrBlocks), /* template */ 1245 &IPAddrBlocks_it,
1158 0, 0, 0, 0, /* old functions, ignored */ 1246 0, 0, 0, 0, /* old functions, ignored */
1159 0, /* i2s */ 1247 0, /* i2s */
1160 0, /* s2i */ 1248 0, /* s2i */