1/* 2 * Copyright (c) 1999-2001,2005-2007,2010-2012 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 * cipherSpecs.h - SSLCipherSpec declarations 26 */ 27 28#ifndef _CIPHER_SPECS_H_ 29#define _CIPHER_SPECS_H_ 30 31#include <stdint.h> 32#include "CipherSuite.h" 33 34#ifdef __cplusplus 35extern "C" { 36#endif 37 38/* Cipher Algorithm */ 39typedef enum { 40 SSL_CipherAlgorithmNull, 41 SSL_CipherAlgorithmRC2_128, 42 SSL_CipherAlgorithmRC4_128, 43 SSL_CipherAlgorithmDES_CBC, 44 SSL_CipherAlgorithm3DES_CBC, 45 SSL_CipherAlgorithmAES_128_CBC, 46 SSL_CipherAlgorithmAES_256_CBC, 47 SSL_CipherAlgorithmAES_128_GCM, 48 SSL_CipherAlgorithmAES_256_GCM, 49} SSL_CipherAlgorithm; 50 51/* The HMAC algorithms we support */ 52typedef enum { 53 HA_Null = 0, // i.e., uninitialized 54 HA_SHA1, 55 HA_MD5, 56 HA_SHA256, 57 HA_SHA384 58} HMAC_Algs; 59 60typedef enum 61{ SSL_NULL_auth, 62 SSL_RSA, 63 SSL_RSA_EXPORT, 64 SSL_DH_DSS, 65 SSL_DH_DSS_EXPORT, 66 SSL_DH_RSA, 67 SSL_DH_RSA_EXPORT, 68 SSL_DHE_DSS, 69 SSL_DHE_DSS_EXPORT, 70 SSL_DHE_RSA, 71 SSL_DHE_RSA_EXPORT, 72 SSL_DH_anon, 73 SSL_DH_anon_EXPORT, 74 SSL_Fortezza, 75 76 /* ECDSA addenda, RFC 4492 */ 77 SSL_ECDH_ECDSA, 78 SSL_ECDHE_ECDSA, 79 SSL_ECDH_RSA, 80 SSL_ECDHE_RSA, 81 SSL_ECDH_anon, 82 83 /* PSK, RFC 4279 */ 84 TLS_PSK, 85 TLS_DHE_PSK, 86 TLS_RSA_PSK, 87 88} KeyExchangeMethod; 89 90 91HMAC_Algs sslCipherSuiteGetMacAlgorithm(SSLCipherSuite cipherSuite); 92SSL_CipherAlgorithm sslCipherSuiteGetSymmetricCipherAlgorithm(SSLCipherSuite cipherSuite); 93KeyExchangeMethod sslCipherSuiteGetKeyExchangeMethod(SSLCipherSuite cipherSuite); 94 95uint8_t sslCipherSuiteGetMacSize(SSLCipherSuite cipherSuite); 96uint8_t sslCipherSuiteGetSymmetricCipherKeySize(SSLCipherSuite cipherSuite); 97uint8_t sslCipherSuiteGetSymmetricCipherBlockIvSize(SSLCipherSuite cipherSuite); 98 99/* 100 * Determine if an SSLCipherSuite is SSLv2 only. 101 */ 102#define CIPHER_SUITE_IS_SSLv2(suite) ((suite & 0xff00) == 0xff00) 103 104#ifdef __cplusplus 105} 106#endif 107 108#endif /* _CIPHER_SPECS_H_ */ 109