- refactored TLS API (moved TLSSocket in a separate private header file)

pull/143/head
Michael Zillgith 8 years ago
parent 6c588a9a3a
commit 3a2ad2c4ef

@ -26,7 +26,7 @@
#include "byte_buffer.h" #include "byte_buffer.h"
#include "buffer_chain.h" #include "buffer_chain.h"
#include "iso_connection_parameters.h" #include "iso_connection_parameters.h"
#include "tls_api.h" #include "tls_socket.h"
#ifndef ACSE_H_ #ifndef ACSE_H_
#define ACSE_H_ #define ACSE_H_

@ -29,7 +29,7 @@
#include "buffer_chain.h" #include "buffer_chain.h"
#include "hal_socket.h" #include "hal_socket.h"
#include "iso_connection_parameters.h" #include "iso_connection_parameters.h"
#include "tls_api.h" #include "tls_socket.h"
typedef struct { typedef struct {
TSelector tSelSrc; TSelector tSelSrc;

@ -15,7 +15,7 @@
#ifndef SRC_TLS_TLS_API_H_ #ifndef SRC_TLS_TLS_API_H_
#define SRC_TLS_TLS_API_H_ #define SRC_TLS_TLS_API_H_
#include "hal_socket.h" #include <stdbool.h>
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
@ -23,8 +23,6 @@ extern "C" {
typedef struct sTLSConfiguration* TLSConfiguration; typedef struct sTLSConfiguration* TLSConfiguration;
typedef struct sTLSSocket* TLSSocket;
/** /**
* \brief Create a new \ref TLSConfiguration object to represent TLS configuration and certificates * \brief Create a new \ref TLSConfiguration object to represent TLS configuration and certificates
* *
@ -108,62 +106,6 @@ TLSConfiguration_setRenegotiationTime(TLSConfiguration self, int timeInMs);
void void
TLSConfiguration_destroy(TLSConfiguration self); TLSConfiguration_destroy(TLSConfiguration self);
TLSSocket
TLSSocket_create(Socket socket, TLSConfiguration configuration, bool storeClientCert);
/**
* \brief Perform a new TLS handshake/session renegotiation
*/
bool
TLSSocket_performHandshake(TLSSocket self);
/**
* \brief Access the certificate used by the peer
*
* \param[out] certSize the size of the certificate in bytes
*
* \return the certificate byte buffer
*/
uint8_t*
TLSSocket_getPeerCertificate(TLSSocket self, int* certSize);
/**
* \brief read from socket to local buffer (non-blocking)
*
* The function shall return immediately if no data is available. In this case
* the function returns 0. If an error happens the function shall return -1.
*
* Implementation of this function is MANDATORY
*
* NOTE: The behaviour of this function changed with version 0.8!
*
* \param self the client, connection or server socket instance
* \param buf the buffer where the read bytes are copied to
* \param size the maximum number of bytes to read (size of the provided buffer)
*
* \return the number of bytes read or -1 if an error occurred
*/
int
TLSSocket_read(TLSSocket self, uint8_t* buf, int size);
/**
* \brief send a message through the socket
*
* Implementation of this function is MANDATORY
*
* \param self client, connection or server socket instance
*
* \return number of bytes transmitted of -1 in case of an error
*/
int
TLSSocket_write(TLSSocket self, uint8_t* buf, int size);
/**
* \brief Close the TLS socket and release all resources
*/
void
TLSSocket_close(TLSSocket self);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

@ -0,0 +1,88 @@
/*
* tls_socket.h
*
* TLS API for TCP/IP protocol stacks
*
* Copyright 2017 MZ Automation GmbH
*
* Abstraction layer for different TLS implementations
*
* Implementation connects the TLS API layer with the socket API layer
* and performs all TLS tasks like handshake, encryption/decryption.
*
*/
#ifndef SRC_TLS_TLS_SOCKET_H_
#define SRC_TLS_TLS_SOCKET_H_
#include "tls_api.h"
#include "hal_socket.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct sTLSSocket* TLSSocket;
TLSSocket
TLSSocket_create(Socket socket, TLSConfiguration configuration, bool storeClientCert);
/**
* \brief Perform a new TLS handshake/session renegotiation
*/
bool
TLSSocket_performHandshake(TLSSocket self);
/**
* \brief Access the certificate used by the peer
*
* \param[out] certSize the size of the certificate in bytes
*
* \return the certificate byte buffer
*/
uint8_t*
TLSSocket_getPeerCertificate(TLSSocket self, int* certSize);
/**
* \brief read from socket to local buffer (non-blocking)
*
* The function shall return immediately if no data is available. In this case
* the function returns 0. If an error happens the function shall return -1.
*
* Implementation of this function is MANDATORY
*
* NOTE: The behaviour of this function changed with version 0.8!
*
* \param self the client, connection or server socket instance
* \param buf the buffer where the read bytes are copied to
* \param size the maximum number of bytes to read (size of the provided buffer)
*
* \return the number of bytes read or -1 if an error occurred
*/
int
TLSSocket_read(TLSSocket self, uint8_t* buf, int size);
/**
* \brief send a message through the socket
*
* Implementation of this function is MANDATORY
*
* \param self client, connection or server socket instance
*
* \return number of bytes transmitted of -1 in case of an error
*/
int
TLSSocket_write(TLSSocket self, uint8_t* buf, int size);
/**
* \brief Close the TLS socket and release all resources
*/
void
TLSSocket_close(TLSSocket self);
#ifdef __cplusplus
}
#endif
#endif /* SRC_TLS_TLS_SOCKET_H_ */
Loading…
Cancel
Save