#ifndef _SSLTYPES_H_
#define _SSLTYPES_H_ 1
#include <stdbool.h>
#include <stdint.h>
#include <sys/types.h>
enum {
errSSLRecordInternal = -10000,
errSSLRecordWouldBlock = -10001,
errSSLRecordProtocol = -10002,
errSSLRecordNegotiation = -10003,
errSSLRecordClosedAbort = -10004,
errSSLRecordConnectionRefused = -10005,
errSSLRecordDecryptionFail = -10006,
errSSLRecordBadRecordMac = -10007,
errSSLRecordRecordOverflow = -10008,
errSSLRecordUnexpectedRecord = -10009,
};
typedef enum
{
SSL_Version_Undetermined = 0,
SSL_Version_2_0 = 0x0002,
SSL_Version_3_0 = 0x0300,
TLS_Version_1_0 = 0x0301,
TLS_Version_1_1 = 0x0302,
TLS_Version_1_2 = 0x0303,
DTLS_Version_1_0 = 0xfeff,
} SSLProtocolVersion;
enum
{ SSL_RecordTypeV2_0,
SSL_RecordTypeV3_Smallest = 20,
SSL_RecordTypeChangeCipher = 20,
SSL_RecordTypeAlert = 21,
SSL_RecordTypeHandshake = 22,
SSL_RecordTypeAppData = 23,
SSL_RecordTypeV3_Largest = 23
};
typedef struct
{ size_t length;
uint8_t *data;
} SSLBuffer;
typedef struct
{
uint8_t contentType;
SSLProtocolVersion protocolVersion;
SSLBuffer contents;
} SSLRecord;
typedef uint64_t sslUint64;
typedef void * SSLRecordContextRef;
typedef int
(*SSLRecordReadFunc) (SSLRecordContextRef ref,
SSLRecord *rec);
typedef int
(*SSLRecordWriteFunc) (SSLRecordContextRef ref,
SSLRecord rec);
typedef int
(*SSLRecordInitPendingCiphersFunc) (SSLRecordContextRef ref,
uint16_t selectedCipher,
bool server,
SSLBuffer key);
typedef int
(*SSLRecordAdvanceWriteCipherFunc) (SSLRecordContextRef ref);
typedef int
(*SSLRecordRollbackWriteCipherFunc) (SSLRecordContextRef ref);
typedef int
(*SSLRecordAdvanceReadCipherFunc) (SSLRecordContextRef ref);
typedef int
(*SSLRecordSetProtocolVersionFunc) (SSLRecordContextRef ref,
SSLProtocolVersion protocolVersion);
typedef int
(*SSLRecordFreeFunc) (SSLRecordContextRef ref,
SSLRecord rec);
typedef int
(*SSLRecordServiceWriteQueueFunc) (SSLRecordContextRef ref);
struct SSLRecordFuncs
{ SSLRecordReadFunc read;
SSLRecordWriteFunc write;
SSLRecordInitPendingCiphersFunc initPendingCiphers;
SSLRecordAdvanceWriteCipherFunc advanceWriteCipher;
SSLRecordRollbackWriteCipherFunc rollbackWriteCipher;
SSLRecordAdvanceReadCipherFunc advanceReadCipher;
SSLRecordSetProtocolVersionFunc setProtocolVersion;
SSLRecordFreeFunc free;
SSLRecordServiceWriteQueueFunc serviceWriteQueue;
};
#endif