Coverage Report

Created: 2020-11-21 08:34

/src/botan/src/lib/tls/msg_session_ticket.cpp
Line
Count
Source (jump to first uncovered line)
1
/*
2
* Session Tickets
3
* (C) 2012 Jack Lloyd
4
*
5
* Botan is released under the Simplified BSD License (see license.txt)
6
*/
7
8
#include <botan/tls_messages.h>
9
#include <botan/internal/tls_reader.h>
10
#include <botan/internal/tls_handshake_io.h>
11
#include <botan/internal/tls_handshake_hash.h>
12
#include <botan/internal/loadstor.h>
13
14
namespace Botan {
15
16
namespace TLS {
17
18
New_Session_Ticket::New_Session_Ticket(Handshake_IO& io,
19
                                       Handshake_Hash& hash,
20
                                       const std::vector<uint8_t>& ticket,
21
                                       uint32_t lifetime) :
22
   m_ticket_lifetime_hint(lifetime),
23
   m_ticket(ticket)
24
318
   {
25
318
   hash.update(io.send(*this));
26
318
   }
27
28
New_Session_Ticket::New_Session_Ticket(Handshake_IO& io,
29
                                       Handshake_Hash& hash)
30
0
   {
31
0
   hash.update(io.send(*this));
32
0
   }
33
34
New_Session_Ticket::New_Session_Ticket(const std::vector<uint8_t>& buf)
35
14
   {
36
14
   if(buf.size() < 6)
37
2
      throw Decoding_Error("Session ticket message too short to be valid");
38
39
12
   TLS_Data_Reader reader("SessionTicket", buf);
40
41
12
   m_ticket_lifetime_hint = reader.get_uint32_t();
42
12
   m_ticket = reader.get_range<uint8_t>(2, 0, 65535);
43
12
   reader.assert_done();
44
12
   }
45
46
std::vector<uint8_t> New_Session_Ticket::serialize() const
47
318
   {
48
318
   std::vector<uint8_t> buf(4);
49
318
   store_be(m_ticket_lifetime_hint, buf.data());
50
318
   append_tls_length_value(buf, m_ticket, 2);
51
318
   return buf;
52
318
   }
53
54
}
55
56
}