1/* 2 * Copyright (c) 2002,2005-2007,2010-2011,2014 Apple Inc. All Rights Reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 */ 23 24/* 25 * tls_record.h - Declarations of record layer callout struct to provide indirect calls to 26 * SSLv3 and TLS routines. 27 */ 28 29#ifndef _TLS_RECORD_INTERNAL_H_ 30#define _TLS_RECORD_INTERNAL_H_ 31 32#ifdef __cplusplus 33extern "C" { 34#endif 35 36// #include "sslRecord.h" 37 38#include "sslTypes.h" 39#include "cryptType.h" 40#include "sslMemory.h" 41#include "SSLRecordInternal.h" 42 43#include <tls_record.h> 44 45struct SSLRecordInternalContext; 46 47typedef struct WaitingRecord 48{ struct WaitingRecord *next; 49 size_t sent; 50 /* 51 * These two fields replace a dynamically allocated SSLBuffer; 52 * the payload to write is contained in the variable-length 53 * array data[]. 54 */ 55 size_t length; 56 uint8_t data[1]; 57} WaitingRecord; 58 59 60struct SSLRecordInternalContext 61{ 62 tls_record_t filter; 63 bool dtls; 64 65 /* I/O */ 66 SSLIOReadFunc read; 67 SSLIOWriteFunc write; 68 SSLIOConnectionRef ioRef; 69 70 /* buffering */ 71 SSLBuffer partialReadBuffer; 72 size_t amountRead; 73 74 WaitingRecord *recordWriteQueue; 75}; 76 77#ifdef __cplusplus 78} 79#endif 80 81#endif /* _TLS_SSL_H_ */ 82