+
+static void ssl_get_client_cert (sslsockdata * ssldata, CONNECTION * conn)
+{
+ if (SslClientCert) {
+ debug_print (2, ("Using client certificate %s\n", SslClientCert));
+ SSL_CTX_set_default_passwd_cb_userdata (ssldata->ctx, &conn->account);
+ SSL_CTX_set_default_passwd_cb (ssldata->ctx, ssl_passwd_cb);
+ SSL_CTX_use_certificate_file (ssldata->ctx, SslClientCert,
+ SSL_FILETYPE_PEM);
+ SSL_CTX_use_PrivateKey_file (ssldata->ctx, SslClientCert,
+ SSL_FILETYPE_PEM);
+ }
+}
+
+static int ssl_passwd_cb (char *buf, int size, int rwflag, void *userdata)
+{
+ ACCOUNT *account = (ACCOUNT *) userdata;
+
+ if (mutt_account_getuser (account))
+ return 0;
+
+ debug_print (2, ("getting password for %s@%s:%u\n",
+ account->user, account->host, account->port));
+
+ if (mutt_account_getpass (account))
+ return 0;
+
+ return snprintf (buf, size, "%s", account->pass);
+}