diff options
Diffstat (limited to 'openbsd-compat/openssl-compat.h')
-rw-r--r-- | openbsd-compat/openssl-compat.h | 121 |
1 files changed, 16 insertions, 105 deletions
diff --git a/openbsd-compat/openssl-compat.h b/openbsd-compat/openssl-compat.h index 276b9706d..3695d412b 100644 --- a/openbsd-compat/openssl-compat.h +++ b/openbsd-compat/openssl-compat.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: openssl-compat.h,v 1.26 2014/02/13 05:38:33 dtucker Exp $ */ | 1 | /* $Id: openssl-compat.h,v 1.31 2014/08/29 18:18:29 djm Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 2005 Darren Tucker <dtucker@zip.com.au> | 4 | * Copyright (c) 2005 Darren Tucker <dtucker@zip.com.au> |
@@ -16,28 +16,19 @@ | |||
16 | * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | 16 | * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
17 | */ | 17 | */ |
18 | 18 | ||
19 | #ifndef _OPENSSL_COMPAT_H | ||
20 | #define _OPENSSL_COMPAT_H | ||
21 | |||
19 | #include "includes.h" | 22 | #include "includes.h" |
20 | #include <openssl/opensslv.h> | 23 | #include <openssl/opensslv.h> |
21 | #include <openssl/evp.h> | 24 | #include <openssl/evp.h> |
22 | #include <openssl/rsa.h> | 25 | #include <openssl/rsa.h> |
23 | #include <openssl/dsa.h> | 26 | #include <openssl/dsa.h> |
24 | 27 | ||
25 | /* Only in 0.9.8 */ | 28 | int ssh_compatible_openssl(long, long); |
26 | #ifndef OPENSSL_DSA_MAX_MODULUS_BITS | ||
27 | # define OPENSSL_DSA_MAX_MODULUS_BITS 10000 | ||
28 | #endif | ||
29 | #ifndef OPENSSL_RSA_MAX_MODULUS_BITS | ||
30 | # define OPENSSL_RSA_MAX_MODULUS_BITS 16384 | ||
31 | #endif | ||
32 | |||
33 | /* OPENSSL_free() is Free() in versions before OpenSSL 0.9.6 */ | ||
34 | #if !defined(OPENSSL_VERSION_NUMBER) || (OPENSSL_VERSION_NUMBER < 0x0090600f) | ||
35 | # define OPENSSL_free(x) Free(x) | ||
36 | #endif | ||
37 | 29 | ||
38 | #if OPENSSL_VERSION_NUMBER < 0x00906000L | 30 | #if (OPENSSL_VERSION_NUMBER <= 0x0090805fL) |
39 | # define SSH_OLD_EVP | 31 | # error OpenSSL 0.9.8f or greater is required |
40 | # define EVP_CIPHER_CTX_get_app_data(e) ((e)->app_data) | ||
41 | #endif | 32 | #endif |
42 | 33 | ||
43 | #if OPENSSL_VERSION_NUMBER < 0x10000001L | 34 | #if OPENSSL_VERSION_NUMBER < 0x10000001L |
@@ -46,27 +37,17 @@ | |||
46 | # define LIBCRYPTO_EVP_INL_TYPE size_t | 37 | # define LIBCRYPTO_EVP_INL_TYPE size_t |
47 | #endif | 38 | #endif |
48 | 39 | ||
49 | #if (OPENSSL_VERSION_NUMBER < 0x00907000L) || defined(OPENSSL_LOBOTOMISED_AES) | 40 | #ifndef OPENSSL_RSA_MAX_MODULUS_BITS |
50 | # define USE_BUILTIN_RIJNDAEL | 41 | # define OPENSSL_RSA_MAX_MODULUS_BITS 16384 |
51 | #endif | 42 | #endif |
52 | 43 | #ifndef OPENSSL_DSA_MAX_MODULUS_BITS | |
53 | #ifdef USE_BUILTIN_RIJNDAEL | 44 | # define OPENSSL_DSA_MAX_MODULUS_BITS 10000 |
54 | # include "rijndael.h" | ||
55 | # define AES_KEY rijndael_ctx | ||
56 | # define AES_BLOCK_SIZE 16 | ||
57 | # define AES_encrypt(a, b, c) rijndael_encrypt(c, a, b) | ||
58 | # define AES_set_encrypt_key(a, b, c) rijndael_set_key(c, (char *)a, b, 1) | ||
59 | # define EVP_aes_128_cbc evp_rijndael | ||
60 | # define EVP_aes_192_cbc evp_rijndael | ||
61 | # define EVP_aes_256_cbc evp_rijndael | ||
62 | const EVP_CIPHER *evp_rijndael(void); | ||
63 | void ssh_rijndael_iv(EVP_CIPHER_CTX *, int, u_char *, u_int); | ||
64 | #endif | 45 | #endif |
65 | 46 | ||
66 | #ifndef OPENSSL_HAVE_EVPCTR | 47 | #ifndef OPENSSL_HAVE_EVPCTR |
67 | #define EVP_aes_128_ctr evp_aes_128_ctr | 48 | # define EVP_aes_128_ctr evp_aes_128_ctr |
68 | #define EVP_aes_192_ctr evp_aes_128_ctr | 49 | # define EVP_aes_192_ctr evp_aes_128_ctr |
69 | #define EVP_aes_256_ctr evp_aes_128_ctr | 50 | # define EVP_aes_256_ctr evp_aes_128_ctr |
70 | const EVP_CIPHER *evp_aes_128_ctr(void); | 51 | const EVP_CIPHER *evp_aes_128_ctr(void); |
71 | void ssh_aes_ctr_iv(EVP_CIPHER_CTX *, int, u_char *, size_t); | 52 | void ssh_aes_ctr_iv(EVP_CIPHER_CTX *, int, u_char *, size_t); |
72 | #endif | 53 | #endif |
@@ -88,26 +69,9 @@ void ssh_aes_ctr_iv(EVP_CIPHER_CTX *, int, u_char *, size_t); | |||
88 | # endif | 69 | # endif |
89 | #endif | 70 | #endif |
90 | 71 | ||
91 | #if OPENSSL_VERSION_NUMBER < 0x00907000L | ||
92 | #define EVP_X_STATE(evp) &(evp).c | ||
93 | #define EVP_X_STATE_LEN(evp) sizeof((evp).c) | ||
94 | #else | ||
95 | #define EVP_X_STATE(evp) (evp).cipher_data | ||
96 | #define EVP_X_STATE_LEN(evp) (evp).cipher->ctx_size | ||
97 | #endif | ||
98 | |||
99 | /* OpenSSL 0.9.8e returns cipher key len not context key len */ | ||
100 | #if (OPENSSL_VERSION_NUMBER == 0x0090805fL) | ||
101 | # define EVP_CIPHER_CTX_key_length(c) ((c)->key_len) | ||
102 | #endif | ||
103 | |||
104 | #ifndef HAVE_RSA_GET_DEFAULT_METHOD | ||
105 | RSA_METHOD *RSA_get_default_method(void); | ||
106 | #endif | ||
107 | |||
108 | /* | 72 | /* |
109 | * We overload some of the OpenSSL crypto functions with ssh_* equivalents | 73 | * We overload some of the OpenSSL crypto functions with ssh_* equivalents |
110 | * which cater for older and/or less featureful OpenSSL version. | 74 | * to automatically handle OpenSSL engine initialisation. |
111 | * | 75 | * |
112 | * In order for the compat library to call the real functions, it must | 76 | * In order for the compat library to call the real functions, it must |
113 | * define SSH_DONT_OVERLOAD_OPENSSL_FUNCS before including this file and | 77 | * define SSH_DONT_OVERLOAD_OPENSSL_FUNCS before including this file and |
@@ -115,19 +79,6 @@ RSA_METHOD *RSA_get_default_method(void); | |||
115 | */ | 79 | */ |
116 | #ifndef SSH_DONT_OVERLOAD_OPENSSL_FUNCS | 80 | #ifndef SSH_DONT_OVERLOAD_OPENSSL_FUNCS |
117 | 81 | ||
118 | # ifdef SSH_OLD_EVP | ||
119 | # ifdef EVP_Cipher | ||
120 | # undef EVP_Cipher | ||
121 | # endif | ||
122 | # define EVP_CipherInit(a,b,c,d,e) ssh_EVP_CipherInit((a),(b),(c),(d),(e)) | ||
123 | # define EVP_Cipher(a,b,c,d) ssh_EVP_Cipher((a),(b),(c),(d)) | ||
124 | # define EVP_CIPHER_CTX_cleanup(a) ssh_EVP_CIPHER_CTX_cleanup((a)) | ||
125 | # endif /* SSH_OLD_EVP */ | ||
126 | |||
127 | # ifdef OPENSSL_EVP_DIGESTUPDATE_VOID | ||
128 | # define EVP_DigestUpdate(a,b,c) ssh_EVP_DigestUpdate((a),(b),(c)) | ||
129 | # endif | ||
130 | |||
131 | # ifdef USE_OPENSSL_ENGINE | 82 | # ifdef USE_OPENSSL_ENGINE |
132 | # ifdef OpenSSL_add_all_algorithms | 83 | # ifdef OpenSSL_add_all_algorithms |
133 | # undef OpenSSL_add_all_algorithms | 84 | # undef OpenSSL_add_all_algorithms |
@@ -135,48 +86,8 @@ RSA_METHOD *RSA_get_default_method(void); | |||
135 | # define OpenSSL_add_all_algorithms() ssh_OpenSSL_add_all_algorithms() | 86 | # define OpenSSL_add_all_algorithms() ssh_OpenSSL_add_all_algorithms() |
136 | # endif | 87 | # endif |
137 | 88 | ||
138 | # ifndef HAVE_BN_IS_PRIME_EX | ||
139 | int BN_is_prime_ex(const BIGNUM *, int, BN_CTX *, void *); | ||
140 | # endif | ||
141 | |||
142 | # ifndef HAVE_DSA_GENERATE_PARAMETERS_EX | ||
143 | int DSA_generate_parameters_ex(DSA *, int, const unsigned char *, int, int *, | ||
144 | unsigned long *, void *); | ||
145 | # endif | ||
146 | |||
147 | # ifndef HAVE_RSA_GENERATE_KEY_EX | ||
148 | int RSA_generate_key_ex(RSA *, int, BIGNUM *, void *); | ||
149 | # endif | ||
150 | |||
151 | # ifndef HAVE_EVP_DIGESTINIT_EX | ||
152 | int EVP_DigestInit_ex(EVP_MD_CTX *, const EVP_MD *, void *); | ||
153 | # endif | ||
154 | |||
155 | # ifndef HAVE_EVP_DISESTFINAL_EX | ||
156 | int EVP_DigestFinal_ex(EVP_MD_CTX *, unsigned char *, unsigned int *); | ||
157 | # endif | ||
158 | |||
159 | # ifndef EVP_MD_CTX_COPY_EX | ||
160 | int EVP_MD_CTX_copy_ex(EVP_MD_CTX *, const EVP_MD_CTX *); | ||
161 | # endif | ||
162 | |||
163 | int ssh_EVP_CipherInit(EVP_CIPHER_CTX *, const EVP_CIPHER *, unsigned char *, | ||
164 | unsigned char *, int); | ||
165 | int ssh_EVP_Cipher(EVP_CIPHER_CTX *, char *, char *, int); | ||
166 | int ssh_EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *); | ||
167 | void ssh_OpenSSL_add_all_algorithms(void); | 89 | void ssh_OpenSSL_add_all_algorithms(void); |
168 | 90 | ||
169 | # ifndef HAVE_HMAC_CTX_INIT | ||
170 | # define HMAC_CTX_init(a) | ||
171 | # endif | ||
172 | |||
173 | # ifndef HAVE_EVP_MD_CTX_INIT | ||
174 | # define EVP_MD_CTX_init(a) | ||
175 | # endif | ||
176 | |||
177 | # ifndef HAVE_EVP_MD_CTX_CLEANUP | ||
178 | # define EVP_MD_CTX_cleanup(a) | ||
179 | # endif | ||
180 | |||
181 | #endif /* SSH_DONT_OVERLOAD_OPENSSL_FUNCS */ | 91 | #endif /* SSH_DONT_OVERLOAD_OPENSSL_FUNCS */ |
182 | 92 | ||
93 | #endif /* _OPENSSL_COMPAT_H */ | ||