aboutsummaryrefslogtreecommitdiff
path: root/src/openvpn/crypto_openssl.c
diff options
context:
space:
mode:
authorSteffan Karger2016-10-12 09:32:49 +0200
committerDavid Sommerseth2016-10-13 17:23:20 +0200
commitdc4fa3c4656b92aff3f26d4134c509410add142e (patch)
tree2789363d06c5dff789c497d51cf9cad4c929e66f /src/openvpn/crypto_openssl.c
parent396d30c264e6cb6b9f57c3e566f3b71879999662 (diff)
downloadopenvpn-dc4fa3c4656b92aff3f26d4134c509410add142e.zip
openvpn-dc4fa3c4656b92aff3f26d4134c509410add142e.tar.gz
Check --ncp-ciphers list on startup
Currently, if --ncp-ciphers contains an invalid cipher, OpenVPN will only error out when that cipher is selected by negotiation. That's not very friendly to the user, so check the list on startup, and give a clear error message immediately. This patches changes the cipher_kt_get() to let the caller decide what action to take if no valid cipher was found. This enables us to print all invalid ciphers in the list, instead of just the first invalid cipher. This should fix trac #737. v2: improve tls_check_ncp_cipher_list() with Selva's review suggestions. Signed-off-by: Steffan Karger <steffan@karger.me> Acked-by: Selva Nair <selva.nair@gmail.com> Message-Id: <1476257569-16301-1-git-send-email-steffan@karger.me> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg12671.html Trac: #737 Signed-off-by: David Sommerseth <davids@openvpn.net>
Diffstat (limited to 'src/openvpn/crypto_openssl.c')
-rw-r--r--src/openvpn/crypto_openssl.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/openvpn/crypto_openssl.c b/src/openvpn/crypto_openssl.c
index 3484c77..1ea06bb 100644
--- a/src/openvpn/crypto_openssl.c
+++ b/src/openvpn/crypto_openssl.c
@@ -504,13 +504,20 @@ cipher_kt_get (const char *ciphername)
cipher = EVP_get_cipherbyname (ciphername);
if (NULL == cipher)
- crypto_msg (M_FATAL, "Cipher algorithm '%s' not found", ciphername);
+ {
+ crypto_msg (D_LOW, "Cipher algorithm '%s' not found", ciphername);
+ return NULL;
+ }
+
if (EVP_CIPHER_key_length (cipher) > MAX_CIPHER_KEY_LENGTH)
- msg (M_FATAL, "Cipher algorithm '%s' uses a default key size (%d bytes) which is larger than " PACKAGE_NAME "'s current maximum key size (%d bytes)",
- ciphername,
- EVP_CIPHER_key_length (cipher),
- MAX_CIPHER_KEY_LENGTH);
+ {
+ msg (D_LOW, "Cipher algorithm '%s' uses a default key size (%d bytes) "
+ "which is larger than " PACKAGE_NAME "'s current maximum key size "
+ "(%d bytes)", ciphername, EVP_CIPHER_key_length (cipher),
+ MAX_CIPHER_KEY_LENGTH);
+ return NULL;
+ }
return cipher;
}