aboutsummaryrefslogtreecommitdiffstats
path: root/src/tls
diff options
context:
space:
mode:
Diffstat (limited to 'src/tls')
-rw-r--r--src/tls/c_hello.cpp6
-rw-r--r--src/tls/tls_extensions.h13
-rw-r--r--src/tls/tls_messages.h8
3 files changed, 17 insertions, 10 deletions
diff --git a/src/tls/c_hello.cpp b/src/tls/c_hello.cpp
index 6c4964fb1..2455eae3b 100644
--- a/src/tls/c_hello.cpp
+++ b/src/tls/c_hello.cpp
@@ -204,6 +204,7 @@ void Client_Hello::deserialize_sslv2(const MemoryRegion<byte>& buf)
m_fragment_size = 0;
m_next_protocol = false;
+ m_supports_session_ticket = false;
}
/*
@@ -257,6 +258,11 @@ void Client_Hello::deserialize(const MemoryRegion<byte>& buf)
{
m_fragment_size = frag->fragment_size();
}
+ else if(Session_Ticket* ticket = dynamic_cast<Session_Ticket*>(extn))
+ {
+ m_supports_session_ticket = true;
+ m_session_ticket = ticket->contents();
+ }
else if(Renegotation_Extension* reneg = dynamic_cast<Renegotation_Extension*>(extn))
{
// checked by TLS_Client / TLS_Server as they know the handshake state
diff --git a/src/tls/tls_extensions.h b/src/tls/tls_extensions.h
index 526436862..6d4e40434 100644
--- a/src/tls/tls_extensions.h
+++ b/src/tls/tls_extensions.h
@@ -183,12 +183,7 @@ class Session_Ticket : public TLS_Extension
TLS_Handshake_Extension_Type type() const
{ return TLSEXT_SESSION_TICKET; }
- /*
- * Decrypt the session ticket and return the session info;
- * used by server.
- */
- TLS_Session decrypt(const SymmetricKey& key,
- const MemoryRegion<byte>& key_name);
+ const MemoryVector<byte>& contents() const { return m_contents; }
/**
* Create empty extension, used by both client and server
@@ -199,14 +194,16 @@ class Session_Ticket : public TLS_Extension
* Extension with ticket, used by client
*/
Session_Ticket(const MemoryRegion<byte>& session_ticket) :
- m_contents(session_ticket);
+ m_contents(session_ticket) {}
/**
* Deserialize a session ticket
*/
- Session_Ticket(const TLS_Data_Reader& reader, u16ibt extension_size);
+ Session_Ticket(const TLS_Data_Reader& reader, u16bit extension_size);
MemoryVector<byte> serialize() const { return m_contents; }
+
+ bool empty() const { return false; }
private:
MemoryVector<byte> m_contents;
};
diff --git a/src/tls/tls_messages.h b/src/tls/tls_messages.h
index ed8073bda..94e17cb9b 100644
--- a/src/tls/tls_messages.h
+++ b/src/tls/tls_messages.h
@@ -79,9 +79,10 @@ class Client_Hello : public Handshake_Message
size_t fragment_size() const { return m_fragment_size; }
- bool supports_session_ticket() const { returnm m_supports_session_ticket; }
+ bool supports_session_ticket() const { return m_supports_session_ticket; }
- const MemoryRegion<byte> session_ticket() const { return m_session_ticket; }
+ const MemoryRegion<byte>& session_ticket() const
+ { return m_session_ticket; }
Client_Hello(Record_Writer& writer,
TLS_Handshake_Hash& hash,
@@ -123,6 +124,9 @@ class Client_Hello : public Handshake_Message
size_t m_fragment_size;
bool m_secure_renegotiation;
MemoryVector<byte> m_renegotiation_info;
+
+ bool m_supports_session_ticket;
+ MemoryVector<byte> m_session_ticket;
};
/**