END-TLV TLS-Certificate
ATTRIBUTE TLS-PSK-Identity 1933 string
-ATTRIBUTE TLS-Session-Cert-File 1934 string
+ATTRIBUTE TLS-Session-Certificate-File 1934 string
+ATTRIBUTE TLS-Session-Require-Client-Certificate 1935 bool
# Set and retrieved by EAP-TLS code
ATTRIBUTE TLS-OCSP-Cert-Valid 1943 integer
extern fr_dict_attr_t const *attr_tls_psk_identity;
extern fr_dict_attr_t const *attr_tls_session_cert_file;
+extern fr_dict_attr_t const *attr_tls_session_require_client_cert;
extern fr_dict_attr_t const *attr_tls_session_cipher_suite;
extern fr_dict_attr_t const *attr_tls_session_version;
fr_dict_attr_t const *attr_tls_psk_identity;
fr_dict_attr_t const *attr_tls_session_cert_file;
+fr_dict_attr_t const *attr_tls_session_require_client_cert;
fr_dict_attr_t const *attr_tls_session_cipher_suite;
fr_dict_attr_t const *attr_tls_session_version;
{ .out = &attr_tls_ocsp_response, .name = "TLS-OCSP-Response", .type = FR_TYPE_OCTETS, .dict = &dict_freeradius },
{ .out = &attr_tls_psk_identity, .name = "TLS-PSK-Identity", .type = FR_TYPE_STRING, .dict = &dict_freeradius },
- { .out = &attr_tls_session_cert_file, .name = "TLS-Session-Cert-File", .type = FR_TYPE_STRING, .dict = &dict_freeradius },
+ { .out = &attr_tls_session_cert_file, .name = "TLS-Session-Certificate-File", .type = FR_TYPE_STRING, .dict = &dict_freeradius },
+ { .out = &attr_tls_session_require_client_cert, .name = "TLS-Session-Require-Client-Certificate", .type = FR_TYPE_BOOL, .dict = &dict_freeradius },
{ .out = &attr_tls_session_cipher_suite, .name = "TLS-Session-Cipher-Suite", .type = FR_TYPE_STRING, .dict = &dict_freeradius },
{ .out = &attr_tls_session_version, .name = "TLS-Session-Version", .type = FR_TYPE_STRING, .dict = &dict_freeradius },
}
}
+ /** Dynamic toggle for allowing disallowing client certs
+ *
+ * This is mainly used for testing in environments where we can't
+ * get test credentials for the host.
+ */
+ vp = fr_pair_find_by_da(&request->control_pairs, attr_tls_session_require_client_cert, 0);
+ if (vp) client_cert = vp->vp_bool;
+
/*
* In Server mode we only accept.
*