aboutsummaryrefslogtreecommitdiffstats
path: root/src/libtls/tls_server.c
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2010-08-24 11:34:43 +0200
committerMartin Willi <martin@revosec.ch>2010-08-24 11:34:43 +0200
commit69e8bb2e8d61a8e7b2a889eaae9722a4e5ed51c6 (patch)
tree1e4fbeded6b1cd5b456a21c594f80a212d7f2b89 /src/libtls/tls_server.c
parenta2c12359691943ede12f7f515cbe97af1b193e7b (diff)
downloadstrongswan-69e8bb2e8d61a8e7b2a889eaae9722a4e5ed51c6.tar.bz2
strongswan-69e8bb2e8d61a8e7b2a889eaae9722a4e5ed51c6.tar.xz
Pass NULL peer identity to omit TLS peer authentication, added eap-ttls.request_peer_auth option
Diffstat (limited to 'src/libtls/tls_server.c')
-rw-r--r--src/libtls/tls_server.c28
1 files changed, 6 insertions, 22 deletions
diff --git a/src/libtls/tls_server.c b/src/libtls/tls_server.c
index 54c4633be..0914afad3 100644
--- a/src/libtls/tls_server.c
+++ b/src/libtls/tls_server.c
@@ -70,7 +70,7 @@ struct private_tls_server_t {
identification_t *server;
/**
- * Peer identity
+ * Peer identity, NULL for no client authentication
*/
identification_t *peer;
@@ -90,11 +90,6 @@ struct private_tls_server_t {
char server_random[32];
/**
- * Does the server request a peer authentication?
- */
- bool request_peer_auth;
-
- /**
* Auth helper for peer authentication
*/
auth_cfg_t *peer_auth;
@@ -359,7 +354,7 @@ METHOD(tls_handshake_t, process, status_t,
{
return process_certificate(this, reader);
}
- if (this->request_peer_auth)
+ if (this->peer)
{
expected = TLS_CERTIFICATE;
break;
@@ -377,7 +372,7 @@ METHOD(tls_handshake_t, process, status_t,
{
return process_cert_verify(this, reader);
}
- if (this->request_peer_auth)
+ if (this->peer)
{
expected = TLS_CERTIFICATE_VERIFY;
break;
@@ -591,7 +586,7 @@ METHOD(tls_handshake_t, build, status_t,
case STATE_HELLO_SENT:
return send_certificate(this, type, writer);
case STATE_CERT_SENT:
- if (this->request_peer_auth)
+ if (this->peer)
{
return send_certificate_request(this, type, writer);
}
@@ -622,8 +617,8 @@ METHOD(tls_handshake_t, cipherspec_changed, bool,
METHOD(tls_handshake_t, change_cipherspec, bool,
private_tls_server_t *this)
{
- if ((this->request_peer_auth && this->state == STATE_CERT_VERIFY_RECEIVED) ||
- (!this->request_peer_auth && this->state == STATE_KEY_EXCHANGE_RECEIVED))
+ if ((this->peer && this->state == STATE_CERT_VERIFY_RECEIVED) ||
+ (!this->peer && this->state == STATE_KEY_EXCHANGE_RECEIVED))
{
this->crypto->change_cipher(this->crypto, TRUE);
this->state = STATE_CIPHERSPEC_CHANGED_IN;
@@ -677,16 +672,5 @@ tls_server_t *tls_server_create(tls_t *tls,
.server_auth = auth_cfg_create(),
);
- switch (tls->get_purpose(tls))
- {
- case TLS_PURPOSE_EAP_TLS:
- case TLS_PURPOSE_EAP_TTLS_CLIENT_AUTH:
- case TLS_PURPOSE_GENERIC_CLIENT_AUTH:
- this->request_peer_auth = TRUE;
- break;
- case TLS_PURPOSE_EAP_TTLS:
- case TLS_PURPOSE_GENERIC:
- break;
- }
return &this->public;
}