summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/x509/x509_asid.c
diff options
context:
space:
mode:
authorjob <>2021-09-02 20:11:07 +0000
committerjob <>2021-09-02 20:11:07 +0000
commit42689e06782909a72cd58175622d83edd974719a (patch)
tree281b670f1165d730c365d38221844a0d2bf62f04 /src/lib/libcrypto/x509/x509_asid.c
parent7dff18584559eb743a942f131f223118d75c1f30 (diff)
downloadopenbsd-42689e06782909a72cd58175622d83edd974719a.tar.gz
openbsd-42689e06782909a72cd58175622d83edd974719a.tar.bz2
openbsd-42689e06782909a72cd58175622d83edd974719a.zip
Unroll ASN1_SEQUENCE() ASN1_CHOICE() ASN1_ITEM_TEMPLATE()
OK jsing@
Diffstat (limited to '')
-rw-r--r--src/lib/libcrypto/x509/x509_asid.c128
1 files changed, 106 insertions, 22 deletions
diff --git a/src/lib/libcrypto/x509/x509_asid.c b/src/lib/libcrypto/x509/x509_asid.c
index bcb6e4ea1d..59c7cabb13 100644
--- a/src/lib/libcrypto/x509/x509_asid.c
+++ b/src/lib/libcrypto/x509/x509_asid.c
@@ -26,29 +26,113 @@
26 26
27#ifndef OPENSSL_NO_RFC3779 27#ifndef OPENSSL_NO_RFC3779
28 28
29/* 29static const ASN1_TEMPLATE ASRange_seq_tt[] = {
30 * OpenSSL ASN.1 template translation of RFC 3779 3.2.3. 30 {
31 */ 31 .flags = 0,
32 .tag = 0,
33 .offset = offsetof(ASRange, min),
34 .field_name = "min",
35 .item = &ASN1_INTEGER_it,
36 },
37 {
38 .flags = 0,
39 .tag = 0,
40 .offset = offsetof(ASRange, max),
41 .field_name = "max",
42 .item = &ASN1_INTEGER_it,
43 },
44};
45
46const ASN1_ITEM ASRange_it = {
47 .itype = ASN1_ITYPE_SEQUENCE,
48 .utype = V_ASN1_SEQUENCE,
49 .templates = ASRange_seq_tt,
50 .tcount = sizeof(ASRange_seq_tt) / sizeof(ASN1_TEMPLATE),
51 .funcs = NULL,
52 .size = sizeof(ASRange),
53 .sname = "ASRange",
54};
55
56static const ASN1_TEMPLATE ASIdOrRange_ch_tt[] = {
57 {
58 .flags = 0,
59 .tag = 0,
60 .offset = offsetof(ASIdOrRange, u.id),
61 .field_name = "u.id",
62 .item = &ASN1_INTEGER_it,
63 },
64 {
65 .flags = 0,
66 .tag = 0,
67 .offset = offsetof(ASIdOrRange, u.range),
68 .field_name = "u.range",
69 .item = &ASRange_it,
70 },
71};
72
73const ASN1_ITEM ASIdOrRange_it = {
74 .itype = ASN1_ITYPE_CHOICE,
75 .utype = offsetof(ASIdOrRange, type),
76 .templates = ASIdOrRange_ch_tt,
77 .tcount = sizeof(ASIdOrRange_ch_tt) / sizeof(ASN1_TEMPLATE),
78 .funcs = NULL,
79 .size = sizeof(ASIdOrRange),
80 .sname = "ASIdOrRange",
81};
82
83static const ASN1_TEMPLATE ASIdentifierChoice_ch_tt[] = {
84 {
85 .flags = 0,
86 .tag = 0,
87 .offset = offsetof(ASIdentifierChoice, u.inherit),
88 .field_name = "u.inherit",
89 .item = &ASN1_NULL_it,
90 },
91 {
92 .flags = ASN1_TFLG_SEQUENCE_OF,
93 .tag = 0,
94 .offset = offsetof(ASIdentifierChoice, u.asIdsOrRanges),
95 .field_name = "u.asIdsOrRanges",
96 .item = &ASIdOrRange_it,
97 },
98};
99
100const ASN1_ITEM ASIdentifierChoice_it = {
101 .itype = ASN1_ITYPE_CHOICE,
102 .utype = offsetof(ASIdentifierChoice, type),
103 .templates = ASIdentifierChoice_ch_tt,
104 .tcount = sizeof(ASIdentifierChoice_ch_tt) / sizeof(ASN1_TEMPLATE),
105 .funcs = NULL,
106 .size = sizeof(ASIdentifierChoice),
107 .sname = "ASIdentifierChoice",
108};
109
110static const ASN1_TEMPLATE ASIdentifiers_seq_tt[] = {
111 {
112 .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL,
113 .tag = 0,
114 .offset = offsetof(ASIdentifiers, asnum),
115 .field_name = "asnum",
116 .item = &ASIdentifierChoice_it,
117 },
118 {
119 .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL,
120 .tag = 1,
121 .offset = offsetof(ASIdentifiers, rdi),
122 .field_name = "rdi",
123 .item = &ASIdentifierChoice_it,
124 },
125};
32 126
33ASN1_SEQUENCE(ASRange) = { 127const ASN1_ITEM ASIdentifiers_it = {
34 ASN1_SIMPLE(ASRange, min, ASN1_INTEGER), 128 .itype = ASN1_ITYPE_SEQUENCE,
35 ASN1_SIMPLE(ASRange, max, ASN1_INTEGER) 129 .utype = V_ASN1_SEQUENCE,
36} ASN1_SEQUENCE_END(ASRange) 130 .templates = ASIdentifiers_seq_tt,
37 131 .tcount = sizeof(ASIdentifiers_seq_tt) / sizeof(ASN1_TEMPLATE),
38ASN1_CHOICE(ASIdOrRange) = { 132 .funcs = NULL,
39 ASN1_SIMPLE(ASIdOrRange, u.id, ASN1_INTEGER), 133 .size = sizeof(ASIdentifiers),
40 ASN1_SIMPLE(ASIdOrRange, u.range, ASRange) 134 .sname = "ASIdentifiers",
41} ASN1_CHOICE_END(ASIdOrRange) 135};
42
43ASN1_CHOICE(ASIdentifierChoice) = {
44 ASN1_SIMPLE(ASIdentifierChoice, u.inherit, ASN1_NULL),
45 ASN1_SEQUENCE_OF(ASIdentifierChoice, u.asIdsOrRanges, ASIdOrRange)
46} ASN1_CHOICE_END(ASIdentifierChoice)
47
48ASN1_SEQUENCE(ASIdentifiers) = {
49 ASN1_EXP_OPT(ASIdentifiers, asnum, ASIdentifierChoice, 0),
50 ASN1_EXP_OPT(ASIdentifiers, rdi, ASIdentifierChoice, 1)
51} ASN1_SEQUENCE_END(ASIdentifiers)
52 136
53ASRange * 137ASRange *
54d2i_ASRange(ASRange **a, const unsigned char **in, long len) 138d2i_ASRange(ASRange **a, const unsigned char **in, long len)