tlsv1_record.h File Reference

TLSv1 Record Protocol. More...

#include "crypto.h"
Include dependency graph for tlsv1_record.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  tlsv1_record_layer

Defines

#define TLS_MAX_WRITE_MAC_SECRET_LEN   20
#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

Enumerations

enum  { TLS_CONTENT_TYPE_CHANGE_CIPHER_SPEC = 20, TLS_CONTENT_TYPE_ALERT = 21, TLS_CONTENT_TYPE_HANDSHAKE = 22, TLS_CONTENT_TYPE_APPLICATION_DATA = 23 }

Functions

int tlsv1_record_set_cipher_suite (struct tlsv1_record_layer *rl, u16 cipher_suite)
 TLS record layer: Set cipher suite.
int tlsv1_record_change_write_cipher (struct tlsv1_record_layer *rl)
 TLS record layer: Change write cipher.
int tlsv1_record_change_read_cipher (struct tlsv1_record_layer *rl)
 TLS record layer: Change read cipher.
int tlsv1_record_send (struct tlsv1_record_layer *rl, u8 content_type, u8 *buf, size_t buf_size, size_t payload_len, size_t *out_len)
 TLS record layer: Send a message.
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.

Detailed Description

TLSv1 Record Protocol.

Copyright
Copyright (c) 2006-2007, Jouni Malinen <j@w1.fi>

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation.

Alternatively, this software may be distributed under the terms of BSD license.

See README and COPYING for more details.

Definition in file tlsv1_record.h.


Define Documentation

#define TLS_MAX_KEY_BLOCK_LEN
Value:
(2 * (TLS_MAX_WRITE_MAC_SECRET_LEN + \
                                    TLS_MAX_WRITE_KEY_LEN + TLS_MAX_IV_LEN))

Definition at line 24 of file tlsv1_record.h.


Function Documentation

int tlsv1_record_change_read_cipher ( struct tlsv1_record_layer rl  ) 

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.

Definition at line 115 of file tlsv1_record.c.

Here is the call graph for this function:

int tlsv1_record_change_write_cipher ( struct tlsv1_record_layer rl  ) 

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.

Definition at line 80 of file tlsv1_record.c.

Here is the call graph for this function:

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:
0 on success, -1 on failure

This function decrypts the received message, verifies HMAC and TLS record layer header.

Definition at line 251 of file tlsv1_record.c.

Here is the call graph for this function:

int tlsv1_record_send ( struct tlsv1_record_layer rl,
u8  content_type,
u8 *  buf,
size_t  buf_size,
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 to send (with TLS_RECORD_HEADER_LEN octets reserved in the beginning for record layer to fill in; payload filled in after this and extra space in the end for HMAC).
buf_size Maximum buf size
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.

Definition at line 157 of file tlsv1_record.c.

Here is the call graph for this function:

int tlsv1_record_set_cipher_suite ( struct tlsv1_record_layer rl,
u16  cipher_suite 
)

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.

Definition at line 37 of file tlsv1_record.c.

Here is the call graph for this function:

 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines

Generated on Sat Nov 21 23:23:11 2009 for hostapd by  doxygen 1.6.1