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,88 @@
1
+ /* crypto/ui/ui.h -*- mode:C; c-file-style: "eay" -*- */
2
+ /*
3
+ * Written by Richard Levitte (richard@levitte.org) for the OpenSSL project
4
+ * 2001.
5
+ */
6
+ /* ====================================================================
7
+ * Copyright (c) 2001 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
+ * openssl-core@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
+
60
+ #ifndef HEADER_UI_COMPAT_H
61
+ # define HEADER_UI_COMPAT_H
62
+
63
+ # include <openssl/opensslconf.h>
64
+ # include <openssl/ui.h>
65
+
66
+ #ifdef __cplusplus
67
+ extern "C" {
68
+ #endif
69
+
70
+ /*
71
+ * The following functions were previously part of the DES section, and are
72
+ * provided here for backward compatibility reasons.
73
+ */
74
+
75
+ # define des_read_pw_string(b,l,p,v) \
76
+ _ossl_old_des_read_pw_string((b),(l),(p),(v))
77
+ # define des_read_pw(b,bf,s,p,v) \
78
+ _ossl_old_des_read_pw((b),(bf),(s),(p),(v))
79
+
80
+ int _ossl_old_des_read_pw_string(char *buf, int length, const char *prompt,
81
+ int verify);
82
+ int _ossl_old_des_read_pw(char *buf, char *buff, int size, const char *prompt,
83
+ int verify);
84
+
85
+ #ifdef __cplusplus
86
+ }
87
+ #endif
88
+ #endif
@@ -0,0 +1,41 @@
1
+ #ifndef HEADER_WHRLPOOL_H
2
+ # define HEADER_WHRLPOOL_H
3
+
4
+ # include <openssl/e_os2.h>
5
+ # include <stddef.h>
6
+
7
+ #ifdef __cplusplus
8
+ extern "C" {
9
+ #endif
10
+
11
+ # define WHIRLPOOL_DIGEST_LENGTH (512/8)
12
+ # define WHIRLPOOL_BBLOCK 512
13
+ # define WHIRLPOOL_COUNTER (256/8)
14
+
15
+ typedef struct {
16
+ union {
17
+ unsigned char c[WHIRLPOOL_DIGEST_LENGTH];
18
+ /* double q is here to ensure 64-bit alignment */
19
+ double q[WHIRLPOOL_DIGEST_LENGTH / sizeof(double)];
20
+ } H;
21
+ unsigned char data[WHIRLPOOL_BBLOCK / 8];
22
+ unsigned int bitoff;
23
+ size_t bitlen[WHIRLPOOL_COUNTER / sizeof(size_t)];
24
+ } WHIRLPOOL_CTX;
25
+
26
+ # ifndef OPENSSL_NO_WHIRLPOOL
27
+ # ifdef OPENSSL_FIPS
28
+ int private_WHIRLPOOL_Init(WHIRLPOOL_CTX *c);
29
+ # endif
30
+ int WHIRLPOOL_Init(WHIRLPOOL_CTX *c);
31
+ int WHIRLPOOL_Update(WHIRLPOOL_CTX *c, const void *inp, size_t bytes);
32
+ void WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c, const void *inp, size_t bits);
33
+ int WHIRLPOOL_Final(unsigned char *md, WHIRLPOOL_CTX *c);
34
+ unsigned char *WHIRLPOOL(const void *inp, size_t bytes, unsigned char *md);
35
+ # endif
36
+
37
+ #ifdef __cplusplus
38
+ }
39
+ #endif
40
+
41
+ #endif
@@ -0,0 +1,1327 @@
1
+ /* crypto/x509/x509.h */
2
+ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3
+ * All rights reserved.
4
+ *
5
+ * This package is an SSL implementation written
6
+ * by Eric Young (eay@cryptsoft.com).
7
+ * The implementation was written so as to conform with Netscapes SSL.
8
+ *
9
+ * This library is free for commercial and non-commercial use as long as
10
+ * the following conditions are aheared to. The following conditions
11
+ * apply to all code found in this distribution, be it the RC4, RSA,
12
+ * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13
+ * included with this distribution is covered by the same copyright terms
14
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15
+ *
16
+ * Copyright remains Eric Young's, and as such any Copyright notices in
17
+ * the code are not to be removed.
18
+ * If this package is used in a product, Eric Young should be given attribution
19
+ * as the author of the parts of the library used.
20
+ * This can be in the form of a textual message at program startup or
21
+ * in documentation (online or textual) provided with the package.
22
+ *
23
+ * Redistribution and use in source and binary forms, with or without
24
+ * modification, are permitted provided that the following conditions
25
+ * are met:
26
+ * 1. Redistributions of source code must retain the copyright
27
+ * notice, this list of conditions and the following disclaimer.
28
+ * 2. Redistributions in binary form must reproduce the above copyright
29
+ * notice, this list of conditions and the following disclaimer in the
30
+ * documentation and/or other materials provided with the distribution.
31
+ * 3. All advertising materials mentioning features or use of this software
32
+ * must display the following acknowledgement:
33
+ * "This product includes cryptographic software written by
34
+ * Eric Young (eay@cryptsoft.com)"
35
+ * The word 'cryptographic' can be left out if the rouines from the library
36
+ * being used are not cryptographic related :-).
37
+ * 4. If you include any Windows specific code (or a derivative thereof) from
38
+ * the apps directory (application code) you must include an acknowledgement:
39
+ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40
+ *
41
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51
+ * SUCH DAMAGE.
52
+ *
53
+ * The licence and distribution terms for any publically available version or
54
+ * derivative of this code cannot be changed. i.e. this code cannot simply be
55
+ * copied and put under another distribution licence
56
+ * [including the GNU Public Licence.]
57
+ */
58
+ /* ====================================================================
59
+ * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
60
+ * ECDH support in OpenSSL originally developed by
61
+ * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
62
+ */
63
+
64
+ #ifndef HEADER_X509_H
65
+ # define HEADER_X509_H
66
+
67
+ # include <openssl/e_os2.h>
68
+ # include <openssl/symhacks.h>
69
+ # ifndef OPENSSL_NO_BUFFER
70
+ # include <openssl/buffer.h>
71
+ # endif
72
+ # ifndef OPENSSL_NO_EVP
73
+ # include <openssl/evp.h>
74
+ # endif
75
+ # ifndef OPENSSL_NO_BIO
76
+ # include <openssl/bio.h>
77
+ # endif
78
+ # include <openssl/stack.h>
79
+ # include <openssl/asn1.h>
80
+ # include <openssl/safestack.h>
81
+
82
+ # ifndef OPENSSL_NO_EC
83
+ # include <openssl/ec.h>
84
+ # endif
85
+
86
+ # ifndef OPENSSL_NO_ECDSA
87
+ # include <openssl/ecdsa.h>
88
+ # endif
89
+
90
+ # ifndef OPENSSL_NO_ECDH
91
+ # include <openssl/ecdh.h>
92
+ # endif
93
+
94
+ # ifndef OPENSSL_NO_DEPRECATED
95
+ # ifndef OPENSSL_NO_RSA
96
+ # include <openssl/rsa.h>
97
+ # endif
98
+ # ifndef OPENSSL_NO_DSA
99
+ # include <openssl/dsa.h>
100
+ # endif
101
+ # ifndef OPENSSL_NO_DH
102
+ # include <openssl/dh.h>
103
+ # endif
104
+ # endif
105
+
106
+ # ifndef OPENSSL_NO_SHA
107
+ # include <openssl/sha.h>
108
+ # endif
109
+ # include <openssl/ossl_typ.h>
110
+
111
+ #ifdef __cplusplus
112
+ extern "C" {
113
+ #endif
114
+
115
+ # ifdef OPENSSL_SYS_WIN32
116
+ /* Under Win32 these are defined in wincrypt.h */
117
+ # undef X509_NAME
118
+ # undef X509_CERT_PAIR
119
+ # undef X509_EXTENSIONS
120
+ # endif
121
+
122
+ # define X509_FILETYPE_PEM 1
123
+ # define X509_FILETYPE_ASN1 2
124
+ # define X509_FILETYPE_DEFAULT 3
125
+
126
+ # define X509v3_KU_DIGITAL_SIGNATURE 0x0080
127
+ # define X509v3_KU_NON_REPUDIATION 0x0040
128
+ # define X509v3_KU_KEY_ENCIPHERMENT 0x0020
129
+ # define X509v3_KU_DATA_ENCIPHERMENT 0x0010
130
+ # define X509v3_KU_KEY_AGREEMENT 0x0008
131
+ # define X509v3_KU_KEY_CERT_SIGN 0x0004
132
+ # define X509v3_KU_CRL_SIGN 0x0002
133
+ # define X509v3_KU_ENCIPHER_ONLY 0x0001
134
+ # define X509v3_KU_DECIPHER_ONLY 0x8000
135
+ # define X509v3_KU_UNDEF 0xffff
136
+
137
+ typedef struct X509_objects_st {
138
+ int nid;
139
+ int (*a2i) (void);
140
+ int (*i2a) (void);
141
+ } X509_OBJECTS;
142
+
143
+ struct X509_algor_st {
144
+ ASN1_OBJECT *algorithm;
145
+ ASN1_TYPE *parameter;
146
+ } /* X509_ALGOR */ ;
147
+
148
+ DECLARE_ASN1_SET_OF(X509_ALGOR)
149
+
150
+ typedef STACK_OF(X509_ALGOR) X509_ALGORS;
151
+
152
+ typedef struct X509_val_st {
153
+ ASN1_TIME *notBefore;
154
+ ASN1_TIME *notAfter;
155
+ } X509_VAL;
156
+
157
+ struct X509_pubkey_st {
158
+ X509_ALGOR *algor;
159
+ ASN1_BIT_STRING *public_key;
160
+ EVP_PKEY *pkey;
161
+ };
162
+
163
+ typedef struct X509_sig_st {
164
+ X509_ALGOR *algor;
165
+ ASN1_OCTET_STRING *digest;
166
+ } X509_SIG;
167
+
168
+ typedef struct X509_name_entry_st {
169
+ ASN1_OBJECT *object;
170
+ ASN1_STRING *value;
171
+ int set;
172
+ int size; /* temp variable */
173
+ } X509_NAME_ENTRY;
174
+
175
+ DECLARE_STACK_OF(X509_NAME_ENTRY)
176
+ DECLARE_ASN1_SET_OF(X509_NAME_ENTRY)
177
+
178
+ /* we always keep X509_NAMEs in 2 forms. */
179
+ struct X509_name_st {
180
+ STACK_OF(X509_NAME_ENTRY) *entries;
181
+ int modified; /* true if 'bytes' needs to be built */
182
+ # ifndef OPENSSL_NO_BUFFER
183
+ BUF_MEM *bytes;
184
+ # else
185
+ char *bytes;
186
+ # endif
187
+ /* unsigned long hash; Keep the hash around for lookups */
188
+ unsigned char *canon_enc;
189
+ int canon_enclen;
190
+ } /* X509_NAME */ ;
191
+
192
+ DECLARE_STACK_OF(X509_NAME)
193
+
194
+ # define X509_EX_V_NETSCAPE_HACK 0x8000
195
+ # define X509_EX_V_INIT 0x0001
196
+ typedef struct X509_extension_st {
197
+ ASN1_OBJECT *object;
198
+ ASN1_BOOLEAN critical;
199
+ ASN1_OCTET_STRING *value;
200
+ } X509_EXTENSION;
201
+
202
+ typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS;
203
+
204
+ DECLARE_STACK_OF(X509_EXTENSION)
205
+ DECLARE_ASN1_SET_OF(X509_EXTENSION)
206
+
207
+ /* a sequence of these are used */
208
+ typedef struct x509_attributes_st {
209
+ ASN1_OBJECT *object;
210
+ int single; /* 0 for a set, 1 for a single item (which is
211
+ * wrong) */
212
+ union {
213
+ char *ptr;
214
+ /*
215
+ * 0
216
+ */ STACK_OF(ASN1_TYPE) *set;
217
+ /*
218
+ * 1
219
+ */ ASN1_TYPE *single;
220
+ } value;
221
+ } X509_ATTRIBUTE;
222
+
223
+ DECLARE_STACK_OF(X509_ATTRIBUTE)
224
+ DECLARE_ASN1_SET_OF(X509_ATTRIBUTE)
225
+
226
+ typedef struct X509_req_info_st {
227
+ ASN1_ENCODING enc;
228
+ ASN1_INTEGER *version;
229
+ X509_NAME *subject;
230
+ X509_PUBKEY *pubkey;
231
+ /* d=2 hl=2 l= 0 cons: cont: 00 */
232
+ STACK_OF(X509_ATTRIBUTE) *attributes; /* [ 0 ] */
233
+ } X509_REQ_INFO;
234
+
235
+ typedef struct X509_req_st {
236
+ X509_REQ_INFO *req_info;
237
+ X509_ALGOR *sig_alg;
238
+ ASN1_BIT_STRING *signature;
239
+ int references;
240
+ } X509_REQ;
241
+
242
+ typedef struct x509_cinf_st {
243
+ ASN1_INTEGER *version; /* [ 0 ] default of v1 */
244
+ ASN1_INTEGER *serialNumber;
245
+ X509_ALGOR *signature;
246
+ X509_NAME *issuer;
247
+ X509_VAL *validity;
248
+ X509_NAME *subject;
249
+ X509_PUBKEY *key;
250
+ ASN1_BIT_STRING *issuerUID; /* [ 1 ] optional in v2 */
251
+ ASN1_BIT_STRING *subjectUID; /* [ 2 ] optional in v2 */
252
+ STACK_OF(X509_EXTENSION) *extensions; /* [ 3 ] optional in v3 */
253
+ ASN1_ENCODING enc;
254
+ } X509_CINF;
255
+
256
+ /*
257
+ * This stuff is certificate "auxiliary info" it contains details which are
258
+ * useful in certificate stores and databases. When used this is tagged onto
259
+ * the end of the certificate itself
260
+ */
261
+
262
+ typedef struct x509_cert_aux_st {
263
+ STACK_OF(ASN1_OBJECT) *trust; /* trusted uses */
264
+ STACK_OF(ASN1_OBJECT) *reject; /* rejected uses */
265
+ ASN1_UTF8STRING *alias; /* "friendly name" */
266
+ ASN1_OCTET_STRING *keyid; /* key id of private key */
267
+ STACK_OF(X509_ALGOR) *other; /* other unspecified info */
268
+ } X509_CERT_AUX;
269
+
270
+ struct x509_st {
271
+ X509_CINF *cert_info;
272
+ X509_ALGOR *sig_alg;
273
+ ASN1_BIT_STRING *signature;
274
+ int valid;
275
+ int references;
276
+ char *name;
277
+ CRYPTO_EX_DATA ex_data;
278
+ /* These contain copies of various extension values */
279
+ long ex_pathlen;
280
+ long ex_pcpathlen;
281
+ unsigned long ex_flags;
282
+ unsigned long ex_kusage;
283
+ unsigned long ex_xkusage;
284
+ unsigned long ex_nscert;
285
+ ASN1_OCTET_STRING *skid;
286
+ AUTHORITY_KEYID *akid;
287
+ X509_POLICY_CACHE *policy_cache;
288
+ STACK_OF(DIST_POINT) *crldp;
289
+ STACK_OF(GENERAL_NAME) *altname;
290
+ NAME_CONSTRAINTS *nc;
291
+ # ifndef OPENSSL_NO_RFC3779
292
+ STACK_OF(IPAddressFamily) *rfc3779_addr;
293
+ struct ASIdentifiers_st *rfc3779_asid;
294
+ # endif
295
+ # ifndef OPENSSL_NO_SHA
296
+ unsigned char sha1_hash[SHA_DIGEST_LENGTH];
297
+ # endif
298
+ X509_CERT_AUX *aux;
299
+ } /* X509 */ ;
300
+
301
+ DECLARE_STACK_OF(X509)
302
+ DECLARE_ASN1_SET_OF(X509)
303
+
304
+ /* This is used for a table of trust checking functions */
305
+
306
+ typedef struct x509_trust_st {
307
+ int trust;
308
+ int flags;
309
+ int (*check_trust) (struct x509_trust_st *, X509 *, int);
310
+ char *name;
311
+ int arg1;
312
+ void *arg2;
313
+ } X509_TRUST;
314
+
315
+ DECLARE_STACK_OF(X509_TRUST)
316
+
317
+ typedef struct x509_cert_pair_st {
318
+ X509 *forward;
319
+ X509 *reverse;
320
+ } X509_CERT_PAIR;
321
+
322
+ /* standard trust ids */
323
+
324
+ # define X509_TRUST_DEFAULT -1/* Only valid in purpose settings */
325
+
326
+ # define X509_TRUST_COMPAT 1
327
+ # define X509_TRUST_SSL_CLIENT 2
328
+ # define X509_TRUST_SSL_SERVER 3
329
+ # define X509_TRUST_EMAIL 4
330
+ # define X509_TRUST_OBJECT_SIGN 5
331
+ # define X509_TRUST_OCSP_SIGN 6
332
+ # define X509_TRUST_OCSP_REQUEST 7
333
+ # define X509_TRUST_TSA 8
334
+
335
+ /* Keep these up to date! */
336
+ # define X509_TRUST_MIN 1
337
+ # define X509_TRUST_MAX 8
338
+
339
+ /* trust_flags values */
340
+ # define X509_TRUST_DYNAMIC 1
341
+ # define X509_TRUST_DYNAMIC_NAME 2
342
+
343
+ /* check_trust return codes */
344
+
345
+ # define X509_TRUST_TRUSTED 1
346
+ # define X509_TRUST_REJECTED 2
347
+ # define X509_TRUST_UNTRUSTED 3
348
+
349
+ /* Flags for X509_print_ex() */
350
+
351
+ # define X509_FLAG_COMPAT 0
352
+ # define X509_FLAG_NO_HEADER 1L
353
+ # define X509_FLAG_NO_VERSION (1L << 1)
354
+ # define X509_FLAG_NO_SERIAL (1L << 2)
355
+ # define X509_FLAG_NO_SIGNAME (1L << 3)
356
+ # define X509_FLAG_NO_ISSUER (1L << 4)
357
+ # define X509_FLAG_NO_VALIDITY (1L << 5)
358
+ # define X509_FLAG_NO_SUBJECT (1L << 6)
359
+ # define X509_FLAG_NO_PUBKEY (1L << 7)
360
+ # define X509_FLAG_NO_EXTENSIONS (1L << 8)
361
+ # define X509_FLAG_NO_SIGDUMP (1L << 9)
362
+ # define X509_FLAG_NO_AUX (1L << 10)
363
+ # define X509_FLAG_NO_ATTRIBUTES (1L << 11)
364
+ # define X509_FLAG_NO_IDS (1L << 12)
365
+
366
+ /* Flags specific to X509_NAME_print_ex() */
367
+
368
+ /* The field separator information */
369
+
370
+ # define XN_FLAG_SEP_MASK (0xf << 16)
371
+
372
+ # define XN_FLAG_COMPAT 0/* Traditional SSLeay: use old
373
+ * X509_NAME_print */
374
+ # define XN_FLAG_SEP_COMMA_PLUS (1 << 16)/* RFC2253 ,+ */
375
+ # define XN_FLAG_SEP_CPLUS_SPC (2 << 16)/* ,+ spaced: more readable */
376
+ # define XN_FLAG_SEP_SPLUS_SPC (3 << 16)/* ;+ spaced */
377
+ # define XN_FLAG_SEP_MULTILINE (4 << 16)/* One line per field */
378
+
379
+ # define XN_FLAG_DN_REV (1 << 20)/* Reverse DN order */
380
+
381
+ /* How the field name is shown */
382
+
383
+ # define XN_FLAG_FN_MASK (0x3 << 21)
384
+
385
+ # define XN_FLAG_FN_SN 0/* Object short name */
386
+ # define XN_FLAG_FN_LN (1 << 21)/* Object long name */
387
+ # define XN_FLAG_FN_OID (2 << 21)/* Always use OIDs */
388
+ # define XN_FLAG_FN_NONE (3 << 21)/* No field names */
389
+
390
+ # define XN_FLAG_SPC_EQ (1 << 23)/* Put spaces round '=' */
391
+
392
+ /*
393
+ * This determines if we dump fields we don't recognise: RFC2253 requires
394
+ * this.
395
+ */
396
+
397
+ # define XN_FLAG_DUMP_UNKNOWN_FIELDS (1 << 24)
398
+
399
+ # define XN_FLAG_FN_ALIGN (1 << 25)/* Align field names to 20
400
+ * characters */
401
+
402
+ /* Complete set of RFC2253 flags */
403
+
404
+ # define XN_FLAG_RFC2253 (ASN1_STRFLGS_RFC2253 | \
405
+ XN_FLAG_SEP_COMMA_PLUS | \
406
+ XN_FLAG_DN_REV | \
407
+ XN_FLAG_FN_SN | \
408
+ XN_FLAG_DUMP_UNKNOWN_FIELDS)
409
+
410
+ /* readable oneline form */
411
+
412
+ # define XN_FLAG_ONELINE (ASN1_STRFLGS_RFC2253 | \
413
+ ASN1_STRFLGS_ESC_QUOTE | \
414
+ XN_FLAG_SEP_CPLUS_SPC | \
415
+ XN_FLAG_SPC_EQ | \
416
+ XN_FLAG_FN_SN)
417
+
418
+ /* readable multiline form */
419
+
420
+ # define XN_FLAG_MULTILINE (ASN1_STRFLGS_ESC_CTRL | \
421
+ ASN1_STRFLGS_ESC_MSB | \
422
+ XN_FLAG_SEP_MULTILINE | \
423
+ XN_FLAG_SPC_EQ | \
424
+ XN_FLAG_FN_LN | \
425
+ XN_FLAG_FN_ALIGN)
426
+
427
+ struct x509_revoked_st {
428
+ ASN1_INTEGER *serialNumber;
429
+ ASN1_TIME *revocationDate;
430
+ STACK_OF(X509_EXTENSION) /* optional */ *extensions;
431
+ /* Set up if indirect CRL */
432
+ STACK_OF(GENERAL_NAME) *issuer;
433
+ /* Revocation reason */
434
+ int reason;
435
+ int sequence; /* load sequence */
436
+ };
437
+
438
+ DECLARE_STACK_OF(X509_REVOKED)
439
+ DECLARE_ASN1_SET_OF(X509_REVOKED)
440
+
441
+ typedef struct X509_crl_info_st {
442
+ ASN1_INTEGER *version;
443
+ X509_ALGOR *sig_alg;
444
+ X509_NAME *issuer;
445
+ ASN1_TIME *lastUpdate;
446
+ ASN1_TIME *nextUpdate;
447
+ STACK_OF(X509_REVOKED) *revoked;
448
+ STACK_OF(X509_EXTENSION) /* [0] */ *extensions;
449
+ ASN1_ENCODING enc;
450
+ } X509_CRL_INFO;
451
+
452
+ struct X509_crl_st {
453
+ /* actual signature */
454
+ X509_CRL_INFO *crl;
455
+ X509_ALGOR *sig_alg;
456
+ ASN1_BIT_STRING *signature;
457
+ int references;
458
+ int flags;
459
+ /* Copies of various extensions */
460
+ AUTHORITY_KEYID *akid;
461
+ ISSUING_DIST_POINT *idp;
462
+ /* Convenient breakdown of IDP */
463
+ int idp_flags;
464
+ int idp_reasons;
465
+ /* CRL and base CRL numbers for delta processing */
466
+ ASN1_INTEGER *crl_number;
467
+ ASN1_INTEGER *base_crl_number;
468
+ # ifndef OPENSSL_NO_SHA
469
+ unsigned char sha1_hash[SHA_DIGEST_LENGTH];
470
+ # endif
471
+ STACK_OF(GENERAL_NAMES) *issuers;
472
+ const X509_CRL_METHOD *meth;
473
+ void *meth_data;
474
+ } /* X509_CRL */ ;
475
+
476
+ DECLARE_STACK_OF(X509_CRL)
477
+ DECLARE_ASN1_SET_OF(X509_CRL)
478
+
479
+ typedef struct private_key_st {
480
+ int version;
481
+ /* The PKCS#8 data types */
482
+ X509_ALGOR *enc_algor;
483
+ ASN1_OCTET_STRING *enc_pkey; /* encrypted pub key */
484
+ /* When decrypted, the following will not be NULL */
485
+ EVP_PKEY *dec_pkey;
486
+ /* used to encrypt and decrypt */
487
+ int key_length;
488
+ char *key_data;
489
+ int key_free; /* true if we should auto free key_data */
490
+ /* expanded version of 'enc_algor' */
491
+ EVP_CIPHER_INFO cipher;
492
+ int references;
493
+ } X509_PKEY;
494
+
495
+ # ifndef OPENSSL_NO_EVP
496
+ typedef struct X509_info_st {
497
+ X509 *x509;
498
+ X509_CRL *crl;
499
+ X509_PKEY *x_pkey;
500
+ EVP_CIPHER_INFO enc_cipher;
501
+ int enc_len;
502
+ char *enc_data;
503
+ int references;
504
+ } X509_INFO;
505
+
506
+ DECLARE_STACK_OF(X509_INFO)
507
+ # endif
508
+
509
+ /*
510
+ * The next 2 structures and their 8 routines were sent to me by Pat Richard
511
+ * <patr@x509.com> and are used to manipulate Netscapes spki structures -
512
+ * useful if you are writing a CA web page
513
+ */
514
+ typedef struct Netscape_spkac_st {
515
+ X509_PUBKEY *pubkey;
516
+ ASN1_IA5STRING *challenge; /* challenge sent in atlas >= PR2 */
517
+ } NETSCAPE_SPKAC;
518
+
519
+ typedef struct Netscape_spki_st {
520
+ NETSCAPE_SPKAC *spkac; /* signed public key and challenge */
521
+ X509_ALGOR *sig_algor;
522
+ ASN1_BIT_STRING *signature;
523
+ } NETSCAPE_SPKI;
524
+
525
+ /* Netscape certificate sequence structure */
526
+ typedef struct Netscape_certificate_sequence {
527
+ ASN1_OBJECT *type;
528
+ STACK_OF(X509) *certs;
529
+ } NETSCAPE_CERT_SEQUENCE;
530
+
531
+ /*- Unused (and iv length is wrong)
532
+ typedef struct CBCParameter_st
533
+ {
534
+ unsigned char iv[8];
535
+ } CBC_PARAM;
536
+ */
537
+
538
+ /* Password based encryption structure */
539
+
540
+ typedef struct PBEPARAM_st {
541
+ ASN1_OCTET_STRING *salt;
542
+ ASN1_INTEGER *iter;
543
+ } PBEPARAM;
544
+
545
+ /* Password based encryption V2 structures */
546
+
547
+ typedef struct PBE2PARAM_st {
548
+ X509_ALGOR *keyfunc;
549
+ X509_ALGOR *encryption;
550
+ } PBE2PARAM;
551
+
552
+ typedef struct PBKDF2PARAM_st {
553
+ /* Usually OCTET STRING but could be anything */
554
+ ASN1_TYPE *salt;
555
+ ASN1_INTEGER *iter;
556
+ ASN1_INTEGER *keylength;
557
+ X509_ALGOR *prf;
558
+ } PBKDF2PARAM;
559
+
560
+ /* PKCS#8 private key info structure */
561
+
562
+ struct pkcs8_priv_key_info_st {
563
+ /* Flag for various broken formats */
564
+ int broken;
565
+ # define PKCS8_OK 0
566
+ # define PKCS8_NO_OCTET 1
567
+ # define PKCS8_EMBEDDED_PARAM 2
568
+ # define PKCS8_NS_DB 3
569
+ # define PKCS8_NEG_PRIVKEY 4
570
+ ASN1_INTEGER *version;
571
+ X509_ALGOR *pkeyalg;
572
+ /* Should be OCTET STRING but some are broken */
573
+ ASN1_TYPE *pkey;
574
+ STACK_OF(X509_ATTRIBUTE) *attributes;
575
+ };
576
+
577
+ #ifdef __cplusplus
578
+ }
579
+ #endif
580
+
581
+ # include <openssl/x509_vfy.h>
582
+ # include <openssl/pkcs7.h>
583
+
584
+ #ifdef __cplusplus
585
+ extern "C" {
586
+ #endif
587
+
588
+ # define X509_EXT_PACK_UNKNOWN 1
589
+ # define X509_EXT_PACK_STRING 2
590
+
591
+ # define X509_get_version(x) ASN1_INTEGER_get((x)->cert_info->version)
592
+ /* #define X509_get_serialNumber(x) ((x)->cert_info->serialNumber) */
593
+ # define X509_get_notBefore(x) ((x)->cert_info->validity->notBefore)
594
+ # define X509_get_notAfter(x) ((x)->cert_info->validity->notAfter)
595
+ # define X509_extract_key(x) X509_get_pubkey(x)/*****/
596
+ # define X509_REQ_get_version(x) ASN1_INTEGER_get((x)->req_info->version)
597
+ # define X509_REQ_get_subject_name(x) ((x)->req_info->subject)
598
+ # define X509_REQ_extract_key(a) X509_REQ_get_pubkey(a)
599
+ # define X509_name_cmp(a,b) X509_NAME_cmp((a),(b))
600
+ # define X509_get_signature_type(x) EVP_PKEY_type(OBJ_obj2nid((x)->sig_alg->algorithm))
601
+
602
+ # define X509_CRL_get_version(x) ASN1_INTEGER_get((x)->crl->version)
603
+ # define X509_CRL_get_lastUpdate(x) ((x)->crl->lastUpdate)
604
+ # define X509_CRL_get_nextUpdate(x) ((x)->crl->nextUpdate)
605
+ # define X509_CRL_get_issuer(x) ((x)->crl->issuer)
606
+ # define X509_CRL_get_REVOKED(x) ((x)->crl->revoked)
607
+
608
+ void X509_CRL_set_default_method(const X509_CRL_METHOD *meth);
609
+ X509_CRL_METHOD *X509_CRL_METHOD_new(int (*crl_init) (X509_CRL *crl),
610
+ int (*crl_free) (X509_CRL *crl),
611
+ int (*crl_lookup) (X509_CRL *crl,
612
+ X509_REVOKED **ret,
613
+ ASN1_INTEGER *ser,
614
+ X509_NAME *issuer),
615
+ int (*crl_verify) (X509_CRL *crl,
616
+ EVP_PKEY *pk));
617
+ void X509_CRL_METHOD_free(X509_CRL_METHOD *m);
618
+
619
+ void X509_CRL_set_meth_data(X509_CRL *crl, void *dat);
620
+ void *X509_CRL_get_meth_data(X509_CRL *crl);
621
+
622
+ /*
623
+ * This one is only used so that a binary form can output, as in
624
+ * i2d_X509_NAME(X509_get_X509_PUBKEY(x),&buf)
625
+ */
626
+ # define X509_get_X509_PUBKEY(x) ((x)->cert_info->key)
627
+
628
+ const char *X509_verify_cert_error_string(long n);
629
+
630
+ # ifndef OPENSSL_NO_EVP
631
+ int X509_verify(X509 *a, EVP_PKEY *r);
632
+
633
+ int X509_REQ_verify(X509_REQ *a, EVP_PKEY *r);
634
+ int X509_CRL_verify(X509_CRL *a, EVP_PKEY *r);
635
+ int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r);
636
+
637
+ NETSCAPE_SPKI *NETSCAPE_SPKI_b64_decode(const char *str, int len);
638
+ char *NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *x);
639
+ EVP_PKEY *NETSCAPE_SPKI_get_pubkey(NETSCAPE_SPKI *x);
640
+ int NETSCAPE_SPKI_set_pubkey(NETSCAPE_SPKI *x, EVP_PKEY *pkey);
641
+
642
+ int NETSCAPE_SPKI_print(BIO *out, NETSCAPE_SPKI *spki);
643
+
644
+ int X509_signature_dump(BIO *bp, const ASN1_STRING *sig, int indent);
645
+ int X509_signature_print(BIO *bp, X509_ALGOR *alg, ASN1_STRING *sig);
646
+
647
+ int X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md);
648
+ int X509_sign_ctx(X509 *x, EVP_MD_CTX *ctx);
649
+ int X509_http_nbio(OCSP_REQ_CTX *rctx, X509 **pcert);
650
+ int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md);
651
+ int X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx);
652
+ int X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md);
653
+ int X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx);
654
+ int X509_CRL_http_nbio(OCSP_REQ_CTX *rctx, X509_CRL **pcrl);
655
+ int NETSCAPE_SPKI_sign(NETSCAPE_SPKI *x, EVP_PKEY *pkey, const EVP_MD *md);
656
+
657
+ int X509_pubkey_digest(const X509 *data, const EVP_MD *type,
658
+ unsigned char *md, unsigned int *len);
659
+ int X509_digest(const X509 *data, const EVP_MD *type,
660
+ unsigned char *md, unsigned int *len);
661
+ int X509_CRL_digest(const X509_CRL *data, const EVP_MD *type,
662
+ unsigned char *md, unsigned int *len);
663
+ int X509_REQ_digest(const X509_REQ *data, const EVP_MD *type,
664
+ unsigned char *md, unsigned int *len);
665
+ int X509_NAME_digest(const X509_NAME *data, const EVP_MD *type,
666
+ unsigned char *md, unsigned int *len);
667
+ # endif
668
+
669
+ # ifndef OPENSSL_NO_FP_API
670
+ X509 *d2i_X509_fp(FILE *fp, X509 **x509);
671
+ int i2d_X509_fp(FILE *fp, X509 *x509);
672
+ X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl);
673
+ int i2d_X509_CRL_fp(FILE *fp, X509_CRL *crl);
674
+ X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req);
675
+ int i2d_X509_REQ_fp(FILE *fp, X509_REQ *req);
676
+ # ifndef OPENSSL_NO_RSA
677
+ RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa);
678
+ int i2d_RSAPrivateKey_fp(FILE *fp, RSA *rsa);
679
+ RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa);
680
+ int i2d_RSAPublicKey_fp(FILE *fp, RSA *rsa);
681
+ RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa);
682
+ int i2d_RSA_PUBKEY_fp(FILE *fp, RSA *rsa);
683
+ # endif
684
+ # ifndef OPENSSL_NO_DSA
685
+ DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa);
686
+ int i2d_DSA_PUBKEY_fp(FILE *fp, DSA *dsa);
687
+ DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa);
688
+ int i2d_DSAPrivateKey_fp(FILE *fp, DSA *dsa);
689
+ # endif
690
+ # ifndef OPENSSL_NO_EC
691
+ EC_KEY *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey);
692
+ int i2d_EC_PUBKEY_fp(FILE *fp, EC_KEY *eckey);
693
+ EC_KEY *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey);
694
+ int i2d_ECPrivateKey_fp(FILE *fp, EC_KEY *eckey);
695
+ # endif
696
+ X509_SIG *d2i_PKCS8_fp(FILE *fp, X509_SIG **p8);
697
+ int i2d_PKCS8_fp(FILE *fp, X509_SIG *p8);
698
+ PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_fp(FILE *fp,
699
+ PKCS8_PRIV_KEY_INFO **p8inf);
700
+ int i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, PKCS8_PRIV_KEY_INFO *p8inf);
701
+ int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, EVP_PKEY *key);
702
+ int i2d_PrivateKey_fp(FILE *fp, EVP_PKEY *pkey);
703
+ EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a);
704
+ int i2d_PUBKEY_fp(FILE *fp, EVP_PKEY *pkey);
705
+ EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a);
706
+ # endif
707
+
708
+ # ifndef OPENSSL_NO_BIO
709
+ X509 *d2i_X509_bio(BIO *bp, X509 **x509);
710
+ int i2d_X509_bio(BIO *bp, X509 *x509);
711
+ X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl);
712
+ int i2d_X509_CRL_bio(BIO *bp, X509_CRL *crl);
713
+ X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req);
714
+ int i2d_X509_REQ_bio(BIO *bp, X509_REQ *req);
715
+ # ifndef OPENSSL_NO_RSA
716
+ RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa);
717
+ int i2d_RSAPrivateKey_bio(BIO *bp, RSA *rsa);
718
+ RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa);
719
+ int i2d_RSAPublicKey_bio(BIO *bp, RSA *rsa);
720
+ RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa);
721
+ int i2d_RSA_PUBKEY_bio(BIO *bp, RSA *rsa);
722
+ # endif
723
+ # ifndef OPENSSL_NO_DSA
724
+ DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa);
725
+ int i2d_DSA_PUBKEY_bio(BIO *bp, DSA *dsa);
726
+ DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa);
727
+ int i2d_DSAPrivateKey_bio(BIO *bp, DSA *dsa);
728
+ # endif
729
+ # ifndef OPENSSL_NO_EC
730
+ EC_KEY *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey);
731
+ int i2d_EC_PUBKEY_bio(BIO *bp, EC_KEY *eckey);
732
+ EC_KEY *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey);
733
+ int i2d_ECPrivateKey_bio(BIO *bp, EC_KEY *eckey);
734
+ # endif
735
+ X509_SIG *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8);
736
+ int i2d_PKCS8_bio(BIO *bp, X509_SIG *p8);
737
+ PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp,
738
+ PKCS8_PRIV_KEY_INFO **p8inf);
739
+ int i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, PKCS8_PRIV_KEY_INFO *p8inf);
740
+ int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, EVP_PKEY *key);
741
+ int i2d_PrivateKey_bio(BIO *bp, EVP_PKEY *pkey);
742
+ EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a);
743
+ int i2d_PUBKEY_bio(BIO *bp, EVP_PKEY *pkey);
744
+ EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a);
745
+ # endif
746
+
747
+ X509 *X509_dup(X509 *x509);
748
+ X509_ATTRIBUTE *X509_ATTRIBUTE_dup(X509_ATTRIBUTE *xa);
749
+ X509_EXTENSION *X509_EXTENSION_dup(X509_EXTENSION *ex);
750
+ X509_CRL *X509_CRL_dup(X509_CRL *crl);
751
+ X509_REVOKED *X509_REVOKED_dup(X509_REVOKED *rev);
752
+ X509_REQ *X509_REQ_dup(X509_REQ *req);
753
+ X509_ALGOR *X509_ALGOR_dup(X509_ALGOR *xn);
754
+ int X509_ALGOR_set0(X509_ALGOR *alg, ASN1_OBJECT *aobj, int ptype,
755
+ void *pval);
756
+ void X509_ALGOR_get0(ASN1_OBJECT **paobj, int *pptype, void **ppval,
757
+ X509_ALGOR *algor);
758
+ void X509_ALGOR_set_md(X509_ALGOR *alg, const EVP_MD *md);
759
+ int X509_ALGOR_cmp(const X509_ALGOR *a, const X509_ALGOR *b);
760
+
761
+ X509_NAME *X509_NAME_dup(X509_NAME *xn);
762
+ X509_NAME_ENTRY *X509_NAME_ENTRY_dup(X509_NAME_ENTRY *ne);
763
+
764
+ int X509_cmp_time(const ASN1_TIME *s, time_t *t);
765
+ int X509_cmp_current_time(const ASN1_TIME *s);
766
+ ASN1_TIME *X509_time_adj(ASN1_TIME *s, long adj, time_t *t);
767
+ ASN1_TIME *X509_time_adj_ex(ASN1_TIME *s,
768
+ int offset_day, long offset_sec, time_t *t);
769
+ ASN1_TIME *X509_gmtime_adj(ASN1_TIME *s, long adj);
770
+
771
+ const char *X509_get_default_cert_area(void);
772
+ const char *X509_get_default_cert_dir(void);
773
+ const char *X509_get_default_cert_file(void);
774
+ const char *X509_get_default_cert_dir_env(void);
775
+ const char *X509_get_default_cert_file_env(void);
776
+ const char *X509_get_default_private_dir(void);
777
+
778
+ X509_REQ *X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, const EVP_MD *md);
779
+ X509 *X509_REQ_to_X509(X509_REQ *r, int days, EVP_PKEY *pkey);
780
+
781
+ DECLARE_ASN1_FUNCTIONS(X509_ALGOR)
782
+ DECLARE_ASN1_ENCODE_FUNCTIONS(X509_ALGORS, X509_ALGORS, X509_ALGORS)
783
+ DECLARE_ASN1_FUNCTIONS(X509_VAL)
784
+
785
+ DECLARE_ASN1_FUNCTIONS(X509_PUBKEY)
786
+
787
+ int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey);
788
+ EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key);
789
+ int X509_get_pubkey_parameters(EVP_PKEY *pkey, STACK_OF(X509) *chain);
790
+ int i2d_PUBKEY(EVP_PKEY *a, unsigned char **pp);
791
+ EVP_PKEY *d2i_PUBKEY(EVP_PKEY **a, const unsigned char **pp, long length);
792
+ # ifndef OPENSSL_NO_RSA
793
+ int i2d_RSA_PUBKEY(RSA *a, unsigned char **pp);
794
+ RSA *d2i_RSA_PUBKEY(RSA **a, const unsigned char **pp, long length);
795
+ # endif
796
+ # ifndef OPENSSL_NO_DSA
797
+ int i2d_DSA_PUBKEY(DSA *a, unsigned char **pp);
798
+ DSA *d2i_DSA_PUBKEY(DSA **a, const unsigned char **pp, long length);
799
+ # endif
800
+ # ifndef OPENSSL_NO_EC
801
+ int i2d_EC_PUBKEY(EC_KEY *a, unsigned char **pp);
802
+ EC_KEY *d2i_EC_PUBKEY(EC_KEY **a, const unsigned char **pp, long length);
803
+ # endif
804
+
805
+ DECLARE_ASN1_FUNCTIONS(X509_SIG)
806
+ DECLARE_ASN1_FUNCTIONS(X509_REQ_INFO)
807
+ DECLARE_ASN1_FUNCTIONS(X509_REQ)
808
+
809
+ DECLARE_ASN1_FUNCTIONS(X509_ATTRIBUTE)
810
+ X509_ATTRIBUTE *X509_ATTRIBUTE_create(int nid, int atrtype, void *value);
811
+
812
+ DECLARE_ASN1_FUNCTIONS(X509_EXTENSION)
813
+ DECLARE_ASN1_ENCODE_FUNCTIONS(X509_EXTENSIONS, X509_EXTENSIONS, X509_EXTENSIONS)
814
+
815
+ DECLARE_ASN1_FUNCTIONS(X509_NAME_ENTRY)
816
+
817
+ DECLARE_ASN1_FUNCTIONS(X509_NAME)
818
+
819
+ int X509_NAME_set(X509_NAME **xn, X509_NAME *name);
820
+
821
+ DECLARE_ASN1_FUNCTIONS(X509_CINF)
822
+
823
+ DECLARE_ASN1_FUNCTIONS(X509)
824
+ DECLARE_ASN1_FUNCTIONS(X509_CERT_AUX)
825
+
826
+ DECLARE_ASN1_FUNCTIONS(X509_CERT_PAIR)
827
+
828
+ int X509_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
829
+ CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
830
+ int X509_set_ex_data(X509 *r, int idx, void *arg);
831
+ void *X509_get_ex_data(X509 *r, int idx);
832
+ int i2d_X509_AUX(X509 *a, unsigned char **pp);
833
+ X509 *d2i_X509_AUX(X509 **a, const unsigned char **pp, long length);
834
+
835
+ int i2d_re_X509_tbs(X509 *x, unsigned char **pp);
836
+
837
+ void X509_get0_signature(ASN1_BIT_STRING **psig, X509_ALGOR **palg,
838
+ const X509 *x);
839
+ int X509_get_signature_nid(const X509 *x);
840
+
841
+ int X509_alias_set1(X509 *x, unsigned char *name, int len);
842
+ int X509_keyid_set1(X509 *x, unsigned char *id, int len);
843
+ unsigned char *X509_alias_get0(X509 *x, int *len);
844
+ unsigned char *X509_keyid_get0(X509 *x, int *len);
845
+ int (*X509_TRUST_set_default(int (*trust) (int, X509 *, int))) (int, X509 *,
846
+ int);
847
+ int X509_TRUST_set(int *t, int trust);
848
+ int X509_add1_trust_object(X509 *x, ASN1_OBJECT *obj);
849
+ int X509_add1_reject_object(X509 *x, ASN1_OBJECT *obj);
850
+ void X509_trust_clear(X509 *x);
851
+ void X509_reject_clear(X509 *x);
852
+
853
+ DECLARE_ASN1_FUNCTIONS(X509_REVOKED)
854
+ DECLARE_ASN1_FUNCTIONS(X509_CRL_INFO)
855
+ DECLARE_ASN1_FUNCTIONS(X509_CRL)
856
+
857
+ int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev);
858
+ int X509_CRL_get0_by_serial(X509_CRL *crl,
859
+ X509_REVOKED **ret, ASN1_INTEGER *serial);
860
+ int X509_CRL_get0_by_cert(X509_CRL *crl, X509_REVOKED **ret, X509 *x);
861
+
862
+ X509_PKEY *X509_PKEY_new(void);
863
+ void X509_PKEY_free(X509_PKEY *a);
864
+ int i2d_X509_PKEY(X509_PKEY *a, unsigned char **pp);
865
+ X509_PKEY *d2i_X509_PKEY(X509_PKEY **a, const unsigned char **pp,
866
+ long length);
867
+
868
+ DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKI)
869
+ DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKAC)
870
+ DECLARE_ASN1_FUNCTIONS(NETSCAPE_CERT_SEQUENCE)
871
+
872
+ # ifndef OPENSSL_NO_EVP
873
+ X509_INFO *X509_INFO_new(void);
874
+ void X509_INFO_free(X509_INFO *a);
875
+ char *X509_NAME_oneline(X509_NAME *a, char *buf, int size);
876
+
877
+ int ASN1_verify(i2d_of_void *i2d, X509_ALGOR *algor1,
878
+ ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey);
879
+
880
+ int ASN1_digest(i2d_of_void *i2d, const EVP_MD *type, char *data,
881
+ unsigned char *md, unsigned int *len);
882
+
883
+ int ASN1_sign(i2d_of_void *i2d, X509_ALGOR *algor1,
884
+ X509_ALGOR *algor2, ASN1_BIT_STRING *signature,
885
+ char *data, EVP_PKEY *pkey, const EVP_MD *type);
886
+
887
+ int ASN1_item_digest(const ASN1_ITEM *it, const EVP_MD *type, void *data,
888
+ unsigned char *md, unsigned int *len);
889
+
890
+ int ASN1_item_verify(const ASN1_ITEM *it, X509_ALGOR *algor1,
891
+ ASN1_BIT_STRING *signature, void *data, EVP_PKEY *pkey);
892
+
893
+ int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1,
894
+ X509_ALGOR *algor2, ASN1_BIT_STRING *signature, void *data,
895
+ EVP_PKEY *pkey, const EVP_MD *type);
896
+ int ASN1_item_sign_ctx(const ASN1_ITEM *it, X509_ALGOR *algor1,
897
+ X509_ALGOR *algor2, ASN1_BIT_STRING *signature,
898
+ void *asn, EVP_MD_CTX *ctx);
899
+ # endif
900
+
901
+ int X509_set_version(X509 *x, long version);
902
+ int X509_set_serialNumber(X509 *x, ASN1_INTEGER *serial);
903
+ ASN1_INTEGER *X509_get_serialNumber(X509 *x);
904
+ int X509_set_issuer_name(X509 *x, X509_NAME *name);
905
+ X509_NAME *X509_get_issuer_name(X509 *a);
906
+ int X509_set_subject_name(X509 *x, X509_NAME *name);
907
+ X509_NAME *X509_get_subject_name(X509 *a);
908
+ int X509_set_notBefore(X509 *x, const ASN1_TIME *tm);
909
+ int X509_set_notAfter(X509 *x, const ASN1_TIME *tm);
910
+ int X509_set_pubkey(X509 *x, EVP_PKEY *pkey);
911
+ EVP_PKEY *X509_get_pubkey(X509 *x);
912
+ ASN1_BIT_STRING *X509_get0_pubkey_bitstr(const X509 *x);
913
+ int X509_certificate_type(X509 *x, EVP_PKEY *pubkey /* optional */ );
914
+
915
+ int X509_REQ_set_version(X509_REQ *x, long version);
916
+ int X509_REQ_set_subject_name(X509_REQ *req, X509_NAME *name);
917
+ int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey);
918
+ EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req);
919
+ int X509_REQ_extension_nid(int nid);
920
+ int *X509_REQ_get_extension_nids(void);
921
+ void X509_REQ_set_extension_nids(int *nids);
922
+ STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req);
923
+ int X509_REQ_add_extensions_nid(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts,
924
+ int nid);
925
+ int X509_REQ_add_extensions(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts);
926
+ int X509_REQ_get_attr_count(const X509_REQ *req);
927
+ int X509_REQ_get_attr_by_NID(const X509_REQ *req, int nid, int lastpos);
928
+ int X509_REQ_get_attr_by_OBJ(const X509_REQ *req, ASN1_OBJECT *obj,
929
+ int lastpos);
930
+ X509_ATTRIBUTE *X509_REQ_get_attr(const X509_REQ *req, int loc);
931
+ X509_ATTRIBUTE *X509_REQ_delete_attr(X509_REQ *req, int loc);
932
+ int X509_REQ_add1_attr(X509_REQ *req, X509_ATTRIBUTE *attr);
933
+ int X509_REQ_add1_attr_by_OBJ(X509_REQ *req,
934
+ const ASN1_OBJECT *obj, int type,
935
+ const unsigned char *bytes, int len);
936
+ int X509_REQ_add1_attr_by_NID(X509_REQ *req,
937
+ int nid, int type,
938
+ const unsigned char *bytes, int len);
939
+ int X509_REQ_add1_attr_by_txt(X509_REQ *req,
940
+ const char *attrname, int type,
941
+ const unsigned char *bytes, int len);
942
+
943
+ int X509_CRL_set_version(X509_CRL *x, long version);
944
+ int X509_CRL_set_issuer_name(X509_CRL *x, X509_NAME *name);
945
+ int X509_CRL_set_lastUpdate(X509_CRL *x, const ASN1_TIME *tm);
946
+ int X509_CRL_set_nextUpdate(X509_CRL *x, const ASN1_TIME *tm);
947
+ int X509_CRL_sort(X509_CRL *crl);
948
+
949
+ int X509_REVOKED_set_serialNumber(X509_REVOKED *x, ASN1_INTEGER *serial);
950
+ int X509_REVOKED_set_revocationDate(X509_REVOKED *r, ASN1_TIME *tm);
951
+
952
+ X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer,
953
+ EVP_PKEY *skey, const EVP_MD *md, unsigned int flags);
954
+
955
+ int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey);
956
+
957
+ int X509_check_private_key(X509 *x509, EVP_PKEY *pkey);
958
+ int X509_chain_check_suiteb(int *perror_depth,
959
+ X509 *x, STACK_OF(X509) *chain,
960
+ unsigned long flags);
961
+ int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags);
962
+ STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain);
963
+
964
+ int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b);
965
+ unsigned long X509_issuer_and_serial_hash(X509 *a);
966
+
967
+ int X509_issuer_name_cmp(const X509 *a, const X509 *b);
968
+ unsigned long X509_issuer_name_hash(X509 *a);
969
+
970
+ int X509_subject_name_cmp(const X509 *a, const X509 *b);
971
+ unsigned long X509_subject_name_hash(X509 *x);
972
+
973
+ # ifndef OPENSSL_NO_MD5
974
+ unsigned long X509_issuer_name_hash_old(X509 *a);
975
+ unsigned long X509_subject_name_hash_old(X509 *x);
976
+ # endif
977
+
978
+ int X509_cmp(const X509 *a, const X509 *b);
979
+ int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b);
980
+ unsigned long X509_NAME_hash(X509_NAME *x);
981
+ unsigned long X509_NAME_hash_old(X509_NAME *x);
982
+
983
+ int X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b);
984
+ int X509_CRL_match(const X509_CRL *a, const X509_CRL *b);
985
+ # ifndef OPENSSL_NO_FP_API
986
+ int X509_print_ex_fp(FILE *bp, X509 *x, unsigned long nmflag,
987
+ unsigned long cflag);
988
+ int X509_print_fp(FILE *bp, X509 *x);
989
+ int X509_CRL_print_fp(FILE *bp, X509_CRL *x);
990
+ int X509_REQ_print_fp(FILE *bp, X509_REQ *req);
991
+ int X509_NAME_print_ex_fp(FILE *fp, X509_NAME *nm, int indent,
992
+ unsigned long flags);
993
+ # endif
994
+
995
+ # ifndef OPENSSL_NO_BIO
996
+ int X509_NAME_print(BIO *bp, X509_NAME *name, int obase);
997
+ int X509_NAME_print_ex(BIO *out, X509_NAME *nm, int indent,
998
+ unsigned long flags);
999
+ int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflag,
1000
+ unsigned long cflag);
1001
+ int X509_print(BIO *bp, X509 *x);
1002
+ int X509_ocspid_print(BIO *bp, X509 *x);
1003
+ int X509_CERT_AUX_print(BIO *bp, X509_CERT_AUX *x, int indent);
1004
+ int X509_CRL_print(BIO *bp, X509_CRL *x);
1005
+ int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflag,
1006
+ unsigned long cflag);
1007
+ int X509_REQ_print(BIO *bp, X509_REQ *req);
1008
+ # endif
1009
+
1010
+ int X509_NAME_entry_count(X509_NAME *name);
1011
+ int X509_NAME_get_text_by_NID(X509_NAME *name, int nid, char *buf, int len);
1012
+ int X509_NAME_get_text_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj,
1013
+ char *buf, int len);
1014
+
1015
+ /*
1016
+ * NOTE: you should be passsing -1, not 0 as lastpos. The functions that use
1017
+ * lastpos, search after that position on.
1018
+ */
1019
+ int X509_NAME_get_index_by_NID(X509_NAME *name, int nid, int lastpos);
1020
+ int X509_NAME_get_index_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj,
1021
+ int lastpos);
1022
+ X509_NAME_ENTRY *X509_NAME_get_entry(X509_NAME *name, int loc);
1023
+ X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc);
1024
+ int X509_NAME_add_entry(X509_NAME *name, X509_NAME_ENTRY *ne,
1025
+ int loc, int set);
1026
+ int X509_NAME_add_entry_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, int type,
1027
+ unsigned char *bytes, int len, int loc,
1028
+ int set);
1029
+ int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type,
1030
+ unsigned char *bytes, int len, int loc,
1031
+ int set);
1032
+ X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne,
1033
+ const char *field, int type,
1034
+ const unsigned char *bytes,
1035
+ int len);
1036
+ X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid,
1037
+ int type, unsigned char *bytes,
1038
+ int len);
1039
+ int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type,
1040
+ const unsigned char *bytes, int len, int loc,
1041
+ int set);
1042
+ X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne,
1043
+ ASN1_OBJECT *obj, int type,
1044
+ const unsigned char *bytes,
1045
+ int len);
1046
+ int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, ASN1_OBJECT *obj);
1047
+ int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type,
1048
+ const unsigned char *bytes, int len);
1049
+ ASN1_OBJECT *X509_NAME_ENTRY_get_object(X509_NAME_ENTRY *ne);
1050
+ ASN1_STRING *X509_NAME_ENTRY_get_data(X509_NAME_ENTRY *ne);
1051
+
1052
+ int X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x);
1053
+ int X509v3_get_ext_by_NID(const STACK_OF(X509_EXTENSION) *x,
1054
+ int nid, int lastpos);
1055
+ int X509v3_get_ext_by_OBJ(const STACK_OF(X509_EXTENSION) *x,
1056
+ ASN1_OBJECT *obj, int lastpos);
1057
+ int X509v3_get_ext_by_critical(const STACK_OF(X509_EXTENSION) *x,
1058
+ int crit, int lastpos);
1059
+ X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc);
1060
+ X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc);
1061
+ STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x,
1062
+ X509_EXTENSION *ex, int loc);
1063
+
1064
+ int X509_get_ext_count(X509 *x);
1065
+ int X509_get_ext_by_NID(X509 *x, int nid, int lastpos);
1066
+ int X509_get_ext_by_OBJ(X509 *x, ASN1_OBJECT *obj, int lastpos);
1067
+ int X509_get_ext_by_critical(X509 *x, int crit, int lastpos);
1068
+ X509_EXTENSION *X509_get_ext(X509 *x, int loc);
1069
+ X509_EXTENSION *X509_delete_ext(X509 *x, int loc);
1070
+ int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc);
1071
+ void *X509_get_ext_d2i(X509 *x, int nid, int *crit, int *idx);
1072
+ int X509_add1_ext_i2d(X509 *x, int nid, void *value, int crit,
1073
+ unsigned long flags);
1074
+
1075
+ int X509_CRL_get_ext_count(X509_CRL *x);
1076
+ int X509_CRL_get_ext_by_NID(X509_CRL *x, int nid, int lastpos);
1077
+ int X509_CRL_get_ext_by_OBJ(X509_CRL *x, ASN1_OBJECT *obj, int lastpos);
1078
+ int X509_CRL_get_ext_by_critical(X509_CRL *x, int crit, int lastpos);
1079
+ X509_EXTENSION *X509_CRL_get_ext(X509_CRL *x, int loc);
1080
+ X509_EXTENSION *X509_CRL_delete_ext(X509_CRL *x, int loc);
1081
+ int X509_CRL_add_ext(X509_CRL *x, X509_EXTENSION *ex, int loc);
1082
+ void *X509_CRL_get_ext_d2i(X509_CRL *x, int nid, int *crit, int *idx);
1083
+ int X509_CRL_add1_ext_i2d(X509_CRL *x, int nid, void *value, int crit,
1084
+ unsigned long flags);
1085
+
1086
+ int X509_REVOKED_get_ext_count(X509_REVOKED *x);
1087
+ int X509_REVOKED_get_ext_by_NID(X509_REVOKED *x, int nid, int lastpos);
1088
+ int X509_REVOKED_get_ext_by_OBJ(X509_REVOKED *x, ASN1_OBJECT *obj,
1089
+ int lastpos);
1090
+ int X509_REVOKED_get_ext_by_critical(X509_REVOKED *x, int crit, int lastpos);
1091
+ X509_EXTENSION *X509_REVOKED_get_ext(X509_REVOKED *x, int loc);
1092
+ X509_EXTENSION *X509_REVOKED_delete_ext(X509_REVOKED *x, int loc);
1093
+ int X509_REVOKED_add_ext(X509_REVOKED *x, X509_EXTENSION *ex, int loc);
1094
+ void *X509_REVOKED_get_ext_d2i(X509_REVOKED *x, int nid, int *crit, int *idx);
1095
+ int X509_REVOKED_add1_ext_i2d(X509_REVOKED *x, int nid, void *value, int crit,
1096
+ unsigned long flags);
1097
+
1098
+ X509_EXTENSION *X509_EXTENSION_create_by_NID(X509_EXTENSION **ex,
1099
+ int nid, int crit,
1100
+ ASN1_OCTET_STRING *data);
1101
+ X509_EXTENSION *X509_EXTENSION_create_by_OBJ(X509_EXTENSION **ex,
1102
+ ASN1_OBJECT *obj, int crit,
1103
+ ASN1_OCTET_STRING *data);
1104
+ int X509_EXTENSION_set_object(X509_EXTENSION *ex, ASN1_OBJECT *obj);
1105
+ int X509_EXTENSION_set_critical(X509_EXTENSION *ex, int crit);
1106
+ int X509_EXTENSION_set_data(X509_EXTENSION *ex, ASN1_OCTET_STRING *data);
1107
+ ASN1_OBJECT *X509_EXTENSION_get_object(X509_EXTENSION *ex);
1108
+ ASN1_OCTET_STRING *X509_EXTENSION_get_data(X509_EXTENSION *ne);
1109
+ int X509_EXTENSION_get_critical(X509_EXTENSION *ex);
1110
+
1111
+ int X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x);
1112
+ int X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x, int nid,
1113
+ int lastpos);
1114
+ int X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk,
1115
+ ASN1_OBJECT *obj, int lastpos);
1116
+ X509_ATTRIBUTE *X509at_get_attr(const STACK_OF(X509_ATTRIBUTE) *x, int loc);
1117
+ X509_ATTRIBUTE *X509at_delete_attr(STACK_OF(X509_ATTRIBUTE) *x, int loc);
1118
+ STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x,
1119
+ X509_ATTRIBUTE *attr);
1120
+ STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_OBJ(STACK_OF(X509_ATTRIBUTE)
1121
+ **x, const ASN1_OBJECT *obj,
1122
+ int type,
1123
+ const unsigned char *bytes,
1124
+ int len);
1125
+ STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_NID(STACK_OF(X509_ATTRIBUTE)
1126
+ **x, int nid, int type,
1127
+ const unsigned char *bytes,
1128
+ int len);
1129
+ STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_txt(STACK_OF(X509_ATTRIBUTE)
1130
+ **x, const char *attrname,
1131
+ int type,
1132
+ const unsigned char *bytes,
1133
+ int len);
1134
+ void *X509at_get0_data_by_OBJ(STACK_OF(X509_ATTRIBUTE) *x, ASN1_OBJECT *obj,
1135
+ int lastpos, int type);
1136
+ X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_NID(X509_ATTRIBUTE **attr, int nid,
1137
+ int atrtype, const void *data,
1138
+ int len);
1139
+ X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_OBJ(X509_ATTRIBUTE **attr,
1140
+ const ASN1_OBJECT *obj,
1141
+ int atrtype, const void *data,
1142
+ int len);
1143
+ X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_txt(X509_ATTRIBUTE **attr,
1144
+ const char *atrname, int type,
1145
+ const unsigned char *bytes,
1146
+ int len);
1147
+ int X509_ATTRIBUTE_set1_object(X509_ATTRIBUTE *attr, const ASN1_OBJECT *obj);
1148
+ int X509_ATTRIBUTE_set1_data(X509_ATTRIBUTE *attr, int attrtype,
1149
+ const void *data, int len);
1150
+ void *X509_ATTRIBUTE_get0_data(X509_ATTRIBUTE *attr, int idx, int atrtype,
1151
+ void *data);
1152
+ int X509_ATTRIBUTE_count(X509_ATTRIBUTE *attr);
1153
+ ASN1_OBJECT *X509_ATTRIBUTE_get0_object(X509_ATTRIBUTE *attr);
1154
+ ASN1_TYPE *X509_ATTRIBUTE_get0_type(X509_ATTRIBUTE *attr, int idx);
1155
+
1156
+ int EVP_PKEY_get_attr_count(const EVP_PKEY *key);
1157
+ int EVP_PKEY_get_attr_by_NID(const EVP_PKEY *key, int nid, int lastpos);
1158
+ int EVP_PKEY_get_attr_by_OBJ(const EVP_PKEY *key, ASN1_OBJECT *obj,
1159
+ int lastpos);
1160
+ X509_ATTRIBUTE *EVP_PKEY_get_attr(const EVP_PKEY *key, int loc);
1161
+ X509_ATTRIBUTE *EVP_PKEY_delete_attr(EVP_PKEY *key, int loc);
1162
+ int EVP_PKEY_add1_attr(EVP_PKEY *key, X509_ATTRIBUTE *attr);
1163
+ int EVP_PKEY_add1_attr_by_OBJ(EVP_PKEY *key,
1164
+ const ASN1_OBJECT *obj, int type,
1165
+ const unsigned char *bytes, int len);
1166
+ int EVP_PKEY_add1_attr_by_NID(EVP_PKEY *key,
1167
+ int nid, int type,
1168
+ const unsigned char *bytes, int len);
1169
+ int EVP_PKEY_add1_attr_by_txt(EVP_PKEY *key,
1170
+ const char *attrname, int type,
1171
+ const unsigned char *bytes, int len);
1172
+
1173
+ int X509_verify_cert(X509_STORE_CTX *ctx);
1174
+
1175
+ /* lookup a cert from a X509 STACK */
1176
+ X509 *X509_find_by_issuer_and_serial(STACK_OF(X509) *sk, X509_NAME *name,
1177
+ ASN1_INTEGER *serial);
1178
+ X509 *X509_find_by_subject(STACK_OF(X509) *sk, X509_NAME *name);
1179
+
1180
+ DECLARE_ASN1_FUNCTIONS(PBEPARAM)
1181
+ DECLARE_ASN1_FUNCTIONS(PBE2PARAM)
1182
+ DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM)
1183
+
1184
+ int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter,
1185
+ const unsigned char *salt, int saltlen);
1186
+
1187
+ X509_ALGOR *PKCS5_pbe_set(int alg, int iter,
1188
+ const unsigned char *salt, int saltlen);
1189
+ X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter,
1190
+ unsigned char *salt, int saltlen);
1191
+ X509_ALGOR *PKCS5_pbe2_set_iv(const EVP_CIPHER *cipher, int iter,
1192
+ unsigned char *salt, int saltlen,
1193
+ unsigned char *aiv, int prf_nid);
1194
+
1195
+ X509_ALGOR *PKCS5_pbkdf2_set(int iter, unsigned char *salt, int saltlen,
1196
+ int prf_nid, int keylen);
1197
+
1198
+ /* PKCS#8 utilities */
1199
+
1200
+ DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO)
1201
+
1202
+ EVP_PKEY *EVP_PKCS82PKEY(PKCS8_PRIV_KEY_INFO *p8);
1203
+ PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(EVP_PKEY *pkey);
1204
+ PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8_broken(EVP_PKEY *pkey, int broken);
1205
+ PKCS8_PRIV_KEY_INFO *PKCS8_set_broken(PKCS8_PRIV_KEY_INFO *p8, int broken);
1206
+
1207
+ int PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj,
1208
+ int version, int ptype, void *pval,
1209
+ unsigned char *penc, int penclen);
1210
+ int PKCS8_pkey_get0(ASN1_OBJECT **ppkalg,
1211
+ const unsigned char **pk, int *ppklen,
1212
+ X509_ALGOR **pa, PKCS8_PRIV_KEY_INFO *p8);
1213
+
1214
+ int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj,
1215
+ int ptype, void *pval,
1216
+ unsigned char *penc, int penclen);
1217
+ int X509_PUBKEY_get0_param(ASN1_OBJECT **ppkalg,
1218
+ const unsigned char **pk, int *ppklen,
1219
+ X509_ALGOR **pa, X509_PUBKEY *pub);
1220
+
1221
+ int X509_check_trust(X509 *x, int id, int flags);
1222
+ int X509_TRUST_get_count(void);
1223
+ X509_TRUST *X509_TRUST_get0(int idx);
1224
+ int X509_TRUST_get_by_id(int id);
1225
+ int X509_TRUST_add(int id, int flags, int (*ck) (X509_TRUST *, X509 *, int),
1226
+ char *name, int arg1, void *arg2);
1227
+ void X509_TRUST_cleanup(void);
1228
+ int X509_TRUST_get_flags(X509_TRUST *xp);
1229
+ char *X509_TRUST_get0_name(X509_TRUST *xp);
1230
+ int X509_TRUST_get_trust(X509_TRUST *xp);
1231
+
1232
+ /* BEGIN ERROR CODES */
1233
+ /*
1234
+ * The following lines are auto generated by the script mkerr.pl. Any changes
1235
+ * made after this point may be overwritten when the script is next run.
1236
+ */
1237
+ void ERR_load_X509_strings(void);
1238
+
1239
+ /* Error codes for the X509 functions. */
1240
+
1241
+ /* Function codes. */
1242
+ # define X509_F_ADD_CERT_DIR 100
1243
+ # define X509_F_BY_FILE_CTRL 101
1244
+ # define X509_F_CHECK_POLICY 145
1245
+ # define X509_F_DIR_CTRL 102
1246
+ # define X509_F_GET_CERT_BY_SUBJECT 103
1247
+ # define X509_F_NETSCAPE_SPKI_B64_DECODE 129
1248
+ # define X509_F_NETSCAPE_SPKI_B64_ENCODE 130
1249
+ # define X509_F_X509AT_ADD1_ATTR 135
1250
+ # define X509_F_X509V3_ADD_EXT 104
1251
+ # define X509_F_X509_ATTRIBUTE_CREATE_BY_NID 136
1252
+ # define X509_F_X509_ATTRIBUTE_CREATE_BY_OBJ 137
1253
+ # define X509_F_X509_ATTRIBUTE_CREATE_BY_TXT 140
1254
+ # define X509_F_X509_ATTRIBUTE_GET0_DATA 139
1255
+ # define X509_F_X509_ATTRIBUTE_SET1_DATA 138
1256
+ # define X509_F_X509_CHECK_PRIVATE_KEY 128
1257
+ # define X509_F_X509_CRL_DIFF 105
1258
+ # define X509_F_X509_CRL_PRINT_FP 147
1259
+ # define X509_F_X509_EXTENSION_CREATE_BY_NID 108
1260
+ # define X509_F_X509_EXTENSION_CREATE_BY_OBJ 109
1261
+ # define X509_F_X509_GET_PUBKEY_PARAMETERS 110
1262
+ # define X509_F_X509_LOAD_CERT_CRL_FILE 132
1263
+ # define X509_F_X509_LOAD_CERT_FILE 111
1264
+ # define X509_F_X509_LOAD_CRL_FILE 112
1265
+ # define X509_F_X509_NAME_ADD_ENTRY 113
1266
+ # define X509_F_X509_NAME_ENTRY_CREATE_BY_NID 114
1267
+ # define X509_F_X509_NAME_ENTRY_CREATE_BY_TXT 131
1268
+ # define X509_F_X509_NAME_ENTRY_SET_OBJECT 115
1269
+ # define X509_F_X509_NAME_ONELINE 116
1270
+ # define X509_F_X509_NAME_PRINT 117
1271
+ # define X509_F_X509_PRINT_EX_FP 118
1272
+ # define X509_F_X509_PUBKEY_GET 119
1273
+ # define X509_F_X509_PUBKEY_SET 120
1274
+ # define X509_F_X509_REQ_CHECK_PRIVATE_KEY 144
1275
+ # define X509_F_X509_REQ_PRINT_EX 121
1276
+ # define X509_F_X509_REQ_PRINT_FP 122
1277
+ # define X509_F_X509_REQ_TO_X509 123
1278
+ # define X509_F_X509_STORE_ADD_CERT 124
1279
+ # define X509_F_X509_STORE_ADD_CRL 125
1280
+ # define X509_F_X509_STORE_CTX_GET1_ISSUER 146
1281
+ # define X509_F_X509_STORE_CTX_INIT 143
1282
+ # define X509_F_X509_STORE_CTX_NEW 142
1283
+ # define X509_F_X509_STORE_CTX_PURPOSE_INHERIT 134
1284
+ # define X509_F_X509_TO_X509_REQ 126
1285
+ # define X509_F_X509_TRUST_ADD 133
1286
+ # define X509_F_X509_TRUST_SET 141
1287
+ # define X509_F_X509_VERIFY_CERT 127
1288
+
1289
+ /* Reason codes. */
1290
+ # define X509_R_AKID_MISMATCH 110
1291
+ # define X509_R_BAD_X509_FILETYPE 100
1292
+ # define X509_R_BASE64_DECODE_ERROR 118
1293
+ # define X509_R_CANT_CHECK_DH_KEY 114
1294
+ # define X509_R_CERT_ALREADY_IN_HASH_TABLE 101
1295
+ # define X509_R_CRL_ALREADY_DELTA 127
1296
+ # define X509_R_CRL_VERIFY_FAILURE 131
1297
+ # define X509_R_ERR_ASN1_LIB 102
1298
+ # define X509_R_IDP_MISMATCH 128
1299
+ # define X509_R_INVALID_DIRECTORY 113
1300
+ # define X509_R_INVALID_FIELD_NAME 119
1301
+ # define X509_R_INVALID_TRUST 123
1302
+ # define X509_R_ISSUER_MISMATCH 129
1303
+ # define X509_R_KEY_TYPE_MISMATCH 115
1304
+ # define X509_R_KEY_VALUES_MISMATCH 116
1305
+ # define X509_R_LOADING_CERT_DIR 103
1306
+ # define X509_R_LOADING_DEFAULTS 104
1307
+ # define X509_R_METHOD_NOT_SUPPORTED 124
1308
+ # define X509_R_NEWER_CRL_NOT_NEWER 132
1309
+ # define X509_R_NO_CERT_SET_FOR_US_TO_VERIFY 105
1310
+ # define X509_R_NO_CRL_NUMBER 130
1311
+ # define X509_R_PUBLIC_KEY_DECODE_ERROR 125
1312
+ # define X509_R_PUBLIC_KEY_ENCODE_ERROR 126
1313
+ # define X509_R_SHOULD_RETRY 106
1314
+ # define X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN 107
1315
+ # define X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY 108
1316
+ # define X509_R_UNKNOWN_KEY_TYPE 117
1317
+ # define X509_R_UNKNOWN_NID 109
1318
+ # define X509_R_UNKNOWN_PURPOSE_ID 121
1319
+ # define X509_R_UNKNOWN_TRUST_ID 120
1320
+ # define X509_R_UNSUPPORTED_ALGORITHM 111
1321
+ # define X509_R_WRONG_LOOKUP_TYPE 112
1322
+ # define X509_R_WRONG_TYPE 122
1323
+
1324
+ #ifdef __cplusplus
1325
+ }
1326
+ #endif
1327
+ #endif