Browse Source

[crypto] Treat ASN.1 OIDs as opaque

OIDs are theoretically part of a global hierarchy.  However, the
hierarchy is sufficiently disorganised as to be essentially
meaningless for all purposes other than guaranteeing uniqueness.
Ignore the hierarchical nature of OIDs and treat them as opaque.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
tags/v1.20.1
Michael Brown 12 years ago
parent
commit
94cdbd76d6
1 changed files with 60 additions and 105 deletions
  1. 60
    105
      src/include/ipxe/asn1.h

+ 60
- 105
src/include/ipxe/asn1.h View File

@@ -79,113 +79,68 @@ struct asn1_cursor {
79 79
 #define ASN1_OID_TRIPLE( value ) \
80 80
 	( 0x80 | ( ( (value) >> 14 ) & 0x7f ) ), ASN1_OID_DOUBLE ( (value) )
81 81
 
82
-/** ASN.1 OID for iso(1) member-body(2) */
83
-#define ASN1_OID_ISO_MEMBERBODY ASN1_OID_INITIAL ( 1, 2 )
84
-
85
-/** ASN.1 OID for iso(1) identified-organization(3) */
86
-#define ASN1_OID_IDENTIFIED_ORGANIZATION ASN1_OID_INITIAL ( 1, 3 )
87
-
88
-/** ASN.1 OID for joint-iso-itu-t(2) ds(5) */
89
-#define ASN1_OID_DIRECTORY_SERVICES ASN1_OID_INITIAL ( 2, 5 )
90
-
91
-/** ASN.1 OID for joint-iso-itu-t(2) country(16) */
92
-#define ASN1_OID_COUNTRY ASN1_OID_INITIAL ( 2, 16 )
93
-
94
-/** ASN.1 OID for iso(1) member-body(2) us(840) */
95
-#define ASN1_OID_ISO_US ASN1_OID_ISO_MEMBERBODY, ASN1_OID_DOUBLE ( 840 )
96
-
97
-/** ASN.1 OID for iso(1) member-body(2) us(840) rsadsi(113549) */
98
-#define ASN1_OID_RSADSI ASN1_OID_ISO_US, ASN1_OID_TRIPLE ( 113549 )
99
-
100
-/** ASN.1 OID for iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) */
101
-#define ASN1_OID_PKCS ASN1_OID_RSADSI, ASN1_OID_SINGLE ( 1 )
102
-
103
-/** ASN.1 OID for iso(1) member-body(2) us(840) rsadsi(113549)
104
- * digestAlgorithm(2)
105
- */
106
-#define ASN1_OID_DIGESTALGORITHM ASN1_OID_RSADSI, ASN1_OID_SINGLE ( 2 )
107
-
108
-/** ASN.1 OID for iso(1) identified-organization(3) oiw(14) */
109
-#define ASN1_OID_OIW ASN1_OID_IDENTIFIED_ORGANIZATION, ASN1_OID_SINGLE ( 14 )
110
-
111
-/** ASN.1 OID for iso(1) identified-organization(3) oiw(14) secsig(3) */
112
-#define ASN1_OID_SECSIG ASN1_OID_OIW, ASN1_OID_SINGLE ( 3 )
113
-
114
-/** ASN1. OID for iso(1) identified-organization(3) oiw(14) secsig(3)
115
- * algorithms(2)
116
- */
117
-#define ASN1_OID_SECSIG_ALGORITHMS ASN1_OID_SECSIG, ASN1_OID_SINGLE ( 2 )
118
-
119
-/** ASN.1 OID for joint-iso-itu-t(2) country(16) us(840) */
120
-#define ASN1_OID_COUNTRY_US ASN1_OID_COUNTRY, ASN1_OID_DOUBLE ( 840 )
121
-
122
-/** ASN.1 OID for joint-iso-itu-t(2) country(16) us(840) organization(1) */
123
-#define ASN1_OID_US_ORGANIZATION ASN1_OID_COUNTRY_US, ASN1_OID_SINGLE ( 1 )
124
-
125
-/** ASN.1 OID for joint-iso-itu-t(2) country(16) us(840)
126
- * organization(1) gov(101)
127
- */
128
-#define ASN1_OID_US_GOV ASN1_OID_US_ORGANIZATION, ASN1_OID_SINGLE ( 101 )
129
-
130
-/** ASN.1 OID for joint-iso-itu-t(2) country(16) us(840)
131
- * organization(1) gov(101) csor(3)
132
- */
133
-#define ASN1_OID_CSOR ASN1_OID_US_GOV, ASN1_OID_SINGLE ( 3 )
134
-
135
-/** ASN.1 OID for joint-iso-itu-t(2) country(16) us(840)
136
- * organization(1) gov(101) csor(3) nistalgorithm(4)
137
- */
138
-#define ASN1_OID_NISTALGORITHM ASN1_OID_CSOR, ASN1_OID_SINGLE ( 4 )
139
-
140
-/** ASN.1 OID for joint-iso-itu-t(2) country(16) us(840)
141
- * organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2)
142
- */
143
-#define ASN1_OID_HASHALGS ASN1_OID_NISTALGORITHM, ASN1_OID_SINGLE ( 2 )
144
-
145
-/** ASN.1 OID for pkcs-1 */
146
-#define ASN1_OID_PKCS_1 ASN1_OID_PKCS, ASN1_OID_SINGLE ( 1 )
147
-
148
-/** ASN.1 OID for rsaEncryption */
149
-#define ASN1_OID_RSAENCRYPTION ASN1_OID_PKCS_1, ASN1_OID_SINGLE ( 1 )
150
-
151
-/** ASN.1 OID for md5WithRSAEncryption */
152
-#define ASN1_OID_MD5WITHRSAENCRYPTION ASN1_OID_PKCS_1, ASN1_OID_SINGLE ( 4 )
153
-
154
-/** ASN.1 OID for sha1WithRSAEncryption */
155
-#define ASN1_OID_SHA1WITHRSAENCRYPTION ASN1_OID_PKCS_1, ASN1_OID_SINGLE ( 5 )
156
-
157
-/** ASN.1 OID for sha256WithRSAEncryption */
158
-#define ASN1_OID_SHA256WITHRSAENCRYPTION ASN1_OID_PKCS_1, ASN1_OID_SINGLE ( 11 )
159
-
160
-/** ASN.1 OID for id-md5 */
161
-#define ASN1_OID_MD5 ASN1_OID_DIGESTALGORITHM, ASN1_OID_SINGLE ( 5 )
162
-
163
-/** ASN.1 OID for id-sha1 */
164
-#define ASN1_OID_SHA1 ASN1_OID_SECSIG_ALGORITHMS, ASN1_OID_SINGLE ( 26 )
165
-
166
-/** ASN.1 OID for id-sha256 */
167
-#define ASN1_OID_SHA256 ASN1_OID_HASHALGS, ASN1_OID_SINGLE ( 1 )
168
-
169
-/** ASN.1 OID for joint-iso-itu-t(2) ds(5) attributeType(4) */
170
-#define ASN1_OID_ATTRIBUTE_TYPE \
171
-	ASN1_OID_DIRECTORY_SERVICES, ASN1_OID_SINGLE ( 4 )
172
-
173
-/** ASN.1 OID for joint-iso-itu-t(2) ds(5) attributeType(4) commonName(3) */
174
-#define ASN1_OID_COMMON_NAME ASN1_OID_ATTRIBUTE_TYPE, ASN1_OID_SINGLE ( 3 )
175
-
176
-/** ASN.1 OID for id-ce */
177
-#define ASN1_OID_CE ASN1_OID_DIRECTORY_SERVICES, ASN1_OID_SINGLE ( 29 )
178
-
179
-/** ASN.1 OID for id-ce-keyUsage */
180
-#define ASN1_OID_KEYUSAGE ASN1_OID_CE, ASN1_OID_SINGLE ( 15 )
181
-
182
-/** ASN.1 OID for id-ce-basicConstraints */
183
-#define ASN1_OID_BASICCONSTRAINTS ASN1_OID_CE, ASN1_OID_SINGLE ( 19 )
82
+/** ASN.1 OID for rsaEncryption (1.2.840.113549.1.1.1) */
83
+#define ASN1_OID_RSAENCRYPTION					\
84
+	ASN1_OID_INITIAL ( 1, 2 ), ASN1_OID_DOUBLE ( 840 ),	\
85
+	ASN1_OID_TRIPLE ( 113549 ), ASN1_OID_SINGLE ( 1 ),	\
86
+	ASN1_OID_SINGLE ( 1 ), ASN1_OID_SINGLE ( 1 )
87
+
88
+/** ASN.1 OID for md5WithRSAEncryption (1.2.840.113549.1.1.4) */
89
+#define ASN1_OID_MD5WITHRSAENCRYPTION				\
90
+	ASN1_OID_INITIAL ( 1, 2 ), ASN1_OID_DOUBLE ( 840 ),	\
91
+	ASN1_OID_TRIPLE ( 113549 ), ASN1_OID_SINGLE ( 1 ),	\
92
+	ASN1_OID_SINGLE ( 1 ), ASN1_OID_SINGLE ( 4 )
93
+
94
+/** ASN.1 OID for sha1WithRSAEncryption (1.2.840.113549.1.1.5) */
95
+#define ASN1_OID_SHA1WITHRSAENCRYPTION				\
96
+	ASN1_OID_INITIAL ( 1, 2 ), ASN1_OID_DOUBLE ( 840 ),	\
97
+	ASN1_OID_TRIPLE ( 113549 ), ASN1_OID_SINGLE ( 1 ),	\
98
+	ASN1_OID_SINGLE ( 1 ), ASN1_OID_SINGLE ( 5 )
99
+
100
+/** ASN.1 OID for sha256WithRSAEncryption (1.2.840.113549.1.1.11) */
101
+#define ASN1_OID_SHA256WITHRSAENCRYPTION			\
102
+	ASN1_OID_INITIAL ( 1, 2 ), ASN1_OID_DOUBLE ( 840 ),	\
103
+	ASN1_OID_TRIPLE ( 113549 ), ASN1_OID_SINGLE ( 1 ),	\
104
+	ASN1_OID_SINGLE ( 1 ), ASN1_OID_SINGLE ( 11 )
105
+
106
+/** ASN.1 OID for id-md5 (1.2.840.113549.2.5) */
107
+#define ASN1_OID_MD5						\
108
+	ASN1_OID_INITIAL ( 1, 2 ), ASN1_OID_DOUBLE ( 840 ),	\
109
+	ASN1_OID_TRIPLE ( 113549 ), ASN1_OID_SINGLE ( 2 ),	\
110
+	ASN1_OID_SINGLE ( 5 )
111
+
112
+/** ASN.1 OID for id-sha1 (1.3.14.3.2.26) */
113
+#define ASN1_OID_SHA1						\
114
+	ASN1_OID_INITIAL ( 1, 3 ), ASN1_OID_SINGLE ( 14 ),	\
115
+	ASN1_OID_SINGLE ( 3 ), ASN1_OID_SINGLE ( 2 ),		\
116
+	ASN1_OID_SINGLE ( 26 )
117
+
118
+/** ASN.1 OID for id-sha256 (2.16.840.1.101.3.4.2.1) */
119
+#define ASN1_OID_SHA256						\
120
+	ASN1_OID_INITIAL ( 2, 16 ), ASN1_OID_DOUBLE ( 840 ),	\
121
+	ASN1_OID_SINGLE ( 1 ), ASN1_OID_SINGLE ( 101 ),		\
122
+	ASN1_OID_SINGLE ( 3 ), ASN1_OID_SINGLE ( 4 ),		\
123
+	ASN1_OID_SINGLE ( 2 ), ASN1_OID_SINGLE ( 1 )
124
+
125
+/** ASN.1 OID for commonName (2.5.4.3) */
126
+#define ASN1_OID_COMMON_NAME					\
127
+	ASN1_OID_INITIAL ( 2, 5 ), ASN1_OID_SINGLE ( 4 ),	\
128
+	ASN1_OID_SINGLE ( 3 )
129
+
130
+/** ASN.1 OID for id-ce-keyUsage (2.5.29.15) */
131
+#define ASN1_OID_KEYUSAGE					\
132
+	ASN1_OID_INITIAL ( 2, 5 ), ASN1_OID_SINGLE ( 29 ),	\
133
+	ASN1_OID_SINGLE ( 15 )
134
+
135
+/** ASN.1 OID for id-ce-basicConstraints (2.5.29.19) */
136
+#define ASN1_OID_BASICCONSTRAINTS				\
137
+	ASN1_OID_INITIAL ( 2, 5 ), ASN1_OID_SINGLE ( 29 ),	\
138
+	ASN1_OID_SINGLE ( 19 )
184 139
 
185 140
 /** Define an ASN.1 cursor containing an OID */
186
-#define ASN1_OID_CURSOR( oid_value ) {			\
187
-		.data = oid_value,			\
188
-		.len = sizeof ( oid_value ),		\
141
+#define ASN1_OID_CURSOR( oid_value ) {				\
142
+		.data = oid_value,				\
143
+		.len = sizeof ( oid_value ),			\
189 144
 	}
190 145
 
191 146
 /** An ASN.1 boolean */

Loading…
Cancel
Save