TLSv1 Record Protocol.
More...
Go to the source code of this file.
|
#define | TLS_MAX_WRITE_MAC_SECRET_LEN 32 |
|
#define | TLS_MAX_WRITE_KEY_LEN 32 |
|
#define | TLS_MAX_IV_LEN 16 |
|
#define | TLS_MAX_KEY_BLOCK_LEN |
|
#define | TLS_SEQ_NUM_LEN 8 |
|
#define | TLS_RECORD_HEADER_LEN 5 |
|
|
enum | { TLS_CONTENT_TYPE_CHANGE_CIPHER_SPEC = 20,
TLS_CONTENT_TYPE_ALERT = 21,
TLS_CONTENT_TYPE_HANDSHAKE = 22,
TLS_CONTENT_TYPE_APPLICATION_DATA = 23
} |
|
|
int | tlsv1_record_set_cipher_suite (struct tlsv1_record_layer *rl, u16 cipher_suite) |
| TLS record layer: Set cipher suite. More...
|
|
int | tlsv1_record_change_write_cipher (struct tlsv1_record_layer *rl) |
| TLS record layer: Change write cipher. More...
|
|
int | tlsv1_record_change_read_cipher (struct tlsv1_record_layer *rl) |
| TLS record layer: Change read cipher. More...
|
|
int | tlsv1_record_send (struct tlsv1_record_layer *rl, u8 content_type, u8 *buf, size_t buf_size, const u8 *payload, size_t payload_len, size_t *out_len) |
| TLS record layer: Send a message. More...
|
|
int | tlsv1_record_receive (struct tlsv1_record_layer *rl, const u8 *in_data, size_t in_len, u8 *out_data, size_t *out_len, u8 *alert) |
| TLS record layer: Process a received message. More...
|
|
#define TLS_MAX_KEY_BLOCK_LEN |
Value:(2 * (TLS_MAX_WRITE_MAC_SECRET_LEN + \
TLS_MAX_WRITE_KEY_LEN + TLS_MAX_IV_LEN))
TLS record layer: Change read cipher.
- Parameters
-
rl | Pointer to TLS record layer data |
- Returns
- 0 on success (cipher changed), -1 on failure
This function changes TLS record layer to use the new cipher suite configured with tlsv1_record_set_cipher_suite() for reading.
TLS record layer: Change write cipher.
- Parameters
-
rl | Pointer to TLS record layer data |
- Returns
- 0 on success (cipher changed), -1 on failure
This function changes TLS record layer to use the new cipher suite configured with tlsv1_record_set_cipher_suite() for writing.
int tlsv1_record_receive |
( |
struct tlsv1_record_layer * |
rl, |
|
|
const u8 * |
in_data, |
|
|
size_t |
in_len, |
|
|
u8 * |
out_data, |
|
|
size_t * |
out_len, |
|
|
u8 * |
alert |
|
) |
| |
TLS record layer: Process a received message.
- Parameters
-
rl | Pointer to TLS record layer data |
in_data | Received data |
in_len | Length of the received data |
out_data | Buffer for output data (must be at least as long as in_data) |
out_len | Set to maximum out_data length by caller; used to return the length of the used data |
alert | Buffer for returning an alert value on failure |
- Returns
- Number of bytes used from in_data on success, 0 if record was not complete (more data needed), or -1 on failure
This function decrypts the received message, verifies HMAC and TLS record layer header.
int tlsv1_record_send |
( |
struct tlsv1_record_layer * |
rl, |
|
|
u8 |
content_type, |
|
|
u8 * |
buf, |
|
|
size_t |
buf_size, |
|
|
const u8 * |
payload, |
|
|
size_t |
payload_len, |
|
|
size_t * |
out_len |
|
) |
| |
TLS record layer: Send a message.
- Parameters
-
rl | Pointer to TLS record layer data |
content_type | Content type (TLS_CONTENT_TYPE_*) |
buf | Buffer for the generated TLS message (needs to have extra space for header, IV (TLS v1.1), and HMAC) |
buf_size | Maximum buf size |
payload | Payload to be sent |
payload_len | Length of the payload |
out_len | Buffer for returning the used buf length |
- Returns
- 0 on success, -1 on failure
This function fills in the TLS record layer header, adds HMAC, and encrypts the data using the current write cipher.
TLS record layer: Set cipher suite.
- Parameters
-
rl | Pointer to TLS record layer data |
cipher_suite | New cipher suite |
- Returns
- 0 on success, -1 on failure
This function is used to prepare TLS record layer for cipher suite change. tlsv1_record_change_write_cipher() and tlsv1_record_change_read_cipher() functions can then be used to change the currently used ciphers.