#include "io_tls_p.h"
#include <gwenhywfar/iolayer_be.h>
#include <gwenhywfar/io_codec_be.h>
#include <gwenhywfar/iorequest_be.h>
#include <gwenhywfar/io_socket.h>
#include "i18n_l.h"
#include <gwenhywfar/gwenhywfar.h>
#include <gwenhywfar/misc.h>
#include <gwenhywfar/debug.h>
#include <gwenhywfar/gui.h>
#include <gwenhywfar/pathmanager.h>
#include <gwenhywfar/directory.h>
#include <assert.h>
#include <errno.h>
#include <gnutls/gnutls.h>
#include <gnutls/x509.h>
#include <gwenhywfar/text.h>
Go to the source code of this file.
int GWEN_Io_LayerTls__readFile | ( | const char * | fname, | |
GWEN_BUFFER * | buf | |||
) |
Definition at line 245 of file io_tls.c.
References DBG_INFO, GWEN_Buffer_AdjustUsedBytes(), GWEN_Buffer_AllocRoom(), GWEN_Buffer_GetPosPointer(), GWEN_Buffer_IncrementPos(), GWEN_ERROR_IO, GWEN_LOGDOMAIN, and NULL.
Referenced by GWEN_Io_LayerTls_Prepare().
int GWEN_Io_LayerTls_AddRequest | ( | GWEN_IO_LAYER * | io, | |
GWEN_IO_REQUEST * | r | |||
) |
Definition at line 960 of file io_tls.c.
References DBG_INFO, GWEN_ERROR_IN_PROGRESS, GWEN_ERROR_INVALID, GWEN_ERROR_NOT_OPEN, GWEN_ERROR_NOT_SUPPORTED, GWEN_INHERIT_GETDATA, GWEN_Io_Layer_GetFlags(), GWEN_Io_Layer_GetStatus(), GWEN_Io_Layer_SetStatus(), GWEN_Io_Layer_StatusConnected, GWEN_Io_Layer_StatusConnecting, GWEN_Io_Layer_StatusDisconnected, GWEN_Io_Layer_StatusDisconnecting, GWEN_Io_Layer_StatusUnconnected, GWEN_Io_LayerCodec_Reset(), GWEN_Io_LayerTls_Prepare(), GWEN_Io_Request_Attach(), GWEN_Io_Request_Finished(), GWEN_Io_Request_GetType(), GWEN_Io_Request_StatusFinished, GWEN_Io_Request_TypeConnect, GWEN_Io_Request_TypeDisconnect, and GWEN_LOGDOMAIN.
Referenced by GWEN_Io_LayerTls_new().
int GWEN_Io_LayerTls_Decode | ( | GWEN_IO_LAYER * | io, | |
uint8_t * | pBuffer, | |||
uint32_t | lBuffer | |||
) |
Definition at line 922 of file io_tls.c.
References DBG_ERROR, DBG_INFO, GWEN_ERROR_EOF, GWEN_ERROR_INTERRUPTED, GWEN_ERROR_IO, GWEN_ERROR_TRY_AGAIN, GWEN_INHERIT_GETDATA, GWEN_LOGDOMAIN, and GWEN_Text_DumpString().
Referenced by GWEN_Io_LayerTls_new().
int GWEN_Io_LayerTls_DelRequest | ( | GWEN_IO_LAYER * | io, | |
GWEN_IO_REQUEST * | r | |||
) |
Definition at line 1040 of file io_tls.c.
References DBG_DEBUG, DBG_INFO, GWEN_ERROR_ABORTED, GWEN_ERROR_INVALID, GWEN_ERROR_NOT_SUPPORTED, GWEN_INHERIT_GETDATA, GWEN_Io_Layer_SetStatus(), GWEN_Io_Layer_StatusDisconnected, GWEN_Io_LayerCodec_AbortRequests(), GWEN_Io_Request_Finished(), GWEN_Io_Request_free(), GWEN_Io_Request_GetType(), GWEN_Io_Request_StatusFinished, GWEN_Io_Request_TypeConnect, GWEN_Io_Request_TypeDisconnect, GWEN_LOGDOMAIN, and NULL.
Referenced by GWEN_Io_LayerTls_new().
int GWEN_Io_LayerTls_Encode | ( | GWEN_IO_LAYER * | io, | |
const uint8_t * | pBuffer, | |||
uint32_t | lBuffer | |||
) |
Definition at line 889 of file io_tls.c.
References DBG_ERROR, GWEN_ERROR_INTERRUPTED, GWEN_ERROR_IO, GWEN_ERROR_TRY_AGAIN, GWEN_INHERIT_GETDATA, GWEN_LOGDOMAIN, and GWEN_Text_DumpString().
Referenced by GWEN_Io_LayerTls_new().
GWENHYWFAR_CB void GWEN_Io_LayerTls_freeData | ( | void * | bp, | |
void * | p | |||
) |
Definition at line 77 of file io_tls.c.
References GWEN_SslCertDescr_free().
Referenced by GWEN_Io_LayerTls_new().
const char* GWEN_Io_LayerTls_GetDhParamFile | ( | const GWEN_IO_LAYER * | io | ) |
const char* GWEN_Io_LayerTls_GetLocalCertFile | ( | const GWEN_IO_LAYER * | io | ) |
const char* GWEN_Io_LayerTls_GetLocalKeyFile | ( | const GWEN_IO_LAYER * | io | ) |
const char* GWEN_Io_LayerTls_GetLocalTrustFile | ( | const GWEN_IO_LAYER * | io | ) |
int GWEN_Io_LayerTls_GetPeerCert | ( | GWEN_IO_LAYER * | io, | |
uint32_t | guiid | |||
) |
Definition at line 459 of file io_tls.c.
References DBG_ERROR, DBG_INFO, DBG_WARN, GWEN_Buffer_AppendString(), GWEN_Buffer_free(), GWEN_Buffer_GetStart(), GWEN_Buffer_GetUsedBytes(), GWEN_Buffer_new(), GWEN_ERROR_GENERIC, GWEN_ERROR_NO_DATA, GWEN_ERROR_SSL_SECURITY, GWEN_Gui_ProgressLog(), GWEN_INHERIT_GETDATA, GWEN_Io_Layer_GetFlags(), GWEN_IO_LAYER_TLS_FLAGS_ALLOW_V1_CA_CRT, GWEN_LOGDOMAIN, GWEN_LoggerLevel_Warning, GWEN_SSL_CERT_FLAGS_BAD_DATA, GWEN_SSL_CERT_FLAGS_BAD_HOSTNAME, GWEN_SSL_CERT_FLAGS_EXPIRED, GWEN_SSL_CERT_FLAGS_INVALID, GWEN_SSL_CERT_FLAGS_NOT_ACTIVE, GWEN_SSL_CERT_FLAGS_OK, GWEN_SSL_CERT_FLAGS_REVOKED, GWEN_SSL_CERT_FLAGS_SIGNER_NOT_FOUND, GWEN_SSL_CERT_FLAGS_SYSTEM, GWEN_SslCertDescr_free(), GWEN_SslCertDescr_new(), GWEN_SslCertDescr_SetCommonName(), GWEN_SslCertDescr_SetCountryName(), GWEN_SslCertDescr_SetFingerPrint(), GWEN_SslCertDescr_SetIsError(), GWEN_SslCertDescr_SetLocalityName(), GWEN_SslCertDescr_SetNotAfter(), GWEN_SslCertDescr_SetNotBefore(), GWEN_SslCertDescr_SetOrganizationalUnitName(), GWEN_SslCertDescr_SetOrganizationName(), GWEN_SslCertDescr_SetStateOrProvinceName(), GWEN_SslCertDescr_SetStatusFlags(), GWEN_SslCertDescr_SetStatusText(), GWEN_Text_ToHexBuffer(), GWEN_Time_free(), GWEN_Time_fromSeconds(), I18N, and NULL.
Referenced by GWEN_Io_LayerTls_WorkOnRequests().
GWEN_SSLCERTDESCR* GWEN_Io_LayerTls_GetPeerCertDescr | ( | const GWEN_IO_LAYER * | io | ) |
const char* GWEN_Io_LayerTls_GetRemoteHostName | ( | const GWEN_IO_LAYER * | io | ) |
int GWEN_Io_LayerTls_HasWaitingRequests | ( | GWEN_IO_LAYER * | io | ) |
Definition at line 1105 of file io_tls.c.
References GWEN_INHERIT_GETDATA.
Referenced by GWEN_Io_LayerTls_new().
GWEN_IO_LAYER* GWEN_Io_LayerTls_new | ( | GWEN_IO_LAYER * | baseLayer | ) |
Definition at line 53 of file io_tls.c.
References GWEN_INHERIT_SETDATA, GWEN_Io_Layer_SetAddRequestFn(), GWEN_Io_Layer_SetDelRequestFn(), GWEN_Io_Layer_SetHasWaitingRequestsFn(), GWEN_Io_Layer_SetWorkOnRequestsFn(), GWEN_IO_LAYER_TLS_TYPE, GWEN_Io_LayerCodec_new(), GWEN_Io_LayerCodec_SetDecodeFn(), GWEN_Io_LayerCodec_SetEncodeFn(), GWEN_Io_LayerTls_AddRequest(), GWEN_Io_LayerTls_Decode(), GWEN_Io_LayerTls_DelRequest(), GWEN_Io_LayerTls_Encode(), GWEN_Io_LayerTls_freeData(), GWEN_Io_LayerTls_HasWaitingRequests(), GWEN_Io_LayerTls_WorkOnRequests(), and GWEN_NEW_OBJECT.
Referenced by GWEN_HttpSession_Init(), and GWEN_Io_LayerTls_WorkOnRequests().
int GWEN_Io_LayerTls_Prepare | ( | GWEN_IO_LAYER * | io | ) |
Definition at line 275 of file io_tls.c.
References DBG_ERROR, DBG_INFO, DBG_WARN, GWEN_Buffer_free(), GWEN_Buffer_GetStart(), GWEN_Buffer_GetUsedBytes(), GWEN_Buffer_new(), GWEN_Directory_FindFileInPaths(), GWEN_ERROR_GENERIC, GWEN_INHERIT_GETDATA, GWEN_IO_LAYER_FLAGS_PASSIVE, GWEN_Io_Layer_GetFlags(), GWEN_IO_LAYER_TLS_FLAGS_ADD_TRUSTED_CAS, GWEN_IO_LAYER_TLS_FLAGS_FORCE_SSL_V3, GWEN_IO_LAYER_TLS_FLAGS_REQUEST_CERT, GWEN_Io_LayerTls__readFile(), GWEN_Io_LayerTls_Pull(), GWEN_Io_LayerTls_Push(), GWEN_Io_LayerTls_SetLocalTrustFile(), GWEN_LOGDOMAIN, GWEN_PathManager_GetPaths(), GWEN_PM_DATADIR, GWEN_PM_LIBNAME, GWEN_StringList_free(), and NULL.
Referenced by GWEN_Io_LayerTls_AddRequest().
ssize_t GWEN_Io_LayerTls_Pull | ( | gnutls_transport_ptr_t | p, | |
void * | buf, | |||
size_t | len | |||
) |
Definition at line 762 of file io_tls.c.
References DBG_VERBOUS, GWEN_ERROR_IN_PROGRESS, GWEN_ERROR_TRY_AGAIN, GWEN_INHERIT_GETDATA, GWEN_Io_LayerCodec_EnsureReadOk(), GWEN_Io_LayerCodec_GetReadBuffer(), GWEN_LOGDOMAIN, GWEN_RingBuffer_GetMaxUnsegmentedRead(), GWEN_RingBuffer_GetReadPointer(), and GWEN_RingBuffer_SkipBytesRead().
Referenced by GWEN_Io_LayerTls_Prepare().
ssize_t GWEN_Io_LayerTls_Push | ( | gnutls_transport_ptr_t | p, | |
const void * | buf, | |||
size_t | len | |||
) |
Definition at line 821 of file io_tls.c.
References DBG_DEBUG, DBG_INFO, DBG_VERBOUS, GWEN_ERROR_TRY_AGAIN, GWEN_INHERIT_GETDATA, GWEN_Io_LayerCodec_CheckWriteOut(), GWEN_Io_LayerCodec_GetWriteBuffer(), GWEN_Io_Request_GetGuiId(), GWEN_LOGDOMAIN, GWEN_RingBuffer_GetMaxUnsegmentedWrite(), GWEN_RingBuffer_GetWritePointer(), and GWEN_RingBuffer_SkipBytesWrite().
Referenced by GWEN_Io_LayerTls_Prepare().
void GWEN_Io_LayerTls_SetDhParamFile | ( | GWEN_IO_LAYER * | io, | |
const char * | s | |||
) |
Definition at line 193 of file io_tls.c.
References GWEN_INHERIT_GETDATA, and NULL.
Referenced by GWEN_Io_LayerTls_WorkOnRequests().
void GWEN_Io_LayerTls_SetLocalCertFile | ( | GWEN_IO_LAYER * | io, | |
const char * | s | |||
) |
Definition at line 115 of file io_tls.c.
References GWEN_INHERIT_GETDATA, and NULL.
Referenced by GWEN_Io_LayerTls_WorkOnRequests().
void GWEN_Io_LayerTls_SetLocalKeyFile | ( | GWEN_IO_LAYER * | io, | |
const char * | s | |||
) |
Definition at line 141 of file io_tls.c.
References GWEN_INHERIT_GETDATA, and NULL.
Referenced by GWEN_Io_LayerTls_WorkOnRequests().
void GWEN_Io_LayerTls_SetLocalTrustFile | ( | GWEN_IO_LAYER * | io, | |
const char * | s | |||
) |
Definition at line 167 of file io_tls.c.
References GWEN_INHERIT_GETDATA, and NULL.
Referenced by GWEN_Io_LayerTls_Prepare(), and GWEN_Io_LayerTls_WorkOnRequests().
void GWEN_Io_LayerTls_SetRemoteHostName | ( | GWEN_IO_LAYER * | io, | |
const char * | s | |||
) |
Definition at line 219 of file io_tls.c.
References GWEN_INHERIT_GETDATA, and NULL.
Referenced by GWEN_HttpSession_Init(), and GWEN_Io_LayerTls_WorkOnRequests().
GWEN_IO_LAYER_WORKRESULT GWEN_Io_LayerTls_WorkOnRequests | ( | GWEN_IO_LAYER * | io | ) |
Definition at line 1122 of file io_tls.c.
References DBG_ERROR, DBG_INFO, GWEN_ERROR_SSL, GWEN_ERROR_SSL_SECURITY, GWEN_Gui_CheckCert(), GWEN_InetAddr_GetAddress(), GWEN_InetAddr_GetName(), GWEN_INHERIT_GETDATA, GWEN_Io_Layer_AddFlags(), GWEN_Io_Layer_AddIncomingLayer(), GWEN_Io_Layer_FindBaseLayerByType(), GWEN_IO_LAYER_FLAGS_PASSIVE, GWEN_Io_Layer_GetBaseLayer(), GWEN_Io_Layer_GetFlags(), GWEN_Io_Layer_GetNextIncomingLayer(), GWEN_Io_Layer_GetStatus(), GWEN_Io_Layer_SetStatus(), GWEN_IO_LAYER_SOCKET_TYPE, GWEN_Io_Layer_StatusConnected, GWEN_Io_Layer_StatusDisconnected, GWEN_Io_Layer_StatusListening, GWEN_Io_Layer_SubFlags(), GWEN_IO_LAYER_TLS_FLAGS_NEED_PEER_CERT, GWEN_IO_LAYER_TLS_FLAGS_SECURE, GWEN_IO_LAYER_TLS_FLAGS_SET_PASSV_HOST_IP, GWEN_IO_LAYER_TLS_FLAGS_SET_PASSV_HOST_NAME, GWEN_Io_Layer_WorkResultBlocking, GWEN_Io_Layer_WorkResultOk, GWEN_Io_LayerCodec_Reset(), GWEN_Io_LayerCodec_SetCurrentGuiId(), GWEN_Io_LayerSocket_GetPeerAddr(), GWEN_Io_LayerTls_GetPeerCert(), GWEN_Io_LayerTls_new(), GWEN_Io_LayerTls_SetDhParamFile(), GWEN_Io_LayerTls_SetLocalCertFile(), GWEN_Io_LayerTls_SetLocalKeyFile(), GWEN_Io_LayerTls_SetLocalTrustFile(), GWEN_Io_LayerTls_SetRemoteHostName(), GWEN_Io_Request_Finished(), GWEN_Io_Request_free(), GWEN_Io_Request_GetGuiId(), GWEN_Io_Request_StatusFinished, GWEN_LOGDOMAIN, and NULL.
Referenced by GWEN_Io_LayerTls_new().