summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2013-02-11 10:39:12 +1100
committerDamien Miller <djm@mindrot.org>2013-02-11 10:39:12 +1100
commitb6f73b3af6fa14df1306d763dd7ec38f68de6f79 (patch)
treef5f8780e1b63d379a66130e8e0db035deceecd6a
parent951b53b1bede98fdcfeeac8c5c00dbf3948d9b75 (diff)
- (djm) [configure.ac openbsd-compat/openssl-compat.h] Repair build on old
libcrypto that lacks EVP_CIPHER_CTX_ctrl
-rw-r--r--ChangeLog4
-rw-r--r--configure.ac15
-rw-r--r--openbsd-compat/openssl-compat.h11
3 files changed, 26 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 5e832e7d5..798f5452e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
120130211
2 - (djm) [configure.ac openbsd-compat/openssl-compat.h] Repair build on old
3 libcrypto that lacks EVP_CIPHER_CTX_ctrl
4
120130208 520130208
2 - (djm) [contrib/redhat/sshd.init] treat RETVAL as an integer; 6 - (djm) [contrib/redhat/sshd.init] treat RETVAL as an integer;
3 patch from Iain Morgan in bz#2059 7 patch from Iain Morgan in bz#2059
diff --git a/configure.ac b/configure.ac
index 6df09e210..e96e81e64 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,4 +1,4 @@
1# $Id: configure.ac,v 1.502 2013/02/08 00:50:09 dtucker Exp $ 1# $Id: configure.ac,v 1.503 2013/02/10 23:39:13 djm Exp $
2# 2#
3# Copyright (c) 1999-2004 Damien Miller 3# Copyright (c) 1999-2004 Damien Miller
4# 4#
@@ -15,7 +15,7 @@
15# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 16
17AC_INIT([OpenSSH], [Portable], [openssh-unix-dev@mindrot.org]) 17AC_INIT([OpenSSH], [Portable], [openssh-unix-dev@mindrot.org])
18AC_REVISION($Revision: 1.502 $) 18AC_REVISION($Revision: 1.503 $)
19AC_CONFIG_SRCDIR([ssh.c]) 19AC_CONFIG_SRCDIR([ssh.c])
20AC_LANG([C]) 20AC_LANG([C])
21 21
@@ -2339,7 +2339,12 @@ AC_LINK_IFELSE(
2339#include <openssl/evp.h> 2339#include <openssl/evp.h>
2340 ]], [[ 2340 ]], [[
2341 exit(EVP_aes_128_gcm() == NULL || 2341 exit(EVP_aes_128_gcm() == NULL ||
2342 EVP_aes_256_gcm() == NULL); 2342 EVP_aes_256_gcm() == NULL ||
2343 EVP_CTRL_GCM_SET_IV_FIXED == 0 ||
2344 EVP_CTRL_GCM_IV_GEN == 0 ||
2345 EVP_CTRL_GCM_SET_TAG == 0 ||
2346 EVP_CTRL_GCM_GET_TAG == 0 ||
2347 EVP_CIPHER_CTX_ctrl(NULL, 0, 0, NULL) == 0);
2343 ]])], 2348 ]])],
2344 [ 2349 [
2345 AC_MSG_RESULT([yes]) 2350 AC_MSG_RESULT([yes])
@@ -2351,6 +2356,10 @@ AC_LINK_IFELSE(
2351 ] 2356 ]
2352) 2357)
2353 2358
2359AC_SEARCH_LIBS([EVP_CIPHER_CTX_ctrl], [crypto],
2360 [AC_DEFINE([HAVE_EVP_CIPHER_CTX_CTRL], [1],
2361 [Define if libcrypto has EVP_CIPHER_CTX_ctrl])])
2362
2354AC_MSG_CHECKING([if EVP_DigestUpdate returns an int]) 2363AC_MSG_CHECKING([if EVP_DigestUpdate returns an int])
2355AC_LINK_IFELSE( 2364AC_LINK_IFELSE(
2356 [AC_LANG_PROGRAM([[ 2365 [AC_LANG_PROGRAM([[
diff --git a/openbsd-compat/openssl-compat.h b/openbsd-compat/openssl-compat.h
index eca62769e..6c4d68def 100644
--- a/openbsd-compat/openssl-compat.h
+++ b/openbsd-compat/openssl-compat.h
@@ -1,4 +1,4 @@
1/* $Id: openssl-compat.h,v 1.22 2013/01/20 11:31:37 djm Exp $ */ 1/* $Id: openssl-compat.h,v 1.23 2013/02/10 23:39:15 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>
@@ -79,6 +79,15 @@ void ssh_aes_ctr_iv(EVP_CIPHER_CTX *, int, u_char *, size_t);
79# define EVP_CTRL_GCM_GET_TAG -1 79# define EVP_CTRL_GCM_GET_TAG -1
80#endif 80#endif
81 81
82/* Replace missing EVP_CIPHER_CTX_ctrl() with something that returns failure */
83#ifndef HAVE_EVP_CIPHER_CTX_CTRL
84# ifdef OPENSSL_HAVE_EVPGCM
85# error AES-GCM enabled without EVP_CIPHER_CTX_ctrl /* shouldn't happen */
86# else
87# define EVP_CIPHER_CTX_ctrl(a,b,c,d) (0)
88# endif
89#endif
90
82#if OPENSSL_VERSION_NUMBER < 0x00907000L 91#if OPENSSL_VERSION_NUMBER < 0x00907000L
83#define EVP_X_STATE(evp) &(evp).c 92#define EVP_X_STATE(evp) &(evp).c
84#define EVP_X_STATE_LEN(evp) sizeof((evp).c) 93#define EVP_X_STATE_LEN(evp) sizeof((evp).c)