SSL Internal Members

Microchip TCP/IP Stack

Microchip TCP/IP Stack Help
SSL Internal Members

The following functions and variables are designated as internal to the SSL module.

Enumerations
 
Name 
Description 
 
State machine for SSLRxServerHello 
 
Describes the two types of Alert records 
 
Describes the types of SSL messages (handshake and alerts) 
 
SSL Session Type Enumeration 
Functions
 
Name 
Description 
 
Calculates the handshake hash over the data. hashID can be either MD5 or SHA-1, and this function will calculate accordingly. 
 
Generates hash rounds to find either the Master Secret or the Key Block. 
 
Generates the session write keys and MAC secrets 
 
Hashes the message contents into the Handshake hash structures and begins a new handshake hash. 
 
Reads data from socket, transparently hashing it into the handshake hashes. 
 
  • Function: static WORD HSGetArray(TCP_SOCKET skt, BYTE *data, WORD len)

*

  • PreCondition: None

*

  • Input: skt - socket to read data from
  • data - array to read into, or NULL
  • len - number of bytes to read

*

  • Output: Number of bytes read

*

  • Side Effects: None

*

  • Overview: Reads data from socket, transparently hashing it
  • into the handshake hashes.

*

  • Note: None

 

 
Reads data from socket, transparently hashing it into the handshake hashes. 
 
Writes data to socket, transparently hashing it into the handshake hashes. 
 
  • Function: static WORD HSPutArray(TCP_SOCKET skt, BYTE *data, BYTE len)

*

  • PreCondition: None

*

  • Input: skt - socket to write data to
  • data - data to write
  • len - number of bytes to write

*

  • Output: Number of bytes written

*

  • Side Effects: None

*

  • Overview: Writes data to socket, transparently hashing it
  • into the handshake hashes.

*

  • Note: None

 

 
This is function HSPutROMArray. 
 
Writes data to socket, transparently hashing it into the handshake hashes. 
 
Sets up the buffer to store data for handshake hash tracking 
 
Copies data from Ethernet RAM to local RAM 
 
Copies data in PIC RAM to the Ethernet RAM 
 
Allocates a buffer for use. 
 
Specified buffer is released 
 
Specified buffer is loaded to RAM. Only loads if necessary, and saves any current buffer before switching. 
 
Allocates a hash for use. 
 
Specified hash is released 
 
Specified hash is loaded to RAM. Only loads if necessary, and saves any current hash before switching. 
 
Specified key set is loaded to RAM. Only loads if necessary, and saves any current key set before switching. 
 
This is function SSLMACAdd. 
 
This is function SSLMACBegin. 
 
This is function SSLMACCalc. 
 
Pauses connection processing until RSA calculation is complete. 
 
Receives an alert message and decides what to do 
 
Receives the SSLv2 ClientHello message, initiating a new SSL session with a client 
 
Receives a ChangeCipherSpec from the remote server 
 
Receives the ClientHello message, initiating a new SSL session with a client 
 
Receives the ClientKeyExchange message and begins the decryption process. 
 
Receives the Finished message from remote node 
 
Receives a handshake message. 
 
Receives an SSL record. 
 
Receives ServerCertificate from the remote server, locates the public key information, and executes RSA operation. 
 
Receives the ServerHello from the remote server 
 
Locates a cached SSL session for reuse. Syncs found session into RAM. 
 
Locates a cached SSL session for reuse 
 
Finds space for a new SSL session 
 
Specified session is loaded to RAM. Only loads if necessary, and saves any current session before switching if it has been updated. 
 
Begins a long SSL record. 
 
Allocates a stub for use. 
 
Specified stub is released 
 
Specified stub is loaded to RAM. Only loads if necessary, and saves any current stub before switching. 
 
Terminates an SSL connection and releases allocated resources. 
 
Generates the session keys from the master secret, then allocates and generates the encryption context. Once processing is complete, transmits the Change Cipher Spec message and the Finished handshake message to the server. 
 
Transmits the ClientHello message to initiate a new SSL session with the server. 
 
Transmits the encrypted pre-master secret to the server and requests the Change Cipher Spec. Also generates the Master Secret from the pre-master secret that was used. 
 
Transmits an SSL message. 
 
Transmits an SSL record. 
 
Transmits the Certificate message with the server's specified public key certificate. 
 
Transmits the ServerHello message. 
 
Transmits the ServerHelloDone message. 
Macros
 
Name 
Description 
 
Total space needed by all SSL storage requirements 
 
Protocol code for Alert records 
 
Protocol code for Application data records 
 
Base address for SSL buffers 
 
Base address for SSL hashes 
 
Base address for SSL keys 
 
Base address for SSL sessions 
 
Base address for SSL stubs 
 
Amount of space needed by a single SSL buffer 
 
Amount of space needed by all SSL buffer 
 
Protocol code for Change Cipher Spec records 
 
Protocol code for Handshake records 
 
Amount of space needed by a single SSL hash 
 
Amount of space needed by all SSL hash 
 
Amount of space needed by a single SSL key 
 
Amount of space needed by all SSL key 
 
This is macro SSL_RSA_EXPORT_WITH_ARCFOUR_40_MD5. 
 
This is macro SSL_RSA_WITH_ARCFOUR_128_MD5. 
 
Amount of space needed by a single SSL session 
 
Amount of space needed by all SSL session 
 
Amount of space needed by a single SSL stub 
 
Amount of space needed by all SSL stubs 
 
SSL version number 
 
SSL version number (high byte) 
 
SSL version number (low byte) 
 
This is macro SSLFinishPartialRecord. 
 
This is macro SSLFlushPartialRecord. 
 
This is macro SSLSessionUpdated. 
Module
Structures
 
Name 
Description 
 
Memory definition for SSL keys. This area is split into Local and Remote areas. During the handshake, Local.random and Remote.random hold the ServerRandom and ClientRandom values. Once the session keys are calculated, the Local.app and Remote.app contain the MAC secret, record sequence number, and encryption context for the ARCFOUR module. 
 
Storage space for SSL Session identifiers. (The SessionID and MasterSecret) 
 
Stub value for an SSL_SESSION. The tag associates this session with a remote node, either by matching to a remote IP address when we are the client or the first 3 bytes of the session ID when we are the host. When a session is free/expired, the tag is 0x00000000. The lastUsed value is the Tick count when the session was last used so that older sessions may be overwritten first. 
 
Memory holder for general information associated with an SSL connections. 
Unions
 
Name 
Description 
 
Generic buffer space for SSL. The hashRounds element is used when this buffer is needed for handshake hash calculations, and the full element is used as the Sbox for ARCFOUR calculations. 
Variables
 
Name 
Description 
 
Indicates which buffers are in use 
 
Indicates which hashes are in use 
 
Indicates which stubs are in use 
 
Masks for each bit in the is*Used variables 
 
Used in buffering handshake results 
 
RSA public certificate data ? 
 
RSA public certificate length ? 
 
Which buffer is loaded 
 
Hash storage 
 
Which hash is loaded 
 
The current SSL session 
 
Which SSL_KEYS are loaded 
 
Which stub is using RSA, if any 
 
Current session data 
 
Which session is loaded 
 
8 byte session stubs 
 
Whether or not it has been updated 
 
The current SSL stub 
 
Which SSL_STUB is loaded 
Microchip TCP/IP Stack 5.42.08 - June 15, 2013
Copyright © 2012 Microchip Technology, Inc.  All rights reserved.