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,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