summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2016-11-06 21:01:25 -0500
committerNick Mathewson <nickm@torproject.org>2016-12-05 07:54:22 -0500
commit2a365413ebc7ab0055bd4c2fc11697666fc90f7b (patch)
tree166bc1c4b30dcb6469f8b0e5567f8f61f327026c
parent1122137fa013c414d480048c266259bd72f48452 (diff)
downloadtor-2a365413ebc7ab0055bd4c2fc11697666fc90f7b.tar.gz
tor-2a365413ebc7ab0055bd4c2fc11697666fc90f7b.zip
Always Use EVP_aes_*_ctr() with openssl 1.1
(OpenSSL 1.1 makes EVP_CIPHER_CTX opaque, _and_ adds acceleration for counter mode on more architectures. So it won't work if we try the older approach, and it might help if we try the newer one.) Fixes bug 20588.
-rw-r--r--changes/bug205883
-rw-r--r--src/common/aes.c9
2 files changed, 11 insertions, 1 deletions
diff --git a/changes/bug20588 b/changes/bug20588
new file mode 100644
index 0000000000..be199b2de0
--- /dev/null
+++ b/changes/bug20588
@@ -0,0 +1,3 @@
+ o Minor bugfixes (portability):
+ - Fix compilation with OpenSSL 1.1 and less commonly-used
+ CPU architectures. Closes ticket 20588.
diff --git a/src/common/aes.c b/src/common/aes.c
index 15970a73f0..8edfc5d334 100644
--- a/src/common/aes.c
+++ b/src/common/aes.c
@@ -73,7 +73,14 @@
* gives us, and the best possible counter-mode implementation, and combine
* them.
*/
-#if OPENSSL_VERSION_NUMBER >= OPENSSL_V_NOPATCH(1,0,1) && \
+#if OPENSSL_VERSION_NUMBER >= OPENSSL_V_NOPATCH(1,1,0)
+
+/* With newer OpenSSL versions, the older fallback modes don't compile. So
+ * don't use them, even if we lack specific acceleration. */
+
+#define USE_EVP_AES_CTR
+
+#elif OPENSSL_VERSION_NUMBER >= OPENSSL_V_NOPATCH(1,0,1) && \
(defined(__i386) || defined(__i386__) || defined(_M_IX86) || \
defined(__x86_64) || defined(__x86_64__) || \
defined(_M_AMD64) || defined(_M_X64) || defined(__INTEL__)) \