Botan
1.10.9
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
src
ssl
tls_record.h
Go to the documentation of this file.
1
/*
2
* TLS Record Handling
3
* (C) 2004-2010 Jack Lloyd
4
*
5
* Released under the terms of the Botan license
6
*/
7
8
#ifndef BOTAN_TLS_RECORDS_H__
9
#define BOTAN_TLS_RECORDS_H__
10
11
#include <botan/tls_session_key.h>
12
#include <botan/tls_suites.h>
13
#include <botan/pipe.h>
14
#include <botan/mac.h>
15
#include <botan/secqueue.h>
16
#include <vector>
17
18
#if defined(BOTAN_USE_STD_TR1)
19
20
#if defined(BOTAN_BUILD_COMPILER_IS_MSVC)
21
#include <functional>
22
#else
23
#include <tr1/functional>
24
#endif
25
26
#elif defined(BOTAN_USE_BOOST_TR1)
27
#include <boost/tr1/functional.hpp>
28
#else
29
#error "No TR1 library defined for use"
30
#endif
31
32
namespace
Botan
{
33
34
using namespace
std::tr1::placeholders
;
35
36
/**
37
* TLS Record Writer
38
*/
39
class
BOTAN_DLL
Record_Writer
40
{
41
public
:
42
void
send(
byte
type,
const
byte
input[],
size_t
length);
43
void
send
(
byte
type,
byte
val) {
send
(type, &val, 1); }
44
45
void
flush();
46
47
void
alert(
Alert_Level
,
Alert_Type
);
48
49
void
set_keys(
const
CipherSuite
&,
const
SessionKeys
&,
Connection_Side
);
50
51
void
set_version(
Version_Code
);
52
53
void
reset();
54
55
Record_Writer
(std::tr1::function<
void
(
const
byte
[],
size_t
)> output_fn);
56
57
~Record_Writer
() {
delete
mac
; }
58
private
:
59
void
send_record(
byte
type,
const
byte
input[],
size_t
length);
60
void
send_record(
byte
type,
byte
major,
byte
minor,
61
const
byte
input[],
size_t
length);
62
63
std::tr1::function<void (const byte[], size_t)> output_fn;
64
Pipe
cipher;
65
MessageAuthenticationCode
*
mac
;
66
67
SecureVector<byte>
buffer;
68
size_t
buf_pos;
69
70
size_t
block_size
, mac_size, iv_size;
71
72
u64bit
seq_no;
73
byte
major, minor, buf_type;
74
};
75
76
/**
77
* TLS Record Reader
78
*/
79
class
BOTAN_DLL
Record_Reader
80
{
81
public
:
82
void
add_input(
const
byte
input[],
size_t
input_size);
83
84
/**
85
* @param msg_type (output variable)
86
* @param buffer (output variable)
87
* @return Number of bytes still needed (minimum), or 0 if success
88
*/
89
size_t
get_record(
byte
& msg_type,
90
MemoryRegion<byte>
& buffer);
91
92
SecureVector<byte>
get_record(
byte
& msg_type);
93
94
void
set_keys(
const
CipherSuite
& suite,
95
const
SessionKeys
& keys,
96
Connection_Side
side);
97
98
void
set_version(
Version_Code
version);
99
100
void
reset();
101
102
Record_Reader
() {
mac
= 0; reset(); }
103
104
~Record_Reader
() {
delete
mac
; }
105
private
:
106
SecureQueue
input_queue;
107
108
Pipe
cipher;
109
MessageAuthenticationCode
*
mac
;
110
size_t
block_size
, mac_size, iv_size;
111
u64bit
seq_no;
112
byte
major, minor;
113
};
114
115
}
116
117
#endif
Botan::SecureQueue
Definition:
secqueue.h:19
block_size
size_t block_size
Definition:
ossl_md.cpp:41
Botan::Record_Reader::Record_Reader
Record_Reader()
Definition:
tls_record.h:102
Botan::MessageAuthenticationCode
Definition:
mac.h:20
Botan::byte
unsigned char byte
Definition:
types.h:22
Botan::Alert_Level
Alert_Level
Definition:
tls_magic.h:57
Botan::Connection_Side
Connection_Side
Definition:
tls_magic.h:29
Botan::u64bit
unsigned long long u64bit
Definition:
types.h:49
mac
MessageAuthenticationCode * mac
Definition:
fpe_fe1.cpp:94
Botan::Record_Reader
Definition:
tls_record.h:79
Botan::Record_Writer::send
void send(byte type, byte val)
Definition:
tls_record.h:43
Botan::SessionKeys
Definition:
tls_session_key.h:20
Botan::Version_Code
Version_Code
Definition:
tls_magic.h:22
Botan::MemoryRegion< byte >
Botan
Definition:
algo_base.h:14
Botan::Record_Reader::~Record_Reader
~Record_Reader()
Definition:
tls_record.h:104
Botan::Record_Writer
Definition:
tls_record.h:39
Botan::Alert_Type
Alert_Type
Definition:
tls_magic.h:62
Botan::CipherSuite
Definition:
tls_suites.h:20
Botan::SecureVector< byte >
Botan::Pipe
Definition:
pipe.h:25
Botan::Record_Writer::~Record_Writer
~Record_Writer()
Definition:
tls_record.h:57
placeholders
Generated on Sat Aug 20 2016 08:18:48 for Botan by
1.8.9.1