licentivo-launch 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +35 -0
  4. data/ext/launch_native/extconf.rb +28 -0
  5. data/lib/licentivo_launch/vendor/licentivo.rb +262 -0
  6. data/lib/licentivo_launch.rb +352 -0
  7. data/vendor/LICENSE +21 -0
  8. data/vendor/NOTICE +17 -0
  9. data/vendor/VERSION +1 -0
  10. data/vendor/c/app.c +33 -0
  11. data/vendor/c/demo.c +77 -0
  12. data/vendor/c/feature_tasks.h +72 -0
  13. data/vendor/c/licentivo.c +382 -0
  14. data/vendor/c/licentivo.h +67 -0
  15. data/vendor/c/quickstart.c +51 -0
  16. data/vendor/c/test_vectors.c +4 -0
  17. data/vendor/c/vendor/Monocypher-LICENCE.md +173 -0
  18. data/vendor/c/vendor/cJSON-LICENSE +20 -0
  19. data/vendor/c/vendor/cJSON.c +3191 -0
  20. data/vendor/c/vendor/cJSON.h +306 -0
  21. data/vendor/c/vendor/monocypher-ed25519.c +500 -0
  22. data/vendor/c/vendor/monocypher-ed25519.h +140 -0
  23. data/vendor/c/vendor/monocypher.c +2956 -0
  24. data/vendor/c/vendor/monocypher.h +321 -0
  25. data/vendor/curl/COPYING.txt +22 -0
  26. data/vendor/curl/bin/libcurl-x64.dll +0 -0
  27. data/vendor/curl/include/brotli/decode.h +409 -0
  28. data/vendor/curl/include/brotli/encode.h +505 -0
  29. data/vendor/curl/include/brotli/port.h +302 -0
  30. data/vendor/curl/include/brotli/shared_dictionary.h +100 -0
  31. data/vendor/curl/include/brotli/types.h +83 -0
  32. data/vendor/curl/include/curl/curl.h +3374 -0
  33. data/vendor/curl/include/curl/curlver.h +77 -0
  34. data/vendor/curl/include/curl/easy.h +123 -0
  35. data/vendor/curl/include/curl/header.h +74 -0
  36. data/vendor/curl/include/curl/mprintf.h +85 -0
  37. data/vendor/curl/include/curl/multi.h +561 -0
  38. data/vendor/curl/include/curl/options.h +70 -0
  39. data/vendor/curl/include/curl/stdcheaders.h +35 -0
  40. data/vendor/curl/include/curl/system.h +399 -0
  41. data/vendor/curl/include/curl/typecheck-gcc.h +964 -0
  42. data/vendor/curl/include/curl/urlapi.h +156 -0
  43. data/vendor/curl/include/curl/websockets.h +98 -0
  44. data/vendor/curl/include/libpsl.h +207 -0
  45. data/vendor/curl/include/libssh2.h +1516 -0
  46. data/vendor/curl/include/libssh2_publickey.h +128 -0
  47. data/vendor/curl/include/libssh2_sftp.h +382 -0
  48. data/vendor/curl/include/nghttp2/nghttp2.h +6878 -0
  49. data/vendor/curl/include/nghttp2/nghttp2ver.h +42 -0
  50. data/vendor/curl/include/nghttp3/nghttp3.h +3704 -0
  51. data/vendor/curl/include/nghttp3/version.h +46 -0
  52. data/vendor/curl/include/ngtcp2/ngtcp2.h +7485 -0
  53. data/vendor/curl/include/ngtcp2/ngtcp2_crypto.h +1071 -0
  54. data/vendor/curl/include/ngtcp2/ngtcp2_crypto_quictls.h +147 -0
  55. data/vendor/curl/include/ngtcp2/version.h +51 -0
  56. data/vendor/curl/include/openssl/aes.h +120 -0
  57. data/vendor/curl/include/openssl/asn1.h +1121 -0
  58. data/vendor/curl/include/openssl/asn1t.h +996 -0
  59. data/vendor/curl/include/openssl/bio.h +716 -0
  60. data/vendor/curl/include/openssl/blowfish.h +106 -0
  61. data/vendor/curl/include/openssl/bn.h +480 -0
  62. data/vendor/curl/include/openssl/buffer.h +102 -0
  63. data/vendor/curl/include/openssl/camellia.h +121 -0
  64. data/vendor/curl/include/openssl/cast.h +99 -0
  65. data/vendor/curl/include/openssl/chacha.h +54 -0
  66. data/vendor/curl/include/openssl/cmac.h +81 -0
  67. data/vendor/curl/include/openssl/cms.h +541 -0
  68. data/vendor/curl/include/openssl/comp.h +7 -0
  69. data/vendor/curl/include/openssl/conf.h +189 -0
  70. data/vendor/curl/include/openssl/crypto.h +458 -0
  71. data/vendor/curl/include/openssl/ct.h +567 -0
  72. data/vendor/curl/include/openssl/curve25519.h +104 -0
  73. data/vendor/curl/include/openssl/des.h +215 -0
  74. data/vendor/curl/include/openssl/dh.h +245 -0
  75. data/vendor/curl/include/openssl/dsa.h +263 -0
  76. data/vendor/curl/include/openssl/dtls1.h +107 -0
  77. data/vendor/curl/include/openssl/ec.h +675 -0
  78. data/vendor/curl/include/openssl/ecdh.h +6 -0
  79. data/vendor/curl/include/openssl/ecdsa.h +6 -0
  80. data/vendor/curl/include/openssl/engine.h +215 -0
  81. data/vendor/curl/include/openssl/err.h +325 -0
  82. data/vendor/curl/include/openssl/evp.h +1288 -0
  83. data/vendor/curl/include/openssl/hkdf.h +65 -0
  84. data/vendor/curl/include/openssl/hmac.h +101 -0
  85. data/vendor/curl/include/openssl/idea.h +99 -0
  86. data/vendor/curl/include/openssl/kdf.h +137 -0
  87. data/vendor/curl/include/openssl/lhash.h +179 -0
  88. data/vendor/curl/include/openssl/md4.h +105 -0
  89. data/vendor/curl/include/openssl/md5.h +99 -0
  90. data/vendor/curl/include/openssl/mlkem.h +236 -0
  91. data/vendor/curl/include/openssl/modes.h +118 -0
  92. data/vendor/curl/include/openssl/obj_mac.h +4646 -0
  93. data/vendor/curl/include/openssl/objects.h +137 -0
  94. data/vendor/curl/include/openssl/ocsp.h +484 -0
  95. data/vendor/curl/include/openssl/opensslconf.h +16 -0
  96. data/vendor/curl/include/openssl/opensslfeatures.h +153 -0
  97. data/vendor/curl/include/openssl/opensslv.h +18 -0
  98. data/vendor/curl/include/openssl/ossl_typ.h +196 -0
  99. data/vendor/curl/include/openssl/pem.h +542 -0
  100. data/vendor/curl/include/openssl/pkcs12.h +284 -0
  101. data/vendor/curl/include/openssl/pkcs7.h +523 -0
  102. data/vendor/curl/include/openssl/poly1305.h +45 -0
  103. data/vendor/curl/include/openssl/posix_time.h +54 -0
  104. data/vendor/curl/include/openssl/rand.h +118 -0
  105. data/vendor/curl/include/openssl/rc2.h +101 -0
  106. data/vendor/curl/include/openssl/rc4.h +88 -0
  107. data/vendor/curl/include/openssl/ripemd.h +107 -0
  108. data/vendor/curl/include/openssl/rsa.h +603 -0
  109. data/vendor/curl/include/openssl/safestack.h +1739 -0
  110. data/vendor/curl/include/openssl/sha.h +190 -0
  111. data/vendor/curl/include/openssl/sm3.h +49 -0
  112. data/vendor/curl/include/openssl/sm4.h +47 -0
  113. data/vendor/curl/include/openssl/srtp.h +148 -0
  114. data/vendor/curl/include/openssl/ssl.h +2336 -0
  115. data/vendor/curl/include/openssl/ssl3.h +441 -0
  116. data/vendor/curl/include/openssl/stack.h +99 -0
  117. data/vendor/curl/include/openssl/tls1.h +764 -0
  118. data/vendor/curl/include/openssl/ts.h +660 -0
  119. data/vendor/curl/include/openssl/txt_db.h +112 -0
  120. data/vendor/curl/include/openssl/ui.h +397 -0
  121. data/vendor/curl/include/openssl/x509.h +1037 -0
  122. data/vendor/curl/include/openssl/x509_vfy.h +464 -0
  123. data/vendor/curl/include/openssl/x509v3.h +1039 -0
  124. data/vendor/curl/include/zconf.h +206 -0
  125. data/vendor/curl/include/zdict.h +481 -0
  126. data/vendor/curl/include/zlib.h +1859 -0
  127. data/vendor/curl/include/zlib_name_mangling.h +8 -0
  128. data/vendor/curl/include/zstd.h +3198 -0
  129. data/vendor/curl/include/zstd_errors.h +107 -0
  130. data/vendor/curl/lib/libcurl.dll.a +0 -0
  131. data/vendor/curl/licenses/brotli/LICENSE.txt +19 -0
  132. data/vendor/curl/licenses/certdata/LICENSE.url +2 -0
  133. data/vendor/curl/licenses/libpsl/COPYING.txt +20 -0
  134. data/vendor/curl/licenses/libressl/COPYING.txt +133 -0
  135. data/vendor/curl/licenses/libssh2/COPYING.txt +43 -0
  136. data/vendor/curl/licenses/nghttp2/COPYING.txt +23 -0
  137. data/vendor/curl/licenses/nghttp3/COPYING.txt +22 -0
  138. data/vendor/curl/licenses/ngtcp2/COPYING.txt +22 -0
  139. data/vendor/curl/licenses/psl/LICENSE.txt +373 -0
  140. data/vendor/curl/licenses/trurl/COPYING.txt +22 -0
  141. data/vendor/curl/licenses/zlibng/LICENSE.md +19 -0
  142. data/vendor/curl/licenses/zstd/LICENSE.txt +30 -0
  143. metadata +205 -0
@@ -0,0 +1,1039 @@
1
+ /* $OpenBSD: x509v3.h,v 1.41 2026/04/06 08:24:57 tb Exp $ */
2
+ /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3
+ * project 1999.
4
+ */
5
+ /* ====================================================================
6
+ * Copyright (c) 1999-2004 The OpenSSL Project. All rights reserved.
7
+ *
8
+ * Redistribution and use in source and binary forms, with or without
9
+ * modification, are permitted provided that the following conditions
10
+ * are met:
11
+ *
12
+ * 1. Redistributions of source code must retain the above copyright
13
+ * notice, this list of conditions and the following disclaimer.
14
+ *
15
+ * 2. Redistributions in binary form must reproduce the above copyright
16
+ * notice, this list of conditions and the following disclaimer in
17
+ * the documentation and/or other materials provided with the
18
+ * distribution.
19
+ *
20
+ * 3. All advertising materials mentioning features or use of this
21
+ * software must display the following acknowledgment:
22
+ * "This product includes software developed by the OpenSSL Project
23
+ * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
24
+ *
25
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
26
+ * endorse or promote products derived from this software without
27
+ * prior written permission. For written permission, please contact
28
+ * licensing@OpenSSL.org.
29
+ *
30
+ * 5. Products derived from this software may not be called "OpenSSL"
31
+ * nor may "OpenSSL" appear in their names without prior written
32
+ * permission of the OpenSSL Project.
33
+ *
34
+ * 6. Redistributions of any form whatsoever must retain the following
35
+ * acknowledgment:
36
+ * "This product includes software developed by the OpenSSL Project
37
+ * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
38
+ *
39
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
40
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
41
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
42
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
43
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
44
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
45
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
46
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
47
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
48
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
49
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
50
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
51
+ * ====================================================================
52
+ *
53
+ * This product includes cryptographic software written by Eric Young
54
+ * (eay@cryptsoft.com). This product includes software written by Tim
55
+ * Hudson (tjh@cryptsoft.com).
56
+ *
57
+ */
58
+ #ifndef HEADER_X509V3_H
59
+ #define HEADER_X509V3_H
60
+
61
+ #include <openssl/opensslconf.h>
62
+
63
+ #include <openssl/bio.h>
64
+ #include <openssl/x509.h>
65
+ #include <openssl/conf.h>
66
+
67
+ #ifdef __cplusplus
68
+ extern "C" {
69
+ #endif
70
+
71
+ /* Forward reference */
72
+ struct v3_ext_method;
73
+ struct v3_ext_ctx;
74
+
75
+ /* Useful typedefs */
76
+
77
+ typedef void * (*X509V3_EXT_NEW)(void);
78
+ typedef void (*X509V3_EXT_FREE)(void *);
79
+ typedef void * (*X509V3_EXT_D2I)(void *, const unsigned char ** , long);
80
+ typedef int (*X509V3_EXT_I2D)(void *, unsigned char **);
81
+ typedef STACK_OF(CONF_VALUE) *
82
+ (*X509V3_EXT_I2V)(const struct v3_ext_method *method, void *ext,
83
+ STACK_OF(CONF_VALUE) *extlist);
84
+ typedef void * (*X509V3_EXT_V2I)(const struct v3_ext_method *method,
85
+ struct v3_ext_ctx *ctx,
86
+ STACK_OF(CONF_VALUE) *values);
87
+ typedef char * (*X509V3_EXT_I2S)(const struct v3_ext_method *method, void *ext);
88
+ typedef void * (*X509V3_EXT_S2I)(const struct v3_ext_method *method,
89
+ struct v3_ext_ctx *ctx, const char *str);
90
+ typedef int (*X509V3_EXT_I2R)(const struct v3_ext_method *method, void *ext,
91
+ BIO *out, int indent);
92
+ typedef void * (*X509V3_EXT_R2I)(const struct v3_ext_method *method,
93
+ struct v3_ext_ctx *ctx, const char *str);
94
+
95
+ /* V3 extension structure */
96
+
97
+ struct v3_ext_method {
98
+ int ext_nid;
99
+ int ext_flags;
100
+ /* If this is set the following four fields are ignored */
101
+ ASN1_ITEM_EXP *it;
102
+ /* Old style ASN1 calls */
103
+ X509V3_EXT_NEW ext_new;
104
+ X509V3_EXT_FREE ext_free;
105
+ X509V3_EXT_D2I d2i;
106
+ X509V3_EXT_I2D i2d;
107
+
108
+ /* The following pair is used for string extensions */
109
+ X509V3_EXT_I2S i2s;
110
+ X509V3_EXT_S2I s2i;
111
+
112
+ /* The following pair is used for multi-valued extensions */
113
+ X509V3_EXT_I2V i2v;
114
+ X509V3_EXT_V2I v2i;
115
+
116
+ /* The following are used for raw extensions */
117
+ X509V3_EXT_I2R i2r;
118
+ X509V3_EXT_R2I r2i;
119
+
120
+ const void *usr_data; /* Any extension specific data */
121
+ };
122
+
123
+ struct v3_ext_ctx {
124
+ #define CTX_TEST 0x1
125
+ int flags;
126
+ X509 *issuer_cert;
127
+ X509 *subject_cert;
128
+ X509_REQ *subject_req;
129
+ X509_CRL *crl;
130
+ void *db;
131
+ };
132
+
133
+ typedef struct v3_ext_method X509V3_EXT_METHOD;
134
+
135
+ DECLARE_STACK_OF(X509V3_EXT_METHOD)
136
+
137
+ /* XXX - can this be made internal? */
138
+ #define X509V3_EXT_MULTILINE 0x4
139
+
140
+ /* XXX - remove it anyway? */
141
+ /* Guess who uses this... Yes, of course, it's xca. */
142
+ typedef BIT_STRING_BITNAME ENUMERATED_NAMES;
143
+
144
+ typedef struct BASIC_CONSTRAINTS_st {
145
+ int ca;
146
+ ASN1_INTEGER *pathlen;
147
+ } BASIC_CONSTRAINTS;
148
+
149
+
150
+ typedef struct PKEY_USAGE_PERIOD_st {
151
+ ASN1_GENERALIZEDTIME *notBefore;
152
+ ASN1_GENERALIZEDTIME *notAfter;
153
+ } PKEY_USAGE_PERIOD;
154
+
155
+ typedef struct otherName_st {
156
+ ASN1_OBJECT *type_id;
157
+ ASN1_TYPE *value;
158
+ } OTHERNAME;
159
+
160
+ typedef struct EDIPartyName_st {
161
+ ASN1_STRING *nameAssigner;
162
+ ASN1_STRING *partyName;
163
+ } EDIPARTYNAME;
164
+
165
+ typedef struct GENERAL_NAME_st {
166
+
167
+ #define GEN_OTHERNAME 0
168
+ #define GEN_EMAIL 1
169
+ #define GEN_DNS 2
170
+ #define GEN_X400 3
171
+ #define GEN_DIRNAME 4
172
+ #define GEN_EDIPARTY 5
173
+ #define GEN_URI 6
174
+ #define GEN_IPADD 7
175
+ #define GEN_RID 8
176
+
177
+ int type;
178
+ union {
179
+ char *ptr;
180
+ OTHERNAME *otherName; /* otherName */
181
+ ASN1_IA5STRING *rfc822Name;
182
+ ASN1_IA5STRING *dNSName;
183
+ ASN1_STRING *x400Address;
184
+ X509_NAME *directoryName;
185
+ EDIPARTYNAME *ediPartyName;
186
+ ASN1_IA5STRING *uniformResourceIdentifier;
187
+ ASN1_OCTET_STRING *iPAddress;
188
+ ASN1_OBJECT *registeredID;
189
+
190
+ /* Old names */
191
+ ASN1_OCTET_STRING *ip; /* iPAddress */
192
+ X509_NAME *dirn; /* dirn */
193
+ ASN1_IA5STRING *ia5; /* rfc822Name, dNSName, uniformResourceIdentifier */
194
+ ASN1_OBJECT *rid; /* registeredID */
195
+ } d;
196
+ } GENERAL_NAME;
197
+
198
+ typedef struct ACCESS_DESCRIPTION_st {
199
+ ASN1_OBJECT *method;
200
+ GENERAL_NAME *location;
201
+ } ACCESS_DESCRIPTION;
202
+
203
+ typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS;
204
+
205
+ typedef STACK_OF(ASN1_OBJECT) EXTENDED_KEY_USAGE;
206
+
207
+ DECLARE_STACK_OF(GENERAL_NAME)
208
+
209
+ typedef STACK_OF(GENERAL_NAME) GENERAL_NAMES;
210
+ DECLARE_STACK_OF(GENERAL_NAMES)
211
+
212
+ DECLARE_STACK_OF(ACCESS_DESCRIPTION)
213
+
214
+ typedef struct DIST_POINT_NAME_st {
215
+ int type;
216
+ union {
217
+ GENERAL_NAMES *fullname;
218
+ STACK_OF(X509_NAME_ENTRY) *relativename;
219
+ } name;
220
+ /* If relativename then this contains the full distribution point name */
221
+ X509_NAME *dpname;
222
+ } DIST_POINT_NAME;
223
+ /* All existing reasons */
224
+ #define CRLDP_ALL_REASONS 0x807f
225
+
226
+ #define CRL_REASON_NONE -1
227
+ #define CRL_REASON_UNSPECIFIED 0
228
+ #define CRL_REASON_KEY_COMPROMISE 1
229
+ #define CRL_REASON_CA_COMPROMISE 2
230
+ #define CRL_REASON_AFFILIATION_CHANGED 3
231
+ #define CRL_REASON_SUPERSEDED 4
232
+ #define CRL_REASON_CESSATION_OF_OPERATION 5
233
+ #define CRL_REASON_CERTIFICATE_HOLD 6
234
+ #define CRL_REASON_REMOVE_FROM_CRL 8
235
+ #define CRL_REASON_PRIVILEGE_WITHDRAWN 9
236
+ #define CRL_REASON_AA_COMPROMISE 10
237
+
238
+ struct DIST_POINT_st {
239
+ DIST_POINT_NAME *distpoint;
240
+ ASN1_BIT_STRING *reasons;
241
+ GENERAL_NAMES *CRLissuer;
242
+ int dp_reasons;
243
+ };
244
+
245
+ typedef STACK_OF(DIST_POINT) CRL_DIST_POINTS;
246
+
247
+ DECLARE_STACK_OF(DIST_POINT)
248
+
249
+ struct AUTHORITY_KEYID_st {
250
+ ASN1_OCTET_STRING *keyid;
251
+ GENERAL_NAMES *issuer;
252
+ ASN1_INTEGER *serial;
253
+ };
254
+
255
+ typedef struct NOTICEREF_st {
256
+ ASN1_STRING *organization;
257
+ STACK_OF(ASN1_INTEGER) *noticenos;
258
+ } NOTICEREF;
259
+
260
+ typedef struct USERNOTICE_st {
261
+ NOTICEREF *noticeref;
262
+ ASN1_STRING *exptext;
263
+ } USERNOTICE;
264
+
265
+ typedef struct POLICYQUALINFO_st {
266
+ ASN1_OBJECT *pqualid;
267
+ union {
268
+ ASN1_IA5STRING *cpsuri;
269
+ USERNOTICE *usernotice;
270
+ ASN1_TYPE *other;
271
+ } d;
272
+ } POLICYQUALINFO;
273
+
274
+ DECLARE_STACK_OF(POLICYQUALINFO)
275
+
276
+ typedef struct POLICYINFO_st {
277
+ ASN1_OBJECT *policyid;
278
+ STACK_OF(POLICYQUALINFO) *qualifiers;
279
+ } POLICYINFO;
280
+
281
+ typedef STACK_OF(POLICYINFO) CERTIFICATEPOLICIES;
282
+
283
+ DECLARE_STACK_OF(POLICYINFO)
284
+
285
+ typedef struct POLICY_MAPPING_st {
286
+ ASN1_OBJECT *issuerDomainPolicy;
287
+ ASN1_OBJECT *subjectDomainPolicy;
288
+ } POLICY_MAPPING;
289
+
290
+ DECLARE_STACK_OF(POLICY_MAPPING)
291
+
292
+ typedef STACK_OF(POLICY_MAPPING) POLICY_MAPPINGS;
293
+
294
+ typedef struct GENERAL_SUBTREE_st {
295
+ GENERAL_NAME *base;
296
+ ASN1_INTEGER *minimum;
297
+ ASN1_INTEGER *maximum;
298
+ } GENERAL_SUBTREE;
299
+
300
+ DECLARE_STACK_OF(GENERAL_SUBTREE)
301
+
302
+ struct NAME_CONSTRAINTS_st {
303
+ STACK_OF(GENERAL_SUBTREE) *permittedSubtrees;
304
+ STACK_OF(GENERAL_SUBTREE) *excludedSubtrees;
305
+ };
306
+
307
+ typedef struct POLICY_CONSTRAINTS_st {
308
+ ASN1_INTEGER *requireExplicitPolicy;
309
+ ASN1_INTEGER *inhibitPolicyMapping;
310
+ } POLICY_CONSTRAINTS;
311
+
312
+ struct ISSUING_DIST_POINT_st {
313
+ DIST_POINT_NAME *distpoint;
314
+ int onlyuser;
315
+ int onlyCA;
316
+ ASN1_BIT_STRING *onlysomereasons;
317
+ int indirectCRL;
318
+ int onlyattr;
319
+ };
320
+
321
+ /* Values in idp_flags field */
322
+ /* IDP present */
323
+ #define IDP_PRESENT 0x1
324
+ /* IDP values inconsistent */
325
+ #define IDP_INVALID 0x2
326
+ /* onlyuser true */
327
+ #define IDP_ONLYUSER 0x4
328
+ /* onlyCA true */
329
+ #define IDP_ONLYCA 0x8
330
+ /* onlyattr true */
331
+ #define IDP_ONLYATTR 0x10
332
+ /* indirectCRL true */
333
+ #define IDP_INDIRECT 0x20
334
+ /* onlysomereasons present */
335
+ #define IDP_REASONS 0x40
336
+
337
+ #define X509V3_conf_err(val) ERR_asprintf_error_data( \
338
+ "section:%s,name:%s,value:%s", val->section, \
339
+ val->name, val->value);
340
+
341
+ #define X509V3_set_ctx_test(ctx) \
342
+ X509V3_set_ctx(ctx, NULL, NULL, NULL, NULL, CTX_TEST)
343
+ #define X509V3_set_ctx_nodb(ctx) (ctx)->db = NULL;
344
+
345
+ /* X509_PURPOSE stuff */
346
+
347
+ #define EXFLAG_BCONS 0x0001
348
+ #define EXFLAG_KUSAGE 0x0002
349
+ #define EXFLAG_XKUSAGE 0x0004
350
+ #define EXFLAG_NSCERT 0x0008
351
+
352
+ #define EXFLAG_CA 0x0010
353
+ #define EXFLAG_SI 0x0020 /* Self issued. */
354
+ #define EXFLAG_V1 0x0040
355
+ #define EXFLAG_INVALID 0x0080
356
+ #define EXFLAG_SET 0x0100
357
+ #define EXFLAG_CRITICAL 0x0200
358
+ #if !defined(LIBRESSL_INTERNAL)
359
+ #define EXFLAG_PROXY 0x0400
360
+ #endif
361
+ #define EXFLAG_INVALID_POLICY 0x0800
362
+ #define EXFLAG_FRESHEST 0x1000
363
+ #define EXFLAG_SS 0x2000 /* Self signed. */
364
+
365
+ #define KU_DIGITAL_SIGNATURE 0x0080
366
+ #define KU_NON_REPUDIATION 0x0040
367
+ #define KU_KEY_ENCIPHERMENT 0x0020
368
+ #define KU_DATA_ENCIPHERMENT 0x0010
369
+ #define KU_KEY_AGREEMENT 0x0008
370
+ #define KU_KEY_CERT_SIGN 0x0004
371
+ #define KU_CRL_SIGN 0x0002
372
+ #define KU_ENCIPHER_ONLY 0x0001
373
+ #define KU_DECIPHER_ONLY 0x8000
374
+
375
+ #define NS_SSL_CLIENT 0x80
376
+ #define NS_SSL_SERVER 0x40
377
+ #define NS_SMIME 0x20
378
+ #define NS_OBJSIGN 0x10
379
+ #define NS_SSL_CA 0x04
380
+ #define NS_SMIME_CA 0x02
381
+ #define NS_OBJSIGN_CA 0x01
382
+ #define NS_ANY_CA (NS_SSL_CA|NS_SMIME_CA|NS_OBJSIGN_CA)
383
+
384
+ #define XKU_SSL_SERVER 0x1
385
+ #define XKU_SSL_CLIENT 0x2
386
+ #define XKU_SMIME 0x4
387
+ #define XKU_CODE_SIGN 0x8
388
+ #define XKU_SGC 0x10
389
+ #define XKU_OCSP_SIGN 0x20
390
+ #define XKU_TIMESTAMP 0x40
391
+ #define XKU_DVCS 0x80
392
+ #define XKU_ANYEKU 0x100
393
+
394
+ #define X509_PURPOSE_DYNAMIC 0x1
395
+ #define X509_PURPOSE_DYNAMIC_NAME 0x2
396
+
397
+ typedef struct x509_purpose_st X509_PURPOSE;
398
+
399
+ #define X509_PURPOSE_SSL_CLIENT 1
400
+ #define X509_PURPOSE_SSL_SERVER 2
401
+ #define X509_PURPOSE_NS_SSL_SERVER 3
402
+ #define X509_PURPOSE_SMIME_SIGN 4
403
+ #define X509_PURPOSE_SMIME_ENCRYPT 5
404
+ #define X509_PURPOSE_CRL_SIGN 6
405
+ #define X509_PURPOSE_ANY 7
406
+ #define X509_PURPOSE_OCSP_HELPER 8
407
+ #define X509_PURPOSE_TIMESTAMP_SIGN 9
408
+
409
+ #define X509_PURPOSE_MIN 1
410
+ #define X509_PURPOSE_MAX 9
411
+
412
+ /* Flags for X509V3_EXT_print() */
413
+
414
+ #define X509V3_EXT_UNKNOWN_MASK (0xfL << 16)
415
+ /* Return error for unknown extensions */
416
+ #define X509V3_EXT_DEFAULT 0
417
+ /* Print error for unknown extensions */
418
+ #define X509V3_EXT_ERROR_UNKNOWN (1L << 16)
419
+ /* ASN1 parse unknown extensions */
420
+ #define X509V3_EXT_PARSE_UNKNOWN (2L << 16)
421
+ /* BIO_dump unknown extensions */
422
+ #define X509V3_EXT_DUMP_UNKNOWN (3L << 16)
423
+
424
+ /* Flags for X509V3_add1_i2d */
425
+
426
+ #define X509V3_ADD_OP_MASK 0xfL
427
+ #define X509V3_ADD_DEFAULT 0L
428
+ #define X509V3_ADD_APPEND 1L
429
+ #define X509V3_ADD_REPLACE 2L
430
+ #define X509V3_ADD_REPLACE_EXISTING 3L
431
+ #define X509V3_ADD_KEEP_EXISTING 4L
432
+ #define X509V3_ADD_DELETE 5L
433
+ #define X509V3_ADD_SILENT 0x10
434
+
435
+ DECLARE_STACK_OF(X509_PURPOSE)
436
+
437
+ BASIC_CONSTRAINTS *BASIC_CONSTRAINTS_new(void);
438
+ void BASIC_CONSTRAINTS_free(BASIC_CONSTRAINTS *a);
439
+ BASIC_CONSTRAINTS *d2i_BASIC_CONSTRAINTS(BASIC_CONSTRAINTS **a, const unsigned char **in, long len);
440
+ int i2d_BASIC_CONSTRAINTS(BASIC_CONSTRAINTS *a, unsigned char **out);
441
+ extern const ASN1_ITEM BASIC_CONSTRAINTS_it;
442
+
443
+ AUTHORITY_KEYID *AUTHORITY_KEYID_new(void);
444
+ void AUTHORITY_KEYID_free(AUTHORITY_KEYID *a);
445
+ AUTHORITY_KEYID *d2i_AUTHORITY_KEYID(AUTHORITY_KEYID **a, const unsigned char **in, long len);
446
+ int i2d_AUTHORITY_KEYID(AUTHORITY_KEYID *a, unsigned char **out);
447
+ extern const ASN1_ITEM AUTHORITY_KEYID_it;
448
+
449
+ PKEY_USAGE_PERIOD *PKEY_USAGE_PERIOD_new(void);
450
+ void PKEY_USAGE_PERIOD_free(PKEY_USAGE_PERIOD *a);
451
+ PKEY_USAGE_PERIOD *d2i_PKEY_USAGE_PERIOD(PKEY_USAGE_PERIOD **a, const unsigned char **in, long len);
452
+ int i2d_PKEY_USAGE_PERIOD(PKEY_USAGE_PERIOD *a, unsigned char **out);
453
+ extern const ASN1_ITEM PKEY_USAGE_PERIOD_it;
454
+
455
+ GENERAL_NAME *GENERAL_NAME_new(void);
456
+ void GENERAL_NAME_free(GENERAL_NAME *a);
457
+ GENERAL_NAME *d2i_GENERAL_NAME(GENERAL_NAME **a, const unsigned char **in, long len);
458
+ int i2d_GENERAL_NAME(GENERAL_NAME *a, unsigned char **out);
459
+ extern const ASN1_ITEM GENERAL_NAME_it;
460
+ GENERAL_NAME *GENERAL_NAME_dup(GENERAL_NAME *a);
461
+ int GENERAL_NAME_cmp(GENERAL_NAME *a, GENERAL_NAME *b);
462
+
463
+
464
+
465
+ ASN1_BIT_STRING *v2i_ASN1_BIT_STRING(X509V3_EXT_METHOD *method,
466
+ X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval);
467
+ STACK_OF(CONF_VALUE) *i2v_ASN1_BIT_STRING(X509V3_EXT_METHOD *method,
468
+ ASN1_BIT_STRING *bits,
469
+ STACK_OF(CONF_VALUE) *extlist);
470
+
471
+ STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method, GENERAL_NAME *gen, STACK_OF(CONF_VALUE) *ret);
472
+ int GENERAL_NAME_print(BIO *out, GENERAL_NAME *gen);
473
+
474
+ GENERAL_NAMES *GENERAL_NAMES_new(void);
475
+ void GENERAL_NAMES_free(GENERAL_NAMES *a);
476
+ GENERAL_NAMES *d2i_GENERAL_NAMES(GENERAL_NAMES **a, const unsigned char **in, long len);
477
+ int i2d_GENERAL_NAMES(GENERAL_NAMES *a, unsigned char **out);
478
+ extern const ASN1_ITEM GENERAL_NAMES_it;
479
+
480
+ STACK_OF(CONF_VALUE) *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method,
481
+ GENERAL_NAMES *gen, STACK_OF(CONF_VALUE) *extlist);
482
+ GENERAL_NAMES *v2i_GENERAL_NAMES(const X509V3_EXT_METHOD *method,
483
+ X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval);
484
+
485
+ OTHERNAME *OTHERNAME_new(void);
486
+ void OTHERNAME_free(OTHERNAME *a);
487
+ OTHERNAME *d2i_OTHERNAME(OTHERNAME **a, const unsigned char **in, long len);
488
+ int i2d_OTHERNAME(OTHERNAME *a, unsigned char **out);
489
+ extern const ASN1_ITEM OTHERNAME_it;
490
+ EDIPARTYNAME *EDIPARTYNAME_new(void);
491
+ void EDIPARTYNAME_free(EDIPARTYNAME *a);
492
+ EDIPARTYNAME *d2i_EDIPARTYNAME(EDIPARTYNAME **a, const unsigned char **in, long len);
493
+ int i2d_EDIPARTYNAME(EDIPARTYNAME *a, unsigned char **out);
494
+ extern const ASN1_ITEM EDIPARTYNAME_it;
495
+ int OTHERNAME_cmp(OTHERNAME *a, OTHERNAME *b);
496
+ void GENERAL_NAME_set0_value(GENERAL_NAME *a, int type, void *value);
497
+ void *GENERAL_NAME_get0_value(GENERAL_NAME *a, int *ptype);
498
+ int GENERAL_NAME_set0_othername(GENERAL_NAME *gen,
499
+ ASN1_OBJECT *oid, ASN1_TYPE *value);
500
+ int GENERAL_NAME_get0_otherName(GENERAL_NAME *gen,
501
+ ASN1_OBJECT **poid, ASN1_TYPE **pvalue);
502
+
503
+ char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method,
504
+ const ASN1_OCTET_STRING *ia5);
505
+ ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method,
506
+ X509V3_CTX *ctx, const char *str);
507
+
508
+ EXTENDED_KEY_USAGE *EXTENDED_KEY_USAGE_new(void);
509
+ void EXTENDED_KEY_USAGE_free(EXTENDED_KEY_USAGE *a);
510
+ EXTENDED_KEY_USAGE *d2i_EXTENDED_KEY_USAGE(EXTENDED_KEY_USAGE **a, const unsigned char **in, long len);
511
+ int i2d_EXTENDED_KEY_USAGE(EXTENDED_KEY_USAGE *a, unsigned char **out);
512
+ extern const ASN1_ITEM EXTENDED_KEY_USAGE_it;
513
+ int i2a_ACCESS_DESCRIPTION(BIO *bp, const ACCESS_DESCRIPTION* a);
514
+
515
+ CERTIFICATEPOLICIES *CERTIFICATEPOLICIES_new(void);
516
+ void CERTIFICATEPOLICIES_free(CERTIFICATEPOLICIES *a);
517
+ CERTIFICATEPOLICIES *d2i_CERTIFICATEPOLICIES(CERTIFICATEPOLICIES **a, const unsigned char **in, long len);
518
+ int i2d_CERTIFICATEPOLICIES(CERTIFICATEPOLICIES *a, unsigned char **out);
519
+ extern const ASN1_ITEM CERTIFICATEPOLICIES_it;
520
+ POLICYINFO *POLICYINFO_new(void);
521
+ void POLICYINFO_free(POLICYINFO *a);
522
+ POLICYINFO *d2i_POLICYINFO(POLICYINFO **a, const unsigned char **in, long len);
523
+ int i2d_POLICYINFO(POLICYINFO *a, unsigned char **out);
524
+ extern const ASN1_ITEM POLICYINFO_it;
525
+ POLICYQUALINFO *POLICYQUALINFO_new(void);
526
+ void POLICYQUALINFO_free(POLICYQUALINFO *a);
527
+ POLICYQUALINFO *d2i_POLICYQUALINFO(POLICYQUALINFO **a, const unsigned char **in, long len);
528
+ int i2d_POLICYQUALINFO(POLICYQUALINFO *a, unsigned char **out);
529
+ extern const ASN1_ITEM POLICYQUALINFO_it;
530
+ USERNOTICE *USERNOTICE_new(void);
531
+ void USERNOTICE_free(USERNOTICE *a);
532
+ USERNOTICE *d2i_USERNOTICE(USERNOTICE **a, const unsigned char **in, long len);
533
+ int i2d_USERNOTICE(USERNOTICE *a, unsigned char **out);
534
+ extern const ASN1_ITEM USERNOTICE_it;
535
+ NOTICEREF *NOTICEREF_new(void);
536
+ void NOTICEREF_free(NOTICEREF *a);
537
+ NOTICEREF *d2i_NOTICEREF(NOTICEREF **a, const unsigned char **in, long len);
538
+ int i2d_NOTICEREF(NOTICEREF *a, unsigned char **out);
539
+ extern const ASN1_ITEM NOTICEREF_it;
540
+
541
+ CRL_DIST_POINTS *CRL_DIST_POINTS_new(void);
542
+ void CRL_DIST_POINTS_free(CRL_DIST_POINTS *a);
543
+ CRL_DIST_POINTS *d2i_CRL_DIST_POINTS(CRL_DIST_POINTS **a, const unsigned char **in, long len);
544
+ int i2d_CRL_DIST_POINTS(CRL_DIST_POINTS *a, unsigned char **out);
545
+ extern const ASN1_ITEM CRL_DIST_POINTS_it;
546
+ DIST_POINT *DIST_POINT_new(void);
547
+ void DIST_POINT_free(DIST_POINT *a);
548
+ DIST_POINT *d2i_DIST_POINT(DIST_POINT **a, const unsigned char **in, long len);
549
+ int i2d_DIST_POINT(DIST_POINT *a, unsigned char **out);
550
+ extern const ASN1_ITEM DIST_POINT_it;
551
+ DIST_POINT_NAME *DIST_POINT_NAME_new(void);
552
+ void DIST_POINT_NAME_free(DIST_POINT_NAME *a);
553
+ DIST_POINT_NAME *d2i_DIST_POINT_NAME(DIST_POINT_NAME **a, const unsigned char **in, long len);
554
+ int i2d_DIST_POINT_NAME(DIST_POINT_NAME *a, unsigned char **out);
555
+ extern const ASN1_ITEM DIST_POINT_NAME_it;
556
+ ISSUING_DIST_POINT *ISSUING_DIST_POINT_new(void);
557
+ void ISSUING_DIST_POINT_free(ISSUING_DIST_POINT *a);
558
+ ISSUING_DIST_POINT *d2i_ISSUING_DIST_POINT(ISSUING_DIST_POINT **a, const unsigned char **in, long len);
559
+ int i2d_ISSUING_DIST_POINT(ISSUING_DIST_POINT *a, unsigned char **out);
560
+ extern const ASN1_ITEM ISSUING_DIST_POINT_it;
561
+
562
+ int DIST_POINT_set_dpname(DIST_POINT_NAME *dpn, X509_NAME *iname);
563
+
564
+ int NAME_CONSTRAINTS_check(X509 *x, NAME_CONSTRAINTS *nc);
565
+
566
+ ACCESS_DESCRIPTION *ACCESS_DESCRIPTION_new(void);
567
+ void ACCESS_DESCRIPTION_free(ACCESS_DESCRIPTION *a);
568
+ ACCESS_DESCRIPTION *d2i_ACCESS_DESCRIPTION(ACCESS_DESCRIPTION **a, const unsigned char **in, long len);
569
+ int i2d_ACCESS_DESCRIPTION(ACCESS_DESCRIPTION *a, unsigned char **out);
570
+ extern const ASN1_ITEM ACCESS_DESCRIPTION_it;
571
+ AUTHORITY_INFO_ACCESS *AUTHORITY_INFO_ACCESS_new(void);
572
+ void AUTHORITY_INFO_ACCESS_free(AUTHORITY_INFO_ACCESS *a);
573
+ AUTHORITY_INFO_ACCESS *d2i_AUTHORITY_INFO_ACCESS(AUTHORITY_INFO_ACCESS **a, const unsigned char **in, long len);
574
+ int i2d_AUTHORITY_INFO_ACCESS(AUTHORITY_INFO_ACCESS *a, unsigned char **out);
575
+ extern const ASN1_ITEM AUTHORITY_INFO_ACCESS_it;
576
+
577
+ extern const ASN1_ITEM POLICY_MAPPING_it;
578
+ POLICY_MAPPING *POLICY_MAPPING_new(void);
579
+ void POLICY_MAPPING_free(POLICY_MAPPING *a);
580
+ extern const ASN1_ITEM POLICY_MAPPINGS_it;
581
+
582
+ extern const ASN1_ITEM GENERAL_SUBTREE_it;
583
+ GENERAL_SUBTREE *GENERAL_SUBTREE_new(void);
584
+ void GENERAL_SUBTREE_free(GENERAL_SUBTREE *a);
585
+
586
+ extern const ASN1_ITEM NAME_CONSTRAINTS_it;
587
+ NAME_CONSTRAINTS *NAME_CONSTRAINTS_new(void);
588
+ void NAME_CONSTRAINTS_free(NAME_CONSTRAINTS *a);
589
+
590
+ POLICY_CONSTRAINTS *POLICY_CONSTRAINTS_new(void);
591
+ void POLICY_CONSTRAINTS_free(POLICY_CONSTRAINTS *a);
592
+ extern const ASN1_ITEM POLICY_CONSTRAINTS_it;
593
+
594
+ GENERAL_NAME *a2i_GENERAL_NAME(GENERAL_NAME *out,
595
+ const X509V3_EXT_METHOD *method, X509V3_CTX *ctx,
596
+ int gen_type, const char *value, int is_nc);
597
+
598
+ GENERAL_NAME *v2i_GENERAL_NAME(const X509V3_EXT_METHOD *method, X509V3_CTX *ctx,
599
+ CONF_VALUE *cnf);
600
+ GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out,
601
+ const X509V3_EXT_METHOD *method,
602
+ X509V3_CTX *ctx, CONF_VALUE *cnf, int is_nc);
603
+ void X509V3_conf_free(CONF_VALUE *val);
604
+
605
+ X509_EXTENSION *X509V3_EXT_nconf_nid(CONF *conf, X509V3_CTX *ctx, int ext_nid,
606
+ const char *value);
607
+ X509_EXTENSION *X509V3_EXT_nconf(CONF *conf, X509V3_CTX *ctx, const char *name,
608
+ const char *value);
609
+ int X509V3_EXT_add_nconf_sk(CONF *conf, X509V3_CTX *ctx, const char *section,
610
+ STACK_OF(X509_EXTENSION) **sk);
611
+ int X509V3_EXT_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section,
612
+ X509 *cert);
613
+ int X509V3_EXT_REQ_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section,
614
+ X509_REQ *req);
615
+ int X509V3_EXT_CRL_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section,
616
+ X509_CRL *crl);
617
+
618
+ X509_EXTENSION *X509V3_EXT_conf_nid(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
619
+ int ext_nid, const char *value);
620
+ X509_EXTENSION *X509V3_EXT_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
621
+ const char *name, const char *value);
622
+
623
+ void X509V3_set_nconf(X509V3_CTX *ctx, CONF *conf);
624
+
625
+ void X509V3_set_ctx(X509V3_CTX *ctx, X509 *issuer, X509 *subject,
626
+ X509_REQ *req, X509_CRL *crl, int flags);
627
+
628
+ char *i2s_ASN1_INTEGER(X509V3_EXT_METHOD *meth, const ASN1_INTEGER *aint);
629
+ ASN1_INTEGER *s2i_ASN1_INTEGER(X509V3_EXT_METHOD *meth, const char *value);
630
+ char *i2s_ASN1_ENUMERATED(X509V3_EXT_METHOD *meth, const ASN1_ENUMERATED *aint);
631
+ char *i2s_ASN1_ENUMERATED_TABLE(X509V3_EXT_METHOD *meth,
632
+ const ASN1_ENUMERATED *aint);
633
+
634
+ const X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext);
635
+ const X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid);
636
+ int X509V3_add_standard_extensions(void);
637
+ STACK_OF(CONF_VALUE) *X509V3_parse_list(const char *line);
638
+ void *X509V3_EXT_d2i(X509_EXTENSION *ext);
639
+ void *X509V3_get_d2i(const STACK_OF(X509_EXTENSION) *x, int nid, int *crit,
640
+ int *idx);
641
+
642
+ X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc);
643
+ int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, int crit, unsigned long flags);
644
+
645
+ char *hex_to_string(const unsigned char *buffer, long len);
646
+ unsigned char *string_to_hex(const char *str, long *len);
647
+
648
+ void X509V3_EXT_val_prn(BIO *out, STACK_OF(CONF_VALUE) *val, int indent,
649
+ int ml);
650
+ int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, unsigned long flag, int indent);
651
+ int X509V3_EXT_print_fp(FILE *out, X509_EXTENSION *ext, int flag, int indent);
652
+
653
+ int X509V3_extensions_print(BIO *out, const char *title,
654
+ const STACK_OF(X509_EXTENSION) *exts, unsigned long flag, int indent);
655
+
656
+ int X509_check_ca(X509 *x);
657
+ int X509_check_purpose(X509 *x, int id, int ca);
658
+ int X509_supported_extension(X509_EXTENSION *ex);
659
+ int X509_check_issued(X509 *issuer, X509 *subject);
660
+ int X509_check_akid(X509 *issuer, AUTHORITY_KEYID *akid);
661
+
662
+ int X509_PURPOSE_get_count(void);
663
+ const X509_PURPOSE *X509_PURPOSE_get0(int idx);
664
+ int X509_PURPOSE_get_by_sname(const char *sname);
665
+ const char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp);
666
+ const char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp);
667
+ int X509_PURPOSE_get_id(const X509_PURPOSE *);
668
+ uint32_t X509_get_extension_flags(X509 *x);
669
+ uint32_t X509_get_key_usage(X509 *x);
670
+ uint32_t X509_get_extended_key_usage(X509 *x);
671
+
672
+ STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x);
673
+ STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x);
674
+ void X509_email_free(STACK_OF(OPENSSL_STRING) *sk);
675
+ STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x);
676
+
677
+ /* Flags for X509_check_* functions */
678
+ /* Always check subject name for host match even if subject alt names present */
679
+ #define X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT 0x1
680
+ /* Disable wildcard matching for dnsName fields and common name. */
681
+ #define X509_CHECK_FLAG_NO_WILDCARDS 0x2
682
+ /* Wildcards must not match a partial label. */
683
+ #define X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS 0x4
684
+ /* Allow (non-partial) wildcards to match multiple labels. */
685
+ #define X509_CHECK_FLAG_MULTI_LABEL_WILDCARDS 0x8
686
+ /* Constraint verifier subdomain patterns to match a single labels. */
687
+ #define X509_CHECK_FLAG_SINGLE_LABEL_SUBDOMAINS 0x10
688
+ /* Disable checking the CN for a hostname, to support modern validation */
689
+ #define X509_CHECK_FLAG_NEVER_CHECK_SUBJECT 0x20
690
+
691
+ int X509_check_host(X509 *x, const char *chk, size_t chklen,
692
+ unsigned int flags, char **peername);
693
+ int X509_check_email(X509 *x, const char *chk, size_t chklen,
694
+ unsigned int flags);
695
+ int X509_check_ip(X509 *x, const unsigned char *chk, size_t chklen,
696
+ unsigned int flags);
697
+ int X509_check_ip_asc(X509 *x, const char *ipasc, unsigned int flags);
698
+
699
+ ASN1_OCTET_STRING *a2i_IPADDRESS(const char *ipasc);
700
+ ASN1_OCTET_STRING *a2i_IPADDRESS_NC(const char *ipasc);
701
+ int a2i_ipadd(unsigned char *ipout, const char *ipasc);
702
+ int X509V3_NAME_from_section(X509_NAME *nm, STACK_OF(CONF_VALUE)*dn_sk,
703
+ unsigned long chtype);
704
+
705
+ #ifndef OPENSSL_NO_RFC3779
706
+ typedef struct ASRange_st {
707
+ ASN1_INTEGER *min;
708
+ ASN1_INTEGER *max;
709
+ } ASRange;
710
+
711
+ #define ASIdOrRange_id 0
712
+ #define ASIdOrRange_range 1
713
+
714
+ typedef struct ASIdOrRange_st {
715
+ int type;
716
+ union {
717
+ ASN1_INTEGER *id;
718
+ ASRange *range;
719
+ } u;
720
+ } ASIdOrRange;
721
+
722
+ typedef STACK_OF(ASIdOrRange) ASIdOrRanges;
723
+ DECLARE_STACK_OF(ASIdOrRange)
724
+
725
+ #define ASIdentifierChoice_inherit 0
726
+ #define ASIdentifierChoice_asIdsOrRanges 1
727
+
728
+ typedef struct ASIdentifierChoice_st {
729
+ int type;
730
+ union {
731
+ ASN1_NULL *inherit;
732
+ ASIdOrRanges *asIdsOrRanges;
733
+ } u;
734
+ } ASIdentifierChoice;
735
+
736
+ typedef struct ASIdentifiers_st {
737
+ ASIdentifierChoice *asnum;
738
+ ASIdentifierChoice *rdi;
739
+ } ASIdentifiers;
740
+
741
+ ASRange *ASRange_new(void);
742
+ void ASRange_free(ASRange *a);
743
+ ASRange *d2i_ASRange(ASRange **a, const unsigned char **in, long len);
744
+ int i2d_ASRange(ASRange *a, unsigned char **out);
745
+ extern const ASN1_ITEM ASRange_it;
746
+
747
+ ASIdOrRange *ASIdOrRange_new(void);
748
+ void ASIdOrRange_free(ASIdOrRange *a);
749
+ ASIdOrRange *d2i_ASIdOrRange(ASIdOrRange **a, const unsigned char **in,
750
+ long len);
751
+ int i2d_ASIdOrRange(ASIdOrRange *a, unsigned char **out);
752
+ extern const ASN1_ITEM ASIdOrRange_it;
753
+
754
+ ASIdentifierChoice *ASIdentifierChoice_new(void);
755
+ void ASIdentifierChoice_free(ASIdentifierChoice *a);
756
+ ASIdentifierChoice *d2i_ASIdentifierChoice(ASIdentifierChoice **a,
757
+ const unsigned char **in, long len);
758
+ int i2d_ASIdentifierChoice(ASIdentifierChoice *a, unsigned char **out);
759
+ extern const ASN1_ITEM ASIdentifierChoice_it;
760
+
761
+ ASIdentifiers *ASIdentifiers_new(void);
762
+ void ASIdentifiers_free(ASIdentifiers *a);
763
+ ASIdentifiers *d2i_ASIdentifiers(ASIdentifiers **a, const unsigned char **in,
764
+ long len);
765
+ int i2d_ASIdentifiers(ASIdentifiers *a, unsigned char **out);
766
+ extern const ASN1_ITEM ASIdentifiers_it;
767
+
768
+ typedef struct IPAddressRange_st {
769
+ ASN1_BIT_STRING *min;
770
+ ASN1_BIT_STRING *max;
771
+ } IPAddressRange;
772
+
773
+ #define IPAddressOrRange_addressPrefix 0
774
+ #define IPAddressOrRange_addressRange 1
775
+
776
+ typedef struct IPAddressOrRange_st {
777
+ int type;
778
+ union {
779
+ ASN1_BIT_STRING *addressPrefix;
780
+ IPAddressRange *addressRange;
781
+ } u;
782
+ } IPAddressOrRange;
783
+
784
+ typedef STACK_OF(IPAddressOrRange) IPAddressOrRanges;
785
+ DECLARE_STACK_OF(IPAddressOrRange)
786
+
787
+ #define IPAddressChoice_inherit 0
788
+ #define IPAddressChoice_addressesOrRanges 1
789
+
790
+ typedef struct IPAddressChoice_st {
791
+ int type;
792
+ union {
793
+ ASN1_NULL *inherit;
794
+ IPAddressOrRanges *addressesOrRanges;
795
+ } u;
796
+ } IPAddressChoice;
797
+
798
+ typedef struct IPAddressFamily_st {
799
+ ASN1_OCTET_STRING *addressFamily;
800
+ IPAddressChoice *ipAddressChoice;
801
+ } IPAddressFamily;
802
+
803
+ typedef STACK_OF(IPAddressFamily) IPAddrBlocks;
804
+ DECLARE_STACK_OF(IPAddressFamily)
805
+
806
+ IPAddressRange *IPAddressRange_new(void);
807
+ void IPAddressRange_free(IPAddressRange *a);
808
+ IPAddressRange *d2i_IPAddressRange(IPAddressRange **a,
809
+ const unsigned char **in, long len);
810
+ int i2d_IPAddressRange(IPAddressRange *a, unsigned char **out);
811
+ extern const ASN1_ITEM IPAddressRange_it;
812
+
813
+ IPAddressOrRange *IPAddressOrRange_new(void);
814
+ void IPAddressOrRange_free(IPAddressOrRange *a);
815
+ IPAddressOrRange *d2i_IPAddressOrRange(IPAddressOrRange **a,
816
+ const unsigned char **in, long len);
817
+ int i2d_IPAddressOrRange(IPAddressOrRange *a, unsigned char **out);
818
+ extern const ASN1_ITEM IPAddressOrRange_it;
819
+
820
+ IPAddressChoice *IPAddressChoice_new(void);
821
+ void IPAddressChoice_free(IPAddressChoice *a);
822
+ IPAddressChoice *d2i_IPAddressChoice(IPAddressChoice **a,
823
+ const unsigned char **in, long len);
824
+ int i2d_IPAddressChoice(IPAddressChoice *a, unsigned char **out);
825
+ extern const ASN1_ITEM IPAddressChoice_it;
826
+
827
+ IPAddressFamily *IPAddressFamily_new(void);
828
+ void IPAddressFamily_free(IPAddressFamily *a);
829
+ IPAddressFamily *d2i_IPAddressFamily(IPAddressFamily **a,
830
+ const unsigned char **in, long len);
831
+ int i2d_IPAddressFamily(IPAddressFamily *a, unsigned char **out);
832
+ extern const ASN1_ITEM IPAddressFamily_it;
833
+
834
+ /*
835
+ * API tag for elements of the ASIdentifer SEQUENCE.
836
+ */
837
+ #define V3_ASID_ASNUM 0
838
+ #define V3_ASID_RDI 1
839
+
840
+ /*
841
+ * AFI values, assigned by IANA. It'd be nice to make the AFI
842
+ * handling code totally generic, but there are too many little things
843
+ * that would need to be defined for other address families for it to
844
+ * be worth the trouble.
845
+ */
846
+ #define IANA_AFI_IPV4 1
847
+ #define IANA_AFI_IPV6 2
848
+
849
+ /*
850
+ * Utilities to construct and extract values from RFC3779 extensions,
851
+ * since some of the encodings (particularly for IP address prefixes
852
+ * and ranges) are a bit tedious to work with directly.
853
+ */
854
+ int X509v3_asid_add_inherit(ASIdentifiers *asid, int which);
855
+ int X509v3_asid_add_id_or_range(ASIdentifiers *asid, int which,
856
+ ASN1_INTEGER *min, ASN1_INTEGER *max);
857
+ int X509v3_addr_add_inherit(IPAddrBlocks *addr, const unsigned afi,
858
+ const unsigned *safi);
859
+ int X509v3_addr_add_prefix(IPAddrBlocks *addr, const unsigned afi,
860
+ const unsigned *safi, unsigned char *a, const int prefixlen);
861
+ int X509v3_addr_add_range(IPAddrBlocks *addr, const unsigned afi,
862
+ const unsigned *safi, unsigned char *min, unsigned char *max);
863
+ unsigned X509v3_addr_get_afi(const IPAddressFamily *f);
864
+ int X509v3_addr_get_range(IPAddressOrRange *aor, const unsigned afi,
865
+ unsigned char *min, unsigned char *max, const int length);
866
+
867
+ /*
868
+ * Canonical forms.
869
+ */
870
+ int X509v3_asid_is_canonical(ASIdentifiers *asid);
871
+ int X509v3_addr_is_canonical(IPAddrBlocks *addr);
872
+ int X509v3_asid_canonize(ASIdentifiers *asid);
873
+ int X509v3_addr_canonize(IPAddrBlocks *addr);
874
+
875
+ /*
876
+ * Tests for inheritance and containment.
877
+ */
878
+ int X509v3_asid_inherits(ASIdentifiers *asid);
879
+ int X509v3_addr_inherits(IPAddrBlocks *addr);
880
+ int X509v3_asid_subset(ASIdentifiers *a, ASIdentifiers *b);
881
+ int X509v3_addr_subset(IPAddrBlocks *a, IPAddrBlocks *b);
882
+
883
+ /*
884
+ * Check whether RFC 3779 extensions nest properly in chains.
885
+ */
886
+ int X509v3_asid_validate_path(X509_STORE_CTX *);
887
+ int X509v3_addr_validate_path(X509_STORE_CTX *);
888
+ int X509v3_asid_validate_resource_set(STACK_OF(X509) *chain, ASIdentifiers *ext,
889
+ int allow_inheritance);
890
+ int X509v3_addr_validate_resource_set(STACK_OF(X509) *chain, IPAddrBlocks *ext,
891
+ int allow_inheritance);
892
+
893
+ #endif /* !OPENSSL_NO_RFC3779 */
894
+
895
+ void ERR_load_X509V3_strings(void);
896
+
897
+ /* Error codes for the X509V3 functions. */
898
+
899
+ /* Function codes. */
900
+ #define X509V3_F_A2I_GENERAL_NAME 164
901
+ #define X509V3_F_ASIDENTIFIERCHOICE_CANONIZE 161
902
+ #define X509V3_F_ASIDENTIFIERCHOICE_IS_CANONICAL 162
903
+ #define X509V3_F_COPY_EMAIL 122
904
+ #define X509V3_F_COPY_ISSUER 123
905
+ #define X509V3_F_DO_DIRNAME 144
906
+ #define X509V3_F_DO_EXT_CONF 124
907
+ #define X509V3_F_DO_EXT_I2D 135
908
+ #define X509V3_F_DO_EXT_NCONF 151
909
+ #define X509V3_F_DO_I2V_NAME_CONSTRAINTS 148
910
+ #define X509V3_F_GNAMES_FROM_SECTNAME 156
911
+ #define X509V3_F_HEX_TO_STRING 111
912
+ #define X509V3_F_I2S_ASN1_ENUMERATED 121
913
+ #define X509V3_F_I2S_ASN1_IA5STRING 149
914
+ #define X509V3_F_I2S_ASN1_INTEGER 120
915
+ #define X509V3_F_I2V_AUTHORITY_INFO_ACCESS 138
916
+ #define X509V3_F_NOTICE_SECTION 132
917
+ #define X509V3_F_NREF_NOS 133
918
+ #define X509V3_F_POLICY_SECTION 131
919
+ #define X509V3_F_PROCESS_PCI_VALUE 150
920
+ #define X509V3_F_R2I_CERTPOL 130
921
+ #define X509V3_F_R2I_PCI 155
922
+ #define X509V3_F_S2I_ASN1_IA5STRING 100
923
+ #define X509V3_F_S2I_ASN1_INTEGER 108
924
+ #define X509V3_F_S2I_ASN1_OCTET_STRING 112
925
+ #define X509V3_F_S2I_ASN1_SKEY_ID 114
926
+ #define X509V3_F_S2I_SKEY_ID 115
927
+ #define X509V3_F_SET_DIST_POINT_NAME 158
928
+ #define X509V3_F_STRING_TO_HEX 113
929
+ #define X509V3_F_SXNET_ADD_ID_ASC 125
930
+ #define X509V3_F_SXNET_ADD_ID_INTEGER 126
931
+ #define X509V3_F_SXNET_ADD_ID_ULONG 127
932
+ #define X509V3_F_SXNET_GET_ID_ASC 128
933
+ #define X509V3_F_SXNET_GET_ID_ULONG 129
934
+ #define X509V3_F_V2I_ASIDENTIFIERS 163
935
+ #define X509V3_F_V2I_ASN1_BIT_STRING 101
936
+ #define X509V3_F_V2I_AUTHORITY_INFO_ACCESS 139
937
+ #define X509V3_F_V2I_AUTHORITY_KEYID 119
938
+ #define X509V3_F_V2I_BASIC_CONSTRAINTS 102
939
+ #define X509V3_F_V2I_CRLD 134
940
+ #define X509V3_F_V2I_EXTENDED_KEY_USAGE 103
941
+ #define X509V3_F_V2I_GENERAL_NAMES 118
942
+ #define X509V3_F_V2I_GENERAL_NAME_EX 117
943
+ #define X509V3_F_V2I_IDP 157
944
+ #define X509V3_F_V2I_IPADDRBLOCKS 159
945
+ #define X509V3_F_V2I_ISSUER_ALT 153
946
+ #define X509V3_F_V2I_NAME_CONSTRAINTS 147
947
+ #define X509V3_F_V2I_POLICY_CONSTRAINTS 146
948
+ #define X509V3_F_V2I_POLICY_MAPPINGS 145
949
+ #define X509V3_F_V2I_SUBJECT_ALT 154
950
+ #define X509V3_F_V3_ADDR_VALIDATE_PATH_INTERNAL 160
951
+ #define X509V3_F_V3_GENERIC_EXTENSION 116
952
+ #define X509V3_F_X509V3_ADD1_I2D 140
953
+ #define X509V3_F_X509V3_ADD_VALUE 105
954
+ #define X509V3_F_X509V3_EXT_ADD 104
955
+ #define X509V3_F_X509V3_EXT_ADD_ALIAS 106
956
+ #define X509V3_F_X509V3_EXT_CONF 107
957
+ #define X509V3_F_X509V3_EXT_I2D 136
958
+ #define X509V3_F_X509V3_EXT_NCONF 152
959
+ #define X509V3_F_X509V3_GET_SECTION 142
960
+ #define X509V3_F_X509V3_GET_STRING 143
961
+ #define X509V3_F_X509V3_GET_VALUE_BOOL 110
962
+ #define X509V3_F_X509V3_PARSE_LIST 109
963
+ #define X509V3_F_X509_PURPOSE_ADD 137
964
+ #define X509V3_F_X509_PURPOSE_SET 141
965
+
966
+ /* Reason codes. */
967
+ #define X509V3_R_BAD_IP_ADDRESS 118
968
+ #define X509V3_R_BAD_OBJECT 119
969
+ #define X509V3_R_BN_DEC2BN_ERROR 100
970
+ #define X509V3_R_BN_TO_ASN1_INTEGER_ERROR 101
971
+ #define X509V3_R_DIRNAME_ERROR 149
972
+ #define X509V3_R_DISTPOINT_ALREADY_SET 160
973
+ #define X509V3_R_DUPLICATE_ZONE_ID 133
974
+ #define X509V3_R_ERROR_CONVERTING_ZONE 131
975
+ #define X509V3_R_ERROR_CREATING_EXTENSION 144
976
+ #define X509V3_R_ERROR_IN_EXTENSION 128
977
+ #define X509V3_R_EXPECTED_A_SECTION_NAME 137
978
+ #define X509V3_R_EXTENSION_EXISTS 145
979
+ #define X509V3_R_EXTENSION_NAME_ERROR 115
980
+ #define X509V3_R_EXTENSION_NOT_FOUND 102
981
+ #define X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED 103
982
+ #define X509V3_R_EXTENSION_VALUE_ERROR 116
983
+ #define X509V3_R_ILLEGAL_EMPTY_EXTENSION 151
984
+ #define X509V3_R_ILLEGAL_HEX_DIGIT 113
985
+ #define X509V3_R_INCORRECT_POLICY_SYNTAX_TAG 152
986
+ #define X509V3_R_INVALID_MULTIPLE_RDNS 161
987
+ #define X509V3_R_INVALID_ASNUMBER 162
988
+ #define X509V3_R_INVALID_ASRANGE 163
989
+ #define X509V3_R_INVALID_BOOLEAN_STRING 104
990
+ #define X509V3_R_INVALID_EXTENSION_STRING 105
991
+ #define X509V3_R_INVALID_INHERITANCE 165
992
+ #define X509V3_R_INVALID_IPADDRESS 166
993
+ #define X509V3_R_INVALID_NAME 106
994
+ #define X509V3_R_INVALID_NULL_ARGUMENT 107
995
+ #define X509V3_R_INVALID_NULL_NAME 108
996
+ #define X509V3_R_INVALID_NULL_VALUE 109
997
+ #define X509V3_R_INVALID_NUMBER 140
998
+ #define X509V3_R_INVALID_NUMBERS 141
999
+ #define X509V3_R_INVALID_OBJECT_IDENTIFIER 110
1000
+ #define X509V3_R_INVALID_OPTION 138
1001
+ #define X509V3_R_INVALID_POLICY_IDENTIFIER 134
1002
+ #define X509V3_R_INVALID_PROXY_POLICY_SETTING 153
1003
+ #define X509V3_R_INVALID_PURPOSE 146
1004
+ #define X509V3_R_INVALID_SAFI 164
1005
+ #define X509V3_R_INVALID_SECTION 135
1006
+ #define X509V3_R_INVALID_SYNTAX 143
1007
+ #define X509V3_R_ISSUER_DECODE_ERROR 126
1008
+ #define X509V3_R_MISSING_VALUE 124
1009
+ #define X509V3_R_NEED_ORGANIZATION_AND_NUMBERS 142
1010
+ #define X509V3_R_NO_CONFIG_DATABASE 136
1011
+ #define X509V3_R_NO_ISSUER_CERTIFICATE 121
1012
+ #define X509V3_R_NO_ISSUER_DETAILS 127
1013
+ #define X509V3_R_NO_POLICY_IDENTIFIER 139
1014
+ #define X509V3_R_NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED 154
1015
+ #define X509V3_R_NO_PUBLIC_KEY 114
1016
+ #define X509V3_R_NO_SUBJECT_DETAILS 125
1017
+ #define X509V3_R_ODD_NUMBER_OF_DIGITS 112
1018
+ #define X509V3_R_OPERATION_NOT_DEFINED 148
1019
+ #define X509V3_R_OTHERNAME_ERROR 147
1020
+ #define X509V3_R_POLICY_LANGUAGE_ALREADY_DEFINED 155
1021
+ #define X509V3_R_POLICY_PATH_LENGTH 156
1022
+ #define X509V3_R_POLICY_PATH_LENGTH_ALREADY_DEFINED 157
1023
+ #define X509V3_R_POLICY_SYNTAX_NOT_CURRENTLY_SUPPORTED 158
1024
+ #define X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY 159
1025
+ #define X509V3_R_SECTION_NOT_FOUND 150
1026
+ #define X509V3_R_UNABLE_TO_GET_ISSUER_DETAILS 122
1027
+ #define X509V3_R_UNABLE_TO_GET_ISSUER_KEYID 123
1028
+ #define X509V3_R_UNKNOWN_BIT_STRING_ARGUMENT 111
1029
+ #define X509V3_R_UNKNOWN_EXTENSION 129
1030
+ #define X509V3_R_UNKNOWN_EXTENSION_NAME 130
1031
+ #define X509V3_R_UNKNOWN_OPTION 120
1032
+ #define X509V3_R_UNSUPPORTED_OPTION 117
1033
+ #define X509V3_R_UNSUPPORTED_TYPE 167
1034
+ #define X509V3_R_USER_TOO_LONG 132
1035
+
1036
+ #ifdef __cplusplus
1037
+ }
1038
+ #endif
1039
+ #endif