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,70 @@
1
+ /* ====================================================================
2
+ * Copyright (c) 1999 The OpenSSL Project. All rights reserved.
3
+ *
4
+ * Redistribution and use in source and binary forms, with or without
5
+ * modification, are permitted provided that the following conditions
6
+ * are met:
7
+ *
8
+ * 1. Redistributions of source code must retain the above copyright
9
+ * notice, this list of conditions and the following disclaimer.
10
+ *
11
+ * 2. Redistributions in binary form must reproduce the above copyright
12
+ * notice, this list of conditions and the following disclaimer in
13
+ * the documentation and/or other materials provided with the
14
+ * distribution.
15
+ *
16
+ * 3. All advertising materials mentioning features or use of this
17
+ * software must display the following acknowledgment:
18
+ * "This product includes software developed by the OpenSSL Project
19
+ * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
20
+ *
21
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
22
+ * endorse or promote products derived from this software without
23
+ * prior written permission. For written permission, please contact
24
+ * licensing@OpenSSL.org.
25
+ *
26
+ * 5. Products derived from this software may not be called "OpenSSL"
27
+ * nor may "OpenSSL" appear in their names without prior written
28
+ * permission of the OpenSSL Project.
29
+ *
30
+ * 6. Redistributions of any form whatsoever must retain the following
31
+ * acknowledgment:
32
+ * "This product includes software developed by the OpenSSL Project
33
+ * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
34
+ *
35
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
36
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
37
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
38
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
39
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
40
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
41
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
42
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
43
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
44
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
45
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
46
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
47
+ * ====================================================================
48
+ *
49
+ * This product includes cryptographic software written by Eric Young
50
+ * (eay@cryptsoft.com). This product includes software written by Tim
51
+ * Hudson (tjh@cryptsoft.com).
52
+ *
53
+ */
54
+
55
+ /*
56
+ * This header only exists to break a circular dependency between pem and err
57
+ * Ben 30 Jan 1999.
58
+ */
59
+
60
+ #ifdef __cplusplus
61
+ extern "C" {
62
+ #endif
63
+
64
+ #ifndef HEADER_PEM_H
65
+ void ERR_load_PEM_strings(void);
66
+ #endif
67
+
68
+ #ifdef __cplusplus
69
+ }
70
+ #endif
@@ -0,0 +1,342 @@
1
+ /* pkcs12.h */
2
+ /*
3
+ * Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL project
4
+ * 1999.
5
+ */
6
+ /* ====================================================================
7
+ * Copyright (c) 1999 The OpenSSL Project. All rights reserved.
8
+ *
9
+ * Redistribution and use in source and binary forms, with or without
10
+ * modification, are permitted provided that the following conditions
11
+ * are met:
12
+ *
13
+ * 1. Redistributions of source code must retain the above copyright
14
+ * notice, this list of conditions and the following disclaimer.
15
+ *
16
+ * 2. Redistributions in binary form must reproduce the above copyright
17
+ * notice, this list of conditions and the following disclaimer in
18
+ * the documentation and/or other materials provided with the
19
+ * distribution.
20
+ *
21
+ * 3. All advertising materials mentioning features or use of this
22
+ * software must display the following acknowledgment:
23
+ * "This product includes software developed by the OpenSSL Project
24
+ * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
25
+ *
26
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
27
+ * endorse or promote products derived from this software without
28
+ * prior written permission. For written permission, please contact
29
+ * licensing@OpenSSL.org.
30
+ *
31
+ * 5. Products derived from this software may not be called "OpenSSL"
32
+ * nor may "OpenSSL" appear in their names without prior written
33
+ * permission of the OpenSSL Project.
34
+ *
35
+ * 6. Redistributions of any form whatsoever must retain the following
36
+ * acknowledgment:
37
+ * "This product includes software developed by the OpenSSL Project
38
+ * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
39
+ *
40
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
41
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
42
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
43
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
44
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
45
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
46
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
47
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
49
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
50
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
51
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
52
+ * ====================================================================
53
+ *
54
+ * This product includes cryptographic software written by Eric Young
55
+ * (eay@cryptsoft.com). This product includes software written by Tim
56
+ * Hudson (tjh@cryptsoft.com).
57
+ *
58
+ */
59
+
60
+ #ifndef HEADER_PKCS12_H
61
+ # define HEADER_PKCS12_H
62
+
63
+ # include <openssl/bio.h>
64
+ # include <openssl/x509.h>
65
+
66
+ #ifdef __cplusplus
67
+ extern "C" {
68
+ #endif
69
+
70
+ # define PKCS12_KEY_ID 1
71
+ # define PKCS12_IV_ID 2
72
+ # define PKCS12_MAC_ID 3
73
+
74
+ /* Default iteration count */
75
+ # ifndef PKCS12_DEFAULT_ITER
76
+ # define PKCS12_DEFAULT_ITER PKCS5_DEFAULT_ITER
77
+ # endif
78
+
79
+ # define PKCS12_MAC_KEY_LENGTH 20
80
+
81
+ # define PKCS12_SALT_LEN 8
82
+
83
+ /* Uncomment out next line for unicode password and names, otherwise ASCII */
84
+
85
+ /*
86
+ * #define PBE_UNICODE
87
+ */
88
+
89
+ # ifdef PBE_UNICODE
90
+ # define PKCS12_key_gen PKCS12_key_gen_uni
91
+ # define PKCS12_add_friendlyname PKCS12_add_friendlyname_uni
92
+ # else
93
+ # define PKCS12_key_gen PKCS12_key_gen_asc
94
+ # define PKCS12_add_friendlyname PKCS12_add_friendlyname_asc
95
+ # endif
96
+
97
+ /* MS key usage constants */
98
+
99
+ # define KEY_EX 0x10
100
+ # define KEY_SIG 0x80
101
+
102
+ typedef struct {
103
+ X509_SIG *dinfo;
104
+ ASN1_OCTET_STRING *salt;
105
+ ASN1_INTEGER *iter; /* defaults to 1 */
106
+ } PKCS12_MAC_DATA;
107
+
108
+ typedef struct {
109
+ ASN1_INTEGER *version;
110
+ PKCS12_MAC_DATA *mac;
111
+ PKCS7 *authsafes;
112
+ } PKCS12;
113
+
114
+ typedef struct {
115
+ ASN1_OBJECT *type;
116
+ union {
117
+ struct pkcs12_bag_st *bag; /* secret, crl and certbag */
118
+ struct pkcs8_priv_key_info_st *keybag; /* keybag */
119
+ X509_SIG *shkeybag; /* shrouded key bag */
120
+ STACK_OF(PKCS12_SAFEBAG) *safes;
121
+ ASN1_TYPE *other;
122
+ } value;
123
+ STACK_OF(X509_ATTRIBUTE) *attrib;
124
+ } PKCS12_SAFEBAG;
125
+
126
+ DECLARE_STACK_OF(PKCS12_SAFEBAG)
127
+ DECLARE_ASN1_SET_OF(PKCS12_SAFEBAG)
128
+ DECLARE_PKCS12_STACK_OF(PKCS12_SAFEBAG)
129
+
130
+ typedef struct pkcs12_bag_st {
131
+ ASN1_OBJECT *type;
132
+ union {
133
+ ASN1_OCTET_STRING *x509cert;
134
+ ASN1_OCTET_STRING *x509crl;
135
+ ASN1_OCTET_STRING *octet;
136
+ ASN1_IA5STRING *sdsicert;
137
+ ASN1_TYPE *other; /* Secret or other bag */
138
+ } value;
139
+ } PKCS12_BAGS;
140
+
141
+ # define PKCS12_ERROR 0
142
+ # define PKCS12_OK 1
143
+
144
+ /* Compatibility macros */
145
+
146
+ # define M_PKCS12_x5092certbag PKCS12_x5092certbag
147
+ # define M_PKCS12_x509crl2certbag PKCS12_x509crl2certbag
148
+
149
+ # define M_PKCS12_certbag2x509 PKCS12_certbag2x509
150
+ # define M_PKCS12_certbag2x509crl PKCS12_certbag2x509crl
151
+
152
+ # define M_PKCS12_unpack_p7data PKCS12_unpack_p7data
153
+ # define M_PKCS12_pack_authsafes PKCS12_pack_authsafes
154
+ # define M_PKCS12_unpack_authsafes PKCS12_unpack_authsafes
155
+ # define M_PKCS12_unpack_p7encdata PKCS12_unpack_p7encdata
156
+
157
+ # define M_PKCS12_decrypt_skey PKCS12_decrypt_skey
158
+ # define M_PKCS8_decrypt PKCS8_decrypt
159
+
160
+ # define M_PKCS12_bag_type(bg) OBJ_obj2nid((bg)->type)
161
+ # define M_PKCS12_cert_bag_type(bg) OBJ_obj2nid((bg)->value.bag->type)
162
+ # define M_PKCS12_crl_bag_type M_PKCS12_cert_bag_type
163
+
164
+ # define PKCS12_get_attr(bag, attr_nid) \
165
+ PKCS12_get_attr_gen(bag->attrib, attr_nid)
166
+
167
+ # define PKCS8_get_attr(p8, attr_nid) \
168
+ PKCS12_get_attr_gen(p8->attributes, attr_nid)
169
+
170
+ # define PKCS12_mac_present(p12) ((p12)->mac ? 1 : 0)
171
+
172
+ PKCS12_SAFEBAG *PKCS12_x5092certbag(X509 *x509);
173
+ PKCS12_SAFEBAG *PKCS12_x509crl2certbag(X509_CRL *crl);
174
+ X509 *PKCS12_certbag2x509(PKCS12_SAFEBAG *bag);
175
+ X509_CRL *PKCS12_certbag2x509crl(PKCS12_SAFEBAG *bag);
176
+
177
+ PKCS12_SAFEBAG *PKCS12_item_pack_safebag(void *obj, const ASN1_ITEM *it,
178
+ int nid1, int nid2);
179
+ PKCS12_SAFEBAG *PKCS12_MAKE_KEYBAG(PKCS8_PRIV_KEY_INFO *p8);
180
+ PKCS8_PRIV_KEY_INFO *PKCS8_decrypt(X509_SIG *p8, const char *pass,
181
+ int passlen);
182
+ PKCS8_PRIV_KEY_INFO *PKCS12_decrypt_skey(PKCS12_SAFEBAG *bag,
183
+ const char *pass, int passlen);
184
+ X509_SIG *PKCS8_encrypt(int pbe_nid, const EVP_CIPHER *cipher,
185
+ const char *pass, int passlen, unsigned char *salt,
186
+ int saltlen, int iter, PKCS8_PRIV_KEY_INFO *p8);
187
+ PKCS12_SAFEBAG *PKCS12_MAKE_SHKEYBAG(int pbe_nid, const char *pass,
188
+ int passlen, unsigned char *salt,
189
+ int saltlen, int iter,
190
+ PKCS8_PRIV_KEY_INFO *p8);
191
+ PKCS7 *PKCS12_pack_p7data(STACK_OF(PKCS12_SAFEBAG) *sk);
192
+ STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7data(PKCS7 *p7);
193
+ PKCS7 *PKCS12_pack_p7encdata(int pbe_nid, const char *pass, int passlen,
194
+ unsigned char *salt, int saltlen, int iter,
195
+ STACK_OF(PKCS12_SAFEBAG) *bags);
196
+ STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7encdata(PKCS7 *p7, const char *pass,
197
+ int passlen);
198
+
199
+ int PKCS12_pack_authsafes(PKCS12 *p12, STACK_OF(PKCS7) *safes);
200
+ STACK_OF(PKCS7) *PKCS12_unpack_authsafes(PKCS12 *p12);
201
+
202
+ int PKCS12_add_localkeyid(PKCS12_SAFEBAG *bag, unsigned char *name,
203
+ int namelen);
204
+ int PKCS12_add_friendlyname_asc(PKCS12_SAFEBAG *bag, const char *name,
205
+ int namelen);
206
+ int PKCS12_add_CSPName_asc(PKCS12_SAFEBAG *bag, const char *name,
207
+ int namelen);
208
+ int PKCS12_add_friendlyname_uni(PKCS12_SAFEBAG *bag,
209
+ const unsigned char *name, int namelen);
210
+ int PKCS8_add_keyusage(PKCS8_PRIV_KEY_INFO *p8, int usage);
211
+ ASN1_TYPE *PKCS12_get_attr_gen(STACK_OF(X509_ATTRIBUTE) *attrs, int attr_nid);
212
+ char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag);
213
+ unsigned char *PKCS12_pbe_crypt(X509_ALGOR *algor, const char *pass,
214
+ int passlen, unsigned char *in, int inlen,
215
+ unsigned char **data, int *datalen,
216
+ int en_de);
217
+ void *PKCS12_item_decrypt_d2i(X509_ALGOR *algor, const ASN1_ITEM *it,
218
+ const char *pass, int passlen,
219
+ ASN1_OCTET_STRING *oct, int zbuf);
220
+ ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt(X509_ALGOR *algor,
221
+ const ASN1_ITEM *it,
222
+ const char *pass, int passlen,
223
+ void *obj, int zbuf);
224
+ PKCS12 *PKCS12_init(int mode);
225
+ int PKCS12_key_gen_asc(const char *pass, int passlen, unsigned char *salt,
226
+ int saltlen, int id, int iter, int n,
227
+ unsigned char *out, const EVP_MD *md_type);
228
+ int PKCS12_key_gen_uni(unsigned char *pass, int passlen, unsigned char *salt,
229
+ int saltlen, int id, int iter, int n,
230
+ unsigned char *out, const EVP_MD *md_type);
231
+ int PKCS12_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen,
232
+ ASN1_TYPE *param, const EVP_CIPHER *cipher,
233
+ const EVP_MD *md_type, int en_de);
234
+ int PKCS12_gen_mac(PKCS12 *p12, const char *pass, int passlen,
235
+ unsigned char *mac, unsigned int *maclen);
236
+ int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen);
237
+ int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen,
238
+ unsigned char *salt, int saltlen, int iter,
239
+ const EVP_MD *md_type);
240
+ int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt,
241
+ int saltlen, const EVP_MD *md_type);
242
+ unsigned char *OPENSSL_asc2uni(const char *asc, int asclen,
243
+ unsigned char **uni, int *unilen);
244
+ char *OPENSSL_uni2asc(unsigned char *uni, int unilen);
245
+
246
+ DECLARE_ASN1_FUNCTIONS(PKCS12)
247
+ DECLARE_ASN1_FUNCTIONS(PKCS12_MAC_DATA)
248
+ DECLARE_ASN1_FUNCTIONS(PKCS12_SAFEBAG)
249
+ DECLARE_ASN1_FUNCTIONS(PKCS12_BAGS)
250
+
251
+ DECLARE_ASN1_ITEM(PKCS12_SAFEBAGS)
252
+ DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES)
253
+
254
+ void PKCS12_PBE_add(void);
255
+ int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert,
256
+ STACK_OF(X509) **ca);
257
+ PKCS12 *PKCS12_create(char *pass, char *name, EVP_PKEY *pkey, X509 *cert,
258
+ STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter,
259
+ int mac_iter, int keytype);
260
+
261
+ PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert);
262
+ PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags,
263
+ EVP_PKEY *key, int key_usage, int iter,
264
+ int key_nid, char *pass);
265
+ int PKCS12_add_safe(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags,
266
+ int safe_nid, int iter, char *pass);
267
+ PKCS12 *PKCS12_add_safes(STACK_OF(PKCS7) *safes, int p7_nid);
268
+
269
+ int i2d_PKCS12_bio(BIO *bp, PKCS12 *p12);
270
+ int i2d_PKCS12_fp(FILE *fp, PKCS12 *p12);
271
+ PKCS12 *d2i_PKCS12_bio(BIO *bp, PKCS12 **p12);
272
+ PKCS12 *d2i_PKCS12_fp(FILE *fp, PKCS12 **p12);
273
+ int PKCS12_newpass(PKCS12 *p12, char *oldpass, char *newpass);
274
+
275
+ /* BEGIN ERROR CODES */
276
+ /*
277
+ * The following lines are auto generated by the script mkerr.pl. Any changes
278
+ * made after this point may be overwritten when the script is next run.
279
+ */
280
+ void ERR_load_PKCS12_strings(void);
281
+
282
+ /* Error codes for the PKCS12 functions. */
283
+
284
+ /* Function codes. */
285
+ # define PKCS12_F_PARSE_BAG 129
286
+ # define PKCS12_F_PARSE_BAGS 103
287
+ # define PKCS12_F_PKCS12_ADD_FRIENDLYNAME 100
288
+ # define PKCS12_F_PKCS12_ADD_FRIENDLYNAME_ASC 127
289
+ # define PKCS12_F_PKCS12_ADD_FRIENDLYNAME_UNI 102
290
+ # define PKCS12_F_PKCS12_ADD_LOCALKEYID 104
291
+ # define PKCS12_F_PKCS12_CREATE 105
292
+ # define PKCS12_F_PKCS12_GEN_MAC 107
293
+ # define PKCS12_F_PKCS12_INIT 109
294
+ # define PKCS12_F_PKCS12_ITEM_DECRYPT_D2I 106
295
+ # define PKCS12_F_PKCS12_ITEM_I2D_ENCRYPT 108
296
+ # define PKCS12_F_PKCS12_ITEM_PACK_SAFEBAG 117
297
+ # define PKCS12_F_PKCS12_KEY_GEN_ASC 110
298
+ # define PKCS12_F_PKCS12_KEY_GEN_UNI 111
299
+ # define PKCS12_F_PKCS12_MAKE_KEYBAG 112
300
+ # define PKCS12_F_PKCS12_MAKE_SHKEYBAG 113
301
+ # define PKCS12_F_PKCS12_NEWPASS 128
302
+ # define PKCS12_F_PKCS12_PACK_P7DATA 114
303
+ # define PKCS12_F_PKCS12_PACK_P7ENCDATA 115
304
+ # define PKCS12_F_PKCS12_PARSE 118
305
+ # define PKCS12_F_PKCS12_PBE_CRYPT 119
306
+ # define PKCS12_F_PKCS12_PBE_KEYIVGEN 120
307
+ # define PKCS12_F_PKCS12_SETUP_MAC 122
308
+ # define PKCS12_F_PKCS12_SET_MAC 123
309
+ # define PKCS12_F_PKCS12_UNPACK_AUTHSAFES 130
310
+ # define PKCS12_F_PKCS12_UNPACK_P7DATA 131
311
+ # define PKCS12_F_PKCS12_VERIFY_MAC 126
312
+ # define PKCS12_F_PKCS8_ADD_KEYUSAGE 124
313
+ # define PKCS12_F_PKCS8_ENCRYPT 125
314
+
315
+ /* Reason codes. */
316
+ # define PKCS12_R_CANT_PACK_STRUCTURE 100
317
+ # define PKCS12_R_CONTENT_TYPE_NOT_DATA 121
318
+ # define PKCS12_R_DECODE_ERROR 101
319
+ # define PKCS12_R_ENCODE_ERROR 102
320
+ # define PKCS12_R_ENCRYPT_ERROR 103
321
+ # define PKCS12_R_ERROR_SETTING_ENCRYPTED_DATA_TYPE 120
322
+ # define PKCS12_R_INVALID_NULL_ARGUMENT 104
323
+ # define PKCS12_R_INVALID_NULL_PKCS12_POINTER 105
324
+ # define PKCS12_R_IV_GEN_ERROR 106
325
+ # define PKCS12_R_KEY_GEN_ERROR 107
326
+ # define PKCS12_R_MAC_ABSENT 108
327
+ # define PKCS12_R_MAC_GENERATION_ERROR 109
328
+ # define PKCS12_R_MAC_SETUP_ERROR 110
329
+ # define PKCS12_R_MAC_STRING_SET_ERROR 111
330
+ # define PKCS12_R_MAC_VERIFY_ERROR 112
331
+ # define PKCS12_R_MAC_VERIFY_FAILURE 113
332
+ # define PKCS12_R_PARSE_ERROR 114
333
+ # define PKCS12_R_PKCS12_ALGOR_CIPHERINIT_ERROR 115
334
+ # define PKCS12_R_PKCS12_CIPHERFINAL_ERROR 116
335
+ # define PKCS12_R_PKCS12_PBE_CRYPT_ERROR 117
336
+ # define PKCS12_R_UNKNOWN_DIGEST_ALGORITHM 118
337
+ # define PKCS12_R_UNSUPPORTED_PKCS12_MODE 119
338
+
339
+ #ifdef __cplusplus
340
+ }
341
+ #endif
342
+ #endif
@@ -0,0 +1,481 @@
1
+ /* crypto/pkcs7/pkcs7.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
+ #ifndef HEADER_PKCS7_H
60
+ # define HEADER_PKCS7_H
61
+
62
+ # include <openssl/asn1.h>
63
+ # include <openssl/bio.h>
64
+ # include <openssl/e_os2.h>
65
+
66
+ # include <openssl/symhacks.h>
67
+ # include <openssl/ossl_typ.h>
68
+
69
+ #ifdef __cplusplus
70
+ extern "C" {
71
+ #endif
72
+
73
+ # ifdef OPENSSL_SYS_WIN32
74
+ /* Under Win32 thes are defined in wincrypt.h */
75
+ # undef PKCS7_ISSUER_AND_SERIAL
76
+ # undef PKCS7_SIGNER_INFO
77
+ # endif
78
+
79
+ /*-
80
+ Encryption_ID DES-CBC
81
+ Digest_ID MD5
82
+ Digest_Encryption_ID rsaEncryption
83
+ Key_Encryption_ID rsaEncryption
84
+ */
85
+
86
+ typedef struct pkcs7_issuer_and_serial_st {
87
+ X509_NAME *issuer;
88
+ ASN1_INTEGER *serial;
89
+ } PKCS7_ISSUER_AND_SERIAL;
90
+
91
+ typedef struct pkcs7_signer_info_st {
92
+ ASN1_INTEGER *version; /* version 1 */
93
+ PKCS7_ISSUER_AND_SERIAL *issuer_and_serial;
94
+ X509_ALGOR *digest_alg;
95
+ STACK_OF(X509_ATTRIBUTE) *auth_attr; /* [ 0 ] */
96
+ X509_ALGOR *digest_enc_alg;
97
+ ASN1_OCTET_STRING *enc_digest;
98
+ STACK_OF(X509_ATTRIBUTE) *unauth_attr; /* [ 1 ] */
99
+ /* The private key to sign with */
100
+ EVP_PKEY *pkey;
101
+ } PKCS7_SIGNER_INFO;
102
+
103
+ DECLARE_STACK_OF(PKCS7_SIGNER_INFO)
104
+ DECLARE_ASN1_SET_OF(PKCS7_SIGNER_INFO)
105
+
106
+ typedef struct pkcs7_recip_info_st {
107
+ ASN1_INTEGER *version; /* version 0 */
108
+ PKCS7_ISSUER_AND_SERIAL *issuer_and_serial;
109
+ X509_ALGOR *key_enc_algor;
110
+ ASN1_OCTET_STRING *enc_key;
111
+ X509 *cert; /* get the pub-key from this */
112
+ } PKCS7_RECIP_INFO;
113
+
114
+ DECLARE_STACK_OF(PKCS7_RECIP_INFO)
115
+ DECLARE_ASN1_SET_OF(PKCS7_RECIP_INFO)
116
+
117
+ typedef struct pkcs7_signed_st {
118
+ ASN1_INTEGER *version; /* version 1 */
119
+ STACK_OF(X509_ALGOR) *md_algs; /* md used */
120
+ STACK_OF(X509) *cert; /* [ 0 ] */
121
+ STACK_OF(X509_CRL) *crl; /* [ 1 ] */
122
+ STACK_OF(PKCS7_SIGNER_INFO) *signer_info;
123
+ struct pkcs7_st *contents;
124
+ } PKCS7_SIGNED;
125
+ /*
126
+ * The above structure is very very similar to PKCS7_SIGN_ENVELOPE. How about
127
+ * merging the two
128
+ */
129
+
130
+ typedef struct pkcs7_enc_content_st {
131
+ ASN1_OBJECT *content_type;
132
+ X509_ALGOR *algorithm;
133
+ ASN1_OCTET_STRING *enc_data; /* [ 0 ] */
134
+ const EVP_CIPHER *cipher;
135
+ } PKCS7_ENC_CONTENT;
136
+
137
+ typedef struct pkcs7_enveloped_st {
138
+ ASN1_INTEGER *version; /* version 0 */
139
+ STACK_OF(PKCS7_RECIP_INFO) *recipientinfo;
140
+ PKCS7_ENC_CONTENT *enc_data;
141
+ } PKCS7_ENVELOPE;
142
+
143
+ typedef struct pkcs7_signedandenveloped_st {
144
+ ASN1_INTEGER *version; /* version 1 */
145
+ STACK_OF(X509_ALGOR) *md_algs; /* md used */
146
+ STACK_OF(X509) *cert; /* [ 0 ] */
147
+ STACK_OF(X509_CRL) *crl; /* [ 1 ] */
148
+ STACK_OF(PKCS7_SIGNER_INFO) *signer_info;
149
+ PKCS7_ENC_CONTENT *enc_data;
150
+ STACK_OF(PKCS7_RECIP_INFO) *recipientinfo;
151
+ } PKCS7_SIGN_ENVELOPE;
152
+
153
+ typedef struct pkcs7_digest_st {
154
+ ASN1_INTEGER *version; /* version 0 */
155
+ X509_ALGOR *md; /* md used */
156
+ struct pkcs7_st *contents;
157
+ ASN1_OCTET_STRING *digest;
158
+ } PKCS7_DIGEST;
159
+
160
+ typedef struct pkcs7_encrypted_st {
161
+ ASN1_INTEGER *version; /* version 0 */
162
+ PKCS7_ENC_CONTENT *enc_data;
163
+ } PKCS7_ENCRYPT;
164
+
165
+ typedef struct pkcs7_st {
166
+ /*
167
+ * The following is non NULL if it contains ASN1 encoding of this
168
+ * structure
169
+ */
170
+ unsigned char *asn1;
171
+ long length;
172
+ # define PKCS7_S_HEADER 0
173
+ # define PKCS7_S_BODY 1
174
+ # define PKCS7_S_TAIL 2
175
+ int state; /* used during processing */
176
+ int detached;
177
+ ASN1_OBJECT *type;
178
+ /* content as defined by the type */
179
+ /*
180
+ * all encryption/message digests are applied to the 'contents', leaving
181
+ * out the 'type' field.
182
+ */
183
+ union {
184
+ char *ptr;
185
+ /* NID_pkcs7_data */
186
+ ASN1_OCTET_STRING *data;
187
+ /* NID_pkcs7_signed */
188
+ PKCS7_SIGNED *sign;
189
+ /* NID_pkcs7_enveloped */
190
+ PKCS7_ENVELOPE *enveloped;
191
+ /* NID_pkcs7_signedAndEnveloped */
192
+ PKCS7_SIGN_ENVELOPE *signed_and_enveloped;
193
+ /* NID_pkcs7_digest */
194
+ PKCS7_DIGEST *digest;
195
+ /* NID_pkcs7_encrypted */
196
+ PKCS7_ENCRYPT *encrypted;
197
+ /* Anything else */
198
+ ASN1_TYPE *other;
199
+ } d;
200
+ } PKCS7;
201
+
202
+ DECLARE_STACK_OF(PKCS7)
203
+ DECLARE_ASN1_SET_OF(PKCS7)
204
+ DECLARE_PKCS12_STACK_OF(PKCS7)
205
+
206
+ # define PKCS7_OP_SET_DETACHED_SIGNATURE 1
207
+ # define PKCS7_OP_GET_DETACHED_SIGNATURE 2
208
+
209
+ # define PKCS7_get_signed_attributes(si) ((si)->auth_attr)
210
+ # define PKCS7_get_attributes(si) ((si)->unauth_attr)
211
+
212
+ # define PKCS7_type_is_signed(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_signed)
213
+ # define PKCS7_type_is_encrypted(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_encrypted)
214
+ # define PKCS7_type_is_enveloped(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_enveloped)
215
+ # define PKCS7_type_is_signedAndEnveloped(a) \
216
+ (OBJ_obj2nid((a)->type) == NID_pkcs7_signedAndEnveloped)
217
+ # define PKCS7_type_is_data(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_data)
218
+ # define PKCS7_type_is_digest(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_digest)
219
+
220
+ # define PKCS7_set_detached(p,v) \
221
+ PKCS7_ctrl(p,PKCS7_OP_SET_DETACHED_SIGNATURE,v,NULL)
222
+ # define PKCS7_get_detached(p) \
223
+ PKCS7_ctrl(p,PKCS7_OP_GET_DETACHED_SIGNATURE,0,NULL)
224
+
225
+ # define PKCS7_is_detached(p7) (PKCS7_type_is_signed(p7) && PKCS7_get_detached(p7))
226
+
227
+ /* S/MIME related flags */
228
+
229
+ # define PKCS7_TEXT 0x1
230
+ # define PKCS7_NOCERTS 0x2
231
+ # define PKCS7_NOSIGS 0x4
232
+ # define PKCS7_NOCHAIN 0x8
233
+ # define PKCS7_NOINTERN 0x10
234
+ # define PKCS7_NOVERIFY 0x20
235
+ # define PKCS7_DETACHED 0x40
236
+ # define PKCS7_BINARY 0x80
237
+ # define PKCS7_NOATTR 0x100
238
+ # define PKCS7_NOSMIMECAP 0x200
239
+ # define PKCS7_NOOLDMIMETYPE 0x400
240
+ # define PKCS7_CRLFEOL 0x800
241
+ # define PKCS7_STREAM 0x1000
242
+ # define PKCS7_NOCRL 0x2000
243
+ # define PKCS7_PARTIAL 0x4000
244
+ # define PKCS7_REUSE_DIGEST 0x8000
245
+
246
+ /* Flags: for compatibility with older code */
247
+
248
+ # define SMIME_TEXT PKCS7_TEXT
249
+ # define SMIME_NOCERTS PKCS7_NOCERTS
250
+ # define SMIME_NOSIGS PKCS7_NOSIGS
251
+ # define SMIME_NOCHAIN PKCS7_NOCHAIN
252
+ # define SMIME_NOINTERN PKCS7_NOINTERN
253
+ # define SMIME_NOVERIFY PKCS7_NOVERIFY
254
+ # define SMIME_DETACHED PKCS7_DETACHED
255
+ # define SMIME_BINARY PKCS7_BINARY
256
+ # define SMIME_NOATTR PKCS7_NOATTR
257
+
258
+ DECLARE_ASN1_FUNCTIONS(PKCS7_ISSUER_AND_SERIAL)
259
+
260
+ int PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data,
261
+ const EVP_MD *type, unsigned char *md,
262
+ unsigned int *len);
263
+ # ifndef OPENSSL_NO_FP_API
264
+ PKCS7 *d2i_PKCS7_fp(FILE *fp, PKCS7 **p7);
265
+ int i2d_PKCS7_fp(FILE *fp, PKCS7 *p7);
266
+ # endif
267
+ PKCS7 *PKCS7_dup(PKCS7 *p7);
268
+ PKCS7 *d2i_PKCS7_bio(BIO *bp, PKCS7 **p7);
269
+ int i2d_PKCS7_bio(BIO *bp, PKCS7 *p7);
270
+ int i2d_PKCS7_bio_stream(BIO *out, PKCS7 *p7, BIO *in, int flags);
271
+ int PEM_write_bio_PKCS7_stream(BIO *out, PKCS7 *p7, BIO *in, int flags);
272
+
273
+ DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNER_INFO)
274
+ DECLARE_ASN1_FUNCTIONS(PKCS7_RECIP_INFO)
275
+ DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNED)
276
+ DECLARE_ASN1_FUNCTIONS(PKCS7_ENC_CONTENT)
277
+ DECLARE_ASN1_FUNCTIONS(PKCS7_ENVELOPE)
278
+ DECLARE_ASN1_FUNCTIONS(PKCS7_SIGN_ENVELOPE)
279
+ DECLARE_ASN1_FUNCTIONS(PKCS7_DIGEST)
280
+ DECLARE_ASN1_FUNCTIONS(PKCS7_ENCRYPT)
281
+ DECLARE_ASN1_FUNCTIONS(PKCS7)
282
+
283
+ DECLARE_ASN1_ITEM(PKCS7_ATTR_SIGN)
284
+ DECLARE_ASN1_ITEM(PKCS7_ATTR_VERIFY)
285
+
286
+ DECLARE_ASN1_NDEF_FUNCTION(PKCS7)
287
+ DECLARE_ASN1_PRINT_FUNCTION(PKCS7)
288
+
289
+ long PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg);
290
+
291
+ int PKCS7_set_type(PKCS7 *p7, int type);
292
+ int PKCS7_set0_type_other(PKCS7 *p7, int type, ASN1_TYPE *other);
293
+ int PKCS7_set_content(PKCS7 *p7, PKCS7 *p7_data);
294
+ int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey,
295
+ const EVP_MD *dgst);
296
+ int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si);
297
+ int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i);
298
+ int PKCS7_add_certificate(PKCS7 *p7, X509 *x509);
299
+ int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509);
300
+ int PKCS7_content_new(PKCS7 *p7, int nid);
301
+ int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx,
302
+ BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si);
303
+ int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si,
304
+ X509 *x509);
305
+
306
+ BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio);
307
+ int PKCS7_dataFinal(PKCS7 *p7, BIO *bio);
308
+ BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert);
309
+
310
+ PKCS7_SIGNER_INFO *PKCS7_add_signature(PKCS7 *p7, X509 *x509,
311
+ EVP_PKEY *pkey, const EVP_MD *dgst);
312
+ X509 *PKCS7_cert_from_signer_info(PKCS7 *p7, PKCS7_SIGNER_INFO *si);
313
+ int PKCS7_set_digest(PKCS7 *p7, const EVP_MD *md);
314
+ STACK_OF(PKCS7_SIGNER_INFO) *PKCS7_get_signer_info(PKCS7 *p7);
315
+
316
+ PKCS7_RECIP_INFO *PKCS7_add_recipient(PKCS7 *p7, X509 *x509);
317
+ void PKCS7_SIGNER_INFO_get0_algs(PKCS7_SIGNER_INFO *si, EVP_PKEY **pk,
318
+ X509_ALGOR **pdig, X509_ALGOR **psig);
319
+ void PKCS7_RECIP_INFO_get0_alg(PKCS7_RECIP_INFO *ri, X509_ALGOR **penc);
320
+ int PKCS7_add_recipient_info(PKCS7 *p7, PKCS7_RECIP_INFO *ri);
321
+ int PKCS7_RECIP_INFO_set(PKCS7_RECIP_INFO *p7i, X509 *x509);
322
+ int PKCS7_set_cipher(PKCS7 *p7, const EVP_CIPHER *cipher);
323
+ int PKCS7_stream(unsigned char ***boundary, PKCS7 *p7);
324
+
325
+ PKCS7_ISSUER_AND_SERIAL *PKCS7_get_issuer_and_serial(PKCS7 *p7, int idx);
326
+ ASN1_OCTET_STRING *PKCS7_digest_from_attributes(STACK_OF(X509_ATTRIBUTE) *sk);
327
+ int PKCS7_add_signed_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int type,
328
+ void *data);
329
+ int PKCS7_add_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int atrtype,
330
+ void *value);
331
+ ASN1_TYPE *PKCS7_get_attribute(PKCS7_SIGNER_INFO *si, int nid);
332
+ ASN1_TYPE *PKCS7_get_signed_attribute(PKCS7_SIGNER_INFO *si, int nid);
333
+ int PKCS7_set_signed_attributes(PKCS7_SIGNER_INFO *p7si,
334
+ STACK_OF(X509_ATTRIBUTE) *sk);
335
+ int PKCS7_set_attributes(PKCS7_SIGNER_INFO *p7si,
336
+ STACK_OF(X509_ATTRIBUTE) *sk);
337
+
338
+ PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs,
339
+ BIO *data, int flags);
340
+
341
+ PKCS7_SIGNER_INFO *PKCS7_sign_add_signer(PKCS7 *p7,
342
+ X509 *signcert, EVP_PKEY *pkey,
343
+ const EVP_MD *md, int flags);
344
+
345
+ int PKCS7_final(PKCS7 *p7, BIO *data, int flags);
346
+ int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store,
347
+ BIO *indata, BIO *out, int flags);
348
+ STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs,
349
+ int flags);
350
+ PKCS7 *PKCS7_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher,
351
+ int flags);
352
+ int PKCS7_decrypt(PKCS7 *p7, EVP_PKEY *pkey, X509 *cert, BIO *data,
353
+ int flags);
354
+
355
+ int PKCS7_add_attrib_smimecap(PKCS7_SIGNER_INFO *si,
356
+ STACK_OF(X509_ALGOR) *cap);
357
+ STACK_OF(X509_ALGOR) *PKCS7_get_smimecap(PKCS7_SIGNER_INFO *si);
358
+ int PKCS7_simple_smimecap(STACK_OF(X509_ALGOR) *sk, int nid, int arg);
359
+
360
+ int PKCS7_add_attrib_content_type(PKCS7_SIGNER_INFO *si, ASN1_OBJECT *coid);
361
+ int PKCS7_add0_attrib_signing_time(PKCS7_SIGNER_INFO *si, ASN1_TIME *t);
362
+ int PKCS7_add1_attrib_digest(PKCS7_SIGNER_INFO *si,
363
+ const unsigned char *md, int mdlen);
364
+
365
+ int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags);
366
+ PKCS7 *SMIME_read_PKCS7(BIO *bio, BIO **bcont);
367
+
368
+ BIO *BIO_new_PKCS7(BIO *out, PKCS7 *p7);
369
+
370
+ /* BEGIN ERROR CODES */
371
+ /*
372
+ * The following lines are auto generated by the script mkerr.pl. Any changes
373
+ * made after this point may be overwritten when the script is next run.
374
+ */
375
+ void ERR_load_PKCS7_strings(void);
376
+
377
+ /* Error codes for the PKCS7 functions. */
378
+
379
+ /* Function codes. */
380
+ # define PKCS7_F_B64_READ_PKCS7 120
381
+ # define PKCS7_F_B64_WRITE_PKCS7 121
382
+ # define PKCS7_F_DO_PKCS7_SIGNED_ATTRIB 136
383
+ # define PKCS7_F_I2D_PKCS7_BIO_STREAM 140
384
+ # define PKCS7_F_PKCS7_ADD0_ATTRIB_SIGNING_TIME 135
385
+ # define PKCS7_F_PKCS7_ADD_ATTRIB_SMIMECAP 118
386
+ # define PKCS7_F_PKCS7_ADD_CERTIFICATE 100
387
+ # define PKCS7_F_PKCS7_ADD_CRL 101
388
+ # define PKCS7_F_PKCS7_ADD_RECIPIENT_INFO 102
389
+ # define PKCS7_F_PKCS7_ADD_SIGNATURE 131
390
+ # define PKCS7_F_PKCS7_ADD_SIGNER 103
391
+ # define PKCS7_F_PKCS7_BIO_ADD_DIGEST 125
392
+ # define PKCS7_F_PKCS7_COPY_EXISTING_DIGEST 138
393
+ # define PKCS7_F_PKCS7_CTRL 104
394
+ # define PKCS7_F_PKCS7_DATADECODE 112
395
+ # define PKCS7_F_PKCS7_DATAFINAL 128
396
+ # define PKCS7_F_PKCS7_DATAINIT 105
397
+ # define PKCS7_F_PKCS7_DATASIGN 106
398
+ # define PKCS7_F_PKCS7_DATAVERIFY 107
399
+ # define PKCS7_F_PKCS7_DECRYPT 114
400
+ # define PKCS7_F_PKCS7_DECRYPT_RINFO 133
401
+ # define PKCS7_F_PKCS7_ENCODE_RINFO 132
402
+ # define PKCS7_F_PKCS7_ENCRYPT 115
403
+ # define PKCS7_F_PKCS7_FINAL 134
404
+ # define PKCS7_F_PKCS7_FIND_DIGEST 127
405
+ # define PKCS7_F_PKCS7_GET0_SIGNERS 124
406
+ # define PKCS7_F_PKCS7_RECIP_INFO_SET 130
407
+ # define PKCS7_F_PKCS7_SET_CIPHER 108
408
+ # define PKCS7_F_PKCS7_SET_CONTENT 109
409
+ # define PKCS7_F_PKCS7_SET_DIGEST 126
410
+ # define PKCS7_F_PKCS7_SET_TYPE 110
411
+ # define PKCS7_F_PKCS7_SIGN 116
412
+ # define PKCS7_F_PKCS7_SIGNATUREVERIFY 113
413
+ # define PKCS7_F_PKCS7_SIGNER_INFO_SET 129
414
+ # define PKCS7_F_PKCS7_SIGNER_INFO_SIGN 139
415
+ # define PKCS7_F_PKCS7_SIGN_ADD_SIGNER 137
416
+ # define PKCS7_F_PKCS7_SIMPLE_SMIMECAP 119
417
+ # define PKCS7_F_PKCS7_VERIFY 117
418
+ # define PKCS7_F_SMIME_READ_PKCS7 122
419
+ # define PKCS7_F_SMIME_TEXT 123
420
+
421
+ /* Reason codes. */
422
+ # define PKCS7_R_CERTIFICATE_VERIFY_ERROR 117
423
+ # define PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 144
424
+ # define PKCS7_R_CIPHER_NOT_INITIALIZED 116
425
+ # define PKCS7_R_CONTENT_AND_DATA_PRESENT 118
426
+ # define PKCS7_R_CTRL_ERROR 152
427
+ # define PKCS7_R_DECODE_ERROR 130
428
+ # define PKCS7_R_DECRYPTED_KEY_IS_WRONG_LENGTH 100
429
+ # define PKCS7_R_DECRYPT_ERROR 119
430
+ # define PKCS7_R_DIGEST_FAILURE 101
431
+ # define PKCS7_R_ENCRYPTION_CTRL_FAILURE 149
432
+ # define PKCS7_R_ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 150
433
+ # define PKCS7_R_ERROR_ADDING_RECIPIENT 120
434
+ # define PKCS7_R_ERROR_SETTING_CIPHER 121
435
+ # define PKCS7_R_INVALID_MIME_TYPE 131
436
+ # define PKCS7_R_INVALID_NULL_POINTER 143
437
+ # define PKCS7_R_INVALID_SIGNED_DATA_TYPE 155
438
+ # define PKCS7_R_MIME_NO_CONTENT_TYPE 132
439
+ # define PKCS7_R_MIME_PARSE_ERROR 133
440
+ # define PKCS7_R_MIME_SIG_PARSE_ERROR 134
441
+ # define PKCS7_R_MISSING_CERIPEND_INFO 103
442
+ # define PKCS7_R_NO_CONTENT 122
443
+ # define PKCS7_R_NO_CONTENT_TYPE 135
444
+ # define PKCS7_R_NO_DEFAULT_DIGEST 151
445
+ # define PKCS7_R_NO_MATCHING_DIGEST_TYPE_FOUND 154
446
+ # define PKCS7_R_NO_MULTIPART_BODY_FAILURE 136
447
+ # define PKCS7_R_NO_MULTIPART_BOUNDARY 137
448
+ # define PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE 115
449
+ # define PKCS7_R_NO_RECIPIENT_MATCHES_KEY 146
450
+ # define PKCS7_R_NO_SIGNATURES_ON_DATA 123
451
+ # define PKCS7_R_NO_SIGNERS 142
452
+ # define PKCS7_R_NO_SIG_CONTENT_TYPE 138
453
+ # define PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE 104
454
+ # define PKCS7_R_PKCS7_ADD_SIGNATURE_ERROR 124
455
+ # define PKCS7_R_PKCS7_ADD_SIGNER_ERROR 153
456
+ # define PKCS7_R_PKCS7_DATAFINAL 126
457
+ # define PKCS7_R_PKCS7_DATAFINAL_ERROR 125
458
+ # define PKCS7_R_PKCS7_DATASIGN 145
459
+ # define PKCS7_R_PKCS7_PARSE_ERROR 139
460
+ # define PKCS7_R_PKCS7_SIG_PARSE_ERROR 140
461
+ # define PKCS7_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 127
462
+ # define PKCS7_R_SIGNATURE_FAILURE 105
463
+ # define PKCS7_R_SIGNER_CERTIFICATE_NOT_FOUND 128
464
+ # define PKCS7_R_SIGNING_CTRL_FAILURE 147
465
+ # define PKCS7_R_SIGNING_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 148
466
+ # define PKCS7_R_SIG_INVALID_MIME_TYPE 141
467
+ # define PKCS7_R_SMIME_TEXT_ERROR 129
468
+ # define PKCS7_R_UNABLE_TO_FIND_CERTIFICATE 106
469
+ # define PKCS7_R_UNABLE_TO_FIND_MEM_BIO 107
470
+ # define PKCS7_R_UNABLE_TO_FIND_MESSAGE_DIGEST 108
471
+ # define PKCS7_R_UNKNOWN_DIGEST_TYPE 109
472
+ # define PKCS7_R_UNKNOWN_OPERATION 110
473
+ # define PKCS7_R_UNSUPPORTED_CIPHER_TYPE 111
474
+ # define PKCS7_R_UNSUPPORTED_CONTENT_TYPE 112
475
+ # define PKCS7_R_WRONG_CONTENT_TYPE 113
476
+ # define PKCS7_R_WRONG_PKCS7_TYPE 114
477
+
478
+ #ifdef __cplusplus
479
+ }
480
+ #endif
481
+ #endif