motion-openssl 0.1.0

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 (88) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +53 -0
  3. data/lib/OpenSSL/aes.h +149 -0
  4. data/lib/OpenSSL/asn1.h +1419 -0
  5. data/lib/OpenSSL/asn1_mac.h +579 -0
  6. data/lib/OpenSSL/asn1t.h +973 -0
  7. data/lib/OpenSSL/bio.h +879 -0
  8. data/lib/OpenSSL/blowfish.h +130 -0
  9. data/lib/OpenSSL/bn.h +939 -0
  10. data/lib/OpenSSL/buffer.h +125 -0
  11. data/lib/OpenSSL/camellia.h +132 -0
  12. data/lib/OpenSSL/cast.h +107 -0
  13. data/lib/OpenSSL/cmac.h +82 -0
  14. data/lib/OpenSSL/cms.h +555 -0
  15. data/lib/OpenSSL/comp.h +79 -0
  16. data/lib/OpenSSL/conf.h +267 -0
  17. data/lib/OpenSSL/conf_api.h +89 -0
  18. data/lib/OpenSSL/crypto.h +661 -0
  19. data/lib/OpenSSL/des.h +257 -0
  20. data/lib/OpenSSL/des_old.h +497 -0
  21. data/lib/OpenSSL/dh.h +392 -0
  22. data/lib/OpenSSL/dsa.h +332 -0
  23. data/lib/OpenSSL/dso.h +451 -0
  24. data/lib/OpenSSL/dtls1.h +272 -0
  25. data/lib/OpenSSL/e_os2.h +328 -0
  26. data/lib/OpenSSL/ebcdic.h +26 -0
  27. data/lib/OpenSSL/ec.h +1282 -0
  28. data/lib/OpenSSL/ecdh.h +134 -0
  29. data/lib/OpenSSL/ecdsa.h +335 -0
  30. data/lib/OpenSSL/engine.h +960 -0
  31. data/lib/OpenSSL/err.h +389 -0
  32. data/lib/OpenSSL/evp.h +1534 -0
  33. data/lib/OpenSSL/hmac.h +109 -0
  34. data/lib/OpenSSL/idea.h +105 -0
  35. data/lib/OpenSSL/krb5_asn.h +240 -0
  36. data/lib/OpenSSL/kssl.h +197 -0
  37. data/lib/OpenSSL/lhash.h +240 -0
  38. data/lib/OpenSSL/libcrypto-tvOS.a +0 -0
  39. data/lib/OpenSSL/libcrypto.a +0 -0
  40. data/lib/OpenSSL/libssl-tvOS.a +0 -0
  41. data/lib/OpenSSL/libssl.a +0 -0
  42. data/lib/OpenSSL/md4.h +119 -0
  43. data/lib/OpenSSL/md5.h +119 -0
  44. data/lib/OpenSSL/mdc2.h +94 -0
  45. data/lib/OpenSSL/modes.h +163 -0
  46. data/lib/OpenSSL/obj_mac.h +4194 -0
  47. data/lib/OpenSSL/objects.h +1143 -0
  48. data/lib/OpenSSL/ocsp.h +637 -0
  49. data/lib/OpenSSL/opensslconf.h +262 -0
  50. data/lib/OpenSSL/opensslv.h +97 -0
  51. data/lib/OpenSSL/ossl_typ.h +211 -0
  52. data/lib/OpenSSL/pem.h +615 -0
  53. data/lib/OpenSSL/pem2.h +70 -0
  54. data/lib/OpenSSL/pkcs12.h +342 -0
  55. data/lib/OpenSSL/pkcs7.h +481 -0
  56. data/lib/OpenSSL/pqueue.h +99 -0
  57. data/lib/OpenSSL/rand.h +150 -0
  58. data/lib/OpenSSL/rc2.h +103 -0
  59. data/lib/OpenSSL/rc4.h +88 -0
  60. data/lib/OpenSSL/ripemd.h +105 -0
  61. data/lib/OpenSSL/rsa.h +664 -0
  62. data/lib/OpenSSL/safestack.h +2672 -0
  63. data/lib/OpenSSL/seed.h +149 -0
  64. data/lib/OpenSSL/sha.h +214 -0
  65. data/lib/OpenSSL/srp.h +169 -0
  66. data/lib/OpenSSL/srtp.h +147 -0
  67. data/lib/OpenSSL/ssl.h +3168 -0
  68. data/lib/OpenSSL/ssl2.h +265 -0
  69. data/lib/OpenSSL/ssl23.h +84 -0
  70. data/lib/OpenSSL/ssl3.h +774 -0
  71. data/lib/OpenSSL/stack.h +107 -0
  72. data/lib/OpenSSL/symhacks.h +516 -0
  73. data/lib/OpenSSL/tls1.h +810 -0
  74. data/lib/OpenSSL/ts.h +862 -0
  75. data/lib/OpenSSL/txt_db.h +112 -0
  76. data/lib/OpenSSL/ui.h +415 -0
  77. data/lib/OpenSSL/ui_compat.h +88 -0
  78. data/lib/OpenSSL/whrlpool.h +41 -0
  79. data/lib/OpenSSL/x509.h +1327 -0
  80. data/lib/OpenSSL/x509_vfy.h +647 -0
  81. data/lib/OpenSSL/x509v3.h +1055 -0
  82. data/lib/motion-openssl.rb +8 -0
  83. data/lib/motion-openssl/hooks.rb +8 -0
  84. data/lib/motion-openssl/hooks/openssl.rb +20 -0
  85. data/lib/motion-openssl/version.rb +5 -0
  86. data/motion/openssl.rb +1 -0
  87. data/motion/openssl/random.rb +18 -0
  88. metadata +229 -0
@@ -0,0 +1,1055 @@
1
+ /* x509v3.h */
2
+ /*
3
+ * Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL project
4
+ * 1999.
5
+ */
6
+ /* ====================================================================
7
+ * Copyright (c) 1999-2004 The OpenSSL Project. All rights reserved.
8
+ *
9
+ * Redistribution and use in source and binary forms, with or without
10
+ * modification, are permitted provided that the following conditions
11
+ * are met:
12
+ *
13
+ * 1. Redistributions of source code must retain the above copyright
14
+ * notice, this list of conditions and the following disclaimer.
15
+ *
16
+ * 2. Redistributions in binary form must reproduce the above copyright
17
+ * notice, this list of conditions and the following disclaimer in
18
+ * the documentation and/or other materials provided with the
19
+ * distribution.
20
+ *
21
+ * 3. All advertising materials mentioning features or use of this
22
+ * software must display the following acknowledgment:
23
+ * "This product includes software developed by the OpenSSL Project
24
+ * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
25
+ *
26
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
27
+ * endorse or promote products derived from this software without
28
+ * prior written permission. For written permission, please contact
29
+ * licensing@OpenSSL.org.
30
+ *
31
+ * 5. Products derived from this software may not be called "OpenSSL"
32
+ * nor may "OpenSSL" appear in their names without prior written
33
+ * permission of the OpenSSL Project.
34
+ *
35
+ * 6. Redistributions of any form whatsoever must retain the following
36
+ * acknowledgment:
37
+ * "This product includes software developed by the OpenSSL Project
38
+ * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
39
+ *
40
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
41
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
42
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
43
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
44
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
45
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
46
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
47
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
49
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
50
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
51
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
52
+ * ====================================================================
53
+ *
54
+ * This product includes cryptographic software written by Eric Young
55
+ * (eay@cryptsoft.com). This product includes software written by Tim
56
+ * Hudson (tjh@cryptsoft.com).
57
+ *
58
+ */
59
+ #ifndef HEADER_X509V3_H
60
+ # define HEADER_X509V3_H
61
+
62
+ # include <openssl/bio.h>
63
+ # include <openssl/x509.h>
64
+ # include <openssl/conf.h>
65
+
66
+ #ifdef __cplusplus
67
+ extern "C" {
68
+ #endif
69
+
70
+ # ifdef OPENSSL_SYS_WIN32
71
+ /* Under Win32 these are defined in wincrypt.h */
72
+ # undef X509_NAME
73
+ # undef X509_CERT_PAIR
74
+ # undef X509_EXTENSIONS
75
+ # endif
76
+
77
+ /* Forward reference */
78
+ struct v3_ext_method;
79
+ struct v3_ext_ctx;
80
+
81
+ /* Useful typedefs */
82
+
83
+ typedef void *(*X509V3_EXT_NEW)(void);
84
+ typedef void (*X509V3_EXT_FREE) (void *);
85
+ typedef void *(*X509V3_EXT_D2I)(void *, const unsigned char **, long);
86
+ typedef int (*X509V3_EXT_I2D) (void *, unsigned char **);
87
+ typedef STACK_OF(CONF_VALUE) *
88
+ (*X509V3_EXT_I2V) (const struct v3_ext_method *method, void *ext,
89
+ STACK_OF(CONF_VALUE) *extlist);
90
+ typedef void *(*X509V3_EXT_V2I)(const struct v3_ext_method *method,
91
+ struct v3_ext_ctx *ctx,
92
+ STACK_OF(CONF_VALUE) *values);
93
+ typedef char *(*X509V3_EXT_I2S)(const struct v3_ext_method *method,
94
+ void *ext);
95
+ typedef void *(*X509V3_EXT_S2I)(const struct v3_ext_method *method,
96
+ struct v3_ext_ctx *ctx, const char *str);
97
+ typedef int (*X509V3_EXT_I2R) (const struct v3_ext_method *method, void *ext,
98
+ BIO *out, int indent);
99
+ typedef void *(*X509V3_EXT_R2I)(const struct v3_ext_method *method,
100
+ struct v3_ext_ctx *ctx, const char *str);
101
+
102
+ /* V3 extension structure */
103
+
104
+ struct v3_ext_method {
105
+ int ext_nid;
106
+ int ext_flags;
107
+ /* If this is set the following four fields are ignored */
108
+ ASN1_ITEM_EXP *it;
109
+ /* Old style ASN1 calls */
110
+ X509V3_EXT_NEW ext_new;
111
+ X509V3_EXT_FREE ext_free;
112
+ X509V3_EXT_D2I d2i;
113
+ X509V3_EXT_I2D i2d;
114
+ /* The following pair is used for string extensions */
115
+ X509V3_EXT_I2S i2s;
116
+ X509V3_EXT_S2I s2i;
117
+ /* The following pair is used for multi-valued extensions */
118
+ X509V3_EXT_I2V i2v;
119
+ X509V3_EXT_V2I v2i;
120
+ /* The following are used for raw extensions */
121
+ X509V3_EXT_I2R i2r;
122
+ X509V3_EXT_R2I r2i;
123
+ void *usr_data; /* Any extension specific data */
124
+ };
125
+
126
+ typedef struct X509V3_CONF_METHOD_st {
127
+ char *(*get_string) (void *db, char *section, char *value);
128
+ STACK_OF(CONF_VALUE) *(*get_section) (void *db, char *section);
129
+ void (*free_string) (void *db, char *string);
130
+ void (*free_section) (void *db, STACK_OF(CONF_VALUE) *section);
131
+ } X509V3_CONF_METHOD;
132
+
133
+ /* Context specific info */
134
+ struct v3_ext_ctx {
135
+ # define CTX_TEST 0x1
136
+ int flags;
137
+ X509 *issuer_cert;
138
+ X509 *subject_cert;
139
+ X509_REQ *subject_req;
140
+ X509_CRL *crl;
141
+ X509V3_CONF_METHOD *db_meth;
142
+ void *db;
143
+ /* Maybe more here */
144
+ };
145
+
146
+ typedef struct v3_ext_method X509V3_EXT_METHOD;
147
+
148
+ DECLARE_STACK_OF(X509V3_EXT_METHOD)
149
+
150
+ /* ext_flags values */
151
+ # define X509V3_EXT_DYNAMIC 0x1
152
+ # define X509V3_EXT_CTX_DEP 0x2
153
+ # define X509V3_EXT_MULTILINE 0x4
154
+
155
+ typedef BIT_STRING_BITNAME ENUMERATED_NAMES;
156
+
157
+ typedef struct BASIC_CONSTRAINTS_st {
158
+ int ca;
159
+ ASN1_INTEGER *pathlen;
160
+ } BASIC_CONSTRAINTS;
161
+
162
+ typedef struct PKEY_USAGE_PERIOD_st {
163
+ ASN1_GENERALIZEDTIME *notBefore;
164
+ ASN1_GENERALIZEDTIME *notAfter;
165
+ } PKEY_USAGE_PERIOD;
166
+
167
+ typedef struct otherName_st {
168
+ ASN1_OBJECT *type_id;
169
+ ASN1_TYPE *value;
170
+ } OTHERNAME;
171
+
172
+ typedef struct EDIPartyName_st {
173
+ ASN1_STRING *nameAssigner;
174
+ ASN1_STRING *partyName;
175
+ } EDIPARTYNAME;
176
+
177
+ typedef struct GENERAL_NAME_st {
178
+ # define GEN_OTHERNAME 0
179
+ # define GEN_EMAIL 1
180
+ # define GEN_DNS 2
181
+ # define GEN_X400 3
182
+ # define GEN_DIRNAME 4
183
+ # define GEN_EDIPARTY 5
184
+ # define GEN_URI 6
185
+ # define GEN_IPADD 7
186
+ # define GEN_RID 8
187
+ int type;
188
+ union {
189
+ char *ptr;
190
+ OTHERNAME *otherName; /* otherName */
191
+ ASN1_IA5STRING *rfc822Name;
192
+ ASN1_IA5STRING *dNSName;
193
+ ASN1_TYPE *x400Address;
194
+ X509_NAME *directoryName;
195
+ EDIPARTYNAME *ediPartyName;
196
+ ASN1_IA5STRING *uniformResourceIdentifier;
197
+ ASN1_OCTET_STRING *iPAddress;
198
+ ASN1_OBJECT *registeredID;
199
+ /* Old names */
200
+ ASN1_OCTET_STRING *ip; /* iPAddress */
201
+ X509_NAME *dirn; /* dirn */
202
+ ASN1_IA5STRING *ia5; /* rfc822Name, dNSName,
203
+ * uniformResourceIdentifier */
204
+ ASN1_OBJECT *rid; /* registeredID */
205
+ ASN1_TYPE *other; /* x400Address */
206
+ } d;
207
+ } GENERAL_NAME;
208
+
209
+ typedef STACK_OF(GENERAL_NAME) GENERAL_NAMES;
210
+
211
+ typedef struct ACCESS_DESCRIPTION_st {
212
+ ASN1_OBJECT *method;
213
+ GENERAL_NAME *location;
214
+ } ACCESS_DESCRIPTION;
215
+
216
+ typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS;
217
+
218
+ typedef STACK_OF(ASN1_OBJECT) EXTENDED_KEY_USAGE;
219
+
220
+ DECLARE_STACK_OF(GENERAL_NAME)
221
+ DECLARE_ASN1_SET_OF(GENERAL_NAME)
222
+
223
+ DECLARE_STACK_OF(ACCESS_DESCRIPTION)
224
+ DECLARE_ASN1_SET_OF(ACCESS_DESCRIPTION)
225
+
226
+ typedef struct DIST_POINT_NAME_st {
227
+ int type;
228
+ union {
229
+ GENERAL_NAMES *fullname;
230
+ STACK_OF(X509_NAME_ENTRY) *relativename;
231
+ } name;
232
+ /* If relativename then this contains the full distribution point name */
233
+ X509_NAME *dpname;
234
+ } DIST_POINT_NAME;
235
+ /* All existing reasons */
236
+ # define CRLDP_ALL_REASONS 0x807f
237
+
238
+ # define CRL_REASON_NONE -1
239
+ # define CRL_REASON_UNSPECIFIED 0
240
+ # define CRL_REASON_KEY_COMPROMISE 1
241
+ # define CRL_REASON_CA_COMPROMISE 2
242
+ # define CRL_REASON_AFFILIATION_CHANGED 3
243
+ # define CRL_REASON_SUPERSEDED 4
244
+ # define CRL_REASON_CESSATION_OF_OPERATION 5
245
+ # define CRL_REASON_CERTIFICATE_HOLD 6
246
+ # define CRL_REASON_REMOVE_FROM_CRL 8
247
+ # define CRL_REASON_PRIVILEGE_WITHDRAWN 9
248
+ # define CRL_REASON_AA_COMPROMISE 10
249
+
250
+ struct DIST_POINT_st {
251
+ DIST_POINT_NAME *distpoint;
252
+ ASN1_BIT_STRING *reasons;
253
+ GENERAL_NAMES *CRLissuer;
254
+ int dp_reasons;
255
+ };
256
+
257
+ typedef STACK_OF(DIST_POINT) CRL_DIST_POINTS;
258
+
259
+ DECLARE_STACK_OF(DIST_POINT)
260
+ DECLARE_ASN1_SET_OF(DIST_POINT)
261
+
262
+ struct AUTHORITY_KEYID_st {
263
+ ASN1_OCTET_STRING *keyid;
264
+ GENERAL_NAMES *issuer;
265
+ ASN1_INTEGER *serial;
266
+ };
267
+
268
+ /* Strong extranet structures */
269
+
270
+ typedef struct SXNET_ID_st {
271
+ ASN1_INTEGER *zone;
272
+ ASN1_OCTET_STRING *user;
273
+ } SXNETID;
274
+
275
+ DECLARE_STACK_OF(SXNETID)
276
+ DECLARE_ASN1_SET_OF(SXNETID)
277
+
278
+ typedef struct SXNET_st {
279
+ ASN1_INTEGER *version;
280
+ STACK_OF(SXNETID) *ids;
281
+ } SXNET;
282
+
283
+ typedef struct NOTICEREF_st {
284
+ ASN1_STRING *organization;
285
+ STACK_OF(ASN1_INTEGER) *noticenos;
286
+ } NOTICEREF;
287
+
288
+ typedef struct USERNOTICE_st {
289
+ NOTICEREF *noticeref;
290
+ ASN1_STRING *exptext;
291
+ } USERNOTICE;
292
+
293
+ typedef struct POLICYQUALINFO_st {
294
+ ASN1_OBJECT *pqualid;
295
+ union {
296
+ ASN1_IA5STRING *cpsuri;
297
+ USERNOTICE *usernotice;
298
+ ASN1_TYPE *other;
299
+ } d;
300
+ } POLICYQUALINFO;
301
+
302
+ DECLARE_STACK_OF(POLICYQUALINFO)
303
+ DECLARE_ASN1_SET_OF(POLICYQUALINFO)
304
+
305
+ typedef struct POLICYINFO_st {
306
+ ASN1_OBJECT *policyid;
307
+ STACK_OF(POLICYQUALINFO) *qualifiers;
308
+ } POLICYINFO;
309
+
310
+ typedef STACK_OF(POLICYINFO) CERTIFICATEPOLICIES;
311
+
312
+ DECLARE_STACK_OF(POLICYINFO)
313
+ DECLARE_ASN1_SET_OF(POLICYINFO)
314
+
315
+ typedef struct POLICY_MAPPING_st {
316
+ ASN1_OBJECT *issuerDomainPolicy;
317
+ ASN1_OBJECT *subjectDomainPolicy;
318
+ } POLICY_MAPPING;
319
+
320
+ DECLARE_STACK_OF(POLICY_MAPPING)
321
+
322
+ typedef STACK_OF(POLICY_MAPPING) POLICY_MAPPINGS;
323
+
324
+ typedef struct GENERAL_SUBTREE_st {
325
+ GENERAL_NAME *base;
326
+ ASN1_INTEGER *minimum;
327
+ ASN1_INTEGER *maximum;
328
+ } GENERAL_SUBTREE;
329
+
330
+ DECLARE_STACK_OF(GENERAL_SUBTREE)
331
+
332
+ struct NAME_CONSTRAINTS_st {
333
+ STACK_OF(GENERAL_SUBTREE) *permittedSubtrees;
334
+ STACK_OF(GENERAL_SUBTREE) *excludedSubtrees;
335
+ };
336
+
337
+ typedef struct POLICY_CONSTRAINTS_st {
338
+ ASN1_INTEGER *requireExplicitPolicy;
339
+ ASN1_INTEGER *inhibitPolicyMapping;
340
+ } POLICY_CONSTRAINTS;
341
+
342
+ /* Proxy certificate structures, see RFC 3820 */
343
+ typedef struct PROXY_POLICY_st {
344
+ ASN1_OBJECT *policyLanguage;
345
+ ASN1_OCTET_STRING *policy;
346
+ } PROXY_POLICY;
347
+
348
+ typedef struct PROXY_CERT_INFO_EXTENSION_st {
349
+ ASN1_INTEGER *pcPathLengthConstraint;
350
+ PROXY_POLICY *proxyPolicy;
351
+ } PROXY_CERT_INFO_EXTENSION;
352
+
353
+ DECLARE_ASN1_FUNCTIONS(PROXY_POLICY)
354
+ DECLARE_ASN1_FUNCTIONS(PROXY_CERT_INFO_EXTENSION)
355
+
356
+ struct ISSUING_DIST_POINT_st {
357
+ DIST_POINT_NAME *distpoint;
358
+ int onlyuser;
359
+ int onlyCA;
360
+ ASN1_BIT_STRING *onlysomereasons;
361
+ int indirectCRL;
362
+ int onlyattr;
363
+ };
364
+
365
+ /* Values in idp_flags field */
366
+ /* IDP present */
367
+ # define IDP_PRESENT 0x1
368
+ /* IDP values inconsistent */
369
+ # define IDP_INVALID 0x2
370
+ /* onlyuser true */
371
+ # define IDP_ONLYUSER 0x4
372
+ /* onlyCA true */
373
+ # define IDP_ONLYCA 0x8
374
+ /* onlyattr true */
375
+ # define IDP_ONLYATTR 0x10
376
+ /* indirectCRL true */
377
+ # define IDP_INDIRECT 0x20
378
+ /* onlysomereasons present */
379
+ # define IDP_REASONS 0x40
380
+
381
+ # define X509V3_conf_err(val) ERR_add_error_data(6, "section:", val->section, \
382
+ ",name:", val->name, ",value:", val->value);
383
+
384
+ # define X509V3_set_ctx_test(ctx) \
385
+ X509V3_set_ctx(ctx, NULL, NULL, NULL, NULL, CTX_TEST)
386
+ # define X509V3_set_ctx_nodb(ctx) (ctx)->db = NULL;
387
+
388
+ # define EXT_BITSTRING(nid, table) { nid, 0, ASN1_ITEM_ref(ASN1_BIT_STRING), \
389
+ 0,0,0,0, \
390
+ 0,0, \
391
+ (X509V3_EXT_I2V)i2v_ASN1_BIT_STRING, \
392
+ (X509V3_EXT_V2I)v2i_ASN1_BIT_STRING, \
393
+ NULL, NULL, \
394
+ table}
395
+
396
+ # define EXT_IA5STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_IA5STRING), \
397
+ 0,0,0,0, \
398
+ (X509V3_EXT_I2S)i2s_ASN1_IA5STRING, \
399
+ (X509V3_EXT_S2I)s2i_ASN1_IA5STRING, \
400
+ 0,0,0,0, \
401
+ NULL}
402
+
403
+ # define EXT_END { -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
404
+
405
+ /* X509_PURPOSE stuff */
406
+
407
+ # define EXFLAG_BCONS 0x1
408
+ # define EXFLAG_KUSAGE 0x2
409
+ # define EXFLAG_XKUSAGE 0x4
410
+ # define EXFLAG_NSCERT 0x8
411
+
412
+ # define EXFLAG_CA 0x10
413
+ /* Really self issued not necessarily self signed */
414
+ # define EXFLAG_SI 0x20
415
+ # define EXFLAG_V1 0x40
416
+ # define EXFLAG_INVALID 0x80
417
+ # define EXFLAG_SET 0x100
418
+ # define EXFLAG_CRITICAL 0x200
419
+ # define EXFLAG_PROXY 0x400
420
+
421
+ # define EXFLAG_INVALID_POLICY 0x800
422
+ # define EXFLAG_FRESHEST 0x1000
423
+ /* Self signed */
424
+ # define EXFLAG_SS 0x2000
425
+
426
+ # define KU_DIGITAL_SIGNATURE 0x0080
427
+ # define KU_NON_REPUDIATION 0x0040
428
+ # define KU_KEY_ENCIPHERMENT 0x0020
429
+ # define KU_DATA_ENCIPHERMENT 0x0010
430
+ # define KU_KEY_AGREEMENT 0x0008
431
+ # define KU_KEY_CERT_SIGN 0x0004
432
+ # define KU_CRL_SIGN 0x0002
433
+ # define KU_ENCIPHER_ONLY 0x0001
434
+ # define KU_DECIPHER_ONLY 0x8000
435
+
436
+ # define NS_SSL_CLIENT 0x80
437
+ # define NS_SSL_SERVER 0x40
438
+ # define NS_SMIME 0x20
439
+ # define NS_OBJSIGN 0x10
440
+ # define NS_SSL_CA 0x04
441
+ # define NS_SMIME_CA 0x02
442
+ # define NS_OBJSIGN_CA 0x01
443
+ # define NS_ANY_CA (NS_SSL_CA|NS_SMIME_CA|NS_OBJSIGN_CA)
444
+
445
+ # define XKU_SSL_SERVER 0x1
446
+ # define XKU_SSL_CLIENT 0x2
447
+ # define XKU_SMIME 0x4
448
+ # define XKU_CODE_SIGN 0x8
449
+ # define XKU_SGC 0x10
450
+ # define XKU_OCSP_SIGN 0x20
451
+ # define XKU_TIMESTAMP 0x40
452
+ # define XKU_DVCS 0x80
453
+ # define XKU_ANYEKU 0x100
454
+
455
+ # define X509_PURPOSE_DYNAMIC 0x1
456
+ # define X509_PURPOSE_DYNAMIC_NAME 0x2
457
+
458
+ typedef struct x509_purpose_st {
459
+ int purpose;
460
+ int trust; /* Default trust ID */
461
+ int flags;
462
+ int (*check_purpose) (const struct x509_purpose_st *, const X509 *, int);
463
+ char *name;
464
+ char *sname;
465
+ void *usr_data;
466
+ } X509_PURPOSE;
467
+
468
+ # define X509_PURPOSE_SSL_CLIENT 1
469
+ # define X509_PURPOSE_SSL_SERVER 2
470
+ # define X509_PURPOSE_NS_SSL_SERVER 3
471
+ # define X509_PURPOSE_SMIME_SIGN 4
472
+ # define X509_PURPOSE_SMIME_ENCRYPT 5
473
+ # define X509_PURPOSE_CRL_SIGN 6
474
+ # define X509_PURPOSE_ANY 7
475
+ # define X509_PURPOSE_OCSP_HELPER 8
476
+ # define X509_PURPOSE_TIMESTAMP_SIGN 9
477
+
478
+ # define X509_PURPOSE_MIN 1
479
+ # define X509_PURPOSE_MAX 9
480
+
481
+ /* Flags for X509V3_EXT_print() */
482
+
483
+ # define X509V3_EXT_UNKNOWN_MASK (0xfL << 16)
484
+ /* Return error for unknown extensions */
485
+ # define X509V3_EXT_DEFAULT 0
486
+ /* Print error for unknown extensions */
487
+ # define X509V3_EXT_ERROR_UNKNOWN (1L << 16)
488
+ /* ASN1 parse unknown extensions */
489
+ # define X509V3_EXT_PARSE_UNKNOWN (2L << 16)
490
+ /* BIO_dump unknown extensions */
491
+ # define X509V3_EXT_DUMP_UNKNOWN (3L << 16)
492
+
493
+ /* Flags for X509V3_add1_i2d */
494
+
495
+ # define X509V3_ADD_OP_MASK 0xfL
496
+ # define X509V3_ADD_DEFAULT 0L
497
+ # define X509V3_ADD_APPEND 1L
498
+ # define X509V3_ADD_REPLACE 2L
499
+ # define X509V3_ADD_REPLACE_EXISTING 3L
500
+ # define X509V3_ADD_KEEP_EXISTING 4L
501
+ # define X509V3_ADD_DELETE 5L
502
+ # define X509V3_ADD_SILENT 0x10
503
+
504
+ DECLARE_STACK_OF(X509_PURPOSE)
505
+
506
+ DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS)
507
+
508
+ DECLARE_ASN1_FUNCTIONS(SXNET)
509
+ DECLARE_ASN1_FUNCTIONS(SXNETID)
510
+
511
+ int SXNET_add_id_asc(SXNET **psx, char *zone, char *user, int userlen);
512
+ int SXNET_add_id_ulong(SXNET **psx, unsigned long lzone, char *user,
513
+ int userlen);
514
+ int SXNET_add_id_INTEGER(SXNET **psx, ASN1_INTEGER *izone, char *user,
515
+ int userlen);
516
+
517
+ ASN1_OCTET_STRING *SXNET_get_id_asc(SXNET *sx, char *zone);
518
+ ASN1_OCTET_STRING *SXNET_get_id_ulong(SXNET *sx, unsigned long lzone);
519
+ ASN1_OCTET_STRING *SXNET_get_id_INTEGER(SXNET *sx, ASN1_INTEGER *zone);
520
+
521
+ DECLARE_ASN1_FUNCTIONS(AUTHORITY_KEYID)
522
+
523
+ DECLARE_ASN1_FUNCTIONS(PKEY_USAGE_PERIOD)
524
+
525
+ DECLARE_ASN1_FUNCTIONS(GENERAL_NAME)
526
+ GENERAL_NAME *GENERAL_NAME_dup(GENERAL_NAME *a);
527
+ int GENERAL_NAME_cmp(GENERAL_NAME *a, GENERAL_NAME *b);
528
+
529
+ ASN1_BIT_STRING *v2i_ASN1_BIT_STRING(X509V3_EXT_METHOD *method,
530
+ X509V3_CTX *ctx,
531
+ STACK_OF(CONF_VALUE) *nval);
532
+ STACK_OF(CONF_VALUE) *i2v_ASN1_BIT_STRING(X509V3_EXT_METHOD *method,
533
+ ASN1_BIT_STRING *bits,
534
+ STACK_OF(CONF_VALUE) *extlist);
535
+
536
+ STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method,
537
+ GENERAL_NAME *gen,
538
+ STACK_OF(CONF_VALUE) *ret);
539
+ int GENERAL_NAME_print(BIO *out, GENERAL_NAME *gen);
540
+
541
+ DECLARE_ASN1_FUNCTIONS(GENERAL_NAMES)
542
+
543
+ STACK_OF(CONF_VALUE) *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method,
544
+ GENERAL_NAMES *gen,
545
+ STACK_OF(CONF_VALUE) *extlist);
546
+ GENERAL_NAMES *v2i_GENERAL_NAMES(const X509V3_EXT_METHOD *method,
547
+ X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval);
548
+
549
+ DECLARE_ASN1_FUNCTIONS(OTHERNAME)
550
+ DECLARE_ASN1_FUNCTIONS(EDIPARTYNAME)
551
+ int OTHERNAME_cmp(OTHERNAME *a, OTHERNAME *b);
552
+ void GENERAL_NAME_set0_value(GENERAL_NAME *a, int type, void *value);
553
+ void *GENERAL_NAME_get0_value(GENERAL_NAME *a, int *ptype);
554
+ int GENERAL_NAME_set0_othername(GENERAL_NAME *gen,
555
+ ASN1_OBJECT *oid, ASN1_TYPE *value);
556
+ int GENERAL_NAME_get0_otherName(GENERAL_NAME *gen,
557
+ ASN1_OBJECT **poid, ASN1_TYPE **pvalue);
558
+
559
+ char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method,
560
+ ASN1_OCTET_STRING *ia5);
561
+ ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method,
562
+ X509V3_CTX *ctx, char *str);
563
+
564
+ DECLARE_ASN1_FUNCTIONS(EXTENDED_KEY_USAGE)
565
+ int i2a_ACCESS_DESCRIPTION(BIO *bp, ACCESS_DESCRIPTION *a);
566
+
567
+ DECLARE_ASN1_FUNCTIONS(CERTIFICATEPOLICIES)
568
+ DECLARE_ASN1_FUNCTIONS(POLICYINFO)
569
+ DECLARE_ASN1_FUNCTIONS(POLICYQUALINFO)
570
+ DECLARE_ASN1_FUNCTIONS(USERNOTICE)
571
+ DECLARE_ASN1_FUNCTIONS(NOTICEREF)
572
+
573
+ DECLARE_ASN1_FUNCTIONS(CRL_DIST_POINTS)
574
+ DECLARE_ASN1_FUNCTIONS(DIST_POINT)
575
+ DECLARE_ASN1_FUNCTIONS(DIST_POINT_NAME)
576
+ DECLARE_ASN1_FUNCTIONS(ISSUING_DIST_POINT)
577
+
578
+ int DIST_POINT_set_dpname(DIST_POINT_NAME *dpn, X509_NAME *iname);
579
+
580
+ int NAME_CONSTRAINTS_check(X509 *x, NAME_CONSTRAINTS *nc);
581
+
582
+ DECLARE_ASN1_FUNCTIONS(ACCESS_DESCRIPTION)
583
+ DECLARE_ASN1_FUNCTIONS(AUTHORITY_INFO_ACCESS)
584
+
585
+ DECLARE_ASN1_ITEM(POLICY_MAPPING)
586
+ DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_MAPPING)
587
+ DECLARE_ASN1_ITEM(POLICY_MAPPINGS)
588
+
589
+ DECLARE_ASN1_ITEM(GENERAL_SUBTREE)
590
+ DECLARE_ASN1_ALLOC_FUNCTIONS(GENERAL_SUBTREE)
591
+
592
+ DECLARE_ASN1_ITEM(NAME_CONSTRAINTS)
593
+ DECLARE_ASN1_ALLOC_FUNCTIONS(NAME_CONSTRAINTS)
594
+
595
+ DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_CONSTRAINTS)
596
+ DECLARE_ASN1_ITEM(POLICY_CONSTRAINTS)
597
+
598
+ GENERAL_NAME *a2i_GENERAL_NAME(GENERAL_NAME *out,
599
+ const X509V3_EXT_METHOD *method,
600
+ X509V3_CTX *ctx, int gen_type, char *value,
601
+ int is_nc);
602
+
603
+ # ifdef HEADER_CONF_H
604
+ GENERAL_NAME *v2i_GENERAL_NAME(const X509V3_EXT_METHOD *method,
605
+ X509V3_CTX *ctx, CONF_VALUE *cnf);
606
+ GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out,
607
+ const X509V3_EXT_METHOD *method,
608
+ X509V3_CTX *ctx, CONF_VALUE *cnf,
609
+ int is_nc);
610
+ void X509V3_conf_free(CONF_VALUE *val);
611
+
612
+ X509_EXTENSION *X509V3_EXT_nconf_nid(CONF *conf, X509V3_CTX *ctx, int ext_nid,
613
+ char *value);
614
+ X509_EXTENSION *X509V3_EXT_nconf(CONF *conf, X509V3_CTX *ctx, char *name,
615
+ char *value);
616
+ int X509V3_EXT_add_nconf_sk(CONF *conf, X509V3_CTX *ctx, char *section,
617
+ STACK_OF(X509_EXTENSION) **sk);
618
+ int X509V3_EXT_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section,
619
+ X509 *cert);
620
+ int X509V3_EXT_REQ_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section,
621
+ X509_REQ *req);
622
+ int X509V3_EXT_CRL_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section,
623
+ X509_CRL *crl);
624
+
625
+ X509_EXTENSION *X509V3_EXT_conf_nid(LHASH_OF(CONF_VALUE) *conf,
626
+ X509V3_CTX *ctx, int ext_nid,
627
+ char *value);
628
+ X509_EXTENSION *X509V3_EXT_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
629
+ char *name, char *value);
630
+ int X509V3_EXT_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
631
+ char *section, X509 *cert);
632
+ int X509V3_EXT_REQ_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
633
+ char *section, X509_REQ *req);
634
+ int X509V3_EXT_CRL_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
635
+ char *section, X509_CRL *crl);
636
+
637
+ int X509V3_add_value_bool_nf(char *name, int asn1_bool,
638
+ STACK_OF(CONF_VALUE) **extlist);
639
+ int X509V3_get_value_bool(CONF_VALUE *value, int *asn1_bool);
640
+ int X509V3_get_value_int(CONF_VALUE *value, ASN1_INTEGER **aint);
641
+ void X509V3_set_nconf(X509V3_CTX *ctx, CONF *conf);
642
+ void X509V3_set_conf_lhash(X509V3_CTX *ctx, LHASH_OF(CONF_VALUE) *lhash);
643
+ # endif
644
+
645
+ char *X509V3_get_string(X509V3_CTX *ctx, char *name, char *section);
646
+ STACK_OF(CONF_VALUE) *X509V3_get_section(X509V3_CTX *ctx, char *section);
647
+ void X509V3_string_free(X509V3_CTX *ctx, char *str);
648
+ void X509V3_section_free(X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *section);
649
+ void X509V3_set_ctx(X509V3_CTX *ctx, X509 *issuer, X509 *subject,
650
+ X509_REQ *req, X509_CRL *crl, int flags);
651
+
652
+ int X509V3_add_value(const char *name, const char *value,
653
+ STACK_OF(CONF_VALUE) **extlist);
654
+ int X509V3_add_value_uchar(const char *name, const unsigned char *value,
655
+ STACK_OF(CONF_VALUE) **extlist);
656
+ int X509V3_add_value_bool(const char *name, int asn1_bool,
657
+ STACK_OF(CONF_VALUE) **extlist);
658
+ int X509V3_add_value_int(const char *name, ASN1_INTEGER *aint,
659
+ STACK_OF(CONF_VALUE) **extlist);
660
+ char *i2s_ASN1_INTEGER(X509V3_EXT_METHOD *meth, ASN1_INTEGER *aint);
661
+ ASN1_INTEGER *s2i_ASN1_INTEGER(X509V3_EXT_METHOD *meth, char *value);
662
+ char *i2s_ASN1_ENUMERATED(X509V3_EXT_METHOD *meth, ASN1_ENUMERATED *aint);
663
+ char *i2s_ASN1_ENUMERATED_TABLE(X509V3_EXT_METHOD *meth,
664
+ ASN1_ENUMERATED *aint);
665
+ int X509V3_EXT_add(X509V3_EXT_METHOD *ext);
666
+ int X509V3_EXT_add_list(X509V3_EXT_METHOD *extlist);
667
+ int X509V3_EXT_add_alias(int nid_to, int nid_from);
668
+ void X509V3_EXT_cleanup(void);
669
+
670
+ const X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext);
671
+ const X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid);
672
+ int X509V3_add_standard_extensions(void);
673
+ STACK_OF(CONF_VALUE) *X509V3_parse_list(const char *line);
674
+ void *X509V3_EXT_d2i(X509_EXTENSION *ext);
675
+ void *X509V3_get_d2i(STACK_OF(X509_EXTENSION) *x, int nid, int *crit,
676
+ int *idx);
677
+ int X509V3_EXT_free(int nid, void *ext_data);
678
+
679
+ X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc);
680
+ int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value,
681
+ int crit, unsigned long flags);
682
+
683
+ char *hex_to_string(const unsigned char *buffer, long len);
684
+ unsigned char *string_to_hex(const char *str, long *len);
685
+ int name_cmp(const char *name, const char *cmp);
686
+
687
+ void X509V3_EXT_val_prn(BIO *out, STACK_OF(CONF_VALUE) *val, int indent,
688
+ int ml);
689
+ int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, unsigned long flag,
690
+ int indent);
691
+ int X509V3_EXT_print_fp(FILE *out, X509_EXTENSION *ext, int flag, int indent);
692
+
693
+ int X509V3_extensions_print(BIO *out, char *title,
694
+ STACK_OF(X509_EXTENSION) *exts,
695
+ unsigned long flag, int indent);
696
+
697
+ int X509_check_ca(X509 *x);
698
+ int X509_check_purpose(X509 *x, int id, int ca);
699
+ int X509_supported_extension(X509_EXTENSION *ex);
700
+ int X509_PURPOSE_set(int *p, int purpose);
701
+ int X509_check_issued(X509 *issuer, X509 *subject);
702
+ int X509_check_akid(X509 *issuer, AUTHORITY_KEYID *akid);
703
+ int X509_PURPOSE_get_count(void);
704
+ X509_PURPOSE *X509_PURPOSE_get0(int idx);
705
+ int X509_PURPOSE_get_by_sname(char *sname);
706
+ int X509_PURPOSE_get_by_id(int id);
707
+ int X509_PURPOSE_add(int id, int trust, int flags,
708
+ int (*ck) (const X509_PURPOSE *, const X509 *, int),
709
+ char *name, char *sname, void *arg);
710
+ char *X509_PURPOSE_get0_name(X509_PURPOSE *xp);
711
+ char *X509_PURPOSE_get0_sname(X509_PURPOSE *xp);
712
+ int X509_PURPOSE_get_trust(X509_PURPOSE *xp);
713
+ void X509_PURPOSE_cleanup(void);
714
+ int X509_PURPOSE_get_id(X509_PURPOSE *);
715
+
716
+ STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x);
717
+ STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x);
718
+ void X509_email_free(STACK_OF(OPENSSL_STRING) *sk);
719
+ STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x);
720
+ /* Flags for X509_check_* functions */
721
+
722
+ /*
723
+ * Always check subject name for host match even if subject alt names present
724
+ */
725
+ # define X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT 0x1
726
+ /* Disable wildcard matching for dnsName fields and common name. */
727
+ # define X509_CHECK_FLAG_NO_WILDCARDS 0x2
728
+ /* Wildcards must not match a partial label. */
729
+ # define X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS 0x4
730
+ /* Allow (non-partial) wildcards to match multiple labels. */
731
+ # define X509_CHECK_FLAG_MULTI_LABEL_WILDCARDS 0x8
732
+ /* Constraint verifier subdomain patterns to match a single labels. */
733
+ # define X509_CHECK_FLAG_SINGLE_LABEL_SUBDOMAINS 0x10
734
+ /*
735
+ * Match reference identifiers starting with "." to any sub-domain.
736
+ * This is a non-public flag, turned on implicitly when the subject
737
+ * reference identity is a DNS name.
738
+ */
739
+ # define _X509_CHECK_FLAG_DOT_SUBDOMAINS 0x8000
740
+
741
+ int X509_check_host(X509 *x, const char *chk, size_t chklen,
742
+ unsigned int flags, char **peername);
743
+ int X509_check_email(X509 *x, const char *chk, size_t chklen,
744
+ unsigned int flags);
745
+ int X509_check_ip(X509 *x, const unsigned char *chk, size_t chklen,
746
+ unsigned int flags);
747
+ int X509_check_ip_asc(X509 *x, const char *ipasc, unsigned int flags);
748
+
749
+ ASN1_OCTET_STRING *a2i_IPADDRESS(const char *ipasc);
750
+ ASN1_OCTET_STRING *a2i_IPADDRESS_NC(const char *ipasc);
751
+ int a2i_ipadd(unsigned char *ipout, const char *ipasc);
752
+ int X509V3_NAME_from_section(X509_NAME *nm, STACK_OF(CONF_VALUE) *dn_sk,
753
+ unsigned long chtype);
754
+
755
+ void X509_POLICY_NODE_print(BIO *out, X509_POLICY_NODE *node, int indent);
756
+ DECLARE_STACK_OF(X509_POLICY_NODE)
757
+
758
+ # ifndef OPENSSL_NO_RFC3779
759
+
760
+ typedef struct ASRange_st {
761
+ ASN1_INTEGER *min, *max;
762
+ } ASRange;
763
+
764
+ # define ASIdOrRange_id 0
765
+ # define ASIdOrRange_range 1
766
+
767
+ typedef struct ASIdOrRange_st {
768
+ int type;
769
+ union {
770
+ ASN1_INTEGER *id;
771
+ ASRange *range;
772
+ } u;
773
+ } ASIdOrRange;
774
+
775
+ typedef STACK_OF(ASIdOrRange) ASIdOrRanges;
776
+ DECLARE_STACK_OF(ASIdOrRange)
777
+
778
+ # define ASIdentifierChoice_inherit 0
779
+ # define ASIdentifierChoice_asIdsOrRanges 1
780
+
781
+ typedef struct ASIdentifierChoice_st {
782
+ int type;
783
+ union {
784
+ ASN1_NULL *inherit;
785
+ ASIdOrRanges *asIdsOrRanges;
786
+ } u;
787
+ } ASIdentifierChoice;
788
+
789
+ typedef struct ASIdentifiers_st {
790
+ ASIdentifierChoice *asnum, *rdi;
791
+ } ASIdentifiers;
792
+
793
+ DECLARE_ASN1_FUNCTIONS(ASRange)
794
+ DECLARE_ASN1_FUNCTIONS(ASIdOrRange)
795
+ DECLARE_ASN1_FUNCTIONS(ASIdentifierChoice)
796
+ DECLARE_ASN1_FUNCTIONS(ASIdentifiers)
797
+
798
+ typedef struct IPAddressRange_st {
799
+ ASN1_BIT_STRING *min, *max;
800
+ } IPAddressRange;
801
+
802
+ # define IPAddressOrRange_addressPrefix 0
803
+ # define IPAddressOrRange_addressRange 1
804
+
805
+ typedef struct IPAddressOrRange_st {
806
+ int type;
807
+ union {
808
+ ASN1_BIT_STRING *addressPrefix;
809
+ IPAddressRange *addressRange;
810
+ } u;
811
+ } IPAddressOrRange;
812
+
813
+ typedef STACK_OF(IPAddressOrRange) IPAddressOrRanges;
814
+ DECLARE_STACK_OF(IPAddressOrRange)
815
+
816
+ # define IPAddressChoice_inherit 0
817
+ # define IPAddressChoice_addressesOrRanges 1
818
+
819
+ typedef struct IPAddressChoice_st {
820
+ int type;
821
+ union {
822
+ ASN1_NULL *inherit;
823
+ IPAddressOrRanges *addressesOrRanges;
824
+ } u;
825
+ } IPAddressChoice;
826
+
827
+ typedef struct IPAddressFamily_st {
828
+ ASN1_OCTET_STRING *addressFamily;
829
+ IPAddressChoice *ipAddressChoice;
830
+ } IPAddressFamily;
831
+
832
+ typedef STACK_OF(IPAddressFamily) IPAddrBlocks;
833
+ DECLARE_STACK_OF(IPAddressFamily)
834
+
835
+ DECLARE_ASN1_FUNCTIONS(IPAddressRange)
836
+ DECLARE_ASN1_FUNCTIONS(IPAddressOrRange)
837
+ DECLARE_ASN1_FUNCTIONS(IPAddressChoice)
838
+ DECLARE_ASN1_FUNCTIONS(IPAddressFamily)
839
+
840
+ /*
841
+ * API tag for elements of the ASIdentifer SEQUENCE.
842
+ */
843
+ # define V3_ASID_ASNUM 0
844
+ # define V3_ASID_RDI 1
845
+
846
+ /*
847
+ * AFI values, assigned by IANA. It'd be nice to make the AFI
848
+ * handling code totally generic, but there are too many little things
849
+ * that would need to be defined for other address families for it to
850
+ * be worth the trouble.
851
+ */
852
+ # define IANA_AFI_IPV4 1
853
+ # define IANA_AFI_IPV6 2
854
+
855
+ /*
856
+ * Utilities to construct and extract values from RFC3779 extensions,
857
+ * since some of the encodings (particularly for IP address prefixes
858
+ * and ranges) are a bit tedious to work with directly.
859
+ */
860
+ int v3_asid_add_inherit(ASIdentifiers *asid, int which);
861
+ int v3_asid_add_id_or_range(ASIdentifiers *asid, int which,
862
+ ASN1_INTEGER *min, ASN1_INTEGER *max);
863
+ int v3_addr_add_inherit(IPAddrBlocks *addr,
864
+ const unsigned afi, const unsigned *safi);
865
+ int v3_addr_add_prefix(IPAddrBlocks *addr,
866
+ const unsigned afi, const unsigned *safi,
867
+ unsigned char *a, const int prefixlen);
868
+ int v3_addr_add_range(IPAddrBlocks *addr,
869
+ const unsigned afi, const unsigned *safi,
870
+ unsigned char *min, unsigned char *max);
871
+ unsigned v3_addr_get_afi(const IPAddressFamily *f);
872
+ int v3_addr_get_range(IPAddressOrRange *aor, const unsigned afi,
873
+ unsigned char *min, unsigned char *max,
874
+ const int length);
875
+
876
+ /*
877
+ * Canonical forms.
878
+ */
879
+ int v3_asid_is_canonical(ASIdentifiers *asid);
880
+ int v3_addr_is_canonical(IPAddrBlocks *addr);
881
+ int v3_asid_canonize(ASIdentifiers *asid);
882
+ int v3_addr_canonize(IPAddrBlocks *addr);
883
+
884
+ /*
885
+ * Tests for inheritance and containment.
886
+ */
887
+ int v3_asid_inherits(ASIdentifiers *asid);
888
+ int v3_addr_inherits(IPAddrBlocks *addr);
889
+ int v3_asid_subset(ASIdentifiers *a, ASIdentifiers *b);
890
+ int v3_addr_subset(IPAddrBlocks *a, IPAddrBlocks *b);
891
+
892
+ /*
893
+ * Check whether RFC 3779 extensions nest properly in chains.
894
+ */
895
+ int v3_asid_validate_path(X509_STORE_CTX *);
896
+ int v3_addr_validate_path(X509_STORE_CTX *);
897
+ int v3_asid_validate_resource_set(STACK_OF(X509) *chain,
898
+ ASIdentifiers *ext, int allow_inheritance);
899
+ int v3_addr_validate_resource_set(STACK_OF(X509) *chain,
900
+ IPAddrBlocks *ext, int allow_inheritance);
901
+
902
+ # endif /* OPENSSL_NO_RFC3779 */
903
+
904
+ /* BEGIN ERROR CODES */
905
+ /*
906
+ * The following lines are auto generated by the script mkerr.pl. Any changes
907
+ * made after this point may be overwritten when the script is next run.
908
+ */
909
+ void ERR_load_X509V3_strings(void);
910
+
911
+ /* Error codes for the X509V3 functions. */
912
+
913
+ /* Function codes. */
914
+ # define X509V3_F_A2I_GENERAL_NAME 164
915
+ # define X509V3_F_ASIDENTIFIERCHOICE_CANONIZE 161
916
+ # define X509V3_F_ASIDENTIFIERCHOICE_IS_CANONICAL 162
917
+ # define X509V3_F_COPY_EMAIL 122
918
+ # define X509V3_F_COPY_ISSUER 123
919
+ # define X509V3_F_DO_DIRNAME 144
920
+ # define X509V3_F_DO_EXT_CONF 124
921
+ # define X509V3_F_DO_EXT_I2D 135
922
+ # define X509V3_F_DO_EXT_NCONF 151
923
+ # define X509V3_F_DO_I2V_NAME_CONSTRAINTS 148
924
+ # define X509V3_F_GNAMES_FROM_SECTNAME 156
925
+ # define X509V3_F_HEX_TO_STRING 111
926
+ # define X509V3_F_I2S_ASN1_ENUMERATED 121
927
+ # define X509V3_F_I2S_ASN1_IA5STRING 149
928
+ # define X509V3_F_I2S_ASN1_INTEGER 120
929
+ # define X509V3_F_I2V_AUTHORITY_INFO_ACCESS 138
930
+ # define X509V3_F_NOTICE_SECTION 132
931
+ # define X509V3_F_NREF_NOS 133
932
+ # define X509V3_F_POLICY_SECTION 131
933
+ # define X509V3_F_PROCESS_PCI_VALUE 150
934
+ # define X509V3_F_R2I_CERTPOL 130
935
+ # define X509V3_F_R2I_PCI 155
936
+ # define X509V3_F_S2I_ASN1_IA5STRING 100
937
+ # define X509V3_F_S2I_ASN1_INTEGER 108
938
+ # define X509V3_F_S2I_ASN1_OCTET_STRING 112
939
+ # define X509V3_F_S2I_ASN1_SKEY_ID 114
940
+ # define X509V3_F_S2I_SKEY_ID 115
941
+ # define X509V3_F_SET_DIST_POINT_NAME 158
942
+ # define X509V3_F_STRING_TO_HEX 113
943
+ # define X509V3_F_SXNET_ADD_ID_ASC 125
944
+ # define X509V3_F_SXNET_ADD_ID_INTEGER 126
945
+ # define X509V3_F_SXNET_ADD_ID_ULONG 127
946
+ # define X509V3_F_SXNET_GET_ID_ASC 128
947
+ # define X509V3_F_SXNET_GET_ID_ULONG 129
948
+ # define X509V3_F_V2I_ASIDENTIFIERS 163
949
+ # define X509V3_F_V2I_ASN1_BIT_STRING 101
950
+ # define X509V3_F_V2I_AUTHORITY_INFO_ACCESS 139
951
+ # define X509V3_F_V2I_AUTHORITY_KEYID 119
952
+ # define X509V3_F_V2I_BASIC_CONSTRAINTS 102
953
+ # define X509V3_F_V2I_CRLD 134
954
+ # define X509V3_F_V2I_EXTENDED_KEY_USAGE 103
955
+ # define X509V3_F_V2I_GENERAL_NAMES 118
956
+ # define X509V3_F_V2I_GENERAL_NAME_EX 117
957
+ # define X509V3_F_V2I_IDP 157
958
+ # define X509V3_F_V2I_IPADDRBLOCKS 159
959
+ # define X509V3_F_V2I_ISSUER_ALT 153
960
+ # define X509V3_F_V2I_NAME_CONSTRAINTS 147
961
+ # define X509V3_F_V2I_POLICY_CONSTRAINTS 146
962
+ # define X509V3_F_V2I_POLICY_MAPPINGS 145
963
+ # define X509V3_F_V2I_SUBJECT_ALT 154
964
+ # define X509V3_F_V3_ADDR_VALIDATE_PATH_INTERNAL 160
965
+ # define X509V3_F_V3_GENERIC_EXTENSION 116
966
+ # define X509V3_F_X509V3_ADD1_I2D 140
967
+ # define X509V3_F_X509V3_ADD_VALUE 105
968
+ # define X509V3_F_X509V3_EXT_ADD 104
969
+ # define X509V3_F_X509V3_EXT_ADD_ALIAS 106
970
+ # define X509V3_F_X509V3_EXT_CONF 107
971
+ # define X509V3_F_X509V3_EXT_FREE 165
972
+ # define X509V3_F_X509V3_EXT_I2D 136
973
+ # define X509V3_F_X509V3_EXT_NCONF 152
974
+ # define X509V3_F_X509V3_GET_SECTION 142
975
+ # define X509V3_F_X509V3_GET_STRING 143
976
+ # define X509V3_F_X509V3_GET_VALUE_BOOL 110
977
+ # define X509V3_F_X509V3_PARSE_LIST 109
978
+ # define X509V3_F_X509_PURPOSE_ADD 137
979
+ # define X509V3_F_X509_PURPOSE_SET 141
980
+
981
+ /* Reason codes. */
982
+ # define X509V3_R_BAD_IP_ADDRESS 118
983
+ # define X509V3_R_BAD_OBJECT 119
984
+ # define X509V3_R_BN_DEC2BN_ERROR 100
985
+ # define X509V3_R_BN_TO_ASN1_INTEGER_ERROR 101
986
+ # define X509V3_R_CANNOT_FIND_FREE_FUNCTION 168
987
+ # define X509V3_R_DIRNAME_ERROR 149
988
+ # define X509V3_R_DISTPOINT_ALREADY_SET 160
989
+ # define X509V3_R_DUPLICATE_ZONE_ID 133
990
+ # define X509V3_R_ERROR_CONVERTING_ZONE 131
991
+ # define X509V3_R_ERROR_CREATING_EXTENSION 144
992
+ # define X509V3_R_ERROR_IN_EXTENSION 128
993
+ # define X509V3_R_EXPECTED_A_SECTION_NAME 137
994
+ # define X509V3_R_EXTENSION_EXISTS 145
995
+ # define X509V3_R_EXTENSION_NAME_ERROR 115
996
+ # define X509V3_R_EXTENSION_NOT_FOUND 102
997
+ # define X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED 103
998
+ # define X509V3_R_EXTENSION_VALUE_ERROR 116
999
+ # define X509V3_R_ILLEGAL_EMPTY_EXTENSION 151
1000
+ # define X509V3_R_ILLEGAL_HEX_DIGIT 113
1001
+ # define X509V3_R_INCORRECT_POLICY_SYNTAX_TAG 152
1002
+ # define X509V3_R_INVALID_ASNUMBER 162
1003
+ # define X509V3_R_INVALID_ASRANGE 163
1004
+ # define X509V3_R_INVALID_BOOLEAN_STRING 104
1005
+ # define X509V3_R_INVALID_EXTENSION_STRING 105
1006
+ # define X509V3_R_INVALID_INHERITANCE 165
1007
+ # define X509V3_R_INVALID_IPADDRESS 166
1008
+ # define X509V3_R_INVALID_MULTIPLE_RDNS 161
1009
+ # define X509V3_R_INVALID_NAME 106
1010
+ # define X509V3_R_INVALID_NULL_ARGUMENT 107
1011
+ # define X509V3_R_INVALID_NULL_NAME 108
1012
+ # define X509V3_R_INVALID_NULL_VALUE 109
1013
+ # define X509V3_R_INVALID_NUMBER 140
1014
+ # define X509V3_R_INVALID_NUMBERS 141
1015
+ # define X509V3_R_INVALID_OBJECT_IDENTIFIER 110
1016
+ # define X509V3_R_INVALID_OPTION 138
1017
+ # define X509V3_R_INVALID_POLICY_IDENTIFIER 134
1018
+ # define X509V3_R_INVALID_PROXY_POLICY_SETTING 153
1019
+ # define X509V3_R_INVALID_PURPOSE 146
1020
+ # define X509V3_R_INVALID_SAFI 164
1021
+ # define X509V3_R_INVALID_SECTION 135
1022
+ # define X509V3_R_INVALID_SYNTAX 143
1023
+ # define X509V3_R_ISSUER_DECODE_ERROR 126
1024
+ # define X509V3_R_MISSING_VALUE 124
1025
+ # define X509V3_R_NEED_ORGANIZATION_AND_NUMBERS 142
1026
+ # define X509V3_R_NO_CONFIG_DATABASE 136
1027
+ # define X509V3_R_NO_ISSUER_CERTIFICATE 121
1028
+ # define X509V3_R_NO_ISSUER_DETAILS 127
1029
+ # define X509V3_R_NO_POLICY_IDENTIFIER 139
1030
+ # define X509V3_R_NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED 154
1031
+ # define X509V3_R_NO_PUBLIC_KEY 114
1032
+ # define X509V3_R_NO_SUBJECT_DETAILS 125
1033
+ # define X509V3_R_ODD_NUMBER_OF_DIGITS 112
1034
+ # define X509V3_R_OPERATION_NOT_DEFINED 148
1035
+ # define X509V3_R_OTHERNAME_ERROR 147
1036
+ # define X509V3_R_POLICY_LANGUAGE_ALREADY_DEFINED 155
1037
+ # define X509V3_R_POLICY_PATH_LENGTH 156
1038
+ # define X509V3_R_POLICY_PATH_LENGTH_ALREADY_DEFINED 157
1039
+ # define X509V3_R_POLICY_SYNTAX_NOT_CURRENTLY_SUPPORTED 158
1040
+ # define X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY 159
1041
+ # define X509V3_R_SECTION_NOT_FOUND 150
1042
+ # define X509V3_R_UNABLE_TO_GET_ISSUER_DETAILS 122
1043
+ # define X509V3_R_UNABLE_TO_GET_ISSUER_KEYID 123
1044
+ # define X509V3_R_UNKNOWN_BIT_STRING_ARGUMENT 111
1045
+ # define X509V3_R_UNKNOWN_EXTENSION 129
1046
+ # define X509V3_R_UNKNOWN_EXTENSION_NAME 130
1047
+ # define X509V3_R_UNKNOWN_OPTION 120
1048
+ # define X509V3_R_UNSUPPORTED_OPTION 117
1049
+ # define X509V3_R_UNSUPPORTED_TYPE 167
1050
+ # define X509V3_R_USER_TOO_LONG 132
1051
+
1052
+ #ifdef __cplusplus
1053
+ }
1054
+ #endif
1055
+ #endif