BearSSL
Data Fields
br_sslrec_out_class Struct Reference

Encryption engine for SSL. More...

Data Fields

size_t context_size
 Context size (in bytes). More...
 
void(* max_plaintext )(const br_sslrec_out_class *const *ctx, size_t *start, size_t *end)
 Compute maximum plaintext sizes and offsets. More...
 
unsigned char *(* encrypt )(const br_sslrec_out_class **ctx, int record_type, unsigned version, void *plaintext, size_t *len)
 Perform record encryption. More...
 

Detailed Description

Encryption engine for SSL.

When building outgoing records, the SSL engine will use an encryption engine that uses a specific context structure, and has a set of methods (a vtable) that follows this template.

The encryption engine is responsible for applying encryption and MAC, and keeping track of the record sequence number.

Field Documentation

◆ context_size

size_t br_sslrec_out_class::context_size

Context size (in bytes).

◆ encrypt

unsigned char*(* br_sslrec_out_class::encrypt) (const br_sslrec_out_class **ctx, int record_type, unsigned version, void *plaintext, size_t *len)

Perform record encryption.

This function encrypts the record. The plaintext address and length are provided. Returned value is the start of the encrypted record (or sequence of records, if a split was performed), including the 5-byte header, and *len is adjusted to the total size of the record(s), there again including the header(s).

Parameters
ctxdecryption engine context.
record_typerecord type (23 for application data, etc).
versionrecord version.
plaintextaddress of plaintext.
lenpointer to plaintext length (updated).
Returns
pointer to start of built record.

◆ max_plaintext

void(* br_sslrec_out_class::max_plaintext) (const br_sslrec_out_class *const *ctx, size_t *start, size_t *end)

Compute maximum plaintext sizes and offsets.

When this function is called, the *start and *end values contain offsets designating the free area in the outgoing buffer for plaintext data; that free area is preceded by a 5-byte space which will receive the record header.

The max_plaintext() function is responsible for adjusting both *start and *end to make room for any record-specific header, MAC, padding, and possible split.

Parameters
ctxencryption engine context.
startpointer to start of plaintext offset (updated).
endpointer to start of plaintext offset (updated).

The documentation for this struct was generated from the following file: