summaryrefslogtreecommitdiff
path: root/openbsd-compat/openssl-compat.h
diff options
context:
space:
mode:
Diffstat (limited to 'openbsd-compat/openssl-compat.h')
-rw-r--r--openbsd-compat/openssl-compat.h43
1 files changed, 33 insertions, 10 deletions
diff --git a/openbsd-compat/openssl-compat.h b/openbsd-compat/openssl-compat.h
index a151eff38..e7439b4e7 100644
--- a/openbsd-compat/openssl-compat.h
+++ b/openbsd-compat/openssl-compat.h
@@ -1,4 +1,4 @@
1/* $Id: openssl-compat.h,v 1.20 2012/01/17 03:03:39 dtucker Exp $ */ 1/* $Id: openssl-compat.h,v 1.24 2013/02/12 00:00:40 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>
@@ -40,7 +40,7 @@
40# define EVP_CIPHER_CTX_get_app_data(e) ((e)->app_data) 40# define EVP_CIPHER_CTX_get_app_data(e) ((e)->app_data)
41#endif 41#endif
42 42
43#if OPENSSL_VERSION_NUMBER < 0x1000000fL 43#if OPENSSL_VERSION_NUMBER < 0x10000001L
44# define LIBCRYPTO_EVP_INL_TYPE unsigned int 44# define LIBCRYPTO_EVP_INL_TYPE unsigned int
45#else 45#else
46# define LIBCRYPTO_EVP_INL_TYPE size_t 46# define LIBCRYPTO_EVP_INL_TYPE size_t
@@ -59,20 +59,43 @@
59# define EVP_aes_128_cbc evp_rijndael 59# define EVP_aes_128_cbc evp_rijndael
60# define EVP_aes_192_cbc evp_rijndael 60# define EVP_aes_192_cbc evp_rijndael
61# define EVP_aes_256_cbc evp_rijndael 61# define EVP_aes_256_cbc evp_rijndael
62extern const EVP_CIPHER *evp_rijndael(void); 62const EVP_CIPHER *evp_rijndael(void);
63extern void ssh_rijndael_iv(EVP_CIPHER_CTX *, int, u_char *, u_int); 63void ssh_rijndael_iv(EVP_CIPHER_CTX *, int, u_char *, u_int);
64#endif 64#endif
65 65
66#if !defined(EVP_CTRL_SET_ACSS_MODE) 66#ifndef OPENSSL_HAVE_EVPCTR
67# if (OPENSSL_VERSION_NUMBER >= 0x00907000L) 67#define EVP_aes_128_ctr evp_aes_128_ctr
68# define USE_CIPHER_ACSS 1 68#define EVP_aes_192_ctr evp_aes_128_ctr
69extern const EVP_CIPHER *evp_acss(void); 69#define EVP_aes_256_ctr evp_aes_128_ctr
70# define EVP_acss evp_acss 70const EVP_CIPHER *evp_aes_128_ctr(void);
71void ssh_aes_ctr_iv(EVP_CIPHER_CTX *, int, u_char *, size_t);
72#endif
73
74/* Avoid some #ifdef. Code that uses these is unreachable without GCM */
75#if !defined(OPENSSL_HAVE_EVPGCM) && !defined(EVP_CTRL_GCM_SET_IV_FIXED)
76# define EVP_CTRL_GCM_SET_IV_FIXED -1
77# define EVP_CTRL_GCM_IV_GEN -1
78# define EVP_CTRL_GCM_SET_TAG -1
79# define EVP_CTRL_GCM_GET_TAG -1
80#endif
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 */
71# else 86# else
72# define EVP_acss NULL 87# define EVP_CIPHER_CTX_ctrl(a,b,c,d) (0)
73# endif 88# endif
74#endif 89#endif
75 90
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
76/* OpenSSL 0.9.8e returns cipher key len not context key len */ 99/* OpenSSL 0.9.8e returns cipher key len not context key len */
77#if (OPENSSL_VERSION_NUMBER == 0x0090805fL) 100#if (OPENSSL_VERSION_NUMBER == 0x0090805fL)
78# define EVP_CIPHER_CTX_key_length(c) ((c)->key_len) 101# define EVP_CIPHER_CTX_key_length(c) ((c)->key_len)