x509_common.h
Go to the documentation of this file.
1 /**
2  * @file x509_common.h
3  * @brief X.509 common definitions
4  *
5  * @section License
6  *
7  * SPDX-License-Identifier: GPL-2.0-or-later
8  *
9  * Copyright (C) 2010-2026 Oryx Embedded SARL. All rights reserved.
10  *
11  * This file is part of CycloneCRYPTO Open.
12  *
13  * This program is free software; you can redistribute it and/or
14  * modify it under the terms of the GNU General Public License
15  * as published by the Free Software Foundation; either version 2
16  * of the License, or (at your option) any later version.
17  *
18  * This program is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21  * GNU General Public License for more details.
22  *
23  * You should have received a copy of the GNU General Public License
24  * along with this program; if not, write to the Free Software Foundation,
25  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
26  *
27  * @author Oryx Embedded SARL (www.oryx-embedded.com)
28  * @version 2.6.6
29  **/
30 
31 #ifndef _X509_COMMON_H
32 #define _X509_COMMON_H
33 
34 //Dependencies
35 #include "core/crypto.h"
36 #include "pkc/sign_algorithms.h"
37 #include "pkc/rsa.h"
38 #include "pkc/dsa.h"
39 #include "ecc/ecdsa.h"
40 #include "ecc/eddsa.h"
41 #include "pqc/mldsa.h"
42 #include "date_time.h"
43 
44 //Signature generation/verification callback functions
45 #ifndef X509_SIGN_CALLBACK_SUPPORT
46  #define X509_SIGN_CALLBACK_SUPPORT DISABLED
47 #elif (X509_SIGN_CALLBACK_SUPPORT != ENABLED && X509_SIGN_CALLBACK_SUPPORT != DISABLED)
48  #error X509_SIGN_CALLBACK_SUPPORT parameter is not valid
49 #endif
50 
51 //RSA signature support
52 #ifndef X509_RSA_SUPPORT
53  #define X509_RSA_SUPPORT ENABLED
54 #elif (X509_RSA_SUPPORT != ENABLED && X509_RSA_SUPPORT != DISABLED)
55  #error X509_RSA_SUPPORT parameter is not valid
56 #endif
57 
58 //RSA-PSS signature support
59 #ifndef X509_RSA_PSS_SUPPORT
60  #define X509_RSA_PSS_SUPPORT DISABLED
61 #elif (X509_RSA_PSS_SUPPORT != ENABLED && X509_RSA_PSS_SUPPORT != DISABLED)
62  #error X509_RSA_PSS_SUPPORT parameter is not valid
63 #endif
64 
65 //DSA signature support
66 #ifndef X509_DSA_SUPPORT
67  #define X509_DSA_SUPPORT DISABLED
68 #elif (X509_DSA_SUPPORT != ENABLED && X509_DSA_SUPPORT != DISABLED)
69  #error X509_DSA_SUPPORT parameter is not valid
70 #endif
71 
72 //ECDSA signature support
73 #ifndef X509_ECDSA_SUPPORT
74  #define X509_ECDSA_SUPPORT ENABLED
75 #elif (X509_ECDSA_SUPPORT != ENABLED && X509_ECDSA_SUPPORT != DISABLED)
76  #error X509_ECDSA_SUPPORT parameter is not valid
77 #endif
78 
79 //SM2 signature support
80 #ifndef X509_SM2_SUPPORT
81  #define X509_SM2_SUPPORT DISABLED
82 #elif (X509_SM2_SUPPORT != ENABLED && X509_SM2_SUPPORT != DISABLED)
83  #error X509_SM2_SUPPORT parameter is not valid
84 #endif
85 
86 //Ed25519 signature support
87 #ifndef X509_ED25519_SUPPORT
88  #define X509_ED25519_SUPPORT DISABLED
89 #elif (X509_ED25519_SUPPORT != ENABLED && X509_ED25519_SUPPORT != DISABLED)
90  #error X509_ED25519_SUPPORT parameter is not valid
91 #endif
92 
93 //Ed448 signature support
94 #ifndef X509_ED448_SUPPORT
95  #define X509_ED448_SUPPORT DISABLED
96 #elif (X509_ED448_SUPPORT != ENABLED && X509_ED448_SUPPORT != DISABLED)
97  #error X509_ED448_SUPPORT parameter is not valid
98 #endif
99 
100 //ML-DSA-44 signature support
101 #ifndef X509_MLDSA44_SUPPORT
102  #define X509_MLDSA44_SUPPORT DISABLED
103 #elif (X509_MLDSA44_SUPPORT != ENABLED && X509_MLDSA44_SUPPORT != DISABLED)
104  #error X509_MLDSA44_SUPPORT parameter is not valid
105 #endif
106 
107 //ML-DSA-65 signature support
108 #ifndef X509_MLDSA65_SUPPORT
109  #define X509_MLDSA65_SUPPORT DISABLED
110 #elif (X509_MLDSA65_SUPPORT != ENABLED && X509_MLDSA65_SUPPORT != DISABLED)
111  #error X509_MLDSA65_SUPPORT parameter is not valid
112 #endif
113 
114 //ML-DSA-87 signature support
115 #ifndef X509_MLDSA87_SUPPORT
116  #define X509_MLDSA87_SUPPORT DISABLED
117 #elif (X509_MLDSA87_SUPPORT != ENABLED && X509_MLDSA87_SUPPORT != DISABLED)
118  #error X509_MLDSA87_SUPPORT parameter is not valid
119 #endif
120 
121 //MD5 hash support (insecure)
122 #ifndef X509_MD5_SUPPORT
123  #define X509_MD5_SUPPORT DISABLED
124 #elif (X509_MD5_SUPPORT != ENABLED && X509_MD5_SUPPORT != DISABLED)
125  #error X509_MD5_SUPPORT parameter is not valid
126 #endif
127 
128 //SHA-1 hash support (weak)
129 #ifndef X509_SHA1_SUPPORT
130  #define X509_SHA1_SUPPORT DISABLED
131 #elif (X509_SHA1_SUPPORT != ENABLED && X509_SHA1_SUPPORT != DISABLED)
132  #error X509_SHA1_SUPPORT parameter is not valid
133 #endif
134 
135 //SHA-224 hash support (weak)
136 #ifndef X509_SHA224_SUPPORT
137  #define X509_SHA224_SUPPORT DISABLED
138 #elif (X509_SHA224_SUPPORT != ENABLED && X509_SHA224_SUPPORT != DISABLED)
139  #error X509_SHA224_SUPPORT parameter is not valid
140 #endif
141 
142 //SHA-256 hash support
143 #ifndef X509_SHA256_SUPPORT
144  #define X509_SHA256_SUPPORT ENABLED
145 #elif (X509_SHA256_SUPPORT != ENABLED && X509_SHA256_SUPPORT != DISABLED)
146  #error X509_SHA256_SUPPORT parameter is not valid
147 #endif
148 
149 //SHA-384 hash support
150 #ifndef X509_SHA384_SUPPORT
151  #define X509_SHA384_SUPPORT ENABLED
152 #elif (X509_SHA384_SUPPORT != ENABLED && X509_SHA384_SUPPORT != DISABLED)
153  #error X509_SHA384_SUPPORT parameter is not valid
154 #endif
155 
156 //SHA-512 hash support
157 #ifndef X509_SHA512_SUPPORT
158  #define X509_SHA512_SUPPORT ENABLED
159 #elif (X509_SHA512_SUPPORT != ENABLED && X509_SHA512_SUPPORT != DISABLED)
160  #error X509_SHA512_SUPPORT parameter is not valid
161 #endif
162 
163 //SHA-512/224 hash support
164 #ifndef X509_SHA512_224_SUPPORT
165  #define X509_SHA512_224_SUPPORT DISABLED
166 #elif (X509_SHA512_224_SUPPORT != ENABLED && X509_SHA512_224_SUPPORT != DISABLED)
167  #error X509_SHA512_224_SUPPORT parameter is not valid
168 #endif
169 
170 //SHA-512/256 hash support
171 #ifndef X509_SHA512_256_SUPPORT
172  #define X509_SHA512_256_SUPPORT DISABLED
173 #elif (X509_SHA512_256_SUPPORT != ENABLED && X509_SHA512_256_SUPPORT != DISABLED)
174  #error X509_SHA512_256_SUPPORT parameter is not valid
175 #endif
176 
177 //SHA3-224 hash support
178 #ifndef X509_SHA3_224_SUPPORT
179  #define X509_SHA3_224_SUPPORT DISABLED
180 #elif (X509_SHA3_224_SUPPORT != ENABLED && X509_SHA3_224_SUPPORT != DISABLED)
181  #error X509_SHA3_224_SUPPORT parameter is not valid
182 #endif
183 
184 //SHA3-256 hash support
185 #ifndef X509_SHA3_256_SUPPORT
186  #define X509_SHA3_256_SUPPORT DISABLED
187 #elif (X509_SHA3_256_SUPPORT != ENABLED && X509_SHA3_256_SUPPORT != DISABLED)
188  #error X509_SHA3_256_SUPPORT parameter is not valid
189 #endif
190 
191 //SHA3-384 hash support
192 #ifndef X509_SHA3_384_SUPPORT
193  #define X509_SHA3_384_SUPPORT DISABLED
194 #elif (X509_SHA3_384_SUPPORT != ENABLED && X509_SHA3_384_SUPPORT != DISABLED)
195  #error X509_SHA3_384_SUPPORT parameter is not valid
196 #endif
197 
198 //SHA3-512 hash support
199 #ifndef X509_SHA3_512_SUPPORT
200  #define X509_SHA3_512_SUPPORT DISABLED
201 #elif (X509_SHA3_512_SUPPORT != ENABLED && X509_SHA3_512_SUPPORT != DISABLED)
202  #error X509_SHA3_512_SUPPORT parameter is not valid
203 #endif
204 
205 //SHAKE128/256 hash support
206 #ifndef X509_SHAKE128_SUPPORT
207  #define X509_SHAKE128_SUPPORT DISABLED
208 #elif (X509_SHAKE128_SUPPORT != ENABLED && X509_SHAKE128_SUPPORT != DISABLED)
209  #error X509_SHAKE128_SUPPORT parameter is not valid
210 #endif
211 
212 //SHAKE256/512 hash support
213 #ifndef X509_SHAKE256_SUPPORT
214  #define X509_SHAKE256_SUPPORT DISABLED
215 #elif (X509_SHAKE256_SUPPORT != ENABLED && X509_SHAKE256_SUPPORT != DISABLED)
216  #error X509_SHAKE256_SUPPORT parameter is not valid
217 #endif
218 
219 //SM3 hash support
220 #ifndef X509_SM3_SUPPORT
221  #define X509_SM3_SUPPORT DISABLED
222 #elif (X509_SM3_SUPPORT != ENABLED && X509_SM3_SUPPORT != DISABLED)
223  #error X509_SM3_SUPPORT parameter is not valid
224 #endif
225 
226 //secp112r1 elliptic curve support (weak)
227 #ifndef X509_SECP112R1_SUPPORT
228  #define X509_SECP112R1_SUPPORT DISABLED
229 #elif (X509_SECP112R1_SUPPORT != ENABLED && X509_SECP112R1_SUPPORT != DISABLED)
230  #error X509_SECP112R1_SUPPORT parameter is not valid
231 #endif
232 
233 //secp112r2 elliptic curve support (weak)
234 #ifndef X509_SECP112R2_SUPPORT
235  #define X509_SECP112R2_SUPPORT DISABLED
236 #elif (X509_SECP112R2_SUPPORT != ENABLED && X509_SECP112R2_SUPPORT != DISABLED)
237  #error X509_SECP112R2_SUPPORT parameter is not valid
238 #endif
239 
240 //secp128r1 elliptic curve support (weak)
241 #ifndef X509_SECP128R1_SUPPORT
242  #define X509_SECP128R1_SUPPORT DISABLED
243 #elif (X509_SECP128R1_SUPPORT != ENABLED && X509_SECP128R1_SUPPORT != DISABLED)
244  #error X509_SECP128R1_SUPPORT parameter is not valid
245 #endif
246 
247 //secp128r2 elliptic curve support (weak)
248 #ifndef X509_SECP128R2_SUPPORT
249  #define X509_SECP128R2_SUPPORT DISABLED
250 #elif (X509_SECP128R2_SUPPORT != ENABLED && X509_SECP128R2_SUPPORT != DISABLED)
251  #error X509_SECP128R2_SUPPORT parameter is not valid
252 #endif
253 
254 //secp160k1 elliptic curve support (weak)
255 #ifndef X509_SECP160K1_SUPPORT
256  #define X509_SECP160K1_SUPPORT DISABLED
257 #elif (X509_SECP160K1_SUPPORT != ENABLED && X509_SECP160K1_SUPPORT != DISABLED)
258  #error X509_SECP160K1_SUPPORT parameter is not valid
259 #endif
260 
261 //secp160r1 elliptic curve support (weak)
262 #ifndef X509_SECP160R1_SUPPORT
263  #define X509_SECP160R1_SUPPORT DISABLED
264 #elif (X509_SECP160R1_SUPPORT != ENABLED && X509_SECP160R1_SUPPORT != DISABLED)
265  #error X509_SECP160R1_SUPPORT parameter is not valid
266 #endif
267 
268 //secp160r2 elliptic curve support (weak)
269 #ifndef X509_SECP160R2_SUPPORT
270  #define X509_SECP160R2_SUPPORT DISABLED
271 #elif (X509_SECP160R2_SUPPORT != ENABLED && X509_SECP160R2_SUPPORT != DISABLED)
272  #error X509_SECP160R2_SUPPORT parameter is not valid
273 #endif
274 
275 //secp192k1 elliptic curve support
276 #ifndef X509_SECP192K1_SUPPORT
277  #define X509_SECP192K1_SUPPORT DISABLED
278 #elif (X509_SECP192K1_SUPPORT != ENABLED && X509_SECP192K1_SUPPORT != DISABLED)
279  #error X509_SECP192K1_SUPPORT parameter is not valid
280 #endif
281 
282 //secp192r1 elliptic curve support (NIST P-192)
283 #ifndef X509_SECP192R1_SUPPORT
284  #define X509_SECP192R1_SUPPORT DISABLED
285 #elif (X509_SECP192R1_SUPPORT != ENABLED && X509_SECP192R1_SUPPORT != DISABLED)
286  #error X509_SECP192R1_SUPPORT parameter is not valid
287 #endif
288 
289 //secp224k1 elliptic curve support
290 #ifndef X509_SECP224K1_SUPPORT
291  #define X509_SECP224K1_SUPPORT DISABLED
292 #elif (X509_SECP224K1_SUPPORT != ENABLED && X509_SECP224K1_SUPPORT != DISABLED)
293  #error X509_SECP224K1_SUPPORT parameter is not valid
294 #endif
295 
296 //secp224r1 elliptic curve support (NIST P-224)
297 #ifndef X509_SECP224R1_SUPPORT
298  #define X509_SECP224R1_SUPPORT DISABLED
299 #elif (X509_SECP224R1_SUPPORT != ENABLED && X509_SECP224R1_SUPPORT != DISABLED)
300  #error X509_SECP224R1_SUPPORT parameter is not valid
301 #endif
302 
303 //secp256k1 elliptic curve support
304 #ifndef X509_SECP256K1_SUPPORT
305  #define X509_SECP256K1_SUPPORT DISABLED
306 #elif (X509_SECP256K1_SUPPORT != ENABLED && X509_SECP256K1_SUPPORT != DISABLED)
307  #error X509_SECP256K1_SUPPORT parameter is not valid
308 #endif
309 
310 //secp256r1 elliptic curve support (NIST P-256)
311 #ifndef X509_SECP256R1_SUPPORT
312  #define X509_SECP256R1_SUPPORT ENABLED
313 #elif (X509_SECP256R1_SUPPORT != ENABLED && X509_SECP256R1_SUPPORT != DISABLED)
314  #error X509_SECP256R1_SUPPORT parameter is not valid
315 #endif
316 
317 //secp384r1 elliptic curve support (NIST P-384)
318 #ifndef X509_SECP384R1_SUPPORT
319  #define X509_SECP384R1_SUPPORT ENABLED
320 #elif (X509_SECP384R1_SUPPORT != ENABLED && X509_SECP384R1_SUPPORT != DISABLED)
321  #error X509_SECP384R1_SUPPORT parameter is not valid
322 #endif
323 
324 //secp521r1 elliptic curve support (NIST P-521)
325 #ifndef X509_SECP521R1_SUPPORT
326  #define X509_SECP521R1_SUPPORT ENABLED
327 #elif (X509_SECP521R1_SUPPORT != ENABLED && X509_SECP521R1_SUPPORT != DISABLED)
328  #error X509_SECP521R1_SUPPORT parameter is not valid
329 #endif
330 
331 //brainpoolP160r1 elliptic curve support
332 #ifndef X509_BRAINPOOLP160R1_SUPPORT
333  #define X509_BRAINPOOLP160R1_SUPPORT DISABLED
334 #elif (X509_BRAINPOOLP160R1_SUPPORT != ENABLED && X509_BRAINPOOLP160R1_SUPPORT != DISABLED)
335  #error X509_BRAINPOOLP160R1_SUPPORT parameter is not valid
336 #endif
337 
338 //brainpoolP160t1 elliptic curve support
339 #ifndef X509_BRAINPOOLP160T1_SUPPORT
340  #define X509_BRAINPOOLP160T1_SUPPORT DISABLED
341 #elif (X509_BRAINPOOLP160T1_SUPPORT != ENABLED && X509_BRAINPOOLP160T1_SUPPORT != DISABLED)
342  #error X509_BRAINPOOLP160T1_SUPPORT parameter is not valid
343 #endif
344 
345 //brainpoolP192r1 elliptic curve support
346 #ifndef X509_BRAINPOOLP192R1_SUPPORT
347  #define X509_BRAINPOOLP192R1_SUPPORT DISABLED
348 #elif (X509_BRAINPOOLP192R1_SUPPORT != ENABLED && X509_BRAINPOOLP192R1_SUPPORT != DISABLED)
349  #error X509_BRAINPOOLP192R1_SUPPORT parameter is not valid
350 #endif
351 
352 //brainpoolP192t1 elliptic curve support
353 #ifndef X509_BRAINPOOLP192T1_SUPPORT
354  #define X509_BRAINPOOLP192T1_SUPPORT DISABLED
355 #elif (X509_BRAINPOOLP192T1_SUPPORT != ENABLED && X509_BRAINPOOLP192T1_SUPPORT != DISABLED)
356  #error X509_BRAINPOOLP192T1_SUPPORT parameter is not valid
357 #endif
358 
359 //brainpoolP224r1 elliptic curve support
360 #ifndef X509_BRAINPOOLP224R1_SUPPORT
361  #define X509_BRAINPOOLP224R1_SUPPORT DISABLED
362 #elif (X509_BRAINPOOLP224R1_SUPPORT != ENABLED && X509_BRAINPOOLP224R1_SUPPORT != DISABLED)
363  #error X509_BRAINPOOLP224R1_SUPPORT parameter is not valid
364 #endif
365 
366 //brainpoolP224t1 elliptic curve support
367 #ifndef X509_BRAINPOOLP224T1_SUPPORT
368  #define X509_BRAINPOOLP224T1_SUPPORT DISABLED
369 #elif (X509_BRAINPOOLP224T1_SUPPORT != ENABLED && X509_BRAINPOOLP224T1_SUPPORT != DISABLED)
370  #error X509_BRAINPOOLP224T1_SUPPORT parameter is not valid
371 #endif
372 
373 //brainpoolP256r1 elliptic curve support
374 #ifndef X509_BRAINPOOLP256R1_SUPPORT
375  #define X509_BRAINPOOLP256R1_SUPPORT DISABLED
376 #elif (X509_BRAINPOOLP256R1_SUPPORT != ENABLED && X509_BRAINPOOLP256R1_SUPPORT != DISABLED)
377  #error X509_BRAINPOOLP256R1_SUPPORT parameter is not valid
378 #endif
379 
380 //brainpoolP256t1 elliptic curve support
381 #ifndef X509_BRAINPOOLP256T1_SUPPORT
382  #define X509_BRAINPOOLP256T1_SUPPORT DISABLED
383 #elif (X509_BRAINPOOLP256T1_SUPPORT != ENABLED && X509_BRAINPOOLP256T1_SUPPORT != DISABLED)
384  #error X509_BRAINPOOLP256T1_SUPPORT parameter is not valid
385 #endif
386 
387 //brainpoolP320r1 elliptic curve support
388 #ifndef X509_BRAINPOOLP320R1_SUPPORT
389  #define X509_BRAINPOOLP320R1_SUPPORT DISABLED
390 #elif (X509_BRAINPOOLP320R1_SUPPORT != ENABLED && X509_BRAINPOOLP320R1_SUPPORT != DISABLED)
391  #error X509_BRAINPOOLP320R1_SUPPORT parameter is not valid
392 #endif
393 //brainpoolP320t1 elliptic curve support
394 #ifndef X509_BRAINPOOLP320T1_SUPPORT
395  #define X509_BRAINPOOLP320T1_SUPPORT DISABLED
396 #elif (X509_BRAINPOOLP320T1_SUPPORT != ENABLED && X509_BRAINPOOLP320T1_SUPPORT != DISABLED)
397  #error X509_BRAINPOOLP320T1_SUPPORT parameter is not valid
398 #endif
399 
400 //brainpoolP384r1 elliptic curve support
401 #ifndef X509_BRAINPOOLP384R1_SUPPORT
402  #define X509_BRAINPOOLP384R1_SUPPORT DISABLED
403 #elif (X509_BRAINPOOLP384R1_SUPPORT != ENABLED && X509_BRAINPOOLP384R1_SUPPORT != DISABLED)
404  #error X509_BRAINPOOLP384R1_SUPPORT parameter is not valid
405 #endif
406 
407 //brainpoolP384t1 elliptic curve support
408 #ifndef X509_BRAINPOOLP384T1_SUPPORT
409  #define X509_BRAINPOOLP384T1_SUPPORT DISABLED
410 #elif (X509_BRAINPOOLP384T1_SUPPORT != ENABLED && X509_BRAINPOOLP384T1_SUPPORT != DISABLED)
411  #error X509_BRAINPOOLP384T1_SUPPORT parameter is not valid
412 #endif
413 
414 //brainpoolP512r1 elliptic curve support
415 #ifndef X509_BRAINPOOLP512R1_SUPPORT
416  #define X509_BRAINPOOLP512R1_SUPPORT DISABLED
417 #elif (X509_BRAINPOOLP512R1_SUPPORT != ENABLED && X509_BRAINPOOLP512R1_SUPPORT != DISABLED)
418  #error X509_BRAINPOOLP512R1_SUPPORT parameter is not valid
419 #endif
420 
421 //brainpoolP512t1 elliptic curve support
422 #ifndef X509_BRAINPOOLP512T1_SUPPORT
423  #define X509_BRAINPOOLP512T1_SUPPORT DISABLED
424 #elif (X509_BRAINPOOLP512T1_SUPPORT != ENABLED && X509_BRAINPOOLP512T1_SUPPORT != DISABLED)
425  #error X509_BRAINPOOLP512T1_SUPPORT parameter is not valid
426 #endif
427 
428 //FRP256v1 elliptic curve support
429 #ifndef X509_FRP256V1_SUPPORT
430  #define X509_FRP256V1_SUPPORT DISABLED
431 #elif (X509_FRP256V1_SUPPORT != ENABLED && X509_FRP256V1_SUPPORT != DISABLED)
432  #error X509_FRP256V1_SUPPORT parameter is not valid
433 #endif
434 
435 //Minimum acceptable size for RSA modulus
436 #ifndef X509_MIN_RSA_MODULUS_SIZE
437  #define X509_MIN_RSA_MODULUS_SIZE 1024
438 #elif (X509_MIN_RSA_MODULUS_SIZE < 512)
439  #error X509_MIN_RSA_MODULUS_SIZE parameter is not valid
440 #endif
441 
442 //Maximum acceptable size for RSA modulus
443 #ifndef X509_MAX_RSA_MODULUS_SIZE
444  #define X509_MAX_RSA_MODULUS_SIZE 4096
445 #elif (X509_MAX_RSA_MODULUS_SIZE < X509_MIN_RSA_MODULUS_SIZE)
446  #error X509_MAX_RSA_MODULUS_SIZE parameter is not valid
447 #endif
448 
449 //Minimum acceptable size for DSA prime modulus
450 #ifndef X509_MIN_DSA_MODULUS_SIZE
451  #define X509_MIN_DSA_MODULUS_SIZE 1024
452 #elif (X509_MIN_DSA_MODULUS_SIZE < 512)
453  #error X509_MIN_DSA_MODULUS_SIZE parameter is not valid
454 #endif
455 
456 //Maximum acceptable size for DSA prime modulus
457 #ifndef X509_MAX_DSA_MODULUS_SIZE
458  #define X509_MAX_DSA_MODULUS_SIZE 4096
459 #elif (X509_MAX_DSA_MODULUS_SIZE < X509_MIN_DSA_MODULUS_SIZE)
460  #error X509_MAX_DSA_MODULUS_SIZE parameter is not valid
461 #endif
462 
463 //Default size of serial numbers
464 #ifndef X509_SERIAL_NUMBER_SIZE
465  #define X509_SERIAL_NUMBER_SIZE 20
466 #elif (X509_SERIAL_NUMBER_SIZE < 1)
467  #error X509_SERIAL_NUMBER_SIZE parameter is not valid
468 #endif
469 
470 //Maximum number of domain components
471 #ifndef X509_MAX_DOMAIN_COMPONENTS
472  #define X509_MAX_DOMAIN_COMPONENTS 4
473 #elif (X509_MAX_DOMAIN_COMPONENTS < 1)
474  #error X509_MAX_DOMAIN_COMPONENTS parameter is not valid
475 #endif
476 
477 //Maximum number of subject alternative names
478 #ifndef X509_MAX_SUBJECT_ALT_NAMES
479  #define X509_MAX_SUBJECT_ALT_NAMES 4
480 #elif (X509_MAX_SUBJECT_ALT_NAMES < 1)
481  #error X509_MAX_SUBJECT_ALT_NAMES parameter is not valid
482 #endif
483 
484 //Maximum number of certificate issuers
485 #ifndef X509_MAX_CERT_ISSUERS
486  #define X509_MAX_CERT_ISSUERS 4
487 #elif (X509_MAX_CERT_ISSUERS < 1)
488  #error X509_MAX_CERT_ISSUERS parameter is not valid
489 #endif
490 
491 //Maximum number of CRL issuers
492 #ifndef X509_MAX_CRL_ISSUERS
493  #define X509_MAX_CRL_ISSUERS 2
494 #elif (X509_MAX_CRL_ISSUERS < 1)
495  #error X509_MAX_CRL_ISSUERS parameter is not valid
496 #endif
497 
498 //Maximum number of distribution points
499 #ifndef X509_MAX_DISTR_POINTS
500  #define X509_MAX_DISTR_POINTS 2
501 #elif (X509_MAX_DISTR_POINTS < 1)
502  #error X509_MAX_DISTR_POINTS parameter is not valid
503 #endif
504 
505 //Maximum number of full names
506 #ifndef X509_MAX_FULL_NAMES
507  #define X509_MAX_FULL_NAMES 2
508 #elif (X509_MAX_FULL_NAMES < 1)
509  #error X509_MAX_FULL_NAMES parameter is not valid
510 #endif
511 
512 //Maximum number of access descriptions
513 #ifndef X509_MAX_ACCESS_DESCRIPTIONS
514  #define X509_MAX_ACCESS_DESCRIPTIONS 2
515 #elif (X509_MAX_ACCESS_DESCRIPTIONS < 1)
516  #error X509_MAX_ACCESS_DESCRIPTIONS parameter is not valid
517 #endif
518 
519 //Maximum number of custom extensions
520 #ifndef X509_MAX_CUSTOM_EXTENSIONS
521  #define X509_MAX_CUSTOM_EXTENSIONS 2
522 #elif (X509_MAX_CUSTOM_EXTENSIONS < 1)
523  #error X509_MAX_CUSTOM_EXTENSIONS parameter is not valid
524 #endif
525 
526 //Application specific extensions
527 #ifndef X509_PRIVATE_EXTENSIONS
528  #define X509_PRIVATE_EXTENSIONS
529 #endif
530 
531 //C++ guard
532 #ifdef __cplusplus
533 extern "C" {
534 #endif
535 
536 
537 /**
538  * @brief PKCS #1 versions
539  **/
540 
541 typedef enum
542 {
543  PKCS1_VERSION_1 = 0
545 
546 
547 /**
548  * @brief PKCS #8 versions
549  **/
550 
551 typedef enum
552 {
554  PKCS8_VERSION_2 = 1
556 
557 
558 /**
559  * @brief X.509 versions
560  **/
561 
562 typedef enum
563 {
566  X509_VERSION_3 = 2
568 
569 
570 /**
571  * @brief Key usage
572  **/
573 
574 typedef enum
575 {
586 
587 
588 /**
589  * @brief Extended key usage
590  **/
591 
592 typedef enum
593 {
609  X509_EXT_KEY_USAGE_ANY = 0x00007FFF
611 
612 
613 /**
614  * @brief General name types
615  **/
616 
617 typedef enum
618 {
629 
630 
631 /**
632  * @brief Netscape certificate types
633  **/
634 
635 typedef enum
636 {
641 
642 
643 /**
644  * @brief Reason flags
645  **/
646 
647 typedef enum
648 {
659 
660 
661 /**
662  * @brief CRL reasons
663  **/
664 
665 typedef enum
666 {
678 
679 
680 /**
681  * @brief Public Key types
682  **/
683 
684 typedef enum
685 {
700 
701 
702 /**
703  * @brief Signature algorithms
704  **/
705 
706 typedef enum
707 {
720 
721 
722 /**
723  * @brief Hash algorithms
724  **/
725 
726 typedef enum
727 {
741  X509_HASH_ALGO_SM3 = 13
743 
744 
745 /**
746  * @brief String
747  **/
748 
749 typedef struct
750 {
751  const char_t *value;
752  size_t length;
753 } X509String;
754 
755 
756 /**
757  * @brief Octet string
758  **/
759 
760 typedef struct
761 {
762  const uint8_t *value;
763  size_t length;
765 
766 
767 /**
768  * @brief Serial number
769  **/
770 
771 typedef struct
772 {
773  const uint8_t *value;
774  size_t length;
776 
777 
778 /**
779  * @brief Issuer or subject name
780  **/
781 
782 typedef struct
783 {
803 } X509Name;
804 
805 
806 /**
807  * @brief Name attribute
808  **/
809 
810 typedef struct
811 {
816 
817 
818 /**
819  * @brief Validity
820  **/
821 
822 typedef struct
823 {
826 } X509Validity;
827 
828 
829 /**
830  * @brief Algorithm identifier
831  **/
832 
833 typedef struct
834 {
837 } X509AlgoId;
838 
839 
840 /**
841  * @brief RSA public key
842  **/
843 
844 typedef struct
845 {
849 
850 
851 /**
852  * @brief DSA domain parameters
853  **/
854 
855 typedef struct
856 {
861 
862 
863 /**
864  * @brief DSA public key
865  **/
866 
867 typedef struct
868 {
871 
872 
873 /**
874  * @brief EC parameters
875  **/
876 
877 typedef struct
878 {
881 
882 
883 /**
884  * @brief EC public key
885  **/
886 
887 typedef struct
888 {
891 
892 
893 /**
894  * @brief ML-DSA public key
895  **/
896 
897 typedef struct
898 {
901 
902 
903 /**
904  * @brief Subject Public Key Information extension
905  **/
906 
907 typedef struct
908 {
912 #if (RSA_SUPPORT == ENABLED)
914 #endif
915 #if (DSA_SUPPORT == ENABLED)
918 #endif
919 #if (EC_SUPPORT == ENABLED || ED25519_SUPPORT == ENABLED || \
920  ED448_SUPPORT == ENABLED)
923 #endif
924 #if (MLDSA44_SUPPORT == ENABLED || MLDSA65_SUPPORT == ENABLED || \
925  MLDSA87_SUPPORT == ENABLED)
927 #endif
929 
930 
931 /**
932  * @brief Basic Constraints extension
933  **/
934 
935 typedef struct
936 {
941 
942 
943 /**
944  * @brief Name Constraints extension
945  **/
946 
947 typedef struct
948 {
953 
954 
955 /**
956  * @brief Key Usage extension
957  **/
958 
959 typedef struct
960 {
962  uint16_t bitmap;
963 } X509KeyUsage;
964 
965 
966 /**
967  * @brief Extended Key Usage extension
968  **/
969 
970 typedef struct
971 {
973  uint16_t bitmap;
975 
976 
977 /**
978  * @brief General name
979  **/
980 
981 typedef struct
982 {
984  const char_t *value;
985  size_t length;
987 
988 
989 /**
990  * @brief Subject Alternative Name extension
991  **/
992 
993 typedef struct
994 {
1000 
1001 
1002 /**
1003  * @brief Subject Key Identifier extension
1004  **/
1005 
1006 typedef struct
1007 {
1009  const uint8_t *value;
1010  size_t length;
1012 
1013 
1014 /**
1015  * @brief Authority Key Identifier extension
1016  **/
1017 
1018 typedef struct
1019 {
1022 } X509AuthKeyId;
1023 
1024 
1025 /**
1026  * @brief Distribution Point Name structure
1027  **/
1028 
1029 typedef struct
1030 {
1035 
1036 
1037 /**
1038  * @brief Distribution Point structure
1039  **/
1040 
1041 typedef struct
1042 {
1044  uint16_t reasonFlags;
1047 } X509DistrPoint;
1048 
1049 
1050 /**
1051  * @brief CRL Distribution Points extension
1052  **/
1053 
1054 typedef struct
1055 {
1061 
1062 
1063 /**
1064  * @brief Access Description extension
1065  **/
1066 
1067 typedef struct
1068 {
1072 
1073 
1074 /**
1075  * @brief Authority Information Access extension
1076  **/
1077 
1078 typedef struct
1079 {
1085 
1086 
1087 /**
1088  * @brief PKIX OCSP No Check extension
1089  **/
1090 
1091 typedef struct
1092 {
1096 
1097 
1098 /**
1099  * @brief Netscape certificate type
1100  **/
1101 
1102 typedef struct
1103 {
1105  uint8_t bitmap;
1106 } X509NsCertType;
1107 
1108 
1109 /**
1110  * @brief X.509 certificate extension
1111  **/
1112 
1113 typedef struct
1114 {
1118 } X509Extension;
1119 
1120 
1121 /**
1122  * @brief X.509 certificate extensions
1123  **/
1124 
1125 typedef struct
1126 {
1142 } X509Extensions;
1143 
1144 
1145 /**
1146  * @brief RSASSA-PSS parameters
1147  **/
1148 
1149 typedef struct
1150 {
1154  size_t saltLen;
1156 
1157 
1158 /**
1159  * @brief Signature algorithm identifier
1160  **/
1161 
1162 typedef struct
1163 {
1165 #if (X509_RSA_PSS_SUPPORT == ENABLED && RSA_SUPPORT == ENABLED)
1167 #endif
1168 } X509SignAlgoId;
1169 
1170 
1171 /**
1172  * @brief TBSCertificate structure
1173  **/
1174 
1175 typedef struct
1176 {
1187 
1188 
1189 /**
1190  * @brief X.509 certificate
1191  **/
1192 
1193 typedef struct
1194 {
1199 } X509CertInfo;
1200 
1201 
1202 /**
1203  * @brief CRL Reason extension
1204  **/
1205 
1206 typedef struct
1207 {
1209  uint8_t value;
1210 } X509CrlReason;
1211 
1212 
1213 /**
1214  * @brief Invalidity Date extension
1215  **/
1216 
1217 typedef struct
1218 {
1222 
1223 
1224 /**
1225  * @brief Certificate Issuer extension
1226  **/
1227 
1228 typedef struct
1229 {
1235 
1236 
1237 /**
1238  * @brief CRL entry extensions
1239  **/
1240 
1241 typedef struct
1242 {
1248 
1249 
1250 /**
1251  * @brief Revoked certificate
1252  **/
1253 
1254 typedef struct
1255 {
1260 
1261 
1262 /**
1263  * @brief CRL number
1264  **/
1265 
1266 typedef struct
1267 {
1269  const uint8_t *value;
1270  size_t length;
1271 } X509CrlNumber;
1272 
1273 
1274 /**
1275  * @brief Delta CRL Indicator extension
1276  **/
1277 
1278 typedef struct
1279 {
1283 
1284 
1285 /**
1286  * @brief Issuing Distribution Point extension
1287  **/
1288 
1289 typedef struct
1290 {
1299 
1300 
1301 /**
1302  * @brief CRL extensions
1303  **/
1304 
1305 typedef struct
1306 {
1313 
1314 
1315 /**
1316  * @brief TBSCertList structure
1317  **/
1318 
1319 typedef struct
1320 {
1329 } X509TbsCertList;
1330 
1331 
1332 /**
1333  * @brief CRL (Certificate Revocation List)
1334  **/
1335 
1336 typedef struct
1337 {
1341 } X509CrlInfo;
1342 
1343 
1344 /**
1345  * @brief PKCS #9 ChallengePassword attribute
1346  **/
1347 
1348 typedef struct
1349 {
1350  const char_t *value;
1351  size_t length;
1353 
1354 
1355 /**
1356  * @brief CSR attribute
1357  **/
1358 
1359 typedef struct
1360 {
1363 } X509Attribute;
1364 
1365 
1366 /**
1367  * @brief CSR attributes
1368  **/
1369 
1370 typedef struct
1371 {
1375 } X509Attributes;
1376 
1377 
1378 /**
1379  * @brief CertificationRequestInfo structure
1380  **/
1381 
1382 typedef struct
1383 {
1390 
1391 
1392 /**
1393  * @brief CSR (Certificate Signing Request)
1394  **/
1395 
1396 typedef struct
1397 {
1401 } X509CsrInfo;
1402 
1403 
1404 /**
1405  * @brief Certificate parsing options
1406  **/
1407 
1408 typedef struct
1409 {
1410  bool_t ignoreUnknownExtensions; ///<Ignore unknown extensions
1411 } X509Options;
1412 
1413 
1414 //X.509 related constants
1415 extern const uint8_t X509_COMMON_NAME_OID[3];
1416 extern const uint8_t X509_SURNAME_OID[3];
1417 extern const uint8_t X509_SERIAL_NUMBER_OID[3];
1418 extern const uint8_t X509_COUNTRY_NAME_OID[3];
1419 extern const uint8_t X509_LOCALITY_NAME_OID[3];
1420 extern const uint8_t X509_STATE_OR_PROVINCE_NAME_OID[3];
1421 extern const uint8_t X509_ORGANIZATION_NAME_OID[3];
1422 extern const uint8_t X509_ORGANIZATIONAL_UNIT_NAME_OID[3];
1423 extern const uint8_t X509_TITLE_OID[3];
1424 extern const uint8_t X509_NAME_OID[3];
1425 extern const uint8_t X509_GIVEN_NAME_OID[3];
1426 extern const uint8_t X509_INITIALS_OID[3];
1427 extern const uint8_t X509_GENERATION_QUALIFIER_OID[3];
1428 extern const uint8_t X509_DN_QUALIFIER_OID[3];
1429 extern const uint8_t X509_PSEUDONYM_OID[3];
1430 extern const uint8_t X509_DOMAIN_COMPONENT_OID[10];
1431 
1432 extern const uint8_t X509_SUBJECT_DIR_ATTR_OID[3];
1433 extern const uint8_t X509_SUBJECT_KEY_ID_OID[3];
1434 extern const uint8_t X509_KEY_USAGE_OID[3];
1435 extern const uint8_t X509_SUBJECT_ALT_NAME_OID[3];
1436 extern const uint8_t X509_ISSUER_ALT_NAME_OID[3];
1437 extern const uint8_t X509_BASIC_CONSTRAINTS_OID[3];
1438 extern const uint8_t X509_CRL_NUMBER_OID[3];
1439 extern const uint8_t X509_REASON_CODE_OID[3];
1440 extern const uint8_t X509_INVALIDITY_DATE_OID[3];
1441 extern const uint8_t X509_DELTA_CRL_INDICATOR_OID[3];
1442 extern const uint8_t X509_ISSUING_DISTR_POINT_OID[3];
1443 extern const uint8_t X509_CERTIFICATE_ISSUER_OID[3];
1444 extern const uint8_t X509_NAME_CONSTRAINTS_OID[3];
1445 extern const uint8_t X509_CRL_DISTR_POINTS_OID[3];
1446 extern const uint8_t X509_CERTIFICATE_POLICIES_OID[3];
1447 extern const uint8_t X509_POLICY_MAPPINGS_OID[3];
1448 extern const uint8_t X509_AUTHORITY_KEY_ID_OID[3];
1449 extern const uint8_t X509_POLICY_CONSTRAINTS_OID[3];
1450 extern const uint8_t X509_EXTENDED_KEY_USAGE_OID[3];
1451 extern const uint8_t X509_FRESHEST_CRL_OID[3];
1452 extern const uint8_t X509_INHIBIT_ANY_POLICY_OID[3];
1453 extern const uint8_t X509_AUTH_INFO_ACCESS_OID[8];
1454 extern const uint8_t X509_PKIX_OCSP_NO_CHECK_OID[9];
1455 extern const uint8_t X509_NS_CERT_TYPE_OID[9];
1456 
1457 extern const uint8_t X509_ANY_EXT_KEY_USAGE_OID[4];
1458 extern const uint8_t X509_KP_SERVER_AUTH_OID[8];
1459 extern const uint8_t X509_KP_CLIENT_AUTH_OID[8];
1460 extern const uint8_t X509_KP_CODE_SIGNING_OID[8];
1461 extern const uint8_t X509_KP_EMAIL_PROTECTION_OID[8];
1462 extern const uint8_t X509_KP_IPSEC_END_SYSTEM_OID[8];
1463 extern const uint8_t X509_KP_IPSEC_TUNNEL_OID[8];
1464 extern const uint8_t X509_KP_IPSEC_USER_OID[8];
1465 extern const uint8_t X509_KP_TIME_STAMPING_OID[8];
1466 extern const uint8_t X509_KP_OCSP_SIGNING_OID[8];
1467 extern const uint8_t X509_KP_IPSEC_IKE_OID[8];
1468 extern const uint8_t X509_KP_SSH_CLIENT_OID[8];
1469 extern const uint8_t X509_KP_SSH_SERVER_OID[8];
1470 extern const uint8_t X509_KP_CMC_CA_OID[8];
1471 extern const uint8_t X509_KP_CMC_RA_OID[8];
1472 extern const uint8_t X509_KP_DOC_SIGNING_OID[8];
1473 
1474 extern const uint8_t X509_AD_CA_ISSUERS[8];
1475 extern const uint8_t X509_AD_OCSP[8];
1476 
1477 extern const uint8_t PKCS9_EMAIL_ADDR_OID[9];
1478 extern const uint8_t PKCS9_CHALLENGE_PASSWORD_OID[9];
1479 extern const uint8_t PKCS9_EXTENSION_REQUEST_OID[9];
1480 
1481 extern const X509Options X509_DEFAULT_OPTIONS;
1482 
1483 //X.509 related functions
1484 bool_t x509CompareName(const uint8_t *name1, size_t nameLen1,
1485  const uint8_t *name2, size_t nameLen2);
1486 
1489 bool_t x509IsCurveSupported(const uint8_t *oid, size_t length);
1490 
1491 error_t x509GetSignHashAlgo(const X509SignAlgoId *signAlgoId,
1492  X509SignatureAlgo *signAlgo, const HashAlgo **hashAlgo);
1493 
1494 X509KeyType x509GetPublicKeyType(const uint8_t *oid, size_t length);
1495 const HashAlgo *x509GetHashAlgo(const uint8_t *oid, size_t length);
1496 const EcCurve *x509GetCurve(const uint8_t *oid, size_t length);
1497 
1498 //C++ guard
1499 #ifdef __cplusplus
1500 }
1501 #endif
1502 
1503 #endif
@ X509_GENERAL_NAME_TYPE_REGISTERED_ID
Definition: x509_common.h:627
const uint8_t PKCS9_EMAIL_ADDR_OID[9]
Definition: x509_common.c:166
X509Validity validity
Definition: x509_common.h:1182
const uint8_t X509_KP_SERVER_AUTH_OID[8]
Definition: x509_common.c:130
@ X509_GENERAL_NAME_TYPE_X400_ADDRESS
Definition: x509_common.h:622
X509CrlDistrPoints crlDistrPoints
Definition: x509_common.h:1135
#define X509_MAX_FULL_NAMES
Definition: x509_common.h:507
@ X509_KEY_TYPE_RSA
Definition: x509_common.h:687
@ X509_EXT_KEY_USAGE_ANY
Definition: x509_common.h:609
Date and time management.
CRL entry extensions.
Definition: x509_common.h:1242
@ PKCS8_VERSION_2
Definition: x509_common.h:554
const uint8_t X509_ORGANIZATIONAL_UNIT_NAME_OID[3]
Definition: x509_common.c:60
@ X509_EXT_KEY_USAGE_SSH_CLIENT
Definition: x509_common.h:604
X509AuthInfoAccess authInfoAccess
Definition: x509_common.h:1136
X509GeneralNameType type
Definition: x509_common.h:983
@ X509_NS_CERT_TYPE_SSL_SERVER
Definition: x509_common.h:638
@ X509_EXT_KEY_USAGE_IPSEC_IKE
Definition: x509_common.h:603
int bool_t
Definition: compiler_port.h:63
X509SignAlgoId signatureAlgo
Definition: x509_common.h:1197
X509GeneralName accessLocation
Definition: x509_common.h:1070
const uint8_t X509_INHIBIT_ANY_POLICY_OID[3]
Definition: x509_common.c:119
X509DistrPointName distrPointName
Definition: x509_common.h:1043
@ X509_EXT_KEY_USAGE_CMC_CA
Definition: x509_common.h:606
const uint8_t * value
Definition: x509_common.h:773
const uint8_t X509_KEY_USAGE_OID[3]
Definition: x509_common.c:83
X509OctetString params
Definition: x509_common.h:836
X509ReasonFlags
Reason flags.
Definition: x509_common.h:648
X509TbsCertificate tbsCert
Definition: x509_common.h:1196
@ X509_EXT_KEY_USAGE_CMC_RA
Definition: x509_common.h:607
@ X509_CRL_REASON_CA_COMPROMISE
Definition: x509_common.h:669
@ X509_SIGN_ALGO_MLDSA65
Definition: x509_common.h:717
X509OctetString accessMethod
Definition: x509_common.h:1069
X509OctetString g
Definition: x509_common.h:859
Pkcs1Version
PKCS #1 versions.
Definition: x509_common.h:542
TBSCertificate structure.
Definition: x509_common.h:1176
signed int int_t
Definition: compiler_port.h:56
@ X509_KEY_TYPE_X448
Definition: x509_common.h:694
X509String givenName
Definition: x509_common.h:795
X509OctetString p
Definition: x509_common.h:857
#define X509_MAX_CRL_ISSUERS
Definition: x509_common.h:493
X509Extensions extensions
Definition: x509_common.h:1185
X509OctetString baseCrlNumber
Definition: x509_common.h:1281
X509DsaPublicKey dsaPublicKey
Definition: x509_common.h:917
@ X509_REASON_FLAGS_PRIVILEGE_WITHDRAWN
Definition: x509_common.h:656
const uint8_t X509_EXTENDED_KEY_USAGE_OID[3]
Definition: x509_common.c:115
X509OctetString raw
Definition: x509_common.h:996
X509OctetString hashAlgo
Definition: x509_common.h:1151
@ X509_KEY_TYPE_MLDSA87
Definition: x509_common.h:698
ECDSA (Elliptic Curve Digital Signature Algorithm)
const uint8_t X509_KP_SSH_CLIENT_OID[8]
Definition: x509_common.c:150
Validity.
Definition: x509_common.h:823
X509KeyUsage keyUsage
Definition: x509_common.h:1130
X509OctetString oid
Definition: x509_common.h:910
X509OctetString raw
Definition: x509_common.h:1177
X509KeyType x509GetPublicKeyType(const uint8_t *oid, size_t length)
Get the public key type that matches the specified OID.
Definition: x509_common.c:869
const X509Options X509_DEFAULT_OPTIONS
Definition: x509_common.c:173
const uint8_t X509_POLICY_CONSTRAINTS_OID[3]
Definition: x509_common.c:113
X509OctetString raw
Definition: x509_common.h:1057
X509SignAlgoId signatureAlgo
Definition: x509_common.h:1180
@ X509_REASON_FLAGS_AFFILIATION_CHANGED
Definition: x509_common.h:652
X509String stateOrProvinceName
Definition: x509_common.h:790
const uint8_t X509_ORGANIZATION_NAME_OID[3]
Definition: x509_common.c:58
const uint8_t X509_DOMAIN_COMPONENT_OID[10]
Definition: x509_common.c:76
const uint8_t X509_KP_CODE_SIGNING_OID[8]
Definition: x509_common.c:134
X509String pseudonym
Definition: x509_common.h:799
X509OctetString raw
Definition: x509_common.h:1127
X509EcParameters ecParams
Definition: x509_common.h:921
const char_t * value
Definition: x509_common.h:1350
@ X509_GENERAL_NAME_TYPE_RFC822
Definition: x509_common.h:620
X509ExtendedKeyUsage extKeyUsage
Definition: x509_common.h:1131
const uint8_t X509_KP_OCSP_SIGNING_OID[8]
Definition: x509_common.c:146
X509NsCertType nsCertType
Definition: x509_common.h:1138
X509SignAlgoId signatureAlgo
Definition: x509_common.h:1399
X509OctetString maskGenHashAlgo
Definition: x509_common.h:1153
Pkcs8Version
PKCS #8 versions.
Definition: x509_common.h:552
const uint8_t X509_DN_QUALIFIER_OID[3]
Definition: x509_common.c:72
@ X509_KEY_USAGE_DATA_ENCIPHERMENT
Definition: x509_common.h:579
@ X509_GENERAL_NAME_TYPE_URI
Definition: x509_common.h:625
#define X509_PRIVATE_EXTENSIONS
Definition: x509_common.h:528
@ X509_EXT_KEY_USAGE_IPSEC_USER
Definition: x509_common.h:600
X509Extensions extensionReq
Definition: x509_common.h:1374
const uint8_t X509_SUBJECT_DIR_ATTR_OID[3]
Definition: x509_common.c:79
X509String name
Definition: x509_common.h:794
X509String title
Definition: x509_common.h:793
X509String organizationName
Definition: x509_common.h:791
const uint8_t X509_SUBJECT_ALT_NAME_OID[3]
Definition: x509_common.c:85
@ X509_VERSION_1
Definition: x509_common.h:564
@ X509_EXT_KEY_USAGE_CLIENT_AUTH
Definition: x509_common.h:595
CRL (Certificate Revocation List)
Definition: x509_common.h:1337
@ X509_EXT_KEY_USAGE_SSH_SERVER
Definition: x509_common.h:605
@ X509_EXT_KEY_USAGE_IPSEC_END_SYSTEM
Definition: x509_common.h:598
const HashAlgo * x509GetHashAlgo(const uint8_t *oid, size_t length)
Get the hash algorithms that match the specified identifier.
Definition: x509_common.c:971
Invalidity Date extension.
Definition: x509_common.h:1218
const uint8_t X509_GIVEN_NAME_OID[3]
Definition: x509_common.c:66
const uint8_t X509_SERIAL_NUMBER_OID[3]
Definition: x509_common.c:50
const uint8_t X509_AUTHORITY_KEY_ID_OID[3]
Definition: x509_common.c:111
#define X509_MAX_SUBJECT_ALT_NAMES
Definition: x509_common.h:479
@ X509_CRL_REASON_AA_COMPROMISE
Definition: x509_common.h:676
size_t length
Definition: x509_common.h:752
@ X509_KEY_USAGE_ENCIPHER_ONLY
Definition: x509_common.h:583
Subject Key Identifier extension.
Definition: x509_common.h:1007
X509String commonName
Definition: x509_common.h:785
@ X509_GENERAL_NAME_TYPE_DIRECTORY
Definition: x509_common.h:623
uint8_t oid[]
Definition: lldp_tlv.h:300
X509DeltaCrlIndicator deltaCrlIndicator
Definition: x509_common.h:1309
X509AuthKeyId authKeyId
Definition: x509_common.h:1134
const uint8_t X509_NAME_OID[3]
Definition: x509_common.c:64
@ X509_CRL_REASON_SUPERSEDED
Definition: x509_common.h:671
const uint8_t X509_AD_CA_ISSUERS[8]
Definition: x509_common.c:161
X509OctetString q
Definition: x509_common.h:858
EC public key.
Definition: x509_common.h:888
const uint8_t X509_ANY_EXT_KEY_USAGE_OID[4]
Definition: x509_common.c:128
Certificate parsing options.
Definition: x509_common.h:1409
String.
Definition: x509_common.h:750
@ X509_CRL_REASON_AFFILIATION_CHANGED
Definition: x509_common.h:670
Distribution Point Name structure.
Definition: x509_common.h:1030
@ X509_GENERAL_NAME_TYPE_EDI_PARTY
Definition: x509_common.h:624
@ X509_SIGN_ALGO_MLDSA44
Definition: x509_common.h:716
uint_t numAccessDescriptions
Definition: x509_common.h:1082
X509String initials
Definition: x509_common.h:796
X509SignAlgoId signatureAlgo
Definition: x509_common.h:1323
@ PKCS1_VERSION_1
Definition: x509_common.h:543
X509CrlReasons
CRL reasons.
Definition: x509_common.h:666
@ X509_KEY_TYPE_EC
Definition: x509_common.h:690
X509SubjectPublicKeyInfo subjectPublicKeyInfo
Definition: x509_common.h:1387
X509OctetString y
Definition: x509_common.h:869
DateTime notAfter
Definition: x509_common.h:825
Certificate Issuer extension.
Definition: x509_common.h:1229
X509SignatureAlgo
Signature algorithms.
Definition: x509_common.h:707
Authority Information Access extension.
Definition: x509_common.h:1079
@ X509_KEY_USAGE_NON_REPUDIATION
Definition: x509_common.h:577
const uint8_t X509_DELTA_CRL_INDICATOR_OID[3]
Definition: x509_common.c:97
const uint8_t PKCS9_CHALLENGE_PASSWORD_OID[9]
Definition: x509_common.c:168
General name.
Definition: x509_common.h:982
error_t x509GetSignHashAlgo(const X509SignAlgoId *signAlgoId, X509SignatureAlgo *signAlgo, const HashAlgo **hashAlgo)
Get the signature and hash algorithms that match the specified identifier.
Definition: x509_common.c:447
bool_t critical
Definition: x509_common.h:961
X509OctetString raw
Definition: x509_common.h:1307
X509OctetString raw
Definition: x509_common.h:1321
X509OctetString raw
Definition: x509_common.h:1195
@ X509_KEY_TYPE_SM2
Definition: x509_common.h:691
const uint8_t * value
Definition: x509_common.h:1269
X509CrlNumber crlNumber
Definition: x509_common.h:1308
@ X509_GENERAL_NAME_TYPE_DNS
Definition: x509_common.h:621
X.509 certificate.
Definition: x509_common.h:1194
error_t
Error codes.
Definition: error.h:43
const uint8_t X509_PKIX_OCSP_NO_CHECK_OID[9]
Definition: x509_common.c:123
EC parameters.
Definition: x509_common.h:878
const uint8_t X509_POLICY_MAPPINGS_OID[3]
Definition: x509_common.c:109
const uint8_t X509_AUTH_INFO_ACCESS_OID[8]
Definition: x509_common.c:121
const uint8_t X509_REASON_CODE_OID[3]
Definition: x509_common.c:93
const uint8_t X509_CRL_NUMBER_OID[3]
Definition: x509_common.c:91
bool_t x509IsCurveSupported(const uint8_t *oid, size_t length)
Check whether a given elliptic curve is supported.
Definition: x509_common.c:424
Name attribute.
Definition: x509_common.h:811
Extended Key Usage extension.
Definition: x509_common.h:971
Distribution Point structure.
Definition: x509_common.h:1042
const EcCurve * x509GetCurve(const uint8_t *oid, size_t length)
Get the elliptic curve that matches the specified OID.
Definition: x509_common.c:1080
X509BasicConstraints basicConstraints
Definition: x509_common.h:1128
RSA public key.
Definition: x509_common.h:845
X509Version
X.509 versions.
Definition: x509_common.h:563
@ X509_KEY_USAGE_DECIPHER_ONLY
Definition: x509_common.h:584
X509InvalidityDate invalidityDate
Definition: x509_common.h:1245
X509OctetString signatureValue
Definition: x509_common.h:1340
X509Version version
Definition: x509_common.h:1178
X509CrlEntryExtensions crlEntryExtensions
Definition: x509_common.h:1258
X509NameAttribute relativeName
Definition: x509_common.h:1033
X509OctetString permittedSubtrees
Definition: x509_common.h:950
@ X509_SIGN_ALGO_ECDSA
Definition: x509_common.h:712
@ X509_CRL_REASON_CESSATION_OF_OPERATION
Definition: x509_common.h:672
@ X509_HASH_ALGO_NONE
Definition: x509_common.h:728
CSR attribute.
Definition: x509_common.h:1360
uint16_t reasonFlags
Definition: x509_common.h:1044
TBSCertList structure.
Definition: x509_common.h:1320
const uint8_t X509_TITLE_OID[3]
Definition: x509_common.c:62
const uint8_t X509_NAME_CONSTRAINTS_OID[3]
Definition: x509_common.c:103
@ X509_REASON_FLAGS_CERTIFICATE_HOLD
Definition: x509_common.h:655
X509AuthKeyId authKeyId
Definition: x509_common.h:1311
X509String emailAddress
Definition: x509_common.h:800
X509RsaPublicKey rsaPublicKey
Definition: x509_common.h:913
@ X509_KEY_USAGE_KEY_AGREEMENT
Definition: x509_common.h:580
Collection of signature algorithms.
X509MldsaPublicKey mldsaPublicKey
Definition: x509_common.h:926
@ X509_REASON_FLAGS_CA_COMPROMISE
Definition: x509_common.h:651
X509OctetString oid
Definition: x509_common.h:1361
X509OctetString oid
Definition: x509_common.h:835
EdDSA (Edwards-Curve Digital Signature Algorithm)
#define X509_MAX_ACCESS_DESCRIPTIONS
Definition: x509_common.h:514
@ X509_VERSION_3
Definition: x509_common.h:566
X.509 certificate extension.
Definition: x509_common.h:1114
@ X509_HASH_ALGO_SHA1
Definition: x509_common.h:730
const uint8_t X509_AD_OCSP[8]
Definition: x509_common.c:163
Authority Key Identifier extension.
Definition: x509_common.h:1019
General definitions for cryptographic algorithms.
X509Version version
Definition: x509_common.h:1385
X509CertRequestInfo certReqInfo
Definition: x509_common.h:1398
ML-DSA (Edwards-Curve Digital Signature Algorithm)
X509PkixOcspNoCheck pkixOcspNoCheck
Definition: x509_common.h:1137
RSA public-key cryptography standard.
X509OctetString raw
Definition: x509_common.h:909
X509OctetString raw
Definition: x509_common.h:1372
X509SerialNumber serialNumber
Definition: x509_common.h:1179
@ X509_HASH_ALGO_SHA3_224
Definition: x509_common.h:735
X509OctetString excludedSubtrees
Definition: x509_common.h:951
PKIX OCSP No Check extension.
Definition: x509_common.h:1092
DSA (Digital Signature Algorithm)
@ X509_REASON_FLAGS_AA_COMPROMISE
Definition: x509_common.h:657
X509OctetString signatureValue
Definition: x509_common.h:1198
const uint8_t X509_KP_EMAIL_PROTECTION_OID[8]
Definition: x509_common.c:136
X509OctetString raw
Definition: x509_common.h:1231
@ X509_KEY_TYPE_RSA_PSS
Definition: x509_common.h:688
X509String serialNumber
Definition: x509_common.h:787
X509OctetString raw
Definition: x509_common.h:1384
@ X509_EXT_KEY_USAGE_SERVER_AUTH
Definition: x509_common.h:594
X509DsaParameters dsaParams
Definition: x509_common.h:916
Date and time representation.
Definition: date_time.h:54
@ X509_KEY_USAGE_DIGITAL_SIGNATURE
Definition: x509_common.h:576
#define X509_MAX_CUSTOM_EXTENSIONS
Definition: x509_common.h:521
const uint8_t PKCS9_EXTENSION_REQUEST_OID[9]
Definition: x509_common.c:170
@ X509_HASH_ALGO_SHA224
Definition: x509_common.h:731
@ X509_SIGN_ALGO_MLDSA87
Definition: x509_common.h:718
uint8_t length
Definition: tcp.h:375
Revoked certificate.
Definition: x509_common.h:1255
const uint8_t X509_CRL_DISTR_POINTS_OID[3]
Definition: x509_common.c:105
@ PKCS8_VERSION_1
Definition: x509_common.h:553
@ X509_CRL_REASON_CERTIFICATE_HOLD
Definition: x509_common.h:673
X509OctetString oid
Definition: x509_common.h:1164
X509OctetString maskGenAlgo
Definition: x509_common.h:1152
uint16_t bitmap
Definition: x509_common.h:962
X509TbsCertList tbsCertList
Definition: x509_common.h:1338
X509HashAlgo
Hash algorithms.
Definition: x509_common.h:727
CertificationRequestInfo structure.
Definition: x509_common.h:1383
X509CrlExtensions crlExtensions
Definition: x509_common.h:1328
X509SubjectAltName subjectAltName
Definition: x509_common.h:1132
Subject Alternative Name extension.
Definition: x509_common.h:994
@ X509_EXT_KEY_USAGE_DOC_SIGNING
Definition: x509_common.h:608
const uint8_t X509_KP_IPSEC_TUNNEL_OID[8]
Definition: x509_common.c:140
const uint8_t X509_KP_CMC_RA_OID[8]
Definition: x509_common.c:156
@ X509_SIGN_ALGO_RSA
Definition: x509_common.h:709
Access Description extension.
Definition: x509_common.h:1068
const uint8_t X509_INVALIDITY_DATE_OID[3]
Definition: x509_common.c:95
const uint8_t X509_KP_IPSEC_IKE_OID[8]
Definition: x509_common.c:148
@ X509_EXT_KEY_USAGE_TIME_STAMPING
Definition: x509_common.h:601
X509OctetString namedCurve
Definition: x509_common.h:879
X509String surname
Definition: x509_common.h:786
X509KeyUsageBitmap
Key usage.
Definition: x509_common.h:575
const uint8_t X509_KP_TIME_STAMPING_OID[8]
Definition: x509_common.c:144
Netscape certificate type.
Definition: x509_common.h:1103
@ X509_EXT_KEY_USAGE_IPSEC_TUNNEL
Definition: x509_common.h:599
@ X509_NS_CERT_TYPE_SSL_CLIENT
Definition: x509_common.h:637
const char_t * value
Definition: x509_common.h:984
bool_t onlyContainsAttributeCerts
Definition: x509_common.h:1297
@ X509_HASH_ALGO_SHA3_512
Definition: x509_common.h:738
char char_t
Definition: compiler_port.h:55
X509SignAlgoId signatureAlgo
Definition: x509_common.h:1339
@ X509_HASH_ALGO_MD5
Definition: x509_common.h:729
@ X509_VERSION_2
Definition: x509_common.h:565
X509IssuingDistrPoint issuingDistrPoint
Definition: x509_common.h:1310
bool_t x509IsHashAlgoSupported(X509HashAlgo hashAlgo)
Check whether a given hash algorithm is supported.
Definition: x509_common.c:306
X509String generationQualifier
Definition: x509_common.h:797
@ X509_REASON_FLAGS_SUPERSEDED
Definition: x509_common.h:653
const uint8_t X509_ISSUER_ALT_NAME_OID[3]
Definition: x509_common.c:87
uint_t numCustomExtensions
Definition: x509_common.h:1139
X509ExtKeyUsageBitmap
Extended key usage.
Definition: x509_common.h:593
DateTime notBefore
Definition: x509_common.h:824
X509OctetString data
Definition: x509_common.h:1362
X509OctetString q
Definition: x509_common.h:889
@ X509_SIGN_ALGO_RSA_PSS
Definition: x509_common.h:710
const char_t * value
Definition: x509_common.h:751
const uint8_t X509_LOCALITY_NAME_OID[3]
Definition: x509_common.c:54
#define X509_MAX_DOMAIN_COMPONENTS
Definition: x509_common.h:472
const uint8_t X509_SURNAME_OID[3]
Definition: x509_common.c:48
@ X509_KEY_TYPE_ED448
Definition: x509_common.h:695
X509OctetString signatureValue
Definition: x509_common.h:1400
@ X509_HASH_ALGO_SHA3_256
Definition: x509_common.h:736
@ X509_HASH_ALGO_SHA3_384
Definition: x509_common.h:737
const uint8_t X509_PSEUDONYM_OID[3]
Definition: x509_common.c:74
const uint8_t X509_KP_CLIENT_AUTH_OID[8]
Definition: x509_common.c:132
Issuer or subject name.
Definition: x509_common.h:783
X509CertificateIssuer certIssuer
Definition: x509_common.h:1246
X509OctetString n
Definition: x509_common.h:846
X509OctetString e
Definition: x509_common.h:847
Subject Public Key Information extension.
Definition: x509_common.h:908
@ X509_CRL_REASON_KEY_COMPROMISE
Definition: x509_common.h:668
@ X509_HASH_ALGO_SHA512
Definition: x509_common.h:734
@ X509_HASH_ALGO_SHAKE256_512
Definition: x509_common.h:740
const uint8_t X509_COMMON_NAME_OID[3]
Definition: x509_common.c:46
CRL extensions.
Definition: x509_common.h:1306
DSA domain parameters.
Definition: x509_common.h:856
const uint8_t X509_KP_IPSEC_END_SYSTEM_OID[8]
Definition: x509_common.c:138
@ X509_KEY_TYPE_MLDSA44
Definition: x509_common.h:696
X509CrlReason reasonCode
Definition: x509_common.h:1244
@ X509_KEY_TYPE_DSA
Definition: x509_common.h:689
@ X509_REASON_FLAGS_KEY_COMPROMISE
Definition: x509_common.h:650
X509DistrPointName distributionPoint
Definition: x509_common.h:1292
X509OctetString raw
Definition: x509_common.h:1081
const uint8_t X509_STATE_OR_PROVINCE_NAME_OID[3]
Definition: x509_common.c:56
CRL Reason extension.
Definition: x509_common.h:1207
@ X509_REASON_FLAGS_CESSATION_OF_OPERATION
Definition: x509_common.h:654
Basic Constraints extension.
Definition: x509_common.h:936
CSR attributes.
Definition: x509_common.h:1371
#define X509_MAX_DISTR_POINTS
Definition: x509_common.h:500
@ X509_NS_CERT_TYPE_SSL_CA
Definition: x509_common.h:639
Delta CRL Indicator extension.
Definition: x509_common.h:1279
@ X509_HASH_ALGO_SHA384
Definition: x509_common.h:733
X509OctetString revokedCerts
Definition: x509_common.h:1327
const uint8_t X509_NS_CERT_TYPE_OID[9]
Definition: x509_common.c:125
DateTime thisUpdate
Definition: x509_common.h:1325
const uint8_t X509_CERTIFICATE_ISSUER_OID[3]
Definition: x509_common.c:101
@ X509_HASH_ALGO_SHA256
Definition: x509_common.h:732
const uint8_t X509_SUBJECT_KEY_ID_OID[3]
Definition: x509_common.c:81
RSASSA-PSS parameters.
Definition: x509_common.h:1150
X509String organizationalUnitName
Definition: x509_common.h:792
@ X509_EXT_KEY_USAGE_OCSP_SIGNING
Definition: x509_common.h:602
const uint8_t X509_KP_CMC_CA_OID[8]
Definition: x509_common.c:154
Name Constraints extension.
Definition: x509_common.h:948
X.509 certificate extensions.
Definition: x509_common.h:1126
X509OctetString rawSubjectPublicKey
Definition: x509_common.h:911
CRL Distribution Points extension.
Definition: x509_common.h:1055
const uint8_t X509_ISSUING_DISTR_POINT_OID[3]
Definition: x509_common.c:99
X509NameConstraints nameConstraints
Definition: x509_common.h:1129
const uint8_t X509_INITIALS_OID[3]
Definition: x509_common.c:68
X509OctetString oid
Definition: x509_common.h:812
X509String dnQualifier
Definition: x509_common.h:798
const uint8_t X509_KP_DOC_SIGNING_OID[8]
Definition: x509_common.c:158
X509OctetString oid
Definition: x509_common.h:1115
const uint8_t X509_COUNTRY_NAME_OID[3]
Definition: x509_common.c:52
@ X509_EXT_KEY_USAGE_CODE_SIGNING
Definition: x509_common.h:596
const uint8_t * value
Definition: x509_common.h:762
bool_t x509IsSignAlgoSupported(X509SignatureAlgo signAlgo)
Check whether a given signature algorithm is supported.
Definition: x509_common.c:210
Common interface for hash algorithms.
Definition: crypto.h:1243
CRL number.
Definition: x509_common.h:1267
const uint8_t * value
Definition: x509_common.h:1009
@ X509_KEY_TYPE_UNKNOWN
Definition: x509_common.h:686
#define EcCurve
Definition: ec.h:346
@ X509_CRL_REASON_PRIVILEGE_WITHDRAWN
Definition: x509_common.h:675
uint_t numCrlIssuers
Definition: x509_common.h:1045
@ X509_CRL_REMOVE_FROM_CRL
Definition: x509_common.h:674
X509SerialNumber userCert
Definition: x509_common.h:1256
@ X509_GENERAL_NAME_TYPE_OTHER
Definition: x509_common.h:619
X509ChallengePassword challengePwd
Definition: x509_common.h:1373
@ X509_CRL_REASON_UNSPECIFIED
Definition: x509_common.h:667
X509String localityName
Definition: x509_common.h:789
const uint8_t X509_KP_SSH_SERVER_OID[8]
Definition: x509_common.c:152
@ X509_SIGN_ALGO_SM2
Definition: x509_common.h:713
Serial number.
Definition: x509_common.h:772
Octet string.
Definition: x509_common.h:761
@ X509_REASON_FLAGS_UNUSED
Definition: x509_common.h:649
X509OctetString keyId
Definition: x509_common.h:1021
@ X509_SIGN_ALGO_ED25519
Definition: x509_common.h:714
@ X509_HASH_ALGO_SHAKE128_256
Definition: x509_common.h:739
unsigned int uint_t
Definition: compiler_port.h:57
Issuing Distribution Point extension.
Definition: x509_common.h:1290
DateTime nextUpdate
Definition: x509_common.h:1326
const uint8_t X509_FRESHEST_CRL_OID[3]
Definition: x509_common.c:117
@ X509_KEY_TYPE_ED25519
Definition: x509_common.h:693
@ X509_GENERAL_NAME_TYPE_IP_ADDRESS
Definition: x509_common.h:626
X509OctetString data
Definition: x509_common.h:1117
@ X509_KEY_USAGE_KEY_ENCIPHERMENT
Definition: x509_common.h:578
const uint8_t X509_BASIC_CONSTRAINTS_OID[3]
Definition: x509_common.c:89
X509KeyType
Public Key types.
Definition: x509_common.h:685
X509EcPublicKey ecPublicKey
Definition: x509_common.h:922
X509SubjectPublicKeyInfo subjectPublicKeyInfo
Definition: x509_common.h:1184
DSA public key.
Definition: x509_common.h:868
const uint8_t X509_KP_IPSEC_USER_OID[8]
Definition: x509_common.c:142
X509GeneralNameType
General name types.
Definition: x509_common.h:618
X509SubjectKeyId subjectKeyId
Definition: x509_common.h:1133
X509String data
Definition: x509_common.h:814
X509Version version
Definition: x509_common.h:1322
CSR (Certificate Signing Request)
Definition: x509_common.h:1397
bool_t x509CompareName(const uint8_t *name1, size_t nameLen1, const uint8_t *name2, size_t nameLen2)
Compare distinguished names.
Definition: x509_common.c:188
@ X509_SIGN_ALGO_NONE
Definition: x509_common.h:708
X509Attributes attributes
Definition: x509_common.h:1388
#define X509_MAX_CERT_ISSUERS
Definition: x509_common.h:486
@ X509_EXT_KEY_USAGE_EMAIL_PROTECTION
Definition: x509_common.h:597
ML-DSA public key.
Definition: x509_common.h:898
@ X509_HASH_ALGO_SM3
Definition: x509_common.h:741
@ X509_KEY_TYPE_MLDSA65
Definition: x509_common.h:697
X509RsaPssParameters rsaPssParams
Definition: x509_common.h:1166
bool_t ignoreUnknownExtensions
Ignore unknown extensions.
Definition: x509_common.h:1410
uint_t numDomainComponents
Definition: x509_common.h:801
X509OctetString raw
Definition: x509_common.h:1243
@ X509_KEY_USAGE_CRL_SIGN
Definition: x509_common.h:582
X509OctetString raw
Definition: x509_common.h:784
PKCS #9 ChallengePassword attribute.
Definition: x509_common.h:1349
Signature algorithm identifier.
Definition: x509_common.h:1163
X509NsCertTypeBitmap
Netscape certificate types.
Definition: x509_common.h:636
Algorithm identifier.
Definition: x509_common.h:834
@ X509_KEY_TYPE_X25519
Definition: x509_common.h:692
@ X509_SIGN_ALGO_DSA
Definition: x509_common.h:711
X509String countryName
Definition: x509_common.h:788
X509OctetString pk
Definition: x509_common.h:899
@ X509_KEY_USAGE_KEY_CERT_SIGN
Definition: x509_common.h:581
@ X509_SIGN_ALGO_ED448
Definition: x509_common.h:715
Key Usage extension.
Definition: x509_common.h:960
const uint8_t X509_CERTIFICATE_POLICIES_OID[3]
Definition: x509_common.c:107
const uint8_t X509_GENERATION_QUALIFIER_OID[3]
Definition: x509_common.c:70