diff options
Diffstat (limited to 'src/libtls/tls.c')
-rw-r--r-- | src/libtls/tls.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/libtls/tls.c b/src/libtls/tls.c index da3b5b4f0..d46ce0084 100644 --- a/src/libtls/tls.c +++ b/src/libtls/tls.c @@ -146,10 +146,25 @@ METHOD(tls_t, get_version, tls_version_t, return this->version; } -METHOD(tls_t, set_version, void, +METHOD(tls_t, set_version, bool, private_tls_t *this, tls_version_t version) { - this->version = version; + if (version > this->version) + { + return FALSE; + } + switch (version) + { + case TLS_1_0: + case TLS_1_1: + case TLS_1_2: + this->version = version; + return TRUE; + case SSL_2_0: + case SSL_3_0: + default: + return FALSE; + } } METHOD(tls_t, get_purpose, tls_purpose_t, |