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,615 @@
1
+ /* crypto/pem/pem.h */
2
+ /* Copyright (C) 1995-1997 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
+ #ifndef HEADER_PEM_H
60
+ # define HEADER_PEM_H
61
+
62
+ # include <openssl/e_os2.h>
63
+ # ifndef OPENSSL_NO_BIO
64
+ # include <openssl/bio.h>
65
+ # endif
66
+ # ifndef OPENSSL_NO_STACK
67
+ # include <openssl/stack.h>
68
+ # endif
69
+ # include <openssl/evp.h>
70
+ # include <openssl/x509.h>
71
+ # include <openssl/pem2.h>
72
+
73
+ #ifdef __cplusplus
74
+ extern "C" {
75
+ #endif
76
+
77
+ # define PEM_BUFSIZE 1024
78
+
79
+ # define PEM_OBJ_UNDEF 0
80
+ # define PEM_OBJ_X509 1
81
+ # define PEM_OBJ_X509_REQ 2
82
+ # define PEM_OBJ_CRL 3
83
+ # define PEM_OBJ_SSL_SESSION 4
84
+ # define PEM_OBJ_PRIV_KEY 10
85
+ # define PEM_OBJ_PRIV_RSA 11
86
+ # define PEM_OBJ_PRIV_DSA 12
87
+ # define PEM_OBJ_PRIV_DH 13
88
+ # define PEM_OBJ_PUB_RSA 14
89
+ # define PEM_OBJ_PUB_DSA 15
90
+ # define PEM_OBJ_PUB_DH 16
91
+ # define PEM_OBJ_DHPARAMS 17
92
+ # define PEM_OBJ_DSAPARAMS 18
93
+ # define PEM_OBJ_PRIV_RSA_PUBLIC 19
94
+ # define PEM_OBJ_PRIV_ECDSA 20
95
+ # define PEM_OBJ_PUB_ECDSA 21
96
+ # define PEM_OBJ_ECPARAMETERS 22
97
+
98
+ # define PEM_ERROR 30
99
+ # define PEM_DEK_DES_CBC 40
100
+ # define PEM_DEK_IDEA_CBC 45
101
+ # define PEM_DEK_DES_EDE 50
102
+ # define PEM_DEK_DES_ECB 60
103
+ # define PEM_DEK_RSA 70
104
+ # define PEM_DEK_RSA_MD2 80
105
+ # define PEM_DEK_RSA_MD5 90
106
+
107
+ # define PEM_MD_MD2 NID_md2
108
+ # define PEM_MD_MD5 NID_md5
109
+ # define PEM_MD_SHA NID_sha
110
+ # define PEM_MD_MD2_RSA NID_md2WithRSAEncryption
111
+ # define PEM_MD_MD5_RSA NID_md5WithRSAEncryption
112
+ # define PEM_MD_SHA_RSA NID_sha1WithRSAEncryption
113
+
114
+ # define PEM_STRING_X509_OLD "X509 CERTIFICATE"
115
+ # define PEM_STRING_X509 "CERTIFICATE"
116
+ # define PEM_STRING_X509_PAIR "CERTIFICATE PAIR"
117
+ # define PEM_STRING_X509_TRUSTED "TRUSTED CERTIFICATE"
118
+ # define PEM_STRING_X509_REQ_OLD "NEW CERTIFICATE REQUEST"
119
+ # define PEM_STRING_X509_REQ "CERTIFICATE REQUEST"
120
+ # define PEM_STRING_X509_CRL "X509 CRL"
121
+ # define PEM_STRING_EVP_PKEY "ANY PRIVATE KEY"
122
+ # define PEM_STRING_PUBLIC "PUBLIC KEY"
123
+ # define PEM_STRING_RSA "RSA PRIVATE KEY"
124
+ # define PEM_STRING_RSA_PUBLIC "RSA PUBLIC KEY"
125
+ # define PEM_STRING_DSA "DSA PRIVATE KEY"
126
+ # define PEM_STRING_DSA_PUBLIC "DSA PUBLIC KEY"
127
+ # define PEM_STRING_PKCS7 "PKCS7"
128
+ # define PEM_STRING_PKCS7_SIGNED "PKCS #7 SIGNED DATA"
129
+ # define PEM_STRING_PKCS8 "ENCRYPTED PRIVATE KEY"
130
+ # define PEM_STRING_PKCS8INF "PRIVATE KEY"
131
+ # define PEM_STRING_DHPARAMS "DH PARAMETERS"
132
+ # define PEM_STRING_DHXPARAMS "X9.42 DH PARAMETERS"
133
+ # define PEM_STRING_SSL_SESSION "SSL SESSION PARAMETERS"
134
+ # define PEM_STRING_DSAPARAMS "DSA PARAMETERS"
135
+ # define PEM_STRING_ECDSA_PUBLIC "ECDSA PUBLIC KEY"
136
+ # define PEM_STRING_ECPARAMETERS "EC PARAMETERS"
137
+ # define PEM_STRING_ECPRIVATEKEY "EC PRIVATE KEY"
138
+ # define PEM_STRING_PARAMETERS "PARAMETERS"
139
+ # define PEM_STRING_CMS "CMS"
140
+
141
+ /*
142
+ * Note that this structure is initialised by PEM_SealInit and cleaned up
143
+ * by PEM_SealFinal (at least for now)
144
+ */
145
+ typedef struct PEM_Encode_Seal_st {
146
+ EVP_ENCODE_CTX encode;
147
+ EVP_MD_CTX md;
148
+ EVP_CIPHER_CTX cipher;
149
+ } PEM_ENCODE_SEAL_CTX;
150
+
151
+ /* enc_type is one off */
152
+ # define PEM_TYPE_ENCRYPTED 10
153
+ # define PEM_TYPE_MIC_ONLY 20
154
+ # define PEM_TYPE_MIC_CLEAR 30
155
+ # define PEM_TYPE_CLEAR 40
156
+
157
+ typedef struct pem_recip_st {
158
+ char *name;
159
+ X509_NAME *dn;
160
+ int cipher;
161
+ int key_enc;
162
+ /* char iv[8]; unused and wrong size */
163
+ } PEM_USER;
164
+
165
+ typedef struct pem_ctx_st {
166
+ int type; /* what type of object */
167
+ struct {
168
+ int version;
169
+ int mode;
170
+ } proc_type;
171
+
172
+ char *domain;
173
+
174
+ struct {
175
+ int cipher;
176
+ /*-
177
+ unused, and wrong size
178
+ unsigned char iv[8]; */
179
+ } DEK_info;
180
+
181
+ PEM_USER *originator;
182
+
183
+ int num_recipient;
184
+ PEM_USER **recipient;
185
+ /*-
186
+ XXX(ben): don#t think this is used!
187
+ STACK *x509_chain; / * certificate chain */
188
+ EVP_MD *md; /* signature type */
189
+
190
+ int md_enc; /* is the md encrypted or not? */
191
+ int md_len; /* length of md_data */
192
+ char *md_data; /* message digest, could be pkey encrypted */
193
+
194
+ EVP_CIPHER *dec; /* date encryption cipher */
195
+ int key_len; /* key length */
196
+ unsigned char *key; /* key */
197
+ /*-
198
+ unused, and wrong size
199
+ unsigned char iv[8]; */
200
+
201
+ int data_enc; /* is the data encrypted */
202
+ int data_len;
203
+ unsigned char *data;
204
+ } PEM_CTX;
205
+
206
+ /*
207
+ * These macros make the PEM_read/PEM_write functions easier to maintain and
208
+ * write. Now they are all implemented with either: IMPLEMENT_PEM_rw(...) or
209
+ * IMPLEMENT_PEM_rw_cb(...)
210
+ */
211
+
212
+ # ifdef OPENSSL_NO_FP_API
213
+
214
+ # define IMPLEMENT_PEM_read_fp(name, type, str, asn1) /**/
215
+ # define IMPLEMENT_PEM_write_fp(name, type, str, asn1) /**/
216
+ # define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) /**/
217
+ # define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) /**/
218
+ # define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) /**/
219
+ # else
220
+
221
+ # define IMPLEMENT_PEM_read_fp(name, type, str, asn1) \
222
+ type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u)\
223
+ { \
224
+ return PEM_ASN1_read((d2i_of_void *)d2i_##asn1, str,fp,(void **)x,cb,u); \
225
+ }
226
+
227
+ # define IMPLEMENT_PEM_write_fp(name, type, str, asn1) \
228
+ int PEM_write_##name(FILE *fp, type *x) \
229
+ { \
230
+ return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,NULL,NULL,0,NULL,NULL); \
231
+ }
232
+
233
+ # define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) \
234
+ int PEM_write_##name(FILE *fp, const type *x) \
235
+ { \
236
+ return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,(void *)x,NULL,NULL,0,NULL,NULL); \
237
+ }
238
+
239
+ # define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) \
240
+ int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \
241
+ unsigned char *kstr, int klen, pem_password_cb *cb, \
242
+ void *u) \
243
+ { \
244
+ return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u); \
245
+ }
246
+
247
+ # define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) \
248
+ int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \
249
+ unsigned char *kstr, int klen, pem_password_cb *cb, \
250
+ void *u) \
251
+ { \
252
+ return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u); \
253
+ }
254
+
255
+ # endif
256
+
257
+ # define IMPLEMENT_PEM_read_bio(name, type, str, asn1) \
258
+ type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb, void *u)\
259
+ { \
260
+ return PEM_ASN1_read_bio((d2i_of_void *)d2i_##asn1, str,bp,(void **)x,cb,u); \
261
+ }
262
+
263
+ # define IMPLEMENT_PEM_write_bio(name, type, str, asn1) \
264
+ int PEM_write_bio_##name(BIO *bp, type *x) \
265
+ { \
266
+ return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,x,NULL,NULL,0,NULL,NULL); \
267
+ }
268
+
269
+ # define IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \
270
+ int PEM_write_bio_##name(BIO *bp, const type *x) \
271
+ { \
272
+ return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,(void *)x,NULL,NULL,0,NULL,NULL); \
273
+ }
274
+
275
+ # define IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \
276
+ int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \
277
+ unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \
278
+ { \
279
+ return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,x,enc,kstr,klen,cb,u); \
280
+ }
281
+
282
+ # define IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \
283
+ int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \
284
+ unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \
285
+ { \
286
+ return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,(void *)x,enc,kstr,klen,cb,u); \
287
+ }
288
+
289
+ # define IMPLEMENT_PEM_write(name, type, str, asn1) \
290
+ IMPLEMENT_PEM_write_bio(name, type, str, asn1) \
291
+ IMPLEMENT_PEM_write_fp(name, type, str, asn1)
292
+
293
+ # define IMPLEMENT_PEM_write_const(name, type, str, asn1) \
294
+ IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \
295
+ IMPLEMENT_PEM_write_fp_const(name, type, str, asn1)
296
+
297
+ # define IMPLEMENT_PEM_write_cb(name, type, str, asn1) \
298
+ IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \
299
+ IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1)
300
+
301
+ # define IMPLEMENT_PEM_write_cb_const(name, type, str, asn1) \
302
+ IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \
303
+ IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1)
304
+
305
+ # define IMPLEMENT_PEM_read(name, type, str, asn1) \
306
+ IMPLEMENT_PEM_read_bio(name, type, str, asn1) \
307
+ IMPLEMENT_PEM_read_fp(name, type, str, asn1)
308
+
309
+ # define IMPLEMENT_PEM_rw(name, type, str, asn1) \
310
+ IMPLEMENT_PEM_read(name, type, str, asn1) \
311
+ IMPLEMENT_PEM_write(name, type, str, asn1)
312
+
313
+ # define IMPLEMENT_PEM_rw_const(name, type, str, asn1) \
314
+ IMPLEMENT_PEM_read(name, type, str, asn1) \
315
+ IMPLEMENT_PEM_write_const(name, type, str, asn1)
316
+
317
+ # define IMPLEMENT_PEM_rw_cb(name, type, str, asn1) \
318
+ IMPLEMENT_PEM_read(name, type, str, asn1) \
319
+ IMPLEMENT_PEM_write_cb(name, type, str, asn1)
320
+
321
+ /* These are the same except they are for the declarations */
322
+
323
+ # if defined(OPENSSL_NO_FP_API)
324
+
325
+ # define DECLARE_PEM_read_fp(name, type) /**/
326
+ # define DECLARE_PEM_write_fp(name, type) /**/
327
+ # define DECLARE_PEM_write_cb_fp(name, type) /**/
328
+ # else
329
+
330
+ # define DECLARE_PEM_read_fp(name, type) \
331
+ type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u);
332
+
333
+ # define DECLARE_PEM_write_fp(name, type) \
334
+ int PEM_write_##name(FILE *fp, type *x);
335
+
336
+ # define DECLARE_PEM_write_fp_const(name, type) \
337
+ int PEM_write_##name(FILE *fp, const type *x);
338
+
339
+ # define DECLARE_PEM_write_cb_fp(name, type) \
340
+ int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \
341
+ unsigned char *kstr, int klen, pem_password_cb *cb, void *u);
342
+
343
+ # endif
344
+
345
+ # ifndef OPENSSL_NO_BIO
346
+ # define DECLARE_PEM_read_bio(name, type) \
347
+ type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb, void *u);
348
+
349
+ # define DECLARE_PEM_write_bio(name, type) \
350
+ int PEM_write_bio_##name(BIO *bp, type *x);
351
+
352
+ # define DECLARE_PEM_write_bio_const(name, type) \
353
+ int PEM_write_bio_##name(BIO *bp, const type *x);
354
+
355
+ # define DECLARE_PEM_write_cb_bio(name, type) \
356
+ int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \
357
+ unsigned char *kstr, int klen, pem_password_cb *cb, void *u);
358
+
359
+ # else
360
+
361
+ # define DECLARE_PEM_read_bio(name, type) /**/
362
+ # define DECLARE_PEM_write_bio(name, type) /**/
363
+ # define DECLARE_PEM_write_bio_const(name, type) /**/
364
+ # define DECLARE_PEM_write_cb_bio(name, type) /**/
365
+ # endif
366
+ # define DECLARE_PEM_write(name, type) \
367
+ DECLARE_PEM_write_bio(name, type) \
368
+ DECLARE_PEM_write_fp(name, type)
369
+ # define DECLARE_PEM_write_const(name, type) \
370
+ DECLARE_PEM_write_bio_const(name, type) \
371
+ DECLARE_PEM_write_fp_const(name, type)
372
+ # define DECLARE_PEM_write_cb(name, type) \
373
+ DECLARE_PEM_write_cb_bio(name, type) \
374
+ DECLARE_PEM_write_cb_fp(name, type)
375
+ # define DECLARE_PEM_read(name, type) \
376
+ DECLARE_PEM_read_bio(name, type) \
377
+ DECLARE_PEM_read_fp(name, type)
378
+ # define DECLARE_PEM_rw(name, type) \
379
+ DECLARE_PEM_read(name, type) \
380
+ DECLARE_PEM_write(name, type)
381
+ # define DECLARE_PEM_rw_const(name, type) \
382
+ DECLARE_PEM_read(name, type) \
383
+ DECLARE_PEM_write_const(name, type)
384
+ # define DECLARE_PEM_rw_cb(name, type) \
385
+ DECLARE_PEM_read(name, type) \
386
+ DECLARE_PEM_write_cb(name, type)
387
+ # if 1
388
+ /* "userdata": new with OpenSSL 0.9.4 */
389
+ typedef int pem_password_cb (char *buf, int size, int rwflag, void *userdata);
390
+ # else
391
+ /* OpenSSL 0.9.3, 0.9.3a */
392
+ typedef int pem_password_cb (char *buf, int size, int rwflag);
393
+ # endif
394
+
395
+ int PEM_get_EVP_CIPHER_INFO(char *header, EVP_CIPHER_INFO *cipher);
396
+ int PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char *data, long *len,
397
+ pem_password_cb *callback, void *u);
398
+
399
+ # ifndef OPENSSL_NO_BIO
400
+ int PEM_read_bio(BIO *bp, char **name, char **header,
401
+ unsigned char **data, long *len);
402
+ int PEM_write_bio(BIO *bp, const char *name, const char *hdr,
403
+ const unsigned char *data, long len);
404
+ int PEM_bytes_read_bio(unsigned char **pdata, long *plen, char **pnm,
405
+ const char *name, BIO *bp, pem_password_cb *cb,
406
+ void *u);
407
+ void *PEM_ASN1_read_bio(d2i_of_void *d2i, const char *name, BIO *bp, void **x,
408
+ pem_password_cb *cb, void *u);
409
+ int PEM_ASN1_write_bio(i2d_of_void *i2d, const char *name, BIO *bp, void *x,
410
+ const EVP_CIPHER *enc, unsigned char *kstr, int klen,
411
+ pem_password_cb *cb, void *u);
412
+
413
+ STACK_OF(X509_INFO) *PEM_X509_INFO_read_bio(BIO *bp, STACK_OF(X509_INFO) *sk,
414
+ pem_password_cb *cb, void *u);
415
+ int PEM_X509_INFO_write_bio(BIO *bp, X509_INFO *xi, EVP_CIPHER *enc,
416
+ unsigned char *kstr, int klen,
417
+ pem_password_cb *cd, void *u);
418
+ # endif
419
+
420
+ int PEM_read(FILE *fp, char **name, char **header,
421
+ unsigned char **data, long *len);
422
+ int PEM_write(FILE *fp, const char *name, const char *hdr,
423
+ const unsigned char *data, long len);
424
+ void *PEM_ASN1_read(d2i_of_void *d2i, const char *name, FILE *fp, void **x,
425
+ pem_password_cb *cb, void *u);
426
+ int PEM_ASN1_write(i2d_of_void *i2d, const char *name, FILE *fp,
427
+ void *x, const EVP_CIPHER *enc, unsigned char *kstr,
428
+ int klen, pem_password_cb *callback, void *u);
429
+ STACK_OF(X509_INFO) *PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk,
430
+ pem_password_cb *cb, void *u);
431
+
432
+ int PEM_SealInit(PEM_ENCODE_SEAL_CTX *ctx, EVP_CIPHER *type,
433
+ EVP_MD *md_type, unsigned char **ek, int *ekl,
434
+ unsigned char *iv, EVP_PKEY **pubk, int npubk);
435
+ void PEM_SealUpdate(PEM_ENCODE_SEAL_CTX *ctx, unsigned char *out, int *outl,
436
+ unsigned char *in, int inl);
437
+ int PEM_SealFinal(PEM_ENCODE_SEAL_CTX *ctx, unsigned char *sig, int *sigl,
438
+ unsigned char *out, int *outl, EVP_PKEY *priv);
439
+
440
+ void PEM_SignInit(EVP_MD_CTX *ctx, EVP_MD *type);
441
+ void PEM_SignUpdate(EVP_MD_CTX *ctx, unsigned char *d, unsigned int cnt);
442
+ int PEM_SignFinal(EVP_MD_CTX *ctx, unsigned char *sigret,
443
+ unsigned int *siglen, EVP_PKEY *pkey);
444
+
445
+ int PEM_def_callback(char *buf, int num, int w, void *key);
446
+ void PEM_proc_type(char *buf, int type);
447
+ void PEM_dek_info(char *buf, const char *type, int len, char *str);
448
+
449
+ # include <openssl/symhacks.h>
450
+
451
+ DECLARE_PEM_rw(X509, X509)
452
+ DECLARE_PEM_rw(X509_AUX, X509)
453
+ DECLARE_PEM_rw(X509_CERT_PAIR, X509_CERT_PAIR)
454
+ DECLARE_PEM_rw(X509_REQ, X509_REQ)
455
+ DECLARE_PEM_write(X509_REQ_NEW, X509_REQ)
456
+ DECLARE_PEM_rw(X509_CRL, X509_CRL)
457
+ DECLARE_PEM_rw(PKCS7, PKCS7)
458
+ DECLARE_PEM_rw(NETSCAPE_CERT_SEQUENCE, NETSCAPE_CERT_SEQUENCE)
459
+ DECLARE_PEM_rw(PKCS8, X509_SIG)
460
+ DECLARE_PEM_rw(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO)
461
+ # ifndef OPENSSL_NO_RSA
462
+ DECLARE_PEM_rw_cb(RSAPrivateKey, RSA)
463
+ DECLARE_PEM_rw_const(RSAPublicKey, RSA)
464
+ DECLARE_PEM_rw(RSA_PUBKEY, RSA)
465
+ # endif
466
+ # ifndef OPENSSL_NO_DSA
467
+ DECLARE_PEM_rw_cb(DSAPrivateKey, DSA)
468
+ DECLARE_PEM_rw(DSA_PUBKEY, DSA)
469
+ DECLARE_PEM_rw_const(DSAparams, DSA)
470
+ # endif
471
+ # ifndef OPENSSL_NO_EC
472
+ DECLARE_PEM_rw_const(ECPKParameters, EC_GROUP)
473
+ DECLARE_PEM_rw_cb(ECPrivateKey, EC_KEY)
474
+ DECLARE_PEM_rw(EC_PUBKEY, EC_KEY)
475
+ # endif
476
+ # ifndef OPENSSL_NO_DH
477
+ DECLARE_PEM_rw_const(DHparams, DH)
478
+ DECLARE_PEM_write_const(DHxparams, DH)
479
+ # endif
480
+ DECLARE_PEM_rw_cb(PrivateKey, EVP_PKEY)
481
+ DECLARE_PEM_rw(PUBKEY, EVP_PKEY)
482
+
483
+ int PEM_write_bio_PKCS8PrivateKey_nid(BIO *bp, EVP_PKEY *x, int nid,
484
+ char *kstr, int klen,
485
+ pem_password_cb *cb, void *u);
486
+ int PEM_write_bio_PKCS8PrivateKey(BIO *, EVP_PKEY *, const EVP_CIPHER *,
487
+ char *, int, pem_password_cb *, void *);
488
+ int i2d_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY *x, const EVP_CIPHER *enc,
489
+ char *kstr, int klen,
490
+ pem_password_cb *cb, void *u);
491
+ int i2d_PKCS8PrivateKey_nid_bio(BIO *bp, EVP_PKEY *x, int nid,
492
+ char *kstr, int klen,
493
+ pem_password_cb *cb, void *u);
494
+ EVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY **x, pem_password_cb *cb,
495
+ void *u);
496
+
497
+ int i2d_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc,
498
+ char *kstr, int klen,
499
+ pem_password_cb *cb, void *u);
500
+ int i2d_PKCS8PrivateKey_nid_fp(FILE *fp, EVP_PKEY *x, int nid,
501
+ char *kstr, int klen,
502
+ pem_password_cb *cb, void *u);
503
+ int PEM_write_PKCS8PrivateKey_nid(FILE *fp, EVP_PKEY *x, int nid,
504
+ char *kstr, int klen,
505
+ pem_password_cb *cb, void *u);
506
+
507
+ EVP_PKEY *d2i_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY **x, pem_password_cb *cb,
508
+ void *u);
509
+
510
+ int PEM_write_PKCS8PrivateKey(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc,
511
+ char *kstr, int klen, pem_password_cb *cd,
512
+ void *u);
513
+
514
+ EVP_PKEY *PEM_read_bio_Parameters(BIO *bp, EVP_PKEY **x);
515
+ int PEM_write_bio_Parameters(BIO *bp, EVP_PKEY *x);
516
+
517
+ EVP_PKEY *b2i_PrivateKey(const unsigned char **in, long length);
518
+ EVP_PKEY *b2i_PublicKey(const unsigned char **in, long length);
519
+ EVP_PKEY *b2i_PrivateKey_bio(BIO *in);
520
+ EVP_PKEY *b2i_PublicKey_bio(BIO *in);
521
+ int i2b_PrivateKey_bio(BIO *out, EVP_PKEY *pk);
522
+ int i2b_PublicKey_bio(BIO *out, EVP_PKEY *pk);
523
+ # ifndef OPENSSL_NO_RC4
524
+ EVP_PKEY *b2i_PVK_bio(BIO *in, pem_password_cb *cb, void *u);
525
+ int i2b_PVK_bio(BIO *out, EVP_PKEY *pk, int enclevel,
526
+ pem_password_cb *cb, void *u);
527
+ # endif
528
+
529
+ /* BEGIN ERROR CODES */
530
+ /*
531
+ * The following lines are auto generated by the script mkerr.pl. Any changes
532
+ * made after this point may be overwritten when the script is next run.
533
+ */
534
+ void ERR_load_PEM_strings(void);
535
+
536
+ /* Error codes for the PEM functions. */
537
+
538
+ /* Function codes. */
539
+ # define PEM_F_B2I_DSS 127
540
+ # define PEM_F_B2I_PVK_BIO 128
541
+ # define PEM_F_B2I_RSA 129
542
+ # define PEM_F_CHECK_BITLEN_DSA 130
543
+ # define PEM_F_CHECK_BITLEN_RSA 131
544
+ # define PEM_F_D2I_PKCS8PRIVATEKEY_BIO 120
545
+ # define PEM_F_D2I_PKCS8PRIVATEKEY_FP 121
546
+ # define PEM_F_DO_B2I 132
547
+ # define PEM_F_DO_B2I_BIO 133
548
+ # define PEM_F_DO_BLOB_HEADER 134
549
+ # define PEM_F_DO_PK8PKEY 126
550
+ # define PEM_F_DO_PK8PKEY_FP 125
551
+ # define PEM_F_DO_PVK_BODY 135
552
+ # define PEM_F_DO_PVK_HEADER 136
553
+ # define PEM_F_I2B_PVK 137
554
+ # define PEM_F_I2B_PVK_BIO 138
555
+ # define PEM_F_LOAD_IV 101
556
+ # define PEM_F_PEM_ASN1_READ 102
557
+ # define PEM_F_PEM_ASN1_READ_BIO 103
558
+ # define PEM_F_PEM_ASN1_WRITE 104
559
+ # define PEM_F_PEM_ASN1_WRITE_BIO 105
560
+ # define PEM_F_PEM_DEF_CALLBACK 100
561
+ # define PEM_F_PEM_DO_HEADER 106
562
+ # define PEM_F_PEM_F_PEM_WRITE_PKCS8PRIVATEKEY 118
563
+ # define PEM_F_PEM_GET_EVP_CIPHER_INFO 107
564
+ # define PEM_F_PEM_PK8PKEY 119
565
+ # define PEM_F_PEM_READ 108
566
+ # define PEM_F_PEM_READ_BIO 109
567
+ # define PEM_F_PEM_READ_BIO_DHPARAMS 141
568
+ # define PEM_F_PEM_READ_BIO_PARAMETERS 140
569
+ # define PEM_F_PEM_READ_BIO_PRIVATEKEY 123
570
+ # define PEM_F_PEM_READ_DHPARAMS 142
571
+ # define PEM_F_PEM_READ_PRIVATEKEY 124
572
+ # define PEM_F_PEM_SEALFINAL 110
573
+ # define PEM_F_PEM_SEALINIT 111
574
+ # define PEM_F_PEM_SIGNFINAL 112
575
+ # define PEM_F_PEM_WRITE 113
576
+ # define PEM_F_PEM_WRITE_BIO 114
577
+ # define PEM_F_PEM_WRITE_PRIVATEKEY 139
578
+ # define PEM_F_PEM_X509_INFO_READ 115
579
+ # define PEM_F_PEM_X509_INFO_READ_BIO 116
580
+ # define PEM_F_PEM_X509_INFO_WRITE_BIO 117
581
+
582
+ /* Reason codes. */
583
+ # define PEM_R_BAD_BASE64_DECODE 100
584
+ # define PEM_R_BAD_DECRYPT 101
585
+ # define PEM_R_BAD_END_LINE 102
586
+ # define PEM_R_BAD_IV_CHARS 103
587
+ # define PEM_R_BAD_MAGIC_NUMBER 116
588
+ # define PEM_R_BAD_PASSWORD_READ 104
589
+ # define PEM_R_BAD_VERSION_NUMBER 117
590
+ # define PEM_R_BIO_WRITE_FAILURE 118
591
+ # define PEM_R_CIPHER_IS_NULL 127
592
+ # define PEM_R_ERROR_CONVERTING_PRIVATE_KEY 115
593
+ # define PEM_R_EXPECTING_PRIVATE_KEY_BLOB 119
594
+ # define PEM_R_EXPECTING_PUBLIC_KEY_BLOB 120
595
+ # define PEM_R_INCONSISTENT_HEADER 121
596
+ # define PEM_R_KEYBLOB_HEADER_PARSE_ERROR 122
597
+ # define PEM_R_KEYBLOB_TOO_SHORT 123
598
+ # define PEM_R_NOT_DEK_INFO 105
599
+ # define PEM_R_NOT_ENCRYPTED 106
600
+ # define PEM_R_NOT_PROC_TYPE 107
601
+ # define PEM_R_NO_START_LINE 108
602
+ # define PEM_R_PROBLEMS_GETTING_PASSWORD 109
603
+ # define PEM_R_PUBLIC_KEY_NO_RSA 110
604
+ # define PEM_R_PVK_DATA_TOO_SHORT 124
605
+ # define PEM_R_PVK_TOO_SHORT 125
606
+ # define PEM_R_READ_KEY 111
607
+ # define PEM_R_SHORT_HEADER 112
608
+ # define PEM_R_UNSUPPORTED_CIPHER 113
609
+ # define PEM_R_UNSUPPORTED_ENCRYPTION 114
610
+ # define PEM_R_UNSUPPORTED_KEY_COMPONENTS 126
611
+
612
+ #ifdef __cplusplus
613
+ }
614
+ #endif
615
+ #endif