aboutsummaryrefslogtreecommitdiffstats
path: root/src/libtls/tls_server.c
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2010-09-08 10:32:55 +0200
committerMartin Willi <martin@revosec.ch>2010-09-08 10:35:29 +0200
commit7b3c01845f639b3c845dbcb5607eef15e43036c8 (patch)
tree693b95b2a05ff0bd123b4082f5435308b9292dd9 /src/libtls/tls_server.c
parent91a0825c3920f68834dda942b34c5338d42cc635 (diff)
downloadstrongswan-7b3c01845f639b3c845dbcb5607eef15e43036c8.tar.bz2
strongswan-7b3c01845f639b3c845dbcb5607eef15e43036c8.tar.xz
Read the compression type byte for EC groups, only
Diffstat (limited to 'src/libtls/tls_server.c')
-rw-r--r--src/libtls/tls_server.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/libtls/tls_server.c b/src/libtls/tls_server.c
index d1accbc2e..b0417f6cb 100644
--- a/src/libtls/tls_server.c
+++ b/src/libtls/tls_server.c
@@ -419,14 +419,18 @@ static status_t process_key_exchange_dhe(private_tls_server_t *this,
return NEED_MORE;
}
- if (pub.ptr[0] != TLS_ANSI_UNCOMPRESSED)
+ if (ec)
{
- DBG1(DBG_TLS, "DH point format '%N' not supported",
- tls_ansi_point_format_names, pub.ptr[0]);
- this->alert->add(this->alert, TLS_FATAL, TLS_INTERNAL_ERROR);
- return NEED_MORE;
+ if (pub.ptr[0] != TLS_ANSI_UNCOMPRESSED)
+ {
+ DBG1(DBG_TLS, "DH point format '%N' not supported",
+ tls_ansi_point_format_names, pub.ptr[0]);
+ this->alert->add(this->alert, TLS_FATAL, TLS_INTERNAL_ERROR);
+ return NEED_MORE;
+ }
+ pub = chunk_skip(pub, 1);
}
- this->dh->set_other_public_value(this->dh, chunk_skip(pub, 1));
+ this->dh->set_other_public_value(this->dh, pub);
if (this->dh->get_shared_secret(this->dh, &premaster) != SUCCESS)
{
DBG1(DBG_TLS, "calculating premaster from DH failed");