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,389 @@
1
+ /* crypto/err/err.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
+ * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved.
60
+ *
61
+ * Redistribution and use in source and binary forms, with or without
62
+ * modification, are permitted provided that the following conditions
63
+ * are met:
64
+ *
65
+ * 1. Redistributions of source code must retain the above copyright
66
+ * notice, this list of conditions and the following disclaimer.
67
+ *
68
+ * 2. Redistributions in binary form must reproduce the above copyright
69
+ * notice, this list of conditions and the following disclaimer in
70
+ * the documentation and/or other materials provided with the
71
+ * distribution.
72
+ *
73
+ * 3. All advertising materials mentioning features or use of this
74
+ * software must display the following acknowledgment:
75
+ * "This product includes software developed by the OpenSSL Project
76
+ * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
77
+ *
78
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
79
+ * endorse or promote products derived from this software without
80
+ * prior written permission. For written permission, please contact
81
+ * openssl-core@openssl.org.
82
+ *
83
+ * 5. Products derived from this software may not be called "OpenSSL"
84
+ * nor may "OpenSSL" appear in their names without prior written
85
+ * permission of the OpenSSL Project.
86
+ *
87
+ * 6. Redistributions of any form whatsoever must retain the following
88
+ * acknowledgment:
89
+ * "This product includes software developed by the OpenSSL Project
90
+ * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
91
+ *
92
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
93
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
94
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
95
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
96
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
97
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
98
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
99
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
100
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
101
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
102
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
103
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
104
+ * ====================================================================
105
+ *
106
+ * This product includes cryptographic software written by Eric Young
107
+ * (eay@cryptsoft.com). This product includes software written by Tim
108
+ * Hudson (tjh@cryptsoft.com).
109
+ *
110
+ */
111
+
112
+ #ifndef HEADER_ERR_H
113
+ # define HEADER_ERR_H
114
+
115
+ # include <openssl/e_os2.h>
116
+
117
+ # ifndef OPENSSL_NO_FP_API
118
+ # include <stdio.h>
119
+ # include <stdlib.h>
120
+ # endif
121
+
122
+ # include <openssl/ossl_typ.h>
123
+ # ifndef OPENSSL_NO_BIO
124
+ # include <openssl/bio.h>
125
+ # endif
126
+ # ifndef OPENSSL_NO_LHASH
127
+ # include <openssl/lhash.h>
128
+ # endif
129
+
130
+ #ifdef __cplusplus
131
+ extern "C" {
132
+ #endif
133
+
134
+ # ifndef OPENSSL_NO_ERR
135
+ # define ERR_PUT_error(a,b,c,d,e) ERR_put_error(a,b,c,d,e)
136
+ # else
137
+ # define ERR_PUT_error(a,b,c,d,e) ERR_put_error(a,b,c,NULL,0)
138
+ # endif
139
+
140
+ # include <errno.h>
141
+
142
+ # define ERR_TXT_MALLOCED 0x01
143
+ # define ERR_TXT_STRING 0x02
144
+
145
+ # define ERR_FLAG_MARK 0x01
146
+
147
+ # define ERR_NUM_ERRORS 16
148
+ typedef struct err_state_st {
149
+ CRYPTO_THREADID tid;
150
+ int err_flags[ERR_NUM_ERRORS];
151
+ unsigned long err_buffer[ERR_NUM_ERRORS];
152
+ char *err_data[ERR_NUM_ERRORS];
153
+ int err_data_flags[ERR_NUM_ERRORS];
154
+ const char *err_file[ERR_NUM_ERRORS];
155
+ int err_line[ERR_NUM_ERRORS];
156
+ int top, bottom;
157
+ } ERR_STATE;
158
+
159
+ /* library */
160
+ # define ERR_LIB_NONE 1
161
+ # define ERR_LIB_SYS 2
162
+ # define ERR_LIB_BN 3
163
+ # define ERR_LIB_RSA 4
164
+ # define ERR_LIB_DH 5
165
+ # define ERR_LIB_EVP 6
166
+ # define ERR_LIB_BUF 7
167
+ # define ERR_LIB_OBJ 8
168
+ # define ERR_LIB_PEM 9
169
+ # define ERR_LIB_DSA 10
170
+ # define ERR_LIB_X509 11
171
+ /* #define ERR_LIB_METH 12 */
172
+ # define ERR_LIB_ASN1 13
173
+ # define ERR_LIB_CONF 14
174
+ # define ERR_LIB_CRYPTO 15
175
+ # define ERR_LIB_EC 16
176
+ # define ERR_LIB_SSL 20
177
+ /* #define ERR_LIB_SSL23 21 */
178
+ /* #define ERR_LIB_SSL2 22 */
179
+ /* #define ERR_LIB_SSL3 23 */
180
+ /* #define ERR_LIB_RSAREF 30 */
181
+ /* #define ERR_LIB_PROXY 31 */
182
+ # define ERR_LIB_BIO 32
183
+ # define ERR_LIB_PKCS7 33
184
+ # define ERR_LIB_X509V3 34
185
+ # define ERR_LIB_PKCS12 35
186
+ # define ERR_LIB_RAND 36
187
+ # define ERR_LIB_DSO 37
188
+ # define ERR_LIB_ENGINE 38
189
+ # define ERR_LIB_OCSP 39
190
+ # define ERR_LIB_UI 40
191
+ # define ERR_LIB_COMP 41
192
+ # define ERR_LIB_ECDSA 42
193
+ # define ERR_LIB_ECDH 43
194
+ # define ERR_LIB_STORE 44
195
+ # define ERR_LIB_FIPS 45
196
+ # define ERR_LIB_CMS 46
197
+ # define ERR_LIB_TS 47
198
+ # define ERR_LIB_HMAC 48
199
+ # define ERR_LIB_JPAKE 49
200
+
201
+ # define ERR_LIB_USER 128
202
+
203
+ # define SYSerr(f,r) ERR_PUT_error(ERR_LIB_SYS,(f),(r),__FILE__,__LINE__)
204
+ # define BNerr(f,r) ERR_PUT_error(ERR_LIB_BN,(f),(r),__FILE__,__LINE__)
205
+ # define RSAerr(f,r) ERR_PUT_error(ERR_LIB_RSA,(f),(r),__FILE__,__LINE__)
206
+ # define DHerr(f,r) ERR_PUT_error(ERR_LIB_DH,(f),(r),__FILE__,__LINE__)
207
+ # define EVPerr(f,r) ERR_PUT_error(ERR_LIB_EVP,(f),(r),__FILE__,__LINE__)
208
+ # define BUFerr(f,r) ERR_PUT_error(ERR_LIB_BUF,(f),(r),__FILE__,__LINE__)
209
+ # define OBJerr(f,r) ERR_PUT_error(ERR_LIB_OBJ,(f),(r),__FILE__,__LINE__)
210
+ # define PEMerr(f,r) ERR_PUT_error(ERR_LIB_PEM,(f),(r),__FILE__,__LINE__)
211
+ # define DSAerr(f,r) ERR_PUT_error(ERR_LIB_DSA,(f),(r),__FILE__,__LINE__)
212
+ # define X509err(f,r) ERR_PUT_error(ERR_LIB_X509,(f),(r),__FILE__,__LINE__)
213
+ # define ASN1err(f,r) ERR_PUT_error(ERR_LIB_ASN1,(f),(r),__FILE__,__LINE__)
214
+ # define CONFerr(f,r) ERR_PUT_error(ERR_LIB_CONF,(f),(r),__FILE__,__LINE__)
215
+ # define CRYPTOerr(f,r) ERR_PUT_error(ERR_LIB_CRYPTO,(f),(r),__FILE__,__LINE__)
216
+ # define ECerr(f,r) ERR_PUT_error(ERR_LIB_EC,(f),(r),__FILE__,__LINE__)
217
+ # define SSLerr(f,r) ERR_PUT_error(ERR_LIB_SSL,(f),(r),__FILE__,__LINE__)
218
+ # define BIOerr(f,r) ERR_PUT_error(ERR_LIB_BIO,(f),(r),__FILE__,__LINE__)
219
+ # define PKCS7err(f,r) ERR_PUT_error(ERR_LIB_PKCS7,(f),(r),__FILE__,__LINE__)
220
+ # define X509V3err(f,r) ERR_PUT_error(ERR_LIB_X509V3,(f),(r),__FILE__,__LINE__)
221
+ # define PKCS12err(f,r) ERR_PUT_error(ERR_LIB_PKCS12,(f),(r),__FILE__,__LINE__)
222
+ # define RANDerr(f,r) ERR_PUT_error(ERR_LIB_RAND,(f),(r),__FILE__,__LINE__)
223
+ # define DSOerr(f,r) ERR_PUT_error(ERR_LIB_DSO,(f),(r),__FILE__,__LINE__)
224
+ # define ENGINEerr(f,r) ERR_PUT_error(ERR_LIB_ENGINE,(f),(r),__FILE__,__LINE__)
225
+ # define OCSPerr(f,r) ERR_PUT_error(ERR_LIB_OCSP,(f),(r),__FILE__,__LINE__)
226
+ # define UIerr(f,r) ERR_PUT_error(ERR_LIB_UI,(f),(r),__FILE__,__LINE__)
227
+ # define COMPerr(f,r) ERR_PUT_error(ERR_LIB_COMP,(f),(r),__FILE__,__LINE__)
228
+ # define ECDSAerr(f,r) ERR_PUT_error(ERR_LIB_ECDSA,(f),(r),__FILE__,__LINE__)
229
+ # define ECDHerr(f,r) ERR_PUT_error(ERR_LIB_ECDH,(f),(r),__FILE__,__LINE__)
230
+ # define STOREerr(f,r) ERR_PUT_error(ERR_LIB_STORE,(f),(r),__FILE__,__LINE__)
231
+ # define FIPSerr(f,r) ERR_PUT_error(ERR_LIB_FIPS,(f),(r),__FILE__,__LINE__)
232
+ # define CMSerr(f,r) ERR_PUT_error(ERR_LIB_CMS,(f),(r),__FILE__,__LINE__)
233
+ # define TSerr(f,r) ERR_PUT_error(ERR_LIB_TS,(f),(r),__FILE__,__LINE__)
234
+ # define HMACerr(f,r) ERR_PUT_error(ERR_LIB_HMAC,(f),(r),__FILE__,__LINE__)
235
+ # define JPAKEerr(f,r) ERR_PUT_error(ERR_LIB_JPAKE,(f),(r),__FILE__,__LINE__)
236
+
237
+ /*
238
+ * Borland C seems too stupid to be able to shift and do longs in the
239
+ * pre-processor :-(
240
+ */
241
+ # define ERR_PACK(l,f,r) (((((unsigned long)l)&0xffL)*0x1000000)| \
242
+ ((((unsigned long)f)&0xfffL)*0x1000)| \
243
+ ((((unsigned long)r)&0xfffL)))
244
+ # define ERR_GET_LIB(l) (int)((((unsigned long)l)>>24L)&0xffL)
245
+ # define ERR_GET_FUNC(l) (int)((((unsigned long)l)>>12L)&0xfffL)
246
+ # define ERR_GET_REASON(l) (int)((l)&0xfffL)
247
+ # define ERR_FATAL_ERROR(l) (int)((l)&ERR_R_FATAL)
248
+
249
+ /* OS functions */
250
+ # define SYS_F_FOPEN 1
251
+ # define SYS_F_CONNECT 2
252
+ # define SYS_F_GETSERVBYNAME 3
253
+ # define SYS_F_SOCKET 4
254
+ # define SYS_F_IOCTLSOCKET 5
255
+ # define SYS_F_BIND 6
256
+ # define SYS_F_LISTEN 7
257
+ # define SYS_F_ACCEPT 8
258
+ # define SYS_F_WSASTARTUP 9/* Winsock stuff */
259
+ # define SYS_F_OPENDIR 10
260
+ # define SYS_F_FREAD 11
261
+
262
+ /* reasons */
263
+ # define ERR_R_SYS_LIB ERR_LIB_SYS/* 2 */
264
+ # define ERR_R_BN_LIB ERR_LIB_BN/* 3 */
265
+ # define ERR_R_RSA_LIB ERR_LIB_RSA/* 4 */
266
+ # define ERR_R_DH_LIB ERR_LIB_DH/* 5 */
267
+ # define ERR_R_EVP_LIB ERR_LIB_EVP/* 6 */
268
+ # define ERR_R_BUF_LIB ERR_LIB_BUF/* 7 */
269
+ # define ERR_R_OBJ_LIB ERR_LIB_OBJ/* 8 */
270
+ # define ERR_R_PEM_LIB ERR_LIB_PEM/* 9 */
271
+ # define ERR_R_DSA_LIB ERR_LIB_DSA/* 10 */
272
+ # define ERR_R_X509_LIB ERR_LIB_X509/* 11 */
273
+ # define ERR_R_ASN1_LIB ERR_LIB_ASN1/* 13 */
274
+ # define ERR_R_CONF_LIB ERR_LIB_CONF/* 14 */
275
+ # define ERR_R_CRYPTO_LIB ERR_LIB_CRYPTO/* 15 */
276
+ # define ERR_R_EC_LIB ERR_LIB_EC/* 16 */
277
+ # define ERR_R_SSL_LIB ERR_LIB_SSL/* 20 */
278
+ # define ERR_R_BIO_LIB ERR_LIB_BIO/* 32 */
279
+ # define ERR_R_PKCS7_LIB ERR_LIB_PKCS7/* 33 */
280
+ # define ERR_R_X509V3_LIB ERR_LIB_X509V3/* 34 */
281
+ # define ERR_R_PKCS12_LIB ERR_LIB_PKCS12/* 35 */
282
+ # define ERR_R_RAND_LIB ERR_LIB_RAND/* 36 */
283
+ # define ERR_R_DSO_LIB ERR_LIB_DSO/* 37 */
284
+ # define ERR_R_ENGINE_LIB ERR_LIB_ENGINE/* 38 */
285
+ # define ERR_R_OCSP_LIB ERR_LIB_OCSP/* 39 */
286
+ # define ERR_R_UI_LIB ERR_LIB_UI/* 40 */
287
+ # define ERR_R_COMP_LIB ERR_LIB_COMP/* 41 */
288
+ # define ERR_R_ECDSA_LIB ERR_LIB_ECDSA/* 42 */
289
+ # define ERR_R_ECDH_LIB ERR_LIB_ECDH/* 43 */
290
+ # define ERR_R_STORE_LIB ERR_LIB_STORE/* 44 */
291
+ # define ERR_R_TS_LIB ERR_LIB_TS/* 45 */
292
+
293
+ # define ERR_R_NESTED_ASN1_ERROR 58
294
+ # define ERR_R_BAD_ASN1_OBJECT_HEADER 59
295
+ # define ERR_R_BAD_GET_ASN1_OBJECT_CALL 60
296
+ # define ERR_R_EXPECTING_AN_ASN1_SEQUENCE 61
297
+ # define ERR_R_ASN1_LENGTH_MISMATCH 62
298
+ # define ERR_R_MISSING_ASN1_EOS 63
299
+
300
+ /* fatal error */
301
+ # define ERR_R_FATAL 64
302
+ # define ERR_R_MALLOC_FAILURE (1|ERR_R_FATAL)
303
+ # define ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED (2|ERR_R_FATAL)
304
+ # define ERR_R_PASSED_NULL_PARAMETER (3|ERR_R_FATAL)
305
+ # define ERR_R_INTERNAL_ERROR (4|ERR_R_FATAL)
306
+ # define ERR_R_DISABLED (5|ERR_R_FATAL)
307
+
308
+ /*
309
+ * 99 is the maximum possible ERR_R_... code, higher values are reserved for
310
+ * the individual libraries
311
+ */
312
+
313
+ typedef struct ERR_string_data_st {
314
+ unsigned long error;
315
+ const char *string;
316
+ } ERR_STRING_DATA;
317
+
318
+ void ERR_put_error(int lib, int func, int reason, const char *file, int line);
319
+ void ERR_set_error_data(char *data, int flags);
320
+
321
+ unsigned long ERR_get_error(void);
322
+ unsigned long ERR_get_error_line(const char **file, int *line);
323
+ unsigned long ERR_get_error_line_data(const char **file, int *line,
324
+ const char **data, int *flags);
325
+ unsigned long ERR_peek_error(void);
326
+ unsigned long ERR_peek_error_line(const char **file, int *line);
327
+ unsigned long ERR_peek_error_line_data(const char **file, int *line,
328
+ const char **data, int *flags);
329
+ unsigned long ERR_peek_last_error(void);
330
+ unsigned long ERR_peek_last_error_line(const char **file, int *line);
331
+ unsigned long ERR_peek_last_error_line_data(const char **file, int *line,
332
+ const char **data, int *flags);
333
+ void ERR_clear_error(void);
334
+ char *ERR_error_string(unsigned long e, char *buf);
335
+ void ERR_error_string_n(unsigned long e, char *buf, size_t len);
336
+ const char *ERR_lib_error_string(unsigned long e);
337
+ const char *ERR_func_error_string(unsigned long e);
338
+ const char *ERR_reason_error_string(unsigned long e);
339
+ void ERR_print_errors_cb(int (*cb) (const char *str, size_t len, void *u),
340
+ void *u);
341
+ # ifndef OPENSSL_NO_FP_API
342
+ void ERR_print_errors_fp(FILE *fp);
343
+ # endif
344
+ # ifndef OPENSSL_NO_BIO
345
+ void ERR_print_errors(BIO *bp);
346
+ # endif
347
+ void ERR_add_error_data(int num, ...);
348
+ void ERR_add_error_vdata(int num, va_list args);
349
+ void ERR_load_strings(int lib, ERR_STRING_DATA str[]);
350
+ void ERR_unload_strings(int lib, ERR_STRING_DATA str[]);
351
+ void ERR_load_ERR_strings(void);
352
+ void ERR_load_crypto_strings(void);
353
+ void ERR_free_strings(void);
354
+
355
+ void ERR_remove_thread_state(const CRYPTO_THREADID *tid);
356
+ # ifndef OPENSSL_NO_DEPRECATED
357
+ void ERR_remove_state(unsigned long pid); /* if zero we look it up */
358
+ # endif
359
+ ERR_STATE *ERR_get_state(void);
360
+
361
+ # ifndef OPENSSL_NO_LHASH
362
+ LHASH_OF(ERR_STRING_DATA) *ERR_get_string_table(void);
363
+ LHASH_OF(ERR_STATE) *ERR_get_err_state_table(void);
364
+ void ERR_release_err_state_table(LHASH_OF(ERR_STATE) **hash);
365
+ # endif
366
+
367
+ int ERR_get_next_error_library(void);
368
+
369
+ int ERR_set_mark(void);
370
+ int ERR_pop_to_mark(void);
371
+
372
+ /* Already defined in ossl_typ.h */
373
+ /* typedef struct st_ERR_FNS ERR_FNS; */
374
+ /*
375
+ * An application can use this function and provide the return value to
376
+ * loaded modules that should use the application's ERR state/functionality
377
+ */
378
+ const ERR_FNS *ERR_get_implementation(void);
379
+ /*
380
+ * A loaded module should call this function prior to any ERR operations
381
+ * using the application's "ERR_FNS".
382
+ */
383
+ int ERR_set_implementation(const ERR_FNS *fns);
384
+
385
+ #ifdef __cplusplus
386
+ }
387
+ #endif
388
+
389
+ #endif
@@ -0,0 +1,1534 @@
1
+ /* crypto/evp/evp.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_ENVELOPE_H
60
+ # define HEADER_ENVELOPE_H
61
+
62
+ # ifdef OPENSSL_ALGORITHM_DEFINES
63
+ # include <openssl/opensslconf.h>
64
+ # else
65
+ # define OPENSSL_ALGORITHM_DEFINES
66
+ # include <openssl/opensslconf.h>
67
+ # undef OPENSSL_ALGORITHM_DEFINES
68
+ # endif
69
+
70
+ # include <openssl/ossl_typ.h>
71
+
72
+ # include <openssl/symhacks.h>
73
+
74
+ # ifndef OPENSSL_NO_BIO
75
+ # include <openssl/bio.h>
76
+ # endif
77
+
78
+ /*-
79
+ #define EVP_RC2_KEY_SIZE 16
80
+ #define EVP_RC4_KEY_SIZE 16
81
+ #define EVP_BLOWFISH_KEY_SIZE 16
82
+ #define EVP_CAST5_KEY_SIZE 16
83
+ #define EVP_RC5_32_12_16_KEY_SIZE 16
84
+ */
85
+ # define EVP_MAX_MD_SIZE 64/* longest known is SHA512 */
86
+ # define EVP_MAX_KEY_LENGTH 64
87
+ # define EVP_MAX_IV_LENGTH 16
88
+ # define EVP_MAX_BLOCK_LENGTH 32
89
+
90
+ # define PKCS5_SALT_LEN 8
91
+ /* Default PKCS#5 iteration count */
92
+ # define PKCS5_DEFAULT_ITER 2048
93
+
94
+ # include <openssl/objects.h>
95
+
96
+ # define EVP_PK_RSA 0x0001
97
+ # define EVP_PK_DSA 0x0002
98
+ # define EVP_PK_DH 0x0004
99
+ # define EVP_PK_EC 0x0008
100
+ # define EVP_PKT_SIGN 0x0010
101
+ # define EVP_PKT_ENC 0x0020
102
+ # define EVP_PKT_EXCH 0x0040
103
+ # define EVP_PKS_RSA 0x0100
104
+ # define EVP_PKS_DSA 0x0200
105
+ # define EVP_PKS_EC 0x0400
106
+
107
+ # define EVP_PKEY_NONE NID_undef
108
+ # define EVP_PKEY_RSA NID_rsaEncryption
109
+ # define EVP_PKEY_RSA2 NID_rsa
110
+ # define EVP_PKEY_DSA NID_dsa
111
+ # define EVP_PKEY_DSA1 NID_dsa_2
112
+ # define EVP_PKEY_DSA2 NID_dsaWithSHA
113
+ # define EVP_PKEY_DSA3 NID_dsaWithSHA1
114
+ # define EVP_PKEY_DSA4 NID_dsaWithSHA1_2
115
+ # define EVP_PKEY_DH NID_dhKeyAgreement
116
+ # define EVP_PKEY_DHX NID_dhpublicnumber
117
+ # define EVP_PKEY_EC NID_X9_62_id_ecPublicKey
118
+ # define EVP_PKEY_HMAC NID_hmac
119
+ # define EVP_PKEY_CMAC NID_cmac
120
+
121
+ #ifdef __cplusplus
122
+ extern "C" {
123
+ #endif
124
+
125
+ /*
126
+ * Type needs to be a bit field Sub-type needs to be for variations on the
127
+ * method, as in, can it do arbitrary encryption....
128
+ */
129
+ struct evp_pkey_st {
130
+ int type;
131
+ int save_type;
132
+ int references;
133
+ const EVP_PKEY_ASN1_METHOD *ameth;
134
+ ENGINE *engine;
135
+ union {
136
+ char *ptr;
137
+ # ifndef OPENSSL_NO_RSA
138
+ struct rsa_st *rsa; /* RSA */
139
+ # endif
140
+ # ifndef OPENSSL_NO_DSA
141
+ struct dsa_st *dsa; /* DSA */
142
+ # endif
143
+ # ifndef OPENSSL_NO_DH
144
+ struct dh_st *dh; /* DH */
145
+ # endif
146
+ # ifndef OPENSSL_NO_EC
147
+ struct ec_key_st *ec; /* ECC */
148
+ # endif
149
+ } pkey;
150
+ int save_parameters;
151
+ STACK_OF(X509_ATTRIBUTE) *attributes; /* [ 0 ] */
152
+ } /* EVP_PKEY */ ;
153
+
154
+ # define EVP_PKEY_MO_SIGN 0x0001
155
+ # define EVP_PKEY_MO_VERIFY 0x0002
156
+ # define EVP_PKEY_MO_ENCRYPT 0x0004
157
+ # define EVP_PKEY_MO_DECRYPT 0x0008
158
+
159
+ # ifndef EVP_MD
160
+ struct env_md_st {
161
+ int type;
162
+ int pkey_type;
163
+ int md_size;
164
+ unsigned long flags;
165
+ int (*init) (EVP_MD_CTX *ctx);
166
+ int (*update) (EVP_MD_CTX *ctx, const void *data, size_t count);
167
+ int (*final) (EVP_MD_CTX *ctx, unsigned char *md);
168
+ int (*copy) (EVP_MD_CTX *to, const EVP_MD_CTX *from);
169
+ int (*cleanup) (EVP_MD_CTX *ctx);
170
+ /* FIXME: prototype these some day */
171
+ int (*sign) (int type, const unsigned char *m, unsigned int m_length,
172
+ unsigned char *sigret, unsigned int *siglen, void *key);
173
+ int (*verify) (int type, const unsigned char *m, unsigned int m_length,
174
+ const unsigned char *sigbuf, unsigned int siglen,
175
+ void *key);
176
+ int required_pkey_type[5]; /* EVP_PKEY_xxx */
177
+ int block_size;
178
+ int ctx_size; /* how big does the ctx->md_data need to be */
179
+ /* control function */
180
+ int (*md_ctrl) (EVP_MD_CTX *ctx, int cmd, int p1, void *p2);
181
+ } /* EVP_MD */ ;
182
+
183
+ typedef int evp_sign_method(int type, const unsigned char *m,
184
+ unsigned int m_length, unsigned char *sigret,
185
+ unsigned int *siglen, void *key);
186
+ typedef int evp_verify_method(int type, const unsigned char *m,
187
+ unsigned int m_length,
188
+ const unsigned char *sigbuf,
189
+ unsigned int siglen, void *key);
190
+
191
+ /* digest can only handle a single block */
192
+ # define EVP_MD_FLAG_ONESHOT 0x0001
193
+
194
+ /*
195
+ * digest is a "clone" digest used
196
+ * which is a copy of an existing
197
+ * one for a specific public key type.
198
+ * EVP_dss1() etc
199
+ */
200
+ # define EVP_MD_FLAG_PKEY_DIGEST 0x0002
201
+
202
+ /* Digest uses EVP_PKEY_METHOD for signing instead of MD specific signing */
203
+
204
+ # define EVP_MD_FLAG_PKEY_METHOD_SIGNATURE 0x0004
205
+
206
+ /* DigestAlgorithmIdentifier flags... */
207
+
208
+ # define EVP_MD_FLAG_DIGALGID_MASK 0x0018
209
+
210
+ /* NULL or absent parameter accepted. Use NULL */
211
+
212
+ # define EVP_MD_FLAG_DIGALGID_NULL 0x0000
213
+
214
+ /* NULL or absent parameter accepted. Use NULL for PKCS#1 otherwise absent */
215
+
216
+ # define EVP_MD_FLAG_DIGALGID_ABSENT 0x0008
217
+
218
+ /* Custom handling via ctrl */
219
+
220
+ # define EVP_MD_FLAG_DIGALGID_CUSTOM 0x0018
221
+
222
+ /* Note if suitable for use in FIPS mode */
223
+ # define EVP_MD_FLAG_FIPS 0x0400
224
+
225
+ /* Digest ctrls */
226
+
227
+ # define EVP_MD_CTRL_DIGALGID 0x1
228
+ # define EVP_MD_CTRL_MICALG 0x2
229
+
230
+ /* Minimum Algorithm specific ctrl value */
231
+
232
+ # define EVP_MD_CTRL_ALG_CTRL 0x1000
233
+
234
+ # define EVP_PKEY_NULL_method NULL,NULL,{0,0,0,0}
235
+
236
+ # ifndef OPENSSL_NO_DSA
237
+ # define EVP_PKEY_DSA_method (evp_sign_method *)DSA_sign, \
238
+ (evp_verify_method *)DSA_verify, \
239
+ {EVP_PKEY_DSA,EVP_PKEY_DSA2,EVP_PKEY_DSA3, \
240
+ EVP_PKEY_DSA4,0}
241
+ # else
242
+ # define EVP_PKEY_DSA_method EVP_PKEY_NULL_method
243
+ # endif
244
+
245
+ # ifndef OPENSSL_NO_ECDSA
246
+ # define EVP_PKEY_ECDSA_method (evp_sign_method *)ECDSA_sign, \
247
+ (evp_verify_method *)ECDSA_verify, \
248
+ {EVP_PKEY_EC,0,0,0}
249
+ # else
250
+ # define EVP_PKEY_ECDSA_method EVP_PKEY_NULL_method
251
+ # endif
252
+
253
+ # ifndef OPENSSL_NO_RSA
254
+ # define EVP_PKEY_RSA_method (evp_sign_method *)RSA_sign, \
255
+ (evp_verify_method *)RSA_verify, \
256
+ {EVP_PKEY_RSA,EVP_PKEY_RSA2,0,0}
257
+ # define EVP_PKEY_RSA_ASN1_OCTET_STRING_method \
258
+ (evp_sign_method *)RSA_sign_ASN1_OCTET_STRING, \
259
+ (evp_verify_method *)RSA_verify_ASN1_OCTET_STRING, \
260
+ {EVP_PKEY_RSA,EVP_PKEY_RSA2,0,0}
261
+ # else
262
+ # define EVP_PKEY_RSA_method EVP_PKEY_NULL_method
263
+ # define EVP_PKEY_RSA_ASN1_OCTET_STRING_method EVP_PKEY_NULL_method
264
+ # endif
265
+
266
+ # endif /* !EVP_MD */
267
+
268
+ struct env_md_ctx_st {
269
+ const EVP_MD *digest;
270
+ ENGINE *engine; /* functional reference if 'digest' is
271
+ * ENGINE-provided */
272
+ unsigned long flags;
273
+ void *md_data;
274
+ /* Public key context for sign/verify */
275
+ EVP_PKEY_CTX *pctx;
276
+ /* Update function: usually copied from EVP_MD */
277
+ int (*update) (EVP_MD_CTX *ctx, const void *data, size_t count);
278
+ } /* EVP_MD_CTX */ ;
279
+
280
+ /* values for EVP_MD_CTX flags */
281
+
282
+ # define EVP_MD_CTX_FLAG_ONESHOT 0x0001/* digest update will be
283
+ * called once only */
284
+ # define EVP_MD_CTX_FLAG_CLEANED 0x0002/* context has already been
285
+ * cleaned */
286
+ # define EVP_MD_CTX_FLAG_REUSE 0x0004/* Don't free up ctx->md_data
287
+ * in EVP_MD_CTX_cleanup */
288
+ /*
289
+ * FIPS and pad options are ignored in 1.0.0, definitions are here so we
290
+ * don't accidentally reuse the values for other purposes.
291
+ */
292
+
293
+ # define EVP_MD_CTX_FLAG_NON_FIPS_ALLOW 0x0008/* Allow use of non FIPS
294
+ * digest in FIPS mode */
295
+
296
+ /*
297
+ * The following PAD options are also currently ignored in 1.0.0, digest
298
+ * parameters are handled through EVP_DigestSign*() and EVP_DigestVerify*()
299
+ * instead.
300
+ */
301
+ # define EVP_MD_CTX_FLAG_PAD_MASK 0xF0/* RSA mode to use */
302
+ # define EVP_MD_CTX_FLAG_PAD_PKCS1 0x00/* PKCS#1 v1.5 mode */
303
+ # define EVP_MD_CTX_FLAG_PAD_X931 0x10/* X9.31 mode */
304
+ # define EVP_MD_CTX_FLAG_PAD_PSS 0x20/* PSS mode */
305
+
306
+ # define EVP_MD_CTX_FLAG_NO_INIT 0x0100/* Don't initialize md_data */
307
+
308
+ struct evp_cipher_st {
309
+ int nid;
310
+ int block_size;
311
+ /* Default value for variable length ciphers */
312
+ int key_len;
313
+ int iv_len;
314
+ /* Various flags */
315
+ unsigned long flags;
316
+ /* init key */
317
+ int (*init) (EVP_CIPHER_CTX *ctx, const unsigned char *key,
318
+ const unsigned char *iv, int enc);
319
+ /* encrypt/decrypt data */
320
+ int (*do_cipher) (EVP_CIPHER_CTX *ctx, unsigned char *out,
321
+ const unsigned char *in, size_t inl);
322
+ /* cleanup ctx */
323
+ int (*cleanup) (EVP_CIPHER_CTX *);
324
+ /* how big ctx->cipher_data needs to be */
325
+ int ctx_size;
326
+ /* Populate a ASN1_TYPE with parameters */
327
+ int (*set_asn1_parameters) (EVP_CIPHER_CTX *, ASN1_TYPE *);
328
+ /* Get parameters from a ASN1_TYPE */
329
+ int (*get_asn1_parameters) (EVP_CIPHER_CTX *, ASN1_TYPE *);
330
+ /* Miscellaneous operations */
331
+ int (*ctrl) (EVP_CIPHER_CTX *, int type, int arg, void *ptr);
332
+ /* Application data */
333
+ void *app_data;
334
+ } /* EVP_CIPHER */ ;
335
+
336
+ /* Values for cipher flags */
337
+
338
+ /* Modes for ciphers */
339
+
340
+ # define EVP_CIPH_STREAM_CIPHER 0x0
341
+ # define EVP_CIPH_ECB_MODE 0x1
342
+ # define EVP_CIPH_CBC_MODE 0x2
343
+ # define EVP_CIPH_CFB_MODE 0x3
344
+ # define EVP_CIPH_OFB_MODE 0x4
345
+ # define EVP_CIPH_CTR_MODE 0x5
346
+ # define EVP_CIPH_GCM_MODE 0x6
347
+ # define EVP_CIPH_CCM_MODE 0x7
348
+ # define EVP_CIPH_XTS_MODE 0x10001
349
+ # define EVP_CIPH_WRAP_MODE 0x10002
350
+ # define EVP_CIPH_MODE 0xF0007
351
+ /* Set if variable length cipher */
352
+ # define EVP_CIPH_VARIABLE_LENGTH 0x8
353
+ /* Set if the iv handling should be done by the cipher itself */
354
+ # define EVP_CIPH_CUSTOM_IV 0x10
355
+ /* Set if the cipher's init() function should be called if key is NULL */
356
+ # define EVP_CIPH_ALWAYS_CALL_INIT 0x20
357
+ /* Call ctrl() to init cipher parameters */
358
+ # define EVP_CIPH_CTRL_INIT 0x40
359
+ /* Don't use standard key length function */
360
+ # define EVP_CIPH_CUSTOM_KEY_LENGTH 0x80
361
+ /* Don't use standard block padding */
362
+ # define EVP_CIPH_NO_PADDING 0x100
363
+ /* cipher handles random key generation */
364
+ # define EVP_CIPH_RAND_KEY 0x200
365
+ /* cipher has its own additional copying logic */
366
+ # define EVP_CIPH_CUSTOM_COPY 0x400
367
+ /* Allow use default ASN1 get/set iv */
368
+ # define EVP_CIPH_FLAG_DEFAULT_ASN1 0x1000
369
+ /* Buffer length in bits not bytes: CFB1 mode only */
370
+ # define EVP_CIPH_FLAG_LENGTH_BITS 0x2000
371
+ /* Note if suitable for use in FIPS mode */
372
+ # define EVP_CIPH_FLAG_FIPS 0x4000
373
+ /* Allow non FIPS cipher in FIPS mode */
374
+ # define EVP_CIPH_FLAG_NON_FIPS_ALLOW 0x8000
375
+ /*
376
+ * Cipher handles any and all padding logic as well as finalisation.
377
+ */
378
+ # define EVP_CIPH_FLAG_CUSTOM_CIPHER 0x100000
379
+ # define EVP_CIPH_FLAG_AEAD_CIPHER 0x200000
380
+ # define EVP_CIPH_FLAG_TLS1_1_MULTIBLOCK 0x400000
381
+
382
+ /*
383
+ * Cipher context flag to indicate we can handle wrap mode: if allowed in
384
+ * older applications it could overflow buffers.
385
+ */
386
+
387
+ # define EVP_CIPHER_CTX_FLAG_WRAP_ALLOW 0x1
388
+
389
+ /* ctrl() values */
390
+
391
+ # define EVP_CTRL_INIT 0x0
392
+ # define EVP_CTRL_SET_KEY_LENGTH 0x1
393
+ # define EVP_CTRL_GET_RC2_KEY_BITS 0x2
394
+ # define EVP_CTRL_SET_RC2_KEY_BITS 0x3
395
+ # define EVP_CTRL_GET_RC5_ROUNDS 0x4
396
+ # define EVP_CTRL_SET_RC5_ROUNDS 0x5
397
+ # define EVP_CTRL_RAND_KEY 0x6
398
+ # define EVP_CTRL_PBE_PRF_NID 0x7
399
+ # define EVP_CTRL_COPY 0x8
400
+ # define EVP_CTRL_GCM_SET_IVLEN 0x9
401
+ # define EVP_CTRL_GCM_GET_TAG 0x10
402
+ # define EVP_CTRL_GCM_SET_TAG 0x11
403
+ # define EVP_CTRL_GCM_SET_IV_FIXED 0x12
404
+ # define EVP_CTRL_GCM_IV_GEN 0x13
405
+ # define EVP_CTRL_CCM_SET_IVLEN EVP_CTRL_GCM_SET_IVLEN
406
+ # define EVP_CTRL_CCM_GET_TAG EVP_CTRL_GCM_GET_TAG
407
+ # define EVP_CTRL_CCM_SET_TAG EVP_CTRL_GCM_SET_TAG
408
+ # define EVP_CTRL_CCM_SET_L 0x14
409
+ # define EVP_CTRL_CCM_SET_MSGLEN 0x15
410
+ /*
411
+ * AEAD cipher deduces payload length and returns number of bytes required to
412
+ * store MAC and eventual padding. Subsequent call to EVP_Cipher even
413
+ * appends/verifies MAC.
414
+ */
415
+ # define EVP_CTRL_AEAD_TLS1_AAD 0x16
416
+ /* Used by composite AEAD ciphers, no-op in GCM, CCM... */
417
+ # define EVP_CTRL_AEAD_SET_MAC_KEY 0x17
418
+ /* Set the GCM invocation field, decrypt only */
419
+ # define EVP_CTRL_GCM_SET_IV_INV 0x18
420
+
421
+ # define EVP_CTRL_TLS1_1_MULTIBLOCK_AAD 0x19
422
+ # define EVP_CTRL_TLS1_1_MULTIBLOCK_ENCRYPT 0x1a
423
+ # define EVP_CTRL_TLS1_1_MULTIBLOCK_DECRYPT 0x1b
424
+ # define EVP_CTRL_TLS1_1_MULTIBLOCK_MAX_BUFSIZE 0x1c
425
+
426
+ /* RFC 5246 defines additional data to be 13 bytes in length */
427
+ # define EVP_AEAD_TLS1_AAD_LEN 13
428
+
429
+ typedef struct {
430
+ unsigned char *out;
431
+ const unsigned char *inp;
432
+ size_t len;
433
+ unsigned int interleave;
434
+ } EVP_CTRL_TLS1_1_MULTIBLOCK_PARAM;
435
+
436
+ /* GCM TLS constants */
437
+ /* Length of fixed part of IV derived from PRF */
438
+ # define EVP_GCM_TLS_FIXED_IV_LEN 4
439
+ /* Length of explicit part of IV part of TLS records */
440
+ # define EVP_GCM_TLS_EXPLICIT_IV_LEN 8
441
+ /* Length of tag for TLS */
442
+ # define EVP_GCM_TLS_TAG_LEN 16
443
+
444
+ typedef struct evp_cipher_info_st {
445
+ const EVP_CIPHER *cipher;
446
+ unsigned char iv[EVP_MAX_IV_LENGTH];
447
+ } EVP_CIPHER_INFO;
448
+
449
+ struct evp_cipher_ctx_st {
450
+ const EVP_CIPHER *cipher;
451
+ ENGINE *engine; /* functional reference if 'cipher' is
452
+ * ENGINE-provided */
453
+ int encrypt; /* encrypt or decrypt */
454
+ int buf_len; /* number we have left */
455
+ unsigned char oiv[EVP_MAX_IV_LENGTH]; /* original iv */
456
+ unsigned char iv[EVP_MAX_IV_LENGTH]; /* working iv */
457
+ unsigned char buf[EVP_MAX_BLOCK_LENGTH]; /* saved partial block */
458
+ int num; /* used by cfb/ofb/ctr mode */
459
+ void *app_data; /* application stuff */
460
+ int key_len; /* May change for variable length cipher */
461
+ unsigned long flags; /* Various flags */
462
+ void *cipher_data; /* per EVP data */
463
+ int final_used;
464
+ int block_mask;
465
+ unsigned char final[EVP_MAX_BLOCK_LENGTH]; /* possible final block */
466
+ } /* EVP_CIPHER_CTX */ ;
467
+
468
+ typedef struct evp_Encode_Ctx_st {
469
+ /* number saved in a partial encode/decode */
470
+ int num;
471
+ /*
472
+ * The length is either the output line length (in input bytes) or the
473
+ * shortest input line length that is ok. Once decoding begins, the
474
+ * length is adjusted up each time a longer line is decoded
475
+ */
476
+ int length;
477
+ /* data to encode */
478
+ unsigned char enc_data[80];
479
+ /* number read on current line */
480
+ int line_num;
481
+ int expect_nl;
482
+ } EVP_ENCODE_CTX;
483
+
484
+ /* Password based encryption function */
485
+ typedef int (EVP_PBE_KEYGEN) (EVP_CIPHER_CTX *ctx, const char *pass,
486
+ int passlen, ASN1_TYPE *param,
487
+ const EVP_CIPHER *cipher, const EVP_MD *md,
488
+ int en_de);
489
+
490
+ # ifndef OPENSSL_NO_RSA
491
+ # define EVP_PKEY_assign_RSA(pkey,rsa) EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\
492
+ (char *)(rsa))
493
+ # endif
494
+
495
+ # ifndef OPENSSL_NO_DSA
496
+ # define EVP_PKEY_assign_DSA(pkey,dsa) EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\
497
+ (char *)(dsa))
498
+ # endif
499
+
500
+ # ifndef OPENSSL_NO_DH
501
+ # define EVP_PKEY_assign_DH(pkey,dh) EVP_PKEY_assign((pkey),EVP_PKEY_DH,\
502
+ (char *)(dh))
503
+ # endif
504
+
505
+ # ifndef OPENSSL_NO_EC
506
+ # define EVP_PKEY_assign_EC_KEY(pkey,eckey) EVP_PKEY_assign((pkey),EVP_PKEY_EC,\
507
+ (char *)(eckey))
508
+ # endif
509
+
510
+ /* Add some extra combinations */
511
+ # define EVP_get_digestbynid(a) EVP_get_digestbyname(OBJ_nid2sn(a))
512
+ # define EVP_get_digestbyobj(a) EVP_get_digestbynid(OBJ_obj2nid(a))
513
+ # define EVP_get_cipherbynid(a) EVP_get_cipherbyname(OBJ_nid2sn(a))
514
+ # define EVP_get_cipherbyobj(a) EVP_get_cipherbynid(OBJ_obj2nid(a))
515
+
516
+ int EVP_MD_type(const EVP_MD *md);
517
+ # define EVP_MD_nid(e) EVP_MD_type(e)
518
+ # define EVP_MD_name(e) OBJ_nid2sn(EVP_MD_nid(e))
519
+ int EVP_MD_pkey_type(const EVP_MD *md);
520
+ int EVP_MD_size(const EVP_MD *md);
521
+ int EVP_MD_block_size(const EVP_MD *md);
522
+ unsigned long EVP_MD_flags(const EVP_MD *md);
523
+
524
+ const EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *ctx);
525
+ # define EVP_MD_CTX_size(e) EVP_MD_size(EVP_MD_CTX_md(e))
526
+ # define EVP_MD_CTX_block_size(e) EVP_MD_block_size(EVP_MD_CTX_md(e))
527
+ # define EVP_MD_CTX_type(e) EVP_MD_type(EVP_MD_CTX_md(e))
528
+
529
+ int EVP_CIPHER_nid(const EVP_CIPHER *cipher);
530
+ # define EVP_CIPHER_name(e) OBJ_nid2sn(EVP_CIPHER_nid(e))
531
+ int EVP_CIPHER_block_size(const EVP_CIPHER *cipher);
532
+ int EVP_CIPHER_key_length(const EVP_CIPHER *cipher);
533
+ int EVP_CIPHER_iv_length(const EVP_CIPHER *cipher);
534
+ unsigned long EVP_CIPHER_flags(const EVP_CIPHER *cipher);
535
+ # define EVP_CIPHER_mode(e) (EVP_CIPHER_flags(e) & EVP_CIPH_MODE)
536
+
537
+ const EVP_CIPHER *EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx);
538
+ int EVP_CIPHER_CTX_nid(const EVP_CIPHER_CTX *ctx);
539
+ int EVP_CIPHER_CTX_block_size(const EVP_CIPHER_CTX *ctx);
540
+ int EVP_CIPHER_CTX_key_length(const EVP_CIPHER_CTX *ctx);
541
+ int EVP_CIPHER_CTX_iv_length(const EVP_CIPHER_CTX *ctx);
542
+ int EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX *out, const EVP_CIPHER_CTX *in);
543
+ void *EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx);
544
+ void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data);
545
+ # define EVP_CIPHER_CTX_type(c) EVP_CIPHER_type(EVP_CIPHER_CTX_cipher(c))
546
+ unsigned long EVP_CIPHER_CTX_flags(const EVP_CIPHER_CTX *ctx);
547
+ # define EVP_CIPHER_CTX_mode(e) (EVP_CIPHER_CTX_flags(e) & EVP_CIPH_MODE)
548
+
549
+ # define EVP_ENCODE_LENGTH(l) (((l+2)/3*4)+(l/48+1)*2+80)
550
+ # define EVP_DECODE_LENGTH(l) ((l+3)/4*3+80)
551
+
552
+ # define EVP_SignInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c)
553
+ # define EVP_SignInit(a,b) EVP_DigestInit(a,b)
554
+ # define EVP_SignUpdate(a,b,c) EVP_DigestUpdate(a,b,c)
555
+ # define EVP_VerifyInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c)
556
+ # define EVP_VerifyInit(a,b) EVP_DigestInit(a,b)
557
+ # define EVP_VerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c)
558
+ # define EVP_OpenUpdate(a,b,c,d,e) EVP_DecryptUpdate(a,b,c,d,e)
559
+ # define EVP_SealUpdate(a,b,c,d,e) EVP_EncryptUpdate(a,b,c,d,e)
560
+ # define EVP_DigestSignUpdate(a,b,c) EVP_DigestUpdate(a,b,c)
561
+ # define EVP_DigestVerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c)
562
+
563
+ # ifdef CONST_STRICT
564
+ void BIO_set_md(BIO *, const EVP_MD *md);
565
+ # else
566
+ # define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,0,(char *)md)
567
+ # endif
568
+ # define BIO_get_md(b,mdp) BIO_ctrl(b,BIO_C_GET_MD,0,(char *)mdp)
569
+ # define BIO_get_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_GET_MD_CTX,0,(char *)mdcp)
570
+ # define BIO_set_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_SET_MD_CTX,0,(char *)mdcp)
571
+ # define BIO_get_cipher_status(b) BIO_ctrl(b,BIO_C_GET_CIPHER_STATUS,0,NULL)
572
+ # define BIO_get_cipher_ctx(b,c_pp) BIO_ctrl(b,BIO_C_GET_CIPHER_CTX,0,(char *)c_pp)
573
+
574
+ int EVP_Cipher(EVP_CIPHER_CTX *c,
575
+ unsigned char *out, const unsigned char *in, unsigned int inl);
576
+
577
+ # define EVP_add_cipher_alias(n,alias) \
578
+ OBJ_NAME_add((alias),OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS,(n))
579
+ # define EVP_add_digest_alias(n,alias) \
580
+ OBJ_NAME_add((alias),OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS,(n))
581
+ # define EVP_delete_cipher_alias(alias) \
582
+ OBJ_NAME_remove(alias,OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS);
583
+ # define EVP_delete_digest_alias(alias) \
584
+ OBJ_NAME_remove(alias,OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS);
585
+
586
+ void EVP_MD_CTX_init(EVP_MD_CTX *ctx);
587
+ int EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx);
588
+ EVP_MD_CTX *EVP_MD_CTX_create(void);
589
+ void EVP_MD_CTX_destroy(EVP_MD_CTX *ctx);
590
+ int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out, const EVP_MD_CTX *in);
591
+ void EVP_MD_CTX_set_flags(EVP_MD_CTX *ctx, int flags);
592
+ void EVP_MD_CTX_clear_flags(EVP_MD_CTX *ctx, int flags);
593
+ int EVP_MD_CTX_test_flags(const EVP_MD_CTX *ctx, int flags);
594
+ int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl);
595
+ int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, size_t cnt);
596
+ int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s);
597
+ int EVP_Digest(const void *data, size_t count,
598
+ unsigned char *md, unsigned int *size, const EVP_MD *type,
599
+ ENGINE *impl);
600
+
601
+ int EVP_MD_CTX_copy(EVP_MD_CTX *out, const EVP_MD_CTX *in);
602
+ int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type);
603
+ int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s);
604
+
605
+ int EVP_read_pw_string(char *buf, int length, const char *prompt, int verify);
606
+ int EVP_read_pw_string_min(char *buf, int minlen, int maxlen,
607
+ const char *prompt, int verify);
608
+ void EVP_set_pw_prompt(const char *prompt);
609
+ char *EVP_get_pw_prompt(void);
610
+
611
+ int EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md,
612
+ const unsigned char *salt, const unsigned char *data,
613
+ int datal, int count, unsigned char *key,
614
+ unsigned char *iv);
615
+
616
+ void EVP_CIPHER_CTX_set_flags(EVP_CIPHER_CTX *ctx, int flags);
617
+ void EVP_CIPHER_CTX_clear_flags(EVP_CIPHER_CTX *ctx, int flags);
618
+ int EVP_CIPHER_CTX_test_flags(const EVP_CIPHER_CTX *ctx, int flags);
619
+
620
+ int EVP_EncryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
621
+ const unsigned char *key, const unsigned char *iv);
622
+ int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
623
+ ENGINE *impl, const unsigned char *key,
624
+ const unsigned char *iv);
625
+ int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
626
+ const unsigned char *in, int inl);
627
+ int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);
628
+ int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);
629
+
630
+ int EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
631
+ const unsigned char *key, const unsigned char *iv);
632
+ int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
633
+ ENGINE *impl, const unsigned char *key,
634
+ const unsigned char *iv);
635
+ int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
636
+ const unsigned char *in, int inl);
637
+ int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl);
638
+ int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl);
639
+
640
+ int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
641
+ const unsigned char *key, const unsigned char *iv,
642
+ int enc);
643
+ int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
644
+ ENGINE *impl, const unsigned char *key,
645
+ const unsigned char *iv, int enc);
646
+ int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
647
+ const unsigned char *in, int inl);
648
+ int EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl);
649
+ int EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl);
650
+
651
+ int EVP_SignFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s,
652
+ EVP_PKEY *pkey);
653
+
654
+ int EVP_VerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sigbuf,
655
+ unsigned int siglen, EVP_PKEY *pkey);
656
+
657
+ int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,
658
+ const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey);
659
+ int EVP_DigestSignFinal(EVP_MD_CTX *ctx,
660
+ unsigned char *sigret, size_t *siglen);
661
+
662
+ int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,
663
+ const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey);
664
+ int EVP_DigestVerifyFinal(EVP_MD_CTX *ctx,
665
+ const unsigned char *sig, size_t siglen);
666
+
667
+ int EVP_OpenInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type,
668
+ const unsigned char *ek, int ekl, const unsigned char *iv,
669
+ EVP_PKEY *priv);
670
+ int EVP_OpenFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);
671
+
672
+ int EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type,
673
+ unsigned char **ek, int *ekl, unsigned char *iv,
674
+ EVP_PKEY **pubk, int npubk);
675
+ int EVP_SealFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);
676
+
677
+ void EVP_EncodeInit(EVP_ENCODE_CTX *ctx);
678
+ void EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl,
679
+ const unsigned char *in, int inl);
680
+ void EVP_EncodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl);
681
+ int EVP_EncodeBlock(unsigned char *t, const unsigned char *f, int n);
682
+
683
+ void EVP_DecodeInit(EVP_ENCODE_CTX *ctx);
684
+ int EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl,
685
+ const unsigned char *in, int inl);
686
+ int EVP_DecodeFinal(EVP_ENCODE_CTX *ctx, unsigned
687
+ char *out, int *outl);
688
+ int EVP_DecodeBlock(unsigned char *t, const unsigned char *f, int n);
689
+
690
+ void EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *a);
691
+ int EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *a);
692
+ EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void);
693
+ void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *a);
694
+ int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *x, int keylen);
695
+ int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *c, int pad);
696
+ int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr);
697
+ int EVP_CIPHER_CTX_rand_key(EVP_CIPHER_CTX *ctx, unsigned char *key);
698
+
699
+ # ifndef OPENSSL_NO_BIO
700
+ BIO_METHOD *BIO_f_md(void);
701
+ BIO_METHOD *BIO_f_base64(void);
702
+ BIO_METHOD *BIO_f_cipher(void);
703
+ BIO_METHOD *BIO_f_reliable(void);
704
+ void BIO_set_cipher(BIO *b, const EVP_CIPHER *c, const unsigned char *k,
705
+ const unsigned char *i, int enc);
706
+ # endif
707
+
708
+ const EVP_MD *EVP_md_null(void);
709
+ # ifndef OPENSSL_NO_MD2
710
+ const EVP_MD *EVP_md2(void);
711
+ # endif
712
+ # ifndef OPENSSL_NO_MD4
713
+ const EVP_MD *EVP_md4(void);
714
+ # endif
715
+ # ifndef OPENSSL_NO_MD5
716
+ const EVP_MD *EVP_md5(void);
717
+ # endif
718
+ # ifndef OPENSSL_NO_SHA
719
+ const EVP_MD *EVP_sha(void);
720
+ const EVP_MD *EVP_sha1(void);
721
+ const EVP_MD *EVP_dss(void);
722
+ const EVP_MD *EVP_dss1(void);
723
+ const EVP_MD *EVP_ecdsa(void);
724
+ # endif
725
+ # ifndef OPENSSL_NO_SHA256
726
+ const EVP_MD *EVP_sha224(void);
727
+ const EVP_MD *EVP_sha256(void);
728
+ # endif
729
+ # ifndef OPENSSL_NO_SHA512
730
+ const EVP_MD *EVP_sha384(void);
731
+ const EVP_MD *EVP_sha512(void);
732
+ # endif
733
+ # ifndef OPENSSL_NO_MDC2
734
+ const EVP_MD *EVP_mdc2(void);
735
+ # endif
736
+ # ifndef OPENSSL_NO_RIPEMD
737
+ const EVP_MD *EVP_ripemd160(void);
738
+ # endif
739
+ # ifndef OPENSSL_NO_WHIRLPOOL
740
+ const EVP_MD *EVP_whirlpool(void);
741
+ # endif
742
+ const EVP_CIPHER *EVP_enc_null(void); /* does nothing :-) */
743
+ # ifndef OPENSSL_NO_DES
744
+ const EVP_CIPHER *EVP_des_ecb(void);
745
+ const EVP_CIPHER *EVP_des_ede(void);
746
+ const EVP_CIPHER *EVP_des_ede3(void);
747
+ const EVP_CIPHER *EVP_des_ede_ecb(void);
748
+ const EVP_CIPHER *EVP_des_ede3_ecb(void);
749
+ const EVP_CIPHER *EVP_des_cfb64(void);
750
+ # define EVP_des_cfb EVP_des_cfb64
751
+ const EVP_CIPHER *EVP_des_cfb1(void);
752
+ const EVP_CIPHER *EVP_des_cfb8(void);
753
+ const EVP_CIPHER *EVP_des_ede_cfb64(void);
754
+ # define EVP_des_ede_cfb EVP_des_ede_cfb64
755
+ # if 0
756
+ const EVP_CIPHER *EVP_des_ede_cfb1(void);
757
+ const EVP_CIPHER *EVP_des_ede_cfb8(void);
758
+ # endif
759
+ const EVP_CIPHER *EVP_des_ede3_cfb64(void);
760
+ # define EVP_des_ede3_cfb EVP_des_ede3_cfb64
761
+ const EVP_CIPHER *EVP_des_ede3_cfb1(void);
762
+ const EVP_CIPHER *EVP_des_ede3_cfb8(void);
763
+ const EVP_CIPHER *EVP_des_ofb(void);
764
+ const EVP_CIPHER *EVP_des_ede_ofb(void);
765
+ const EVP_CIPHER *EVP_des_ede3_ofb(void);
766
+ const EVP_CIPHER *EVP_des_cbc(void);
767
+ const EVP_CIPHER *EVP_des_ede_cbc(void);
768
+ const EVP_CIPHER *EVP_des_ede3_cbc(void);
769
+ const EVP_CIPHER *EVP_desx_cbc(void);
770
+ const EVP_CIPHER *EVP_des_ede3_wrap(void);
771
+ /*
772
+ * This should now be supported through the dev_crypto ENGINE. But also, why
773
+ * are rc4 and md5 declarations made here inside a "NO_DES" precompiler
774
+ * branch?
775
+ */
776
+ # if 0
777
+ # ifdef OPENSSL_OPENBSD_DEV_CRYPTO
778
+ const EVP_CIPHER *EVP_dev_crypto_des_ede3_cbc(void);
779
+ const EVP_CIPHER *EVP_dev_crypto_rc4(void);
780
+ const EVP_MD *EVP_dev_crypto_md5(void);
781
+ # endif
782
+ # endif
783
+ # endif
784
+ # ifndef OPENSSL_NO_RC4
785
+ const EVP_CIPHER *EVP_rc4(void);
786
+ const EVP_CIPHER *EVP_rc4_40(void);
787
+ # ifndef OPENSSL_NO_MD5
788
+ const EVP_CIPHER *EVP_rc4_hmac_md5(void);
789
+ # endif
790
+ # endif
791
+ # ifndef OPENSSL_NO_IDEA
792
+ const EVP_CIPHER *EVP_idea_ecb(void);
793
+ const EVP_CIPHER *EVP_idea_cfb64(void);
794
+ # define EVP_idea_cfb EVP_idea_cfb64
795
+ const EVP_CIPHER *EVP_idea_ofb(void);
796
+ const EVP_CIPHER *EVP_idea_cbc(void);
797
+ # endif
798
+ # ifndef OPENSSL_NO_RC2
799
+ const EVP_CIPHER *EVP_rc2_ecb(void);
800
+ const EVP_CIPHER *EVP_rc2_cbc(void);
801
+ const EVP_CIPHER *EVP_rc2_40_cbc(void);
802
+ const EVP_CIPHER *EVP_rc2_64_cbc(void);
803
+ const EVP_CIPHER *EVP_rc2_cfb64(void);
804
+ # define EVP_rc2_cfb EVP_rc2_cfb64
805
+ const EVP_CIPHER *EVP_rc2_ofb(void);
806
+ # endif
807
+ # ifndef OPENSSL_NO_BF
808
+ const EVP_CIPHER *EVP_bf_ecb(void);
809
+ const EVP_CIPHER *EVP_bf_cbc(void);
810
+ const EVP_CIPHER *EVP_bf_cfb64(void);
811
+ # define EVP_bf_cfb EVP_bf_cfb64
812
+ const EVP_CIPHER *EVP_bf_ofb(void);
813
+ # endif
814
+ # ifndef OPENSSL_NO_CAST
815
+ const EVP_CIPHER *EVP_cast5_ecb(void);
816
+ const EVP_CIPHER *EVP_cast5_cbc(void);
817
+ const EVP_CIPHER *EVP_cast5_cfb64(void);
818
+ # define EVP_cast5_cfb EVP_cast5_cfb64
819
+ const EVP_CIPHER *EVP_cast5_ofb(void);
820
+ # endif
821
+ # ifndef OPENSSL_NO_RC5
822
+ const EVP_CIPHER *EVP_rc5_32_12_16_cbc(void);
823
+ const EVP_CIPHER *EVP_rc5_32_12_16_ecb(void);
824
+ const EVP_CIPHER *EVP_rc5_32_12_16_cfb64(void);
825
+ # define EVP_rc5_32_12_16_cfb EVP_rc5_32_12_16_cfb64
826
+ const EVP_CIPHER *EVP_rc5_32_12_16_ofb(void);
827
+ # endif
828
+ # ifndef OPENSSL_NO_AES
829
+ const EVP_CIPHER *EVP_aes_128_ecb(void);
830
+ const EVP_CIPHER *EVP_aes_128_cbc(void);
831
+ const EVP_CIPHER *EVP_aes_128_cfb1(void);
832
+ const EVP_CIPHER *EVP_aes_128_cfb8(void);
833
+ const EVP_CIPHER *EVP_aes_128_cfb128(void);
834
+ # define EVP_aes_128_cfb EVP_aes_128_cfb128
835
+ const EVP_CIPHER *EVP_aes_128_ofb(void);
836
+ const EVP_CIPHER *EVP_aes_128_ctr(void);
837
+ const EVP_CIPHER *EVP_aes_128_ccm(void);
838
+ const EVP_CIPHER *EVP_aes_128_gcm(void);
839
+ const EVP_CIPHER *EVP_aes_128_xts(void);
840
+ const EVP_CIPHER *EVP_aes_128_wrap(void);
841
+ const EVP_CIPHER *EVP_aes_192_ecb(void);
842
+ const EVP_CIPHER *EVP_aes_192_cbc(void);
843
+ const EVP_CIPHER *EVP_aes_192_cfb1(void);
844
+ const EVP_CIPHER *EVP_aes_192_cfb8(void);
845
+ const EVP_CIPHER *EVP_aes_192_cfb128(void);
846
+ # define EVP_aes_192_cfb EVP_aes_192_cfb128
847
+ const EVP_CIPHER *EVP_aes_192_ofb(void);
848
+ const EVP_CIPHER *EVP_aes_192_ctr(void);
849
+ const EVP_CIPHER *EVP_aes_192_ccm(void);
850
+ const EVP_CIPHER *EVP_aes_192_gcm(void);
851
+ const EVP_CIPHER *EVP_aes_192_wrap(void);
852
+ const EVP_CIPHER *EVP_aes_256_ecb(void);
853
+ const EVP_CIPHER *EVP_aes_256_cbc(void);
854
+ const EVP_CIPHER *EVP_aes_256_cfb1(void);
855
+ const EVP_CIPHER *EVP_aes_256_cfb8(void);
856
+ const EVP_CIPHER *EVP_aes_256_cfb128(void);
857
+ # define EVP_aes_256_cfb EVP_aes_256_cfb128
858
+ const EVP_CIPHER *EVP_aes_256_ofb(void);
859
+ const EVP_CIPHER *EVP_aes_256_ctr(void);
860
+ const EVP_CIPHER *EVP_aes_256_ccm(void);
861
+ const EVP_CIPHER *EVP_aes_256_gcm(void);
862
+ const EVP_CIPHER *EVP_aes_256_xts(void);
863
+ const EVP_CIPHER *EVP_aes_256_wrap(void);
864
+ # if !defined(OPENSSL_NO_SHA) && !defined(OPENSSL_NO_SHA1)
865
+ const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha1(void);
866
+ const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha1(void);
867
+ # endif
868
+ # ifndef OPENSSL_NO_SHA256
869
+ const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha256(void);
870
+ const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha256(void);
871
+ # endif
872
+ # endif
873
+ # ifndef OPENSSL_NO_CAMELLIA
874
+ const EVP_CIPHER *EVP_camellia_128_ecb(void);
875
+ const EVP_CIPHER *EVP_camellia_128_cbc(void);
876
+ const EVP_CIPHER *EVP_camellia_128_cfb1(void);
877
+ const EVP_CIPHER *EVP_camellia_128_cfb8(void);
878
+ const EVP_CIPHER *EVP_camellia_128_cfb128(void);
879
+ # define EVP_camellia_128_cfb EVP_camellia_128_cfb128
880
+ const EVP_CIPHER *EVP_camellia_128_ofb(void);
881
+ const EVP_CIPHER *EVP_camellia_192_ecb(void);
882
+ const EVP_CIPHER *EVP_camellia_192_cbc(void);
883
+ const EVP_CIPHER *EVP_camellia_192_cfb1(void);
884
+ const EVP_CIPHER *EVP_camellia_192_cfb8(void);
885
+ const EVP_CIPHER *EVP_camellia_192_cfb128(void);
886
+ # define EVP_camellia_192_cfb EVP_camellia_192_cfb128
887
+ const EVP_CIPHER *EVP_camellia_192_ofb(void);
888
+ const EVP_CIPHER *EVP_camellia_256_ecb(void);
889
+ const EVP_CIPHER *EVP_camellia_256_cbc(void);
890
+ const EVP_CIPHER *EVP_camellia_256_cfb1(void);
891
+ const EVP_CIPHER *EVP_camellia_256_cfb8(void);
892
+ const EVP_CIPHER *EVP_camellia_256_cfb128(void);
893
+ # define EVP_camellia_256_cfb EVP_camellia_256_cfb128
894
+ const EVP_CIPHER *EVP_camellia_256_ofb(void);
895
+ # endif
896
+
897
+ # ifndef OPENSSL_NO_SEED
898
+ const EVP_CIPHER *EVP_seed_ecb(void);
899
+ const EVP_CIPHER *EVP_seed_cbc(void);
900
+ const EVP_CIPHER *EVP_seed_cfb128(void);
901
+ # define EVP_seed_cfb EVP_seed_cfb128
902
+ const EVP_CIPHER *EVP_seed_ofb(void);
903
+ # endif
904
+
905
+ void OPENSSL_add_all_algorithms_noconf(void);
906
+ void OPENSSL_add_all_algorithms_conf(void);
907
+
908
+ # ifdef OPENSSL_LOAD_CONF
909
+ # define OpenSSL_add_all_algorithms() \
910
+ OPENSSL_add_all_algorithms_conf()
911
+ # else
912
+ # define OpenSSL_add_all_algorithms() \
913
+ OPENSSL_add_all_algorithms_noconf()
914
+ # endif
915
+
916
+ void OpenSSL_add_all_ciphers(void);
917
+ void OpenSSL_add_all_digests(void);
918
+ # define SSLeay_add_all_algorithms() OpenSSL_add_all_algorithms()
919
+ # define SSLeay_add_all_ciphers() OpenSSL_add_all_ciphers()
920
+ # define SSLeay_add_all_digests() OpenSSL_add_all_digests()
921
+
922
+ int EVP_add_cipher(const EVP_CIPHER *cipher);
923
+ int EVP_add_digest(const EVP_MD *digest);
924
+
925
+ const EVP_CIPHER *EVP_get_cipherbyname(const char *name);
926
+ const EVP_MD *EVP_get_digestbyname(const char *name);
927
+ void EVP_cleanup(void);
928
+
929
+ void EVP_CIPHER_do_all(void (*fn) (const EVP_CIPHER *ciph,
930
+ const char *from, const char *to, void *x),
931
+ void *arg);
932
+ void EVP_CIPHER_do_all_sorted(void (*fn)
933
+ (const EVP_CIPHER *ciph, const char *from,
934
+ const char *to, void *x), void *arg);
935
+
936
+ void EVP_MD_do_all(void (*fn) (const EVP_MD *ciph,
937
+ const char *from, const char *to, void *x),
938
+ void *arg);
939
+ void EVP_MD_do_all_sorted(void (*fn)
940
+ (const EVP_MD *ciph, const char *from,
941
+ const char *to, void *x), void *arg);
942
+
943
+ int EVP_PKEY_decrypt_old(unsigned char *dec_key,
944
+ const unsigned char *enc_key, int enc_key_len,
945
+ EVP_PKEY *private_key);
946
+ int EVP_PKEY_encrypt_old(unsigned char *enc_key,
947
+ const unsigned char *key, int key_len,
948
+ EVP_PKEY *pub_key);
949
+ int EVP_PKEY_type(int type);
950
+ int EVP_PKEY_id(const EVP_PKEY *pkey);
951
+ int EVP_PKEY_base_id(const EVP_PKEY *pkey);
952
+ int EVP_PKEY_bits(EVP_PKEY *pkey);
953
+ int EVP_PKEY_size(EVP_PKEY *pkey);
954
+ int EVP_PKEY_set_type(EVP_PKEY *pkey, int type);
955
+ int EVP_PKEY_set_type_str(EVP_PKEY *pkey, const char *str, int len);
956
+ int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key);
957
+ void *EVP_PKEY_get0(EVP_PKEY *pkey);
958
+
959
+ # ifndef OPENSSL_NO_RSA
960
+ struct rsa_st;
961
+ int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, struct rsa_st *key);
962
+ struct rsa_st *EVP_PKEY_get1_RSA(EVP_PKEY *pkey);
963
+ # endif
964
+ # ifndef OPENSSL_NO_DSA
965
+ struct dsa_st;
966
+ int EVP_PKEY_set1_DSA(EVP_PKEY *pkey, struct dsa_st *key);
967
+ struct dsa_st *EVP_PKEY_get1_DSA(EVP_PKEY *pkey);
968
+ # endif
969
+ # ifndef OPENSSL_NO_DH
970
+ struct dh_st;
971
+ int EVP_PKEY_set1_DH(EVP_PKEY *pkey, struct dh_st *key);
972
+ struct dh_st *EVP_PKEY_get1_DH(EVP_PKEY *pkey);
973
+ # endif
974
+ # ifndef OPENSSL_NO_EC
975
+ struct ec_key_st;
976
+ int EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey, struct ec_key_st *key);
977
+ struct ec_key_st *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey);
978
+ # endif
979
+
980
+ EVP_PKEY *EVP_PKEY_new(void);
981
+ void EVP_PKEY_free(EVP_PKEY *pkey);
982
+
983
+ EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp,
984
+ long length);
985
+ int i2d_PublicKey(EVP_PKEY *a, unsigned char **pp);
986
+
987
+ EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp,
988
+ long length);
989
+ EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp,
990
+ long length);
991
+ int i2d_PrivateKey(EVP_PKEY *a, unsigned char **pp);
992
+
993
+ int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from);
994
+ int EVP_PKEY_missing_parameters(const EVP_PKEY *pkey);
995
+ int EVP_PKEY_save_parameters(EVP_PKEY *pkey, int mode);
996
+ int EVP_PKEY_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b);
997
+
998
+ int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b);
999
+
1000
+ int EVP_PKEY_print_public(BIO *out, const EVP_PKEY *pkey,
1001
+ int indent, ASN1_PCTX *pctx);
1002
+ int EVP_PKEY_print_private(BIO *out, const EVP_PKEY *pkey,
1003
+ int indent, ASN1_PCTX *pctx);
1004
+ int EVP_PKEY_print_params(BIO *out, const EVP_PKEY *pkey,
1005
+ int indent, ASN1_PCTX *pctx);
1006
+
1007
+ int EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid);
1008
+
1009
+ int EVP_CIPHER_type(const EVP_CIPHER *ctx);
1010
+
1011
+ /* calls methods */
1012
+ int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *c, ASN1_TYPE *type);
1013
+ int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *c, ASN1_TYPE *type);
1014
+
1015
+ /* These are used by EVP_CIPHER methods */
1016
+ int EVP_CIPHER_set_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type);
1017
+ int EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type);
1018
+
1019
+ /* PKCS5 password based encryption */
1020
+ int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen,
1021
+ ASN1_TYPE *param, const EVP_CIPHER *cipher,
1022
+ const EVP_MD *md, int en_de);
1023
+ int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen,
1024
+ const unsigned char *salt, int saltlen, int iter,
1025
+ int keylen, unsigned char *out);
1026
+ int PKCS5_PBKDF2_HMAC(const char *pass, int passlen,
1027
+ const unsigned char *salt, int saltlen, int iter,
1028
+ const EVP_MD *digest, int keylen, unsigned char *out);
1029
+ int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen,
1030
+ ASN1_TYPE *param, const EVP_CIPHER *cipher,
1031
+ const EVP_MD *md, int en_de);
1032
+
1033
+ void PKCS5_PBE_add(void);
1034
+
1035
+ int EVP_PBE_CipherInit(ASN1_OBJECT *pbe_obj, const char *pass, int passlen,
1036
+ ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de);
1037
+
1038
+ /* PBE type */
1039
+
1040
+ /* Can appear as the outermost AlgorithmIdentifier */
1041
+ # define EVP_PBE_TYPE_OUTER 0x0
1042
+ /* Is an PRF type OID */
1043
+ # define EVP_PBE_TYPE_PRF 0x1
1044
+
1045
+ int EVP_PBE_alg_add_type(int pbe_type, int pbe_nid, int cipher_nid,
1046
+ int md_nid, EVP_PBE_KEYGEN *keygen);
1047
+ int EVP_PBE_alg_add(int nid, const EVP_CIPHER *cipher, const EVP_MD *md,
1048
+ EVP_PBE_KEYGEN *keygen);
1049
+ int EVP_PBE_find(int type, int pbe_nid, int *pcnid, int *pmnid,
1050
+ EVP_PBE_KEYGEN **pkeygen);
1051
+ void EVP_PBE_cleanup(void);
1052
+
1053
+ # define ASN1_PKEY_ALIAS 0x1
1054
+ # define ASN1_PKEY_DYNAMIC 0x2
1055
+ # define ASN1_PKEY_SIGPARAM_NULL 0x4
1056
+
1057
+ # define ASN1_PKEY_CTRL_PKCS7_SIGN 0x1
1058
+ # define ASN1_PKEY_CTRL_PKCS7_ENCRYPT 0x2
1059
+ # define ASN1_PKEY_CTRL_DEFAULT_MD_NID 0x3
1060
+ # define ASN1_PKEY_CTRL_CMS_SIGN 0x5
1061
+ # define ASN1_PKEY_CTRL_CMS_ENVELOPE 0x7
1062
+ # define ASN1_PKEY_CTRL_CMS_RI_TYPE 0x8
1063
+
1064
+ int EVP_PKEY_asn1_get_count(void);
1065
+ const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_get0(int idx);
1066
+ const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find(ENGINE **pe, int type);
1067
+ const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find_str(ENGINE **pe,
1068
+ const char *str, int len);
1069
+ int EVP_PKEY_asn1_add0(const EVP_PKEY_ASN1_METHOD *ameth);
1070
+ int EVP_PKEY_asn1_add_alias(int to, int from);
1071
+ int EVP_PKEY_asn1_get0_info(int *ppkey_id, int *pkey_base_id,
1072
+ int *ppkey_flags, const char **pinfo,
1073
+ const char **ppem_str,
1074
+ const EVP_PKEY_ASN1_METHOD *ameth);
1075
+
1076
+ const EVP_PKEY_ASN1_METHOD *EVP_PKEY_get0_asn1(EVP_PKEY *pkey);
1077
+ EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_new(int id, int flags,
1078
+ const char *pem_str,
1079
+ const char *info);
1080
+ void EVP_PKEY_asn1_copy(EVP_PKEY_ASN1_METHOD *dst,
1081
+ const EVP_PKEY_ASN1_METHOD *src);
1082
+ void EVP_PKEY_asn1_free(EVP_PKEY_ASN1_METHOD *ameth);
1083
+ void EVP_PKEY_asn1_set_public(EVP_PKEY_ASN1_METHOD *ameth,
1084
+ int (*pub_decode) (EVP_PKEY *pk,
1085
+ X509_PUBKEY *pub),
1086
+ int (*pub_encode) (X509_PUBKEY *pub,
1087
+ const EVP_PKEY *pk),
1088
+ int (*pub_cmp) (const EVP_PKEY *a,
1089
+ const EVP_PKEY *b),
1090
+ int (*pub_print) (BIO *out,
1091
+ const EVP_PKEY *pkey,
1092
+ int indent, ASN1_PCTX *pctx),
1093
+ int (*pkey_size) (const EVP_PKEY *pk),
1094
+ int (*pkey_bits) (const EVP_PKEY *pk));
1095
+ void EVP_PKEY_asn1_set_private(EVP_PKEY_ASN1_METHOD *ameth,
1096
+ int (*priv_decode) (EVP_PKEY *pk,
1097
+ PKCS8_PRIV_KEY_INFO
1098
+ *p8inf),
1099
+ int (*priv_encode) (PKCS8_PRIV_KEY_INFO *p8,
1100
+ const EVP_PKEY *pk),
1101
+ int (*priv_print) (BIO *out,
1102
+ const EVP_PKEY *pkey,
1103
+ int indent,
1104
+ ASN1_PCTX *pctx));
1105
+ void EVP_PKEY_asn1_set_param(EVP_PKEY_ASN1_METHOD *ameth,
1106
+ int (*param_decode) (EVP_PKEY *pkey,
1107
+ const unsigned char **pder,
1108
+ int derlen),
1109
+ int (*param_encode) (const EVP_PKEY *pkey,
1110
+ unsigned char **pder),
1111
+ int (*param_missing) (const EVP_PKEY *pk),
1112
+ int (*param_copy) (EVP_PKEY *to,
1113
+ const EVP_PKEY *from),
1114
+ int (*param_cmp) (const EVP_PKEY *a,
1115
+ const EVP_PKEY *b),
1116
+ int (*param_print) (BIO *out,
1117
+ const EVP_PKEY *pkey,
1118
+ int indent,
1119
+ ASN1_PCTX *pctx));
1120
+
1121
+ void EVP_PKEY_asn1_set_free(EVP_PKEY_ASN1_METHOD *ameth,
1122
+ void (*pkey_free) (EVP_PKEY *pkey));
1123
+ void EVP_PKEY_asn1_set_ctrl(EVP_PKEY_ASN1_METHOD *ameth,
1124
+ int (*pkey_ctrl) (EVP_PKEY *pkey, int op,
1125
+ long arg1, void *arg2));
1126
+ void EVP_PKEY_asn1_set_item(EVP_PKEY_ASN1_METHOD *ameth,
1127
+ int (*item_verify) (EVP_MD_CTX *ctx,
1128
+ const ASN1_ITEM *it,
1129
+ void *asn,
1130
+ X509_ALGOR *a,
1131
+ ASN1_BIT_STRING *sig,
1132
+ EVP_PKEY *pkey),
1133
+ int (*item_sign) (EVP_MD_CTX *ctx,
1134
+ const ASN1_ITEM *it,
1135
+ void *asn,
1136
+ X509_ALGOR *alg1,
1137
+ X509_ALGOR *alg2,
1138
+ ASN1_BIT_STRING *sig));
1139
+
1140
+ # define EVP_PKEY_OP_UNDEFINED 0
1141
+ # define EVP_PKEY_OP_PARAMGEN (1<<1)
1142
+ # define EVP_PKEY_OP_KEYGEN (1<<2)
1143
+ # define EVP_PKEY_OP_SIGN (1<<3)
1144
+ # define EVP_PKEY_OP_VERIFY (1<<4)
1145
+ # define EVP_PKEY_OP_VERIFYRECOVER (1<<5)
1146
+ # define EVP_PKEY_OP_SIGNCTX (1<<6)
1147
+ # define EVP_PKEY_OP_VERIFYCTX (1<<7)
1148
+ # define EVP_PKEY_OP_ENCRYPT (1<<8)
1149
+ # define EVP_PKEY_OP_DECRYPT (1<<9)
1150
+ # define EVP_PKEY_OP_DERIVE (1<<10)
1151
+
1152
+ # define EVP_PKEY_OP_TYPE_SIG \
1153
+ (EVP_PKEY_OP_SIGN | EVP_PKEY_OP_VERIFY | EVP_PKEY_OP_VERIFYRECOVER \
1154
+ | EVP_PKEY_OP_SIGNCTX | EVP_PKEY_OP_VERIFYCTX)
1155
+
1156
+ # define EVP_PKEY_OP_TYPE_CRYPT \
1157
+ (EVP_PKEY_OP_ENCRYPT | EVP_PKEY_OP_DECRYPT)
1158
+
1159
+ # define EVP_PKEY_OP_TYPE_NOGEN \
1160
+ (EVP_PKEY_OP_SIG | EVP_PKEY_OP_CRYPT | EVP_PKEY_OP_DERIVE)
1161
+
1162
+ # define EVP_PKEY_OP_TYPE_GEN \
1163
+ (EVP_PKEY_OP_PARAMGEN | EVP_PKEY_OP_KEYGEN)
1164
+
1165
+ # define EVP_PKEY_CTX_set_signature_md(ctx, md) \
1166
+ EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_TYPE_SIG, \
1167
+ EVP_PKEY_CTRL_MD, 0, (void *)md)
1168
+
1169
+ # define EVP_PKEY_CTX_get_signature_md(ctx, pmd) \
1170
+ EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_TYPE_SIG, \
1171
+ EVP_PKEY_CTRL_GET_MD, 0, (void *)pmd)
1172
+
1173
+ # define EVP_PKEY_CTRL_MD 1
1174
+ # define EVP_PKEY_CTRL_PEER_KEY 2
1175
+
1176
+ # define EVP_PKEY_CTRL_PKCS7_ENCRYPT 3
1177
+ # define EVP_PKEY_CTRL_PKCS7_DECRYPT 4
1178
+
1179
+ # define EVP_PKEY_CTRL_PKCS7_SIGN 5
1180
+
1181
+ # define EVP_PKEY_CTRL_SET_MAC_KEY 6
1182
+
1183
+ # define EVP_PKEY_CTRL_DIGESTINIT 7
1184
+
1185
+ /* Used by GOST key encryption in TLS */
1186
+ # define EVP_PKEY_CTRL_SET_IV 8
1187
+
1188
+ # define EVP_PKEY_CTRL_CMS_ENCRYPT 9
1189
+ # define EVP_PKEY_CTRL_CMS_DECRYPT 10
1190
+ # define EVP_PKEY_CTRL_CMS_SIGN 11
1191
+
1192
+ # define EVP_PKEY_CTRL_CIPHER 12
1193
+
1194
+ # define EVP_PKEY_CTRL_GET_MD 13
1195
+
1196
+ # define EVP_PKEY_ALG_CTRL 0x1000
1197
+
1198
+ # define EVP_PKEY_FLAG_AUTOARGLEN 2
1199
+ /*
1200
+ * Method handles all operations: don't assume any digest related defaults.
1201
+ */
1202
+ # define EVP_PKEY_FLAG_SIGCTX_CUSTOM 4
1203
+
1204
+ const EVP_PKEY_METHOD *EVP_PKEY_meth_find(int type);
1205
+ EVP_PKEY_METHOD *EVP_PKEY_meth_new(int id, int flags);
1206
+ void EVP_PKEY_meth_get0_info(int *ppkey_id, int *pflags,
1207
+ const EVP_PKEY_METHOD *meth);
1208
+ void EVP_PKEY_meth_copy(EVP_PKEY_METHOD *dst, const EVP_PKEY_METHOD *src);
1209
+ void EVP_PKEY_meth_free(EVP_PKEY_METHOD *pmeth);
1210
+ int EVP_PKEY_meth_add0(const EVP_PKEY_METHOD *pmeth);
1211
+
1212
+ EVP_PKEY_CTX *EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e);
1213
+ EVP_PKEY_CTX *EVP_PKEY_CTX_new_id(int id, ENGINE *e);
1214
+ EVP_PKEY_CTX *EVP_PKEY_CTX_dup(EVP_PKEY_CTX *ctx);
1215
+ void EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx);
1216
+
1217
+ int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype,
1218
+ int cmd, int p1, void *p2);
1219
+ int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, const char *type,
1220
+ const char *value);
1221
+
1222
+ int EVP_PKEY_CTX_get_operation(EVP_PKEY_CTX *ctx);
1223
+ void EVP_PKEY_CTX_set0_keygen_info(EVP_PKEY_CTX *ctx, int *dat, int datlen);
1224
+
1225
+ EVP_PKEY *EVP_PKEY_new_mac_key(int type, ENGINE *e,
1226
+ const unsigned char *key, int keylen);
1227
+
1228
+ void EVP_PKEY_CTX_set_data(EVP_PKEY_CTX *ctx, void *data);
1229
+ void *EVP_PKEY_CTX_get_data(EVP_PKEY_CTX *ctx);
1230
+ EVP_PKEY *EVP_PKEY_CTX_get0_pkey(EVP_PKEY_CTX *ctx);
1231
+
1232
+ EVP_PKEY *EVP_PKEY_CTX_get0_peerkey(EVP_PKEY_CTX *ctx);
1233
+
1234
+ void EVP_PKEY_CTX_set_app_data(EVP_PKEY_CTX *ctx, void *data);
1235
+ void *EVP_PKEY_CTX_get_app_data(EVP_PKEY_CTX *ctx);
1236
+
1237
+ int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx);
1238
+ int EVP_PKEY_sign(EVP_PKEY_CTX *ctx,
1239
+ unsigned char *sig, size_t *siglen,
1240
+ const unsigned char *tbs, size_t tbslen);
1241
+ int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx);
1242
+ int EVP_PKEY_verify(EVP_PKEY_CTX *ctx,
1243
+ const unsigned char *sig, size_t siglen,
1244
+ const unsigned char *tbs, size_t tbslen);
1245
+ int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx);
1246
+ int EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx,
1247
+ unsigned char *rout, size_t *routlen,
1248
+ const unsigned char *sig, size_t siglen);
1249
+ int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx);
1250
+ int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx,
1251
+ unsigned char *out, size_t *outlen,
1252
+ const unsigned char *in, size_t inlen);
1253
+ int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx);
1254
+ int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx,
1255
+ unsigned char *out, size_t *outlen,
1256
+ const unsigned char *in, size_t inlen);
1257
+
1258
+ int EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx);
1259
+ int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer);
1260
+ int EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen);
1261
+
1262
+ typedef int EVP_PKEY_gen_cb (EVP_PKEY_CTX *ctx);
1263
+
1264
+ int EVP_PKEY_paramgen_init(EVP_PKEY_CTX *ctx);
1265
+ int EVP_PKEY_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey);
1266
+ int EVP_PKEY_keygen_init(EVP_PKEY_CTX *ctx);
1267
+ int EVP_PKEY_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey);
1268
+
1269
+ void EVP_PKEY_CTX_set_cb(EVP_PKEY_CTX *ctx, EVP_PKEY_gen_cb *cb);
1270
+ EVP_PKEY_gen_cb *EVP_PKEY_CTX_get_cb(EVP_PKEY_CTX *ctx);
1271
+
1272
+ int EVP_PKEY_CTX_get_keygen_info(EVP_PKEY_CTX *ctx, int idx);
1273
+
1274
+ void EVP_PKEY_meth_set_init(EVP_PKEY_METHOD *pmeth,
1275
+ int (*init) (EVP_PKEY_CTX *ctx));
1276
+
1277
+ void EVP_PKEY_meth_set_copy(EVP_PKEY_METHOD *pmeth,
1278
+ int (*copy) (EVP_PKEY_CTX *dst,
1279
+ EVP_PKEY_CTX *src));
1280
+
1281
+ void EVP_PKEY_meth_set_cleanup(EVP_PKEY_METHOD *pmeth,
1282
+ void (*cleanup) (EVP_PKEY_CTX *ctx));
1283
+
1284
+ void EVP_PKEY_meth_set_paramgen(EVP_PKEY_METHOD *pmeth,
1285
+ int (*paramgen_init) (EVP_PKEY_CTX *ctx),
1286
+ int (*paramgen) (EVP_PKEY_CTX *ctx,
1287
+ EVP_PKEY *pkey));
1288
+
1289
+ void EVP_PKEY_meth_set_keygen(EVP_PKEY_METHOD *pmeth,
1290
+ int (*keygen_init) (EVP_PKEY_CTX *ctx),
1291
+ int (*keygen) (EVP_PKEY_CTX *ctx,
1292
+ EVP_PKEY *pkey));
1293
+
1294
+ void EVP_PKEY_meth_set_sign(EVP_PKEY_METHOD *pmeth,
1295
+ int (*sign_init) (EVP_PKEY_CTX *ctx),
1296
+ int (*sign) (EVP_PKEY_CTX *ctx,
1297
+ unsigned char *sig, size_t *siglen,
1298
+ const unsigned char *tbs,
1299
+ size_t tbslen));
1300
+
1301
+ void EVP_PKEY_meth_set_verify(EVP_PKEY_METHOD *pmeth,
1302
+ int (*verify_init) (EVP_PKEY_CTX *ctx),
1303
+ int (*verify) (EVP_PKEY_CTX *ctx,
1304
+ const unsigned char *sig,
1305
+ size_t siglen,
1306
+ const unsigned char *tbs,
1307
+ size_t tbslen));
1308
+
1309
+ void EVP_PKEY_meth_set_verify_recover(EVP_PKEY_METHOD *pmeth,
1310
+ int (*verify_recover_init) (EVP_PKEY_CTX
1311
+ *ctx),
1312
+ int (*verify_recover) (EVP_PKEY_CTX
1313
+ *ctx,
1314
+ unsigned char
1315
+ *sig,
1316
+ size_t *siglen,
1317
+ const unsigned
1318
+ char *tbs,
1319
+ size_t tbslen));
1320
+
1321
+ void EVP_PKEY_meth_set_signctx(EVP_PKEY_METHOD *pmeth,
1322
+ int (*signctx_init) (EVP_PKEY_CTX *ctx,
1323
+ EVP_MD_CTX *mctx),
1324
+ int (*signctx) (EVP_PKEY_CTX *ctx,
1325
+ unsigned char *sig,
1326
+ size_t *siglen,
1327
+ EVP_MD_CTX *mctx));
1328
+
1329
+ void EVP_PKEY_meth_set_verifyctx(EVP_PKEY_METHOD *pmeth,
1330
+ int (*verifyctx_init) (EVP_PKEY_CTX *ctx,
1331
+ EVP_MD_CTX *mctx),
1332
+ int (*verifyctx) (EVP_PKEY_CTX *ctx,
1333
+ const unsigned char *sig,
1334
+ int siglen,
1335
+ EVP_MD_CTX *mctx));
1336
+
1337
+ void EVP_PKEY_meth_set_encrypt(EVP_PKEY_METHOD *pmeth,
1338
+ int (*encrypt_init) (EVP_PKEY_CTX *ctx),
1339
+ int (*encryptfn) (EVP_PKEY_CTX *ctx,
1340
+ unsigned char *out,
1341
+ size_t *outlen,
1342
+ const unsigned char *in,
1343
+ size_t inlen));
1344
+
1345
+ void EVP_PKEY_meth_set_decrypt(EVP_PKEY_METHOD *pmeth,
1346
+ int (*decrypt_init) (EVP_PKEY_CTX *ctx),
1347
+ int (*decrypt) (EVP_PKEY_CTX *ctx,
1348
+ unsigned char *out,
1349
+ size_t *outlen,
1350
+ const unsigned char *in,
1351
+ size_t inlen));
1352
+
1353
+ void EVP_PKEY_meth_set_derive(EVP_PKEY_METHOD *pmeth,
1354
+ int (*derive_init) (EVP_PKEY_CTX *ctx),
1355
+ int (*derive) (EVP_PKEY_CTX *ctx,
1356
+ unsigned char *key,
1357
+ size_t *keylen));
1358
+
1359
+ void EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD *pmeth,
1360
+ int (*ctrl) (EVP_PKEY_CTX *ctx, int type, int p1,
1361
+ void *p2),
1362
+ int (*ctrl_str) (EVP_PKEY_CTX *ctx,
1363
+ const char *type,
1364
+ const char *value));
1365
+
1366
+ void EVP_add_alg_module(void);
1367
+
1368
+ /* BEGIN ERROR CODES */
1369
+ /*
1370
+ * The following lines are auto generated by the script mkerr.pl. Any changes
1371
+ * made after this point may be overwritten when the script is next run.
1372
+ */
1373
+ void ERR_load_EVP_strings(void);
1374
+
1375
+ /* Error codes for the EVP functions. */
1376
+
1377
+ /* Function codes. */
1378
+ # define EVP_F_AESNI_INIT_KEY 165
1379
+ # define EVP_F_AESNI_XTS_CIPHER 176
1380
+ # define EVP_F_AES_INIT_KEY 133
1381
+ # define EVP_F_AES_T4_INIT_KEY 178
1382
+ # define EVP_F_AES_XTS 172
1383
+ # define EVP_F_AES_XTS_CIPHER 175
1384
+ # define EVP_F_ALG_MODULE_INIT 177
1385
+ # define EVP_F_CAMELLIA_INIT_KEY 159
1386
+ # define EVP_F_CMAC_INIT 173
1387
+ # define EVP_F_CMLL_T4_INIT_KEY 179
1388
+ # define EVP_F_D2I_PKEY 100
1389
+ # define EVP_F_DO_SIGVER_INIT 161
1390
+ # define EVP_F_DSAPKEY2PKCS8 134
1391
+ # define EVP_F_DSA_PKEY2PKCS8 135
1392
+ # define EVP_F_ECDSA_PKEY2PKCS8 129
1393
+ # define EVP_F_ECKEY_PKEY2PKCS8 132
1394
+ # define EVP_F_EVP_CIPHERINIT_EX 123
1395
+ # define EVP_F_EVP_CIPHER_CTX_COPY 163
1396
+ # define EVP_F_EVP_CIPHER_CTX_CTRL 124
1397
+ # define EVP_F_EVP_CIPHER_CTX_SET_KEY_LENGTH 122
1398
+ # define EVP_F_EVP_DECRYPTFINAL_EX 101
1399
+ # define EVP_F_EVP_DIGESTINIT_EX 128
1400
+ # define EVP_F_EVP_ENCRYPTFINAL_EX 127
1401
+ # define EVP_F_EVP_MD_CTX_COPY_EX 110
1402
+ # define EVP_F_EVP_MD_SIZE 162
1403
+ # define EVP_F_EVP_OPENINIT 102
1404
+ # define EVP_F_EVP_PBE_ALG_ADD 115
1405
+ # define EVP_F_EVP_PBE_ALG_ADD_TYPE 160
1406
+ # define EVP_F_EVP_PBE_CIPHERINIT 116
1407
+ # define EVP_F_EVP_PKCS82PKEY 111
1408
+ # define EVP_F_EVP_PKCS82PKEY_BROKEN 136
1409
+ # define EVP_F_EVP_PKEY2PKCS8_BROKEN 113
1410
+ # define EVP_F_EVP_PKEY_COPY_PARAMETERS 103
1411
+ # define EVP_F_EVP_PKEY_CTX_CTRL 137
1412
+ # define EVP_F_EVP_PKEY_CTX_CTRL_STR 150
1413
+ # define EVP_F_EVP_PKEY_CTX_DUP 156
1414
+ # define EVP_F_EVP_PKEY_DECRYPT 104
1415
+ # define EVP_F_EVP_PKEY_DECRYPT_INIT 138
1416
+ # define EVP_F_EVP_PKEY_DECRYPT_OLD 151
1417
+ # define EVP_F_EVP_PKEY_DERIVE 153
1418
+ # define EVP_F_EVP_PKEY_DERIVE_INIT 154
1419
+ # define EVP_F_EVP_PKEY_DERIVE_SET_PEER 155
1420
+ # define EVP_F_EVP_PKEY_ENCRYPT 105
1421
+ # define EVP_F_EVP_PKEY_ENCRYPT_INIT 139
1422
+ # define EVP_F_EVP_PKEY_ENCRYPT_OLD 152
1423
+ # define EVP_F_EVP_PKEY_GET1_DH 119
1424
+ # define EVP_F_EVP_PKEY_GET1_DSA 120
1425
+ # define EVP_F_EVP_PKEY_GET1_ECDSA 130
1426
+ # define EVP_F_EVP_PKEY_GET1_EC_KEY 131
1427
+ # define EVP_F_EVP_PKEY_GET1_RSA 121
1428
+ # define EVP_F_EVP_PKEY_KEYGEN 146
1429
+ # define EVP_F_EVP_PKEY_KEYGEN_INIT 147
1430
+ # define EVP_F_EVP_PKEY_NEW 106
1431
+ # define EVP_F_EVP_PKEY_PARAMGEN 148
1432
+ # define EVP_F_EVP_PKEY_PARAMGEN_INIT 149
1433
+ # define EVP_F_EVP_PKEY_SIGN 140
1434
+ # define EVP_F_EVP_PKEY_SIGN_INIT 141
1435
+ # define EVP_F_EVP_PKEY_VERIFY 142
1436
+ # define EVP_F_EVP_PKEY_VERIFY_INIT 143
1437
+ # define EVP_F_EVP_PKEY_VERIFY_RECOVER 144
1438
+ # define EVP_F_EVP_PKEY_VERIFY_RECOVER_INIT 145
1439
+ # define EVP_F_EVP_RIJNDAEL 126
1440
+ # define EVP_F_EVP_SIGNFINAL 107
1441
+ # define EVP_F_EVP_VERIFYFINAL 108
1442
+ # define EVP_F_FIPS_CIPHERINIT 166
1443
+ # define EVP_F_FIPS_CIPHER_CTX_COPY 170
1444
+ # define EVP_F_FIPS_CIPHER_CTX_CTRL 167
1445
+ # define EVP_F_FIPS_CIPHER_CTX_SET_KEY_LENGTH 171
1446
+ # define EVP_F_FIPS_DIGESTINIT 168
1447
+ # define EVP_F_FIPS_MD_CTX_COPY 169
1448
+ # define EVP_F_HMAC_INIT_EX 174
1449
+ # define EVP_F_INT_CTX_NEW 157
1450
+ # define EVP_F_PKCS5_PBE_KEYIVGEN 117
1451
+ # define EVP_F_PKCS5_V2_PBE_KEYIVGEN 118
1452
+ # define EVP_F_PKCS5_V2_PBKDF2_KEYIVGEN 164
1453
+ # define EVP_F_PKCS8_SET_BROKEN 112
1454
+ # define EVP_F_PKEY_SET_TYPE 158
1455
+ # define EVP_F_RC2_MAGIC_TO_METH 109
1456
+ # define EVP_F_RC5_CTRL 125
1457
+
1458
+ /* Reason codes. */
1459
+ # define EVP_R_AES_IV_SETUP_FAILED 162
1460
+ # define EVP_R_AES_KEY_SETUP_FAILED 143
1461
+ # define EVP_R_ASN1_LIB 140
1462
+ # define EVP_R_BAD_BLOCK_LENGTH 136
1463
+ # define EVP_R_BAD_DECRYPT 100
1464
+ # define EVP_R_BAD_KEY_LENGTH 137
1465
+ # define EVP_R_BN_DECODE_ERROR 112
1466
+ # define EVP_R_BN_PUBKEY_ERROR 113
1467
+ # define EVP_R_BUFFER_TOO_SMALL 155
1468
+ # define EVP_R_CAMELLIA_KEY_SETUP_FAILED 157
1469
+ # define EVP_R_CIPHER_PARAMETER_ERROR 122
1470
+ # define EVP_R_COMMAND_NOT_SUPPORTED 147
1471
+ # define EVP_R_CTRL_NOT_IMPLEMENTED 132
1472
+ # define EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED 133
1473
+ # define EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH 138
1474
+ # define EVP_R_DECODE_ERROR 114
1475
+ # define EVP_R_DIFFERENT_KEY_TYPES 101
1476
+ # define EVP_R_DIFFERENT_PARAMETERS 153
1477
+ # define EVP_R_DISABLED_FOR_FIPS 163
1478
+ # define EVP_R_ENCODE_ERROR 115
1479
+ # define EVP_R_ERROR_LOADING_SECTION 165
1480
+ # define EVP_R_ERROR_SETTING_FIPS_MODE 166
1481
+ # define EVP_R_EVP_PBE_CIPHERINIT_ERROR 119
1482
+ # define EVP_R_EXPECTING_AN_RSA_KEY 127
1483
+ # define EVP_R_EXPECTING_A_DH_KEY 128
1484
+ # define EVP_R_EXPECTING_A_DSA_KEY 129
1485
+ # define EVP_R_EXPECTING_A_ECDSA_KEY 141
1486
+ # define EVP_R_EXPECTING_A_EC_KEY 142
1487
+ # define EVP_R_FIPS_MODE_NOT_SUPPORTED 167
1488
+ # define EVP_R_INITIALIZATION_ERROR 134
1489
+ # define EVP_R_INPUT_NOT_INITIALIZED 111
1490
+ # define EVP_R_INVALID_DIGEST 152
1491
+ # define EVP_R_INVALID_FIPS_MODE 168
1492
+ # define EVP_R_INVALID_KEY_LENGTH 130
1493
+ # define EVP_R_INVALID_OPERATION 148
1494
+ # define EVP_R_IV_TOO_LARGE 102
1495
+ # define EVP_R_KEYGEN_FAILURE 120
1496
+ # define EVP_R_MESSAGE_DIGEST_IS_NULL 159
1497
+ # define EVP_R_METHOD_NOT_SUPPORTED 144
1498
+ # define EVP_R_MISSING_PARAMETERS 103
1499
+ # define EVP_R_NO_CIPHER_SET 131
1500
+ # define EVP_R_NO_DEFAULT_DIGEST 158
1501
+ # define EVP_R_NO_DIGEST_SET 139
1502
+ # define EVP_R_NO_DSA_PARAMETERS 116
1503
+ # define EVP_R_NO_KEY_SET 154
1504
+ # define EVP_R_NO_OPERATION_SET 149
1505
+ # define EVP_R_NO_SIGN_FUNCTION_CONFIGURED 104
1506
+ # define EVP_R_NO_VERIFY_FUNCTION_CONFIGURED 105
1507
+ # define EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 150
1508
+ # define EVP_R_OPERATON_NOT_INITIALIZED 151
1509
+ # define EVP_R_PKCS8_UNKNOWN_BROKEN_TYPE 117
1510
+ # define EVP_R_PRIVATE_KEY_DECODE_ERROR 145
1511
+ # define EVP_R_PRIVATE_KEY_ENCODE_ERROR 146
1512
+ # define EVP_R_PUBLIC_KEY_NOT_RSA 106
1513
+ # define EVP_R_TOO_LARGE 164
1514
+ # define EVP_R_UNKNOWN_CIPHER 160
1515
+ # define EVP_R_UNKNOWN_DIGEST 161
1516
+ # define EVP_R_UNKNOWN_OPTION 169
1517
+ # define EVP_R_UNKNOWN_PBE_ALGORITHM 121
1518
+ # define EVP_R_UNSUPORTED_NUMBER_OF_ROUNDS 135
1519
+ # define EVP_R_UNSUPPORTED_ALGORITHM 156
1520
+ # define EVP_R_UNSUPPORTED_CIPHER 107
1521
+ # define EVP_R_UNSUPPORTED_KEYLENGTH 123
1522
+ # define EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION 124
1523
+ # define EVP_R_UNSUPPORTED_KEY_SIZE 108
1524
+ # define EVP_R_UNSUPPORTED_PRF 125
1525
+ # define EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM 118
1526
+ # define EVP_R_UNSUPPORTED_SALT_TYPE 126
1527
+ # define EVP_R_WRAP_MODE_NOT_ALLOWED 170
1528
+ # define EVP_R_WRONG_FINAL_BLOCK_LENGTH 109
1529
+ # define EVP_R_WRONG_PUBLIC_KEY_TYPE 110
1530
+
1531
+ #ifdef __cplusplus
1532
+ }
1533
+ #endif
1534
+ #endif