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