2 * Copyright (c) 2000-2001,2005-2007,2010-2012 Apple Inc. All Rights Reserved.
4 * @APPLE_LICENSE_HEADER_START@
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
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.
21 * @APPLE_LICENSE_HEADER_END@
29 #define _SSLUTILS_H_ 1
31 #include "SecureTransport.h"
38 uint32_t SSLDecodeInt(
41 uint8_t *SSLEncodeInt(
46 /* Same, but the value to encode is a size_t */
50 uint8_t *SSLEncodeSize(
55 /* Same but for 64bits int */
56 uint8_t* SSLEncodeUInt64(
69 int SSLHandshakeHeaderSize(SSLRecord
*rec
)
71 if(rec
->protocolVersion
==DTLS_Version_1_0
)
77 uint8_t *SSLEncodeHandshakeHeader(
80 SSLHandshakeType type
,
83 #ifdef USE_SSLCERTIFICATE
84 size_t SSLGetCertificateChainLength(
85 const SSLCertificate
*c
);
86 OSStatus
sslDeleteCertificateChain(
87 SSLCertificate
*certs
,
89 #endif /* USE_SSLCERTIFICATE */
91 Boolean
sslIsSessionActive(
92 const SSLContext
*ctx
);
98 extern const char *protocolVersStr(
99 SSLProtocolVersion prot
);
103 * Redirect SSLBuffer-based I/O call to user-supplied I/O.
107 size_t *actualLength
,
112 size_t *actualLength
,
116 * Common RNG function.
122 OSStatus
sslVerifyProtVersion(
124 SSLProtocolVersion peerVersion
,
125 SSLProtocolVersion
*negVersion
);
127 OSStatus
sslGetMaxProtVersion(
129 SSLProtocolVersion
*version
); // RETURNED
131 static inline bool sslVersionIsLikeTls12(SSLContext
*ctx
)
133 assert(ctx
->negProtocolVersion
!=SSL_Version_Undetermined
);
134 return ctx
->isDTLS
? ctx
->negProtocolVersion
> DTLS_Version_1_0
: ctx
->negProtocolVersion
>= TLS_Version_1_2
;
137 #define SET_SSL_BUFFER(buf, d, l) do { (buf).data = (d); (buf).length = (l); } while (0)