# TLS-SRP mutual authentication:
# Enable TLS-SRP and set the path to the OpenSSL SRP verifier
-# file (containing login information for SRP user accounts). See
-# the mod_ssl FAQ for instructions on creating this file.
+# file (containing login information for SRP user accounts).
+# Requires OpenSSL 1.0.1 or newer. See the mod_ssl FAQ for
+# detailed instructions on creating this file. Example:
+# "openssl srp -srpvfile @exp_sysconfdir@/passwd.srpv -add username"
#SSLSRPVerifierFile "@exp_sysconfdir@/passwd.srpv"
# Access Control:
* TLS-SRP support
*/
if (mctx->srp_vfile != NULL) {
- int rv;
+ int err;
ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, s, APLOGNO(02308)
"Using SRP verifier file [%s]", mctx->srp_vfile);
ssl_die();
}
- rv = SRP_VBASE_init(mctx->srp_vbase, mctx->srp_vfile);
- if (rv != SRP_NO_ERROR) {
+ err = SRP_VBASE_init(mctx->srp_vbase, mctx->srp_vfile);
+ if (err != SRP_NO_ERROR) {
ap_log_error(APLOG_MARK, APLOG_EMERG, 0, s, APLOGNO(02310)
- "Unable to load SRP verifier file [error %d]", rv);
+ "Unable to load SRP verifier file [error %d]", err);
ssl_log_ssl_error(SSLLOG_MARK, APLOG_EMERG, s);
ssl_die();
}
char *username = SSL_get_srp_username(ssl);
SRP_user_pwd *u;
- if ((u = SRP_VBASE_get_by_user(mctx->srp_vbase, username)) == NULL) {
+ if (username == NULL
+ || (u = SRP_VBASE_get_by_user(mctx->srp_vbase, username)) == NULL) {
*ad = SSL_AD_UNKNOWN_PSK_IDENTITY;
return SSL3_AL_FATAL;
}
#endif
/* SRP support came in OpenSSL 1.0.1 */
-#if (OPENSSL_VERSION_NUMBER < 0x10001000)
-#define OPENSSL_NO_SRP
-#else
+#ifndef OPENSSL_NO_SRP
+#ifdef SSL_CTRL_SET_TLS_EXT_SRP_USERNAME_CB
#include <openssl/srp.h>
+#else
+#define OPENSSL_NO_SRP
+#endif
#endif
/* mod_ssl headers */