motion-openssl 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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