[Openvpn-devel,v4,1/5] Extract check_session_cipher into standalone function
Commit Message
This allow the code later to check if the cipher is okay to use and
update it for the calculation for the max MTU size.
Signed-off-by: Arne Schwabe <arne@rfc2549.org>
Patch v2: Name function check_session_cipher to better reflect its
function
---
src/openvpn/ssl.c | 11 +----------
src/openvpn/ssl_ncp.c | 22 ++++++++++++++++++++++
src/openvpn/ssl_ncp.h | 8 ++++++++
3 files changed, 31 insertions(+), 10 deletions(-)
Comments
This is technically the same as 1/5 in v3, except s/update/check/, and
*that* one is is exactly the same patch as "3/6" in the earlier patch series
(20220621161649.2872985-3-arne@rfc2549.org) which had an ACK from Frank
-> applying that ACK here, adding my own.
Stare-at-code and --color-moved=zebra confirms "trivial code move"
Passes t_client tests.
Your patch has been applied to the master branch.
commit dd1837ca549e0494164fb4633d61a317529778b4
Author: Arne Schwabe
Date: Fri Jul 29 14:37:48 2022 +0200
Extract check_session_cipher into standalone function
Signed-off-by: Arne Schwabe <arne@rfc2549.org>
Acked-by: Frank Lichtenheld <frank@lichtenheld.com>
Acked-by: Gert Doering <gert@greenie.muc.de>
Message-Id: <20220729123748.3267207-1-arne@rfc2549.org>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg24766.html
Signed-off-by: Gert Doering <gert@greenie.muc.de>
--
kind regards,
Gert Doering
@@ -1678,17 +1678,8 @@ tls_session_update_crypto_params(struct tls_session *session,
struct frame *frame_fragment,
struct link_socket_info *lsi)
{
-
- bool cipher_allowed_as_fallback = options->enable_ncp_fallback
- && streq(options->ciphername, session->opt->config_ciphername);
-
- if (!session->opt->server && !cipher_allowed_as_fallback
- && !tls_item_in_cipher_list(options->ciphername, options->ncp_ciphers))
+ if (!check_session_cipher(session, options))
{
- msg(D_TLS_ERRORS, "Error: negotiated cipher not allowed - %s not in %s",
- options->ciphername, options->ncp_ciphers);
- /* undo cipher push, abort connection setup */
- options->ciphername = session->opt->config_ciphername;
return false;
}
@@ -490,3 +490,25 @@ p2p_mode_ncp(struct tls_multi *multi, struct tls_session *session)
gc_free(&gc);
}
+
+
+bool
+check_session_cipher(struct tls_session *session, struct options *options)
+{
+ bool cipher_allowed_as_fallback = options->enable_ncp_fallback
+ && streq(options->ciphername, session->opt->config_ciphername);
+
+ if (!session->opt->server && !cipher_allowed_as_fallback
+ && !tls_item_in_cipher_list(options->ciphername, options->ncp_ciphers))
+ {
+ msg(D_TLS_ERRORS, "Error: negotiated cipher not allowed - %s not in %s",
+ options->ciphername, options->ncp_ciphers);
+ /* undo cipher push, abort connection setup */
+ options->ciphername = session->opt->config_ciphername;
+ return false;
+ }
+ else
+ {
+ return true;
+ }
+}
@@ -148,4 +148,12 @@ const char *
get_p2p_ncp_cipher(struct tls_session *session, const char *peer_info,
struct gc_arena *gc);
+
+/**
+ * Checks if the cipher is allowed, otherwise returns false and reset the
+ * cipher to the config cipher.
+ */
+bool
+check_session_cipher(struct tls_session *session, struct options *options);
+
#endif /* ifndef OPENVPN_SSL_NCP_H */