* verification failed. A semi-trusted session can forward data on the
* TLS control channel but not on the tunnel channel.
*/
- if (DECRYPT_KEY_ENABLED(multi, &multi->session[TM_UNTRUSTED].key[KS_PRIMARY]))
+ if (TLS_AUTHENTICATED(multi, &multi->session[TM_UNTRUSTED].key[KS_PRIMARY]))
{
move_session(multi, TM_ACTIVE, TM_UNTRUSTED, true);
msg(D_TLS_DEBUG_LOW, "TLS: tls_multi_process: untrusted session promoted to %strusted",
* passive side is the server which only listens for the connections, the
* active side is the client which initiates connections).
*/
- if (DECRYPT_KEY_ENABLED(multi, ks)
+ if (TLS_AUTHENTICATED(multi, ks)
&& key_id == ks->key_id
&& (ks->authenticated == KS_AUTH_TRUE)
&& (floated || link_socket_actual_match(from, &ks->remote_addr)))
* Remote is requesting a key renegotiation
*/
if (op == P_CONTROL_SOFT_RESET_V1
- && DECRYPT_KEY_ENABLED(multi, ks))
+ && TLS_AUTHENTICATED(multi, ks))
{
if (!read_control_auth(buf, &session->tls_wrap, from,
session->opt))
for (int i = 0; i < KEY_SCAN_SIZE; ++i)
{
struct key_state *ks = get_key_scan(multi, i);
- if (DECRYPT_KEY_ENABLED(multi, ks))
+ if (TLS_AUTHENTICATED(multi, ks))
{
active++;
if (ks->authenticated > KS_AUTH_FALSE)
enum tls_auth_status
tls_authentication_status(struct tls_multi *multi, const int latency);
-/** Check whether the \a ks \c key_state is ready to receive data channel
- * packets.
+/** Check whether the \a ks \c key_state has finished the key exchange part
+ * of the OpenVPN hand shake. This is that the key_method_2read/write
+ * handshakes have been completed and certificate verification have
+ * been completed.
+ *
+ * connect/deferred auth might still pending. Also data-channel keys might
+ * not have been created since they are delayed until PUSH_REPLY for NCP
+ * clients.
+ *
* @ingroup data_crypto
*
* If true, it is safe to assume that this session has been authenticated
* by TLS.
*
* @note This macro only works if S_SENT_KEY + 1 == S_GOT_KEY. */
-#define DECRYPT_KEY_ENABLED(multi, ks) ((ks)->state >= (S_GOT_KEY - (multi)->opt.server))
+#define TLS_AUTHENTICATED(multi, ks) ((ks)->state >= (S_GOT_KEY - (multi)->opt.server))
/**
* Remove the given key state's auth control file, if it exists.