#ifndef _CIPHER_SPECS_H_
#define _CIPHER_SPECS_H_
#include <stdint.h>
#include "CipherSuite.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef enum {
SSL_CipherAlgorithmNull,
SSL_CipherAlgorithmRC2_128,
SSL_CipherAlgorithmRC4_128,
SSL_CipherAlgorithmDES_CBC,
SSL_CipherAlgorithm3DES_CBC,
SSL_CipherAlgorithmAES_128_CBC,
SSL_CipherAlgorithmAES_256_CBC,
SSL_CipherAlgorithmAES_128_GCM,
SSL_CipherAlgorithmAES_256_GCM,
} SSL_CipherAlgorithm;
typedef enum {
HA_Null = 0, HA_SHA1,
HA_MD5,
HA_SHA256,
HA_SHA384
} HMAC_Algs;
typedef enum
{ SSL_NULL_auth,
SSL_RSA,
SSL_RSA_EXPORT,
SSL_DH_DSS,
SSL_DH_DSS_EXPORT,
SSL_DH_RSA,
SSL_DH_RSA_EXPORT,
SSL_DHE_DSS,
SSL_DHE_DSS_EXPORT,
SSL_DHE_RSA,
SSL_DHE_RSA_EXPORT,
SSL_DH_anon,
SSL_DH_anon_EXPORT,
SSL_Fortezza,
SSL_ECDH_ECDSA,
SSL_ECDHE_ECDSA,
SSL_ECDH_RSA,
SSL_ECDHE_RSA,
SSL_ECDH_anon,
TLS_PSK,
TLS_DHE_PSK,
TLS_RSA_PSK,
} KeyExchangeMethod;
HMAC_Algs sslCipherSuiteGetMacAlgorithm(SSLCipherSuite cipherSuite);
SSL_CipherAlgorithm sslCipherSuiteGetSymmetricCipherAlgorithm(SSLCipherSuite cipherSuite);
KeyExchangeMethod sslCipherSuiteGetKeyExchangeMethod(SSLCipherSuite cipherSuite);
uint8_t sslCipherSuiteGetMacSize(SSLCipherSuite cipherSuite);
uint8_t sslCipherSuiteGetSymmetricCipherKeySize(SSLCipherSuite cipherSuite);
uint8_t sslCipherSuiteGetSymmetricCipherBlockIvSize(SSLCipherSuite cipherSuite);
#define CIPHER_SUITE_IS_SSLv2(suite) ((suite & 0xff00) == 0xff00)
#ifdef __cplusplus
}
#endif
#endif