1/*
2 * Copyright (c) 2000-2001,2005-2007,2010-2012,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 * sslUtils.h - - Misc. OS independant SSL utility functions
26 */
27
28#ifndef _SSLUTILS_H_
29#define _SSLUTILS_H_ 1
30
31#include "sslTypes.h"
32
33#ifdef	__cplusplus
34extern "C" {
35#endif
36
37uint32_t SSLDecodeInt(
38	const uint8_t *     p,
39	size_t              length);
40uint8_t *SSLEncodeInt(
41	uint8_t             *p,
42	size_t              value,
43	size_t length);
44
45/* Same, but the value to encode is a size_t */
46size_t SSLDecodeSize(
47      const uint8_t *     p,
48      size_t              length);
49uint8_t *SSLEncodeSize(
50      uint8_t             *p,
51      size_t              value,
52      size_t              length);
53
54/* Same but for 64bits int */
55uint8_t* SSLEncodeUInt64(
56	uint8_t             *p,
57	sslUint64           value);
58void IncrementUInt64(
59	sslUint64 			*v);
60void SSLDecodeUInt64(
61    const uint8_t *p,
62    size_t length,
63    sslUint64 *v);
64
65static inline
66int SSLHandshakeHeaderSize(SSLRecord *rec)
67{
68    if(rec->protocolVersion==DTLS_Version_1_0)
69        return 12;
70    else
71        return 4;
72}
73
74#ifndef NDEBUG
75extern const char *protocolVersStr(SSLProtocolVersion prot);
76#endif
77
78#ifdef	__cplusplus
79}
80#endif
81
82#endif
83