PolarSSL v1.3.1
ssl_ciphersuites.h
Go to the documentation of this file.
1 
27 #ifndef POLARSSL_SSL_CIPHERSUITES_H
28 #define POLARSSL_SSL_CIPHERSUITES_H
29 
30 #include "pk.h"
31 #include "cipher.h"
32 #include "md.h"
33 
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37 
38 /*
39  * Supported ciphersuites (Official IANA names)
40  */
41 #define TLS_RSA_WITH_NULL_MD5 0x01
42 #define TLS_RSA_WITH_NULL_SHA 0x02
44 #define TLS_RSA_WITH_RC4_128_MD5 0x04
45 #define TLS_RSA_WITH_RC4_128_SHA 0x05
46 #define TLS_RSA_WITH_DES_CBC_SHA 0x09
48 #define TLS_RSA_WITH_3DES_EDE_CBC_SHA 0x0A
49 
50 #define TLS_DHE_RSA_WITH_DES_CBC_SHA 0x15
51 #define TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA 0x16
52 
53 #define TLS_PSK_WITH_NULL_SHA 0x2C
54 #define TLS_DHE_PSK_WITH_NULL_SHA 0x2D
55 #define TLS_RSA_PSK_WITH_NULL_SHA 0x2E
56 #define TLS_RSA_WITH_AES_128_CBC_SHA 0x2F
57 
58 #define TLS_DHE_RSA_WITH_AES_128_CBC_SHA 0x33
59 #define TLS_RSA_WITH_AES_256_CBC_SHA 0x35
60 #define TLS_DHE_RSA_WITH_AES_256_CBC_SHA 0x39
61 
62 #define TLS_RSA_WITH_NULL_SHA256 0x3B
63 #define TLS_RSA_WITH_AES_128_CBC_SHA256 0x3C
64 #define TLS_RSA_WITH_AES_256_CBC_SHA256 0x3D
66 #define TLS_RSA_WITH_CAMELLIA_128_CBC_SHA 0x41
67 #define TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA 0x45
68 
69 #define TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 0x67
70 #define TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 0x6B
72 #define TLS_RSA_WITH_CAMELLIA_256_CBC_SHA 0x84
73 #define TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA 0x88
74 
75 #define TLS_PSK_WITH_RC4_128_SHA 0x8A
76 #define TLS_PSK_WITH_3DES_EDE_CBC_SHA 0x8B
77 #define TLS_PSK_WITH_AES_128_CBC_SHA 0x8C
78 #define TLS_PSK_WITH_AES_256_CBC_SHA 0x8D
79 
80 #define TLS_DHE_PSK_WITH_RC4_128_SHA 0x8E
81 #define TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA 0x8F
82 #define TLS_DHE_PSK_WITH_AES_128_CBC_SHA 0x90
83 #define TLS_DHE_PSK_WITH_AES_256_CBC_SHA 0x91
84 
85 #define TLS_RSA_PSK_WITH_RC4_128_SHA 0x92
86 #define TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA 0x93
87 #define TLS_RSA_PSK_WITH_AES_128_CBC_SHA 0x94
88 #define TLS_RSA_PSK_WITH_AES_256_CBC_SHA 0x95
89 
90 #define TLS_RSA_WITH_AES_128_GCM_SHA256 0x9C
91 #define TLS_RSA_WITH_AES_256_GCM_SHA384 0x9D
92 #define TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 0x9E
93 #define TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 0x9F
95 #define TLS_PSK_WITH_AES_128_GCM_SHA256 0xA8
96 #define TLS_PSK_WITH_AES_256_GCM_SHA384 0xA9
97 #define TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 0xAA
98 #define TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 0xAB
99 #define TLS_RSA_PSK_WITH_AES_128_GCM_SHA256 0xAC
100 #define TLS_RSA_PSK_WITH_AES_256_GCM_SHA384 0xAD
102 #define TLS_PSK_WITH_AES_128_CBC_SHA256 0xAE
103 #define TLS_PSK_WITH_AES_256_CBC_SHA384 0xAF
104 #define TLS_PSK_WITH_NULL_SHA256 0xB0
105 #define TLS_PSK_WITH_NULL_SHA384 0xB1
107 #define TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 0xB2
108 #define TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 0xB3
109 #define TLS_DHE_PSK_WITH_NULL_SHA256 0xB4
110 #define TLS_DHE_PSK_WITH_NULL_SHA384 0xB5
112 #define TLS_RSA_PSK_WITH_AES_128_CBC_SHA256 0xB6
113 #define TLS_RSA_PSK_WITH_AES_256_CBC_SHA384 0xB7
114 #define TLS_RSA_PSK_WITH_NULL_SHA256 0xB8
115 #define TLS_RSA_PSK_WITH_NULL_SHA384 0xB9
117 #define TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 0xBA
118 #define TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0xBE
120 #define TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 0xC0
121 #define TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 0xC4
123 #define TLS_ECDHE_ECDSA_WITH_NULL_SHA 0xC006
124 #define TLS_ECDHE_ECDSA_WITH_RC4_128_SHA 0xC007
125 #define TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA 0xC008
126 #define TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA 0xC009
127 #define TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 0xC00A
129 #define TLS_ECDHE_RSA_WITH_NULL_SHA 0xC010
130 #define TLS_ECDHE_RSA_WITH_RC4_128_SHA 0xC011
131 #define TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA 0xC012
132 #define TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA 0xC013
133 #define TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA 0xC014
135 #define TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 0xC023
136 #define TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 0xC024
138 #define TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 0xC027
139 #define TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 0xC028
141 #define TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 0xC02B
142 #define TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 0xC02C
144 #define TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 0xC02F
145 #define TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 0xC030
147 #define TLS_ECDHE_PSK_WITH_RC4_128_SHA 0xC033
148 #define TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA 0xC034
149 #define TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA 0xC035
150 #define TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA 0xC036
151 #define TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256 0xC037
152 #define TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384 0xC038
153 #define TLS_ECDHE_PSK_WITH_NULL_SHA 0xC039
154 #define TLS_ECDHE_PSK_WITH_NULL_SHA256 0xC03A
155 #define TLS_ECDHE_PSK_WITH_NULL_SHA384 0xC03B
157 #define TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0xC072
158 #define TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0xC073
160 #define TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0xC076
161 #define TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 0xC077
163 #define TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256 0xC094
164 #define TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384 0xC095
165 #define TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0xC096
166 #define TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0xC097
167 #define TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 0xC098
168 #define TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 0xC099
169 #define TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0xC09A
170 #define TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0xC09B
172 typedef enum {
183 
185 
186 #define POLARSSL_CIPHERSUITE_WEAK 0x01 /*<! Weak ciphersuite flag */
187 
192 {
193  int id;
194  const char * name;
195 
199 
204 
205  unsigned char flags;
206 };
207 
208 const int *ssl_list_ciphersuites( void );
209 
210 const ssl_ciphersuite_t *ssl_ciphersuite_from_string( const char *ciphersuite_name );
211 const ssl_ciphersuite_t *ssl_ciphersuite_from_id( int ciphersuite_id );
212 
213 #if defined(POLARSSL_PK_C)
215 #endif
216 
217 int ssl_ciphersuite_uses_ec( const ssl_ciphersuite_t *info );
218 
219 #ifdef __cplusplus
220 }
221 #endif
222 
223 #endif /* ssl_ciphersuites.h */
int ssl_ciphersuite_uses_ec(const ssl_ciphersuite_t *info)
pk_type_t ssl_get_ciphersuite_sig_pk_alg(const ssl_ciphersuite_t *info)
Public Key abstraction layer.
md_type_t
Definition: md.h:51
cipher_type_t
Definition: cipher.h:75
key_exchange_type_t key_exchange
Generic cipher wrapper.
pk_type_t
Public key types.
Definition: pk.h:90
const ssl_ciphersuite_t * ssl_ciphersuite_from_string(const char *ciphersuite_name)
This structure is used for storing ciphersuite information.
Generic message digest wrapper.
const ssl_ciphersuite_t * ssl_ciphersuite_from_id(int ciphersuite_id)
const int * ssl_list_ciphersuites(void)
Returns the list of ciphersuites supported by the SSL/TLS module.
key_exchange_type_t
cipher_type_t cipher