Open Storm
Functions | Variables
ssl.c File Reference

Implements functions for configuring SSL/TLS. More...

#include <device.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "modem.h"
#include "strlib.h"
#include "extern.h"
#include "ssl.h"
Include dependency graph for ssl.c:

Functions

uint8 modem_ssl_toggle (int enable_ssl)
 Toggle SSL Socket. More...
 
uint8 modem_ssl_sec_data (uint8 ssid, uint8 action, uint8 datatype, char *cert, char *output_str)
 Stores the security data (certificate(s) and/or private key) into the module’s NVM. More...
 
uint8 modem_ssl_sec_config (uint8 ssid, uint8 cipher_suite, uint8 auth_mode, uint8 cert_format)
 configure the communication channel according to the user’s security architecture. More...
 
uint8 modem_ssl_config (uint8 ssid, uint8 cid, int packet_size, int max_to, int def_to, int tx_to, uint8 ssl_ring_mode)
 Before opening the SSL socket, several parameters can be configured via this command: More...
 
uint8 ssl_init (uint8 edit_ssl_sec_config, uint8 edit_ssl_config)
 Initialize SSL features. More...
 

Variables

char client_cert [] = CLIENT_CERT
 
char private_key [] = PRIVATE_KEY
 
char server_cert [] = SERVER_CERT
 
uint8 ssid = 1
 
uint8 cipher_suite = 0
 
uint8 auth_mode = 1
 
uint8 cert_format = 1
 
uint8 cid = 1u
 
uint packet_size = 1000u
 
uint max_to = 90u
 
uint def_to = 100u
 
uint tx_to = 50u
 
uint8 ssl_ring_mode = 1u
 

Detailed Description

Implements functions for configuring SSL/TLS.

Author
Matt Bartos and Ivan Mondragon
Version
TODO
Date
2017-06-01

Function Documentation

uint8 modem_ssl_config ( uint8  ssid,
uint8  cid,
int  packet_size,
int  max_to,
int  def_to,
int  tx_to,
uint8  ssl_ring_mode 
)

Before opening the SSL socket, several parameters can be configured via this command:

Parameters
ssidMust be set to 1. It is the only Secure Socket ID available.
cidThe PDP Context Identifier, it's value must be set to 1.
packet_sizeIs the size of the packet used by the SSL/TCP/IP stack for data sending in online mode. Small <pktSize> values introduce a higher communication overhead.
max_toIs the socket inactivity timeout. In online mode: if there’s no data exchange within this timeout period the connection is closed. Increment it if it is needed a longer idle time period.
def_toTimeout value used as default value by other SSL commands whenever their Timeout parameters are not set.
tx_toIs the time period after which data is sent even if <pktSize> is not reached (only in online mode). The parameter value must be tuned with user’s application requirements. Small <txTo> values introduce a higher communication overhead.
ssl_ring_modeIs the presentation mode of the SSLSRING unsolicited indication, which informs the user about new incoming data that can be read in command mode. It can be disabled using value 0.
Returns
1u on success, 0u otherwise.

Here is the call graph for this function:

Here is the caller graph for this function:

uint8 modem_ssl_sec_config ( uint8  ssid,
uint8  cipher_suite,
uint8  auth_mode,
uint8  cert_format 
)

configure the communication channel according to the user’s security architecture.

Parameters
ssidMust be set to 1. It is the only Secure Socket ID available
cipher_suiteSetting the value 0 all the available cipher suites are proposed to the server. It is responsibility of the remote server to select one of them:
  • 0 = TLS_RSA_WITH_RC4_128_MD5 + TLS_RSA_WITH_RC4_128_SHA + TLS_RSA_WITH_AES_256_CBC_SHA
  • 1 = TLS_RSA_WITH_RC4_128_MD5
  • 2 = TLS_RSA_WITH_RC4_128_SHA
  • 3 = TLS_RSA_WITH_AES_256_CBC_SHA Warning - the product series HE920 / UE910 V2/ DE910 do not support TLS_RSA_WITH_NULL_SHA and TLS_RSA_WITH_AES_256_CBC_SHA.
auth_modeIs the authentication mode:
  • 0 = SSL verify none: no authentication, no security data is needed at all
  • 1 = Server authentication mode: CA Certificate storage is needed (the most common case)
  • 2 = Server/Client authentication mode: CA Certificate (server), Certificate (client) and Private Key (client) are needed
cert_formatIs an optional parameter. It selects the format of the certificate to be stored via #SSLSECDATA command.
  • 0 = DER format
  • 1 = PEM format
Returns
1u on success, 0u otherwise.

Here is the call graph for this function:

Here is the caller graph for this function:

uint8 modem_ssl_sec_data ( uint8  ssid,
uint8  action,
uint8  datatype,
char *  cert,
char *  output_str 
)

Stores the security data (certificate(s) and/or private key) into the module’s NVM.

Parameters
ssidMust be set to 1. It is the only Secure Socket ID available.
actionThe action to be performed:
  • 0 = deleting
  • 1 = writing
  • 2 = reading
datatypeidentifies the certificate/key to be stored or read:
  • 0 = Certificate of the client (module). It is needed when the Server/Client authentication mode has been configured.
  • 1 = CA Certificate of the remote server, it is used to authenticate the remote server. It is needed when <auth_mode> parameter of the #SSLSECCFG command is set to 1 or 2.
  • 2 = RSA private key of the client (module). It is needed if the Server/Client authentication mode has been configured.
certThe certificate to be written to the modem.
output_strThe buffer to write the current state of the modem. ONLY USED WHEN ACTION IS READ MODE.
Returns
1u on success, 0u otherwise.

Here is the call graph for this function:

Here is the caller graph for this function:

uint8 modem_ssl_toggle ( int  enable_ssl)

Toggle SSL Socket.

Parameters
enable_sslenable flag:
  • 0 = Disabled
  • 1 = Enabled
Returns
1u on success, 0u otherwise.

Here is the call graph for this function:

Here is the caller graph for this function:

uint8 ssl_init ( uint8  edit_ssl_sec_config,
uint8  edit_ssl_config 
)

Initialize SSL features.

Parameters
edit_ssl_sec_configEnable flag: edit SSL security settings (SSLSECCFG) if desired.
edit_ssl_configEnable flag: edit general SSL configuration (SSLCFG) if desired.
Returns
1u on success, 0u otherwise.

Here is the call graph for this function:

Here is the caller graph for this function: