openssl_rsa_pss_verify 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. data/.gitignore +5 -0
  2. data/.rspec +2 -0
  3. data/.ruby-gemset +1 -0
  4. data/.ruby-version +1 -0
  5. data/Gemfile +4 -0
  6. data/Gemfile.lock +35 -0
  7. data/README +1 -0
  8. data/Rakefile +4 -0
  9. data/ext/openssl_rsa_pss_verify/extconf.rb +15 -0
  10. data/ext/openssl_rsa_pss_verify/openssl_rsa_pss_verify_ext.c +56 -0
  11. data/lib/openssl_rsa_pss_verify/version.rb +3 -0
  12. data/lib/openssl_rsa_pss_verify.rb +2 -0
  13. data/openssl_rsa_pss_verify.gemspec +26 -0
  14. data/tasks/compile.rake +12 -0
  15. data/tasks/rspec.rake +12 -0
  16. data/vendor/openssl/include/openssl/aes.h +147 -0
  17. data/vendor/openssl/include/openssl/asn1.h +1404 -0
  18. data/vendor/openssl/include/openssl/asn1_mac.h +578 -0
  19. data/vendor/openssl/include/openssl/asn1t.h +960 -0
  20. data/vendor/openssl/include/openssl/bio.h +847 -0
  21. data/vendor/openssl/include/openssl/blowfish.h +129 -0
  22. data/vendor/openssl/include/openssl/bn.h +891 -0
  23. data/vendor/openssl/include/openssl/buffer.h +119 -0
  24. data/vendor/openssl/include/openssl/camellia.h +130 -0
  25. data/vendor/openssl/include/openssl/cast.h +107 -0
  26. data/vendor/openssl/include/openssl/cmac.h +82 -0
  27. data/vendor/openssl/include/openssl/cms.h +501 -0
  28. data/vendor/openssl/include/openssl/comp.h +80 -0
  29. data/vendor/openssl/include/openssl/conf.h +263 -0
  30. data/vendor/openssl/include/openssl/conf_api.h +89 -0
  31. data/vendor/openssl/include/openssl/crypto.h +611 -0
  32. data/vendor/openssl/include/openssl/des.h +248 -0
  33. data/vendor/openssl/include/openssl/des_old.h +446 -0
  34. data/vendor/openssl/include/openssl/dh.h +280 -0
  35. data/vendor/openssl/include/openssl/dsa.h +327 -0
  36. data/vendor/openssl/include/openssl/dso.h +409 -0
  37. data/vendor/openssl/include/openssl/dtls1.h +287 -0
  38. data/vendor/openssl/include/openssl/e_os2.h +315 -0
  39. data/vendor/openssl/include/openssl/ebcdic.h +19 -0
  40. data/vendor/openssl/include/openssl/ec.h +1167 -0
  41. data/vendor/openssl/include/openssl/ecdh.h +125 -0
  42. data/vendor/openssl/include/openssl/ecdsa.h +260 -0
  43. data/vendor/openssl/include/openssl/engine.h +842 -0
  44. data/vendor/openssl/include/openssl/err.h +386 -0
  45. data/vendor/openssl/include/openssl/evp.h +1409 -0
  46. data/vendor/openssl/include/openssl/hmac.h +110 -0
  47. data/vendor/openssl/include/openssl/idea.h +103 -0
  48. data/vendor/openssl/include/openssl/krb5_asn.h +256 -0
  49. data/vendor/openssl/include/openssl/kssl.h +183 -0
  50. data/vendor/openssl/include/openssl/lhash.h +241 -0
  51. data/vendor/openssl/include/openssl/md4.h +120 -0
  52. data/vendor/openssl/include/openssl/md5.h +120 -0
  53. data/vendor/openssl/include/openssl/mdc2.h +98 -0
  54. data/vendor/openssl/include/openssl/modes.h +135 -0
  55. data/vendor/openssl/include/openssl/obj_mac.h +4032 -0
  56. data/vendor/openssl/include/openssl/objects.h +1138 -0
  57. data/vendor/openssl/include/openssl/ocsp.h +623 -0
  58. data/vendor/openssl/include/openssl/opensslconf.h +234 -0
  59. data/vendor/openssl/include/openssl/opensslv.h +89 -0
  60. data/vendor/openssl/include/openssl/ossl_typ.h +202 -0
  61. data/vendor/openssl/include/openssl/pem.h +641 -0
  62. data/vendor/openssl/include/openssl/pem2.h +70 -0
  63. data/vendor/openssl/include/openssl/pkcs12.h +331 -0
  64. data/vendor/openssl/include/openssl/pkcs7.h +499 -0
  65. data/vendor/openssl/include/openssl/pqueue.h +94 -0
  66. data/vendor/openssl/include/openssl/rand.h +149 -0
  67. data/vendor/openssl/include/openssl/rc2.h +103 -0
  68. data/vendor/openssl/include/openssl/rc4.h +90 -0
  69. data/vendor/openssl/include/openssl/ripemd.h +107 -0
  70. data/vendor/openssl/include/openssl/rsa.h +582 -0
  71. data/vendor/openssl/include/openssl/safestack.h +2663 -0
  72. data/vendor/openssl/include/openssl/seed.h +139 -0
  73. data/vendor/openssl/include/openssl/sha.h +214 -0
  74. data/vendor/openssl/include/openssl/srp.h +172 -0
  75. data/vendor/openssl/include/openssl/srtp.h +145 -0
  76. data/vendor/openssl/include/openssl/ssl.h +2579 -0
  77. data/vendor/openssl/include/openssl/ssl2.h +272 -0
  78. data/vendor/openssl/include/openssl/ssl23.h +83 -0
  79. data/vendor/openssl/include/openssl/ssl3.h +684 -0
  80. data/vendor/openssl/include/openssl/stack.h +108 -0
  81. data/vendor/openssl/include/openssl/symhacks.h +475 -0
  82. data/vendor/openssl/include/openssl/tls1.h +735 -0
  83. data/vendor/openssl/include/openssl/ts.h +858 -0
  84. data/vendor/openssl/include/openssl/txt_db.h +112 -0
  85. data/vendor/openssl/include/openssl/ui.h +383 -0
  86. data/vendor/openssl/include/openssl/ui_compat.h +83 -0
  87. data/vendor/openssl/include/openssl/whrlpool.h +41 -0
  88. data/vendor/openssl/include/openssl/x509.h +1297 -0
  89. data/vendor/openssl/include/openssl/x509_vfy.h +567 -0
  90. data/vendor/openssl/include/openssl/x509v3.h +1007 -0
  91. data/vendor/openssl/lib/engines/lib4758cca.so +0 -0
  92. data/vendor/openssl/lib/engines/libaep.so +0 -0
  93. data/vendor/openssl/lib/engines/libatalla.so +0 -0
  94. data/vendor/openssl/lib/engines/libcapi.so +0 -0
  95. data/vendor/openssl/lib/engines/libchil.so +0 -0
  96. data/vendor/openssl/lib/engines/libcswift.so +0 -0
  97. data/vendor/openssl/lib/engines/libgmp.so +0 -0
  98. data/vendor/openssl/lib/engines/libgost.so +0 -0
  99. data/vendor/openssl/lib/engines/libnuron.so +0 -0
  100. data/vendor/openssl/lib/engines/libpadlock.so +0 -0
  101. data/vendor/openssl/lib/engines/libsureware.so +0 -0
  102. data/vendor/openssl/lib/engines/libubsec.so +0 -0
  103. data/vendor/openssl/lib/libcrypto.a +0 -0
  104. data/vendor/openssl/lib/libcrypto.so +0 -0
  105. data/vendor/openssl/lib/libcrypto.so.1.0.0 +0 -0
  106. data/vendor/openssl/lib/libssl.a +0 -0
  107. data/vendor/openssl/lib/libssl.so +0 -0
  108. data/vendor/openssl/lib/libssl.so.1.0.0 +0 -0
  109. data/vendor/openssl/lib/pkgconfig/libcrypto.pc +12 -0
  110. data/vendor/openssl/lib/pkgconfig/libssl.pc +12 -0
  111. data/vendor/openssl/lib/pkgconfig/openssl.pc +12 -0
  112. metadata +208 -0
@@ -0,0 +1,499 @@
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
+ {
88
+ X509_NAME *issuer;
89
+ ASN1_INTEGER *serial;
90
+ } PKCS7_ISSUER_AND_SERIAL;
91
+
92
+ typedef struct pkcs7_signer_info_st
93
+ {
94
+ ASN1_INTEGER *version; /* version 1 */
95
+ PKCS7_ISSUER_AND_SERIAL *issuer_and_serial;
96
+ X509_ALGOR *digest_alg;
97
+ STACK_OF(X509_ATTRIBUTE) *auth_attr; /* [ 0 ] */
98
+ X509_ALGOR *digest_enc_alg;
99
+ ASN1_OCTET_STRING *enc_digest;
100
+ STACK_OF(X509_ATTRIBUTE) *unauth_attr; /* [ 1 ] */
101
+
102
+ /* The private key to sign with */
103
+ EVP_PKEY *pkey;
104
+ } PKCS7_SIGNER_INFO;
105
+
106
+ DECLARE_STACK_OF(PKCS7_SIGNER_INFO)
107
+ DECLARE_ASN1_SET_OF(PKCS7_SIGNER_INFO)
108
+
109
+ typedef struct pkcs7_recip_info_st
110
+ {
111
+ ASN1_INTEGER *version; /* version 0 */
112
+ PKCS7_ISSUER_AND_SERIAL *issuer_and_serial;
113
+ X509_ALGOR *key_enc_algor;
114
+ ASN1_OCTET_STRING *enc_key;
115
+ X509 *cert; /* get the pub-key from this */
116
+ } PKCS7_RECIP_INFO;
117
+
118
+ DECLARE_STACK_OF(PKCS7_RECIP_INFO)
119
+ DECLARE_ASN1_SET_OF(PKCS7_RECIP_INFO)
120
+
121
+ typedef struct pkcs7_signed_st
122
+ {
123
+ ASN1_INTEGER *version; /* version 1 */
124
+ STACK_OF(X509_ALGOR) *md_algs; /* md used */
125
+ STACK_OF(X509) *cert; /* [ 0 ] */
126
+ STACK_OF(X509_CRL) *crl; /* [ 1 ] */
127
+ STACK_OF(PKCS7_SIGNER_INFO) *signer_info;
128
+
129
+ struct pkcs7_st *contents;
130
+ } PKCS7_SIGNED;
131
+ /* The above structure is very very similar to PKCS7_SIGN_ENVELOPE.
132
+ * How about merging the two */
133
+
134
+ typedef struct pkcs7_enc_content_st
135
+ {
136
+ ASN1_OBJECT *content_type;
137
+ X509_ALGOR *algorithm;
138
+ ASN1_OCTET_STRING *enc_data; /* [ 0 ] */
139
+ const EVP_CIPHER *cipher;
140
+ } PKCS7_ENC_CONTENT;
141
+
142
+ typedef struct pkcs7_enveloped_st
143
+ {
144
+ ASN1_INTEGER *version; /* version 0 */
145
+ STACK_OF(PKCS7_RECIP_INFO) *recipientinfo;
146
+ PKCS7_ENC_CONTENT *enc_data;
147
+ } PKCS7_ENVELOPE;
148
+
149
+ typedef struct pkcs7_signedandenveloped_st
150
+ {
151
+ ASN1_INTEGER *version; /* version 1 */
152
+ STACK_OF(X509_ALGOR) *md_algs; /* md used */
153
+ STACK_OF(X509) *cert; /* [ 0 ] */
154
+ STACK_OF(X509_CRL) *crl; /* [ 1 ] */
155
+ STACK_OF(PKCS7_SIGNER_INFO) *signer_info;
156
+
157
+ PKCS7_ENC_CONTENT *enc_data;
158
+ STACK_OF(PKCS7_RECIP_INFO) *recipientinfo;
159
+ } PKCS7_SIGN_ENVELOPE;
160
+
161
+ typedef struct pkcs7_digest_st
162
+ {
163
+ ASN1_INTEGER *version; /* version 0 */
164
+ X509_ALGOR *md; /* md used */
165
+ struct pkcs7_st *contents;
166
+ ASN1_OCTET_STRING *digest;
167
+ } PKCS7_DIGEST;
168
+
169
+ typedef struct pkcs7_encrypted_st
170
+ {
171
+ ASN1_INTEGER *version; /* version 0 */
172
+ PKCS7_ENC_CONTENT *enc_data;
173
+ } PKCS7_ENCRYPT;
174
+
175
+ typedef struct pkcs7_st
176
+ {
177
+ /* The following is non NULL if it contains ASN1 encoding of
178
+ * this structure */
179
+ unsigned char *asn1;
180
+ long length;
181
+
182
+ #define PKCS7_S_HEADER 0
183
+ #define PKCS7_S_BODY 1
184
+ #define PKCS7_S_TAIL 2
185
+ int state; /* used during processing */
186
+
187
+ int detached;
188
+
189
+ ASN1_OBJECT *type;
190
+ /* content as defined by the type */
191
+ /* all encryption/message digests are applied to the 'contents',
192
+ * leaving out the 'type' field. */
193
+ union {
194
+ char *ptr;
195
+
196
+ /* NID_pkcs7_data */
197
+ ASN1_OCTET_STRING *data;
198
+
199
+ /* NID_pkcs7_signed */
200
+ PKCS7_SIGNED *sign;
201
+
202
+ /* NID_pkcs7_enveloped */
203
+ PKCS7_ENVELOPE *enveloped;
204
+
205
+ /* NID_pkcs7_signedAndEnveloped */
206
+ PKCS7_SIGN_ENVELOPE *signed_and_enveloped;
207
+
208
+ /* NID_pkcs7_digest */
209
+ PKCS7_DIGEST *digest;
210
+
211
+ /* NID_pkcs7_encrypted */
212
+ PKCS7_ENCRYPT *encrypted;
213
+
214
+ /* Anything else */
215
+ ASN1_TYPE *other;
216
+ } d;
217
+ } PKCS7;
218
+
219
+ DECLARE_STACK_OF(PKCS7)
220
+ DECLARE_ASN1_SET_OF(PKCS7)
221
+ DECLARE_PKCS12_STACK_OF(PKCS7)
222
+
223
+ #define PKCS7_OP_SET_DETACHED_SIGNATURE 1
224
+ #define PKCS7_OP_GET_DETACHED_SIGNATURE 2
225
+
226
+ #define PKCS7_get_signed_attributes(si) ((si)->auth_attr)
227
+ #define PKCS7_get_attributes(si) ((si)->unauth_attr)
228
+
229
+ #define PKCS7_type_is_signed(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_signed)
230
+ #define PKCS7_type_is_encrypted(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_encrypted)
231
+ #define PKCS7_type_is_enveloped(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_enveloped)
232
+ #define PKCS7_type_is_signedAndEnveloped(a) \
233
+ (OBJ_obj2nid((a)->type) == NID_pkcs7_signedAndEnveloped)
234
+ #define PKCS7_type_is_data(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_data)
235
+ #define PKCS7_type_is_digest(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_digest)
236
+ #define PKCS7_type_is_encrypted(a) \
237
+ (OBJ_obj2nid((a)->type) == NID_pkcs7_encrypted)
238
+
239
+ #define PKCS7_type_is_digest(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_digest)
240
+
241
+ #define PKCS7_set_detached(p,v) \
242
+ PKCS7_ctrl(p,PKCS7_OP_SET_DETACHED_SIGNATURE,v,NULL)
243
+ #define PKCS7_get_detached(p) \
244
+ PKCS7_ctrl(p,PKCS7_OP_GET_DETACHED_SIGNATURE,0,NULL)
245
+
246
+ #define PKCS7_is_detached(p7) (PKCS7_type_is_signed(p7) && PKCS7_get_detached(p7))
247
+
248
+ /* S/MIME related flags */
249
+
250
+ #define PKCS7_TEXT 0x1
251
+ #define PKCS7_NOCERTS 0x2
252
+ #define PKCS7_NOSIGS 0x4
253
+ #define PKCS7_NOCHAIN 0x8
254
+ #define PKCS7_NOINTERN 0x10
255
+ #define PKCS7_NOVERIFY 0x20
256
+ #define PKCS7_DETACHED 0x40
257
+ #define PKCS7_BINARY 0x80
258
+ #define PKCS7_NOATTR 0x100
259
+ #define PKCS7_NOSMIMECAP 0x200
260
+ #define PKCS7_NOOLDMIMETYPE 0x400
261
+ #define PKCS7_CRLFEOL 0x800
262
+ #define PKCS7_STREAM 0x1000
263
+ #define PKCS7_NOCRL 0x2000
264
+ #define PKCS7_PARTIAL 0x4000
265
+ #define PKCS7_REUSE_DIGEST 0x8000
266
+
267
+ /* Flags: for compatibility with older code */
268
+
269
+ #define SMIME_TEXT PKCS7_TEXT
270
+ #define SMIME_NOCERTS PKCS7_NOCERTS
271
+ #define SMIME_NOSIGS PKCS7_NOSIGS
272
+ #define SMIME_NOCHAIN PKCS7_NOCHAIN
273
+ #define SMIME_NOINTERN PKCS7_NOINTERN
274
+ #define SMIME_NOVERIFY PKCS7_NOVERIFY
275
+ #define SMIME_DETACHED PKCS7_DETACHED
276
+ #define SMIME_BINARY PKCS7_BINARY
277
+ #define SMIME_NOATTR PKCS7_NOATTR
278
+
279
+ DECLARE_ASN1_FUNCTIONS(PKCS7_ISSUER_AND_SERIAL)
280
+
281
+ int PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data,const EVP_MD *type,
282
+ unsigned char *md,unsigned int *len);
283
+ #ifndef OPENSSL_NO_FP_API
284
+ PKCS7 *d2i_PKCS7_fp(FILE *fp,PKCS7 **p7);
285
+ int i2d_PKCS7_fp(FILE *fp,PKCS7 *p7);
286
+ #endif
287
+ PKCS7 *PKCS7_dup(PKCS7 *p7);
288
+ PKCS7 *d2i_PKCS7_bio(BIO *bp,PKCS7 **p7);
289
+ int i2d_PKCS7_bio(BIO *bp,PKCS7 *p7);
290
+ int i2d_PKCS7_bio_stream(BIO *out, PKCS7 *p7, BIO *in, int flags);
291
+ int PEM_write_bio_PKCS7_stream(BIO *out, PKCS7 *p7, BIO *in, int flags);
292
+
293
+ DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNER_INFO)
294
+ DECLARE_ASN1_FUNCTIONS(PKCS7_RECIP_INFO)
295
+ DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNED)
296
+ DECLARE_ASN1_FUNCTIONS(PKCS7_ENC_CONTENT)
297
+ DECLARE_ASN1_FUNCTIONS(PKCS7_ENVELOPE)
298
+ DECLARE_ASN1_FUNCTIONS(PKCS7_SIGN_ENVELOPE)
299
+ DECLARE_ASN1_FUNCTIONS(PKCS7_DIGEST)
300
+ DECLARE_ASN1_FUNCTIONS(PKCS7_ENCRYPT)
301
+ DECLARE_ASN1_FUNCTIONS(PKCS7)
302
+
303
+ DECLARE_ASN1_ITEM(PKCS7_ATTR_SIGN)
304
+ DECLARE_ASN1_ITEM(PKCS7_ATTR_VERIFY)
305
+
306
+ DECLARE_ASN1_NDEF_FUNCTION(PKCS7)
307
+ DECLARE_ASN1_PRINT_FUNCTION(PKCS7)
308
+
309
+ long PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg);
310
+
311
+ int PKCS7_set_type(PKCS7 *p7, int type);
312
+ int PKCS7_set0_type_other(PKCS7 *p7, int type, ASN1_TYPE *other);
313
+ int PKCS7_set_content(PKCS7 *p7, PKCS7 *p7_data);
314
+ int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey,
315
+ const EVP_MD *dgst);
316
+ int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si);
317
+ int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i);
318
+ int PKCS7_add_certificate(PKCS7 *p7, X509 *x509);
319
+ int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509);
320
+ int PKCS7_content_new(PKCS7 *p7, int nid);
321
+ int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx,
322
+ BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si);
323
+ int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si,
324
+ X509 *x509);
325
+
326
+ BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio);
327
+ int PKCS7_dataFinal(PKCS7 *p7, BIO *bio);
328
+ BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert);
329
+
330
+
331
+ PKCS7_SIGNER_INFO *PKCS7_add_signature(PKCS7 *p7, X509 *x509,
332
+ EVP_PKEY *pkey, const EVP_MD *dgst);
333
+ X509 *PKCS7_cert_from_signer_info(PKCS7 *p7, PKCS7_SIGNER_INFO *si);
334
+ int PKCS7_set_digest(PKCS7 *p7, const EVP_MD *md);
335
+ STACK_OF(PKCS7_SIGNER_INFO) *PKCS7_get_signer_info(PKCS7 *p7);
336
+
337
+ PKCS7_RECIP_INFO *PKCS7_add_recipient(PKCS7 *p7, X509 *x509);
338
+ void PKCS7_SIGNER_INFO_get0_algs(PKCS7_SIGNER_INFO *si, EVP_PKEY **pk,
339
+ X509_ALGOR **pdig, X509_ALGOR **psig);
340
+ void PKCS7_RECIP_INFO_get0_alg(PKCS7_RECIP_INFO *ri, X509_ALGOR **penc);
341
+ int PKCS7_add_recipient_info(PKCS7 *p7, PKCS7_RECIP_INFO *ri);
342
+ int PKCS7_RECIP_INFO_set(PKCS7_RECIP_INFO *p7i, X509 *x509);
343
+ int PKCS7_set_cipher(PKCS7 *p7, const EVP_CIPHER *cipher);
344
+ int PKCS7_stream(unsigned char ***boundary, PKCS7 *p7);
345
+
346
+ PKCS7_ISSUER_AND_SERIAL *PKCS7_get_issuer_and_serial(PKCS7 *p7, int idx);
347
+ ASN1_OCTET_STRING *PKCS7_digest_from_attributes(STACK_OF(X509_ATTRIBUTE) *sk);
348
+ int PKCS7_add_signed_attribute(PKCS7_SIGNER_INFO *p7si,int nid,int type,
349
+ void *data);
350
+ int PKCS7_add_attribute (PKCS7_SIGNER_INFO *p7si, int nid, int atrtype,
351
+ void *value);
352
+ ASN1_TYPE *PKCS7_get_attribute(PKCS7_SIGNER_INFO *si, int nid);
353
+ ASN1_TYPE *PKCS7_get_signed_attribute(PKCS7_SIGNER_INFO *si, int nid);
354
+ int PKCS7_set_signed_attributes(PKCS7_SIGNER_INFO *p7si,
355
+ STACK_OF(X509_ATTRIBUTE) *sk);
356
+ int PKCS7_set_attributes(PKCS7_SIGNER_INFO *p7si,STACK_OF(X509_ATTRIBUTE) *sk);
357
+
358
+
359
+ PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs,
360
+ BIO *data, int flags);
361
+
362
+ PKCS7_SIGNER_INFO *PKCS7_sign_add_signer(PKCS7 *p7,
363
+ X509 *signcert, EVP_PKEY *pkey, const EVP_MD *md,
364
+ int flags);
365
+
366
+ int PKCS7_final(PKCS7 *p7, BIO *data, int flags);
367
+ int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store,
368
+ BIO *indata, BIO *out, int flags);
369
+ STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, int flags);
370
+ PKCS7 *PKCS7_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher,
371
+ int flags);
372
+ int PKCS7_decrypt(PKCS7 *p7, EVP_PKEY *pkey, X509 *cert, BIO *data, int flags);
373
+
374
+ int PKCS7_add_attrib_smimecap(PKCS7_SIGNER_INFO *si,
375
+ STACK_OF(X509_ALGOR) *cap);
376
+ STACK_OF(X509_ALGOR) *PKCS7_get_smimecap(PKCS7_SIGNER_INFO *si);
377
+ int PKCS7_simple_smimecap(STACK_OF(X509_ALGOR) *sk, int nid, int arg);
378
+
379
+ int PKCS7_add_attrib_content_type(PKCS7_SIGNER_INFO *si, ASN1_OBJECT *coid);
380
+ int PKCS7_add0_attrib_signing_time(PKCS7_SIGNER_INFO *si, ASN1_TIME *t);
381
+ int PKCS7_add1_attrib_digest(PKCS7_SIGNER_INFO *si,
382
+ const unsigned char *md, int mdlen);
383
+
384
+ int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags);
385
+ PKCS7 *SMIME_read_PKCS7(BIO *bio, BIO **bcont);
386
+
387
+ BIO *BIO_new_PKCS7(BIO *out, PKCS7 *p7);
388
+
389
+
390
+ /* BEGIN ERROR CODES */
391
+ /* The following lines are auto generated by the script mkerr.pl. Any changes
392
+ * made after this point may be overwritten when the script is next run.
393
+ */
394
+ void ERR_load_PKCS7_strings(void);
395
+
396
+ /* Error codes for the PKCS7 functions. */
397
+
398
+ /* Function codes. */
399
+ #define PKCS7_F_B64_READ_PKCS7 120
400
+ #define PKCS7_F_B64_WRITE_PKCS7 121
401
+ #define PKCS7_F_DO_PKCS7_SIGNED_ATTRIB 136
402
+ #define PKCS7_F_I2D_PKCS7_BIO_STREAM 140
403
+ #define PKCS7_F_PKCS7_ADD0_ATTRIB_SIGNING_TIME 135
404
+ #define PKCS7_F_PKCS7_ADD_ATTRIB_SMIMECAP 118
405
+ #define PKCS7_F_PKCS7_ADD_CERTIFICATE 100
406
+ #define PKCS7_F_PKCS7_ADD_CRL 101
407
+ #define PKCS7_F_PKCS7_ADD_RECIPIENT_INFO 102
408
+ #define PKCS7_F_PKCS7_ADD_SIGNATURE 131
409
+ #define PKCS7_F_PKCS7_ADD_SIGNER 103
410
+ #define PKCS7_F_PKCS7_BIO_ADD_DIGEST 125
411
+ #define PKCS7_F_PKCS7_COPY_EXISTING_DIGEST 138
412
+ #define PKCS7_F_PKCS7_CTRL 104
413
+ #define PKCS7_F_PKCS7_DATADECODE 112
414
+ #define PKCS7_F_PKCS7_DATAFINAL 128
415
+ #define PKCS7_F_PKCS7_DATAINIT 105
416
+ #define PKCS7_F_PKCS7_DATASIGN 106
417
+ #define PKCS7_F_PKCS7_DATAVERIFY 107
418
+ #define PKCS7_F_PKCS7_DECRYPT 114
419
+ #define PKCS7_F_PKCS7_DECRYPT_RINFO 133
420
+ #define PKCS7_F_PKCS7_ENCODE_RINFO 132
421
+ #define PKCS7_F_PKCS7_ENCRYPT 115
422
+ #define PKCS7_F_PKCS7_FINAL 134
423
+ #define PKCS7_F_PKCS7_FIND_DIGEST 127
424
+ #define PKCS7_F_PKCS7_GET0_SIGNERS 124
425
+ #define PKCS7_F_PKCS7_RECIP_INFO_SET 130
426
+ #define PKCS7_F_PKCS7_SET_CIPHER 108
427
+ #define PKCS7_F_PKCS7_SET_CONTENT 109
428
+ #define PKCS7_F_PKCS7_SET_DIGEST 126
429
+ #define PKCS7_F_PKCS7_SET_TYPE 110
430
+ #define PKCS7_F_PKCS7_SIGN 116
431
+ #define PKCS7_F_PKCS7_SIGNATUREVERIFY 113
432
+ #define PKCS7_F_PKCS7_SIGNER_INFO_SET 129
433
+ #define PKCS7_F_PKCS7_SIGNER_INFO_SIGN 139
434
+ #define PKCS7_F_PKCS7_SIGN_ADD_SIGNER 137
435
+ #define PKCS7_F_PKCS7_SIMPLE_SMIMECAP 119
436
+ #define PKCS7_F_PKCS7_VERIFY 117
437
+ #define PKCS7_F_SMIME_READ_PKCS7 122
438
+ #define PKCS7_F_SMIME_TEXT 123
439
+
440
+ /* Reason codes. */
441
+ #define PKCS7_R_CERTIFICATE_VERIFY_ERROR 117
442
+ #define PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 144
443
+ #define PKCS7_R_CIPHER_NOT_INITIALIZED 116
444
+ #define PKCS7_R_CONTENT_AND_DATA_PRESENT 118
445
+ #define PKCS7_R_CTRL_ERROR 152
446
+ #define PKCS7_R_DECODE_ERROR 130
447
+ #define PKCS7_R_DECRYPTED_KEY_IS_WRONG_LENGTH 100
448
+ #define PKCS7_R_DECRYPT_ERROR 119
449
+ #define PKCS7_R_DIGEST_FAILURE 101
450
+ #define PKCS7_R_ENCRYPTION_CTRL_FAILURE 149
451
+ #define PKCS7_R_ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 150
452
+ #define PKCS7_R_ERROR_ADDING_RECIPIENT 120
453
+ #define PKCS7_R_ERROR_SETTING_CIPHER 121
454
+ #define PKCS7_R_INVALID_MIME_TYPE 131
455
+ #define PKCS7_R_INVALID_NULL_POINTER 143
456
+ #define PKCS7_R_MIME_NO_CONTENT_TYPE 132
457
+ #define PKCS7_R_MIME_PARSE_ERROR 133
458
+ #define PKCS7_R_MIME_SIG_PARSE_ERROR 134
459
+ #define PKCS7_R_MISSING_CERIPEND_INFO 103
460
+ #define PKCS7_R_NO_CONTENT 122
461
+ #define PKCS7_R_NO_CONTENT_TYPE 135
462
+ #define PKCS7_R_NO_DEFAULT_DIGEST 151
463
+ #define PKCS7_R_NO_MATCHING_DIGEST_TYPE_FOUND 154
464
+ #define PKCS7_R_NO_MULTIPART_BODY_FAILURE 136
465
+ #define PKCS7_R_NO_MULTIPART_BOUNDARY 137
466
+ #define PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE 115
467
+ #define PKCS7_R_NO_RECIPIENT_MATCHES_KEY 146
468
+ #define PKCS7_R_NO_SIGNATURES_ON_DATA 123
469
+ #define PKCS7_R_NO_SIGNERS 142
470
+ #define PKCS7_R_NO_SIG_CONTENT_TYPE 138
471
+ #define PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE 104
472
+ #define PKCS7_R_PKCS7_ADD_SIGNATURE_ERROR 124
473
+ #define PKCS7_R_PKCS7_ADD_SIGNER_ERROR 153
474
+ #define PKCS7_R_PKCS7_DATAFINAL 126
475
+ #define PKCS7_R_PKCS7_DATAFINAL_ERROR 125
476
+ #define PKCS7_R_PKCS7_DATASIGN 145
477
+ #define PKCS7_R_PKCS7_PARSE_ERROR 139
478
+ #define PKCS7_R_PKCS7_SIG_PARSE_ERROR 140
479
+ #define PKCS7_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 127
480
+ #define PKCS7_R_SIGNATURE_FAILURE 105
481
+ #define PKCS7_R_SIGNER_CERTIFICATE_NOT_FOUND 128
482
+ #define PKCS7_R_SIGNING_CTRL_FAILURE 147
483
+ #define PKCS7_R_SIGNING_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 148
484
+ #define PKCS7_R_SIG_INVALID_MIME_TYPE 141
485
+ #define PKCS7_R_SMIME_TEXT_ERROR 129
486
+ #define PKCS7_R_UNABLE_TO_FIND_CERTIFICATE 106
487
+ #define PKCS7_R_UNABLE_TO_FIND_MEM_BIO 107
488
+ #define PKCS7_R_UNABLE_TO_FIND_MESSAGE_DIGEST 108
489
+ #define PKCS7_R_UNKNOWN_DIGEST_TYPE 109
490
+ #define PKCS7_R_UNKNOWN_OPERATION 110
491
+ #define PKCS7_R_UNSUPPORTED_CIPHER_TYPE 111
492
+ #define PKCS7_R_UNSUPPORTED_CONTENT_TYPE 112
493
+ #define PKCS7_R_WRONG_CONTENT_TYPE 113
494
+ #define PKCS7_R_WRONG_PKCS7_TYPE 114
495
+
496
+ #ifdef __cplusplus
497
+ }
498
+ #endif
499
+ #endif
@@ -0,0 +1,94 @@
1
+ /* crypto/pqueue/pqueue.h */
2
+ /*
3
+ * DTLS implementation written by Nagendra Modadugu
4
+ * (nagendra@cs.stanford.edu) for the OpenSSL project 2005.
5
+ */
6
+ /* ====================================================================
7
+ * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved.
8
+ *
9
+ * Redistribution and use in source and binary forms, with or without
10
+ * modification, are permitted provided that the following conditions
11
+ * are met:
12
+ *
13
+ * 1. Redistributions of source code must retain the above copyright
14
+ * notice, this list of conditions and the following disclaimer.
15
+ *
16
+ * 2. Redistributions in binary form must reproduce the above copyright
17
+ * notice, this list of conditions and the following disclaimer in
18
+ * the documentation and/or other materials provided with the
19
+ * distribution.
20
+ *
21
+ * 3. All advertising materials mentioning features or use of this
22
+ * software must display the following acknowledgment:
23
+ * "This product includes software developed by the OpenSSL Project
24
+ * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
25
+ *
26
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
27
+ * endorse or promote products derived from this software without
28
+ * prior written permission. For written permission, please contact
29
+ * openssl-core@OpenSSL.org.
30
+ *
31
+ * 5. Products derived from this software may not be called "OpenSSL"
32
+ * nor may "OpenSSL" appear in their names without prior written
33
+ * permission of the OpenSSL Project.
34
+ *
35
+ * 6. Redistributions of any form whatsoever must retain the following
36
+ * acknowledgment:
37
+ * "This product includes software developed by the OpenSSL Project
38
+ * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
39
+ *
40
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
41
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
42
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
43
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
44
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
45
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
46
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
47
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
49
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
50
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
51
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
52
+ * ====================================================================
53
+ *
54
+ * This product includes cryptographic software written by Eric Young
55
+ * (eay@cryptsoft.com). This product includes software written by Tim
56
+ * Hudson (tjh@cryptsoft.com).
57
+ *
58
+ */
59
+
60
+ #ifndef HEADER_PQUEUE_H
61
+ #define HEADER_PQUEUE_H
62
+
63
+ #include <stdio.h>
64
+ #include <stdlib.h>
65
+ #include <string.h>
66
+
67
+ typedef struct _pqueue *pqueue;
68
+
69
+ typedef struct _pitem
70
+ {
71
+ unsigned char priority[8]; /* 64-bit value in big-endian encoding */
72
+ void *data;
73
+ struct _pitem *next;
74
+ } pitem;
75
+
76
+ typedef struct _pitem *piterator;
77
+
78
+ pitem *pitem_new(unsigned char *prio64be, void *data);
79
+ void pitem_free(pitem *item);
80
+
81
+ pqueue pqueue_new(void);
82
+ void pqueue_free(pqueue pq);
83
+
84
+ pitem *pqueue_insert(pqueue pq, pitem *item);
85
+ pitem *pqueue_peek(pqueue pq);
86
+ pitem *pqueue_pop(pqueue pq);
87
+ pitem *pqueue_find(pqueue pq, unsigned char *prio64be);
88
+ pitem *pqueue_iterator(pqueue pq);
89
+ pitem *pqueue_next(piterator *iter);
90
+
91
+ void pqueue_print(pqueue pq);
92
+ int pqueue_size(pqueue pq);
93
+
94
+ #endif /* ! HEADER_PQUEUE_H */