PolarSSL v1.3.3
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_ECDH_ECDSA_WITH_NULL_SHA 0xC001
124 #define TLS_ECDH_ECDSA_WITH_RC4_128_SHA 0xC002
125 #define TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA 0xC003
126 #define TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA 0xC004
127 #define TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA 0xC005
129 #define TLS_ECDHE_ECDSA_WITH_NULL_SHA 0xC006
130 #define TLS_ECDHE_ECDSA_WITH_RC4_128_SHA 0xC007
131 #define TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA 0xC008
132 #define TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA 0xC009
133 #define TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 0xC00A
135 #define TLS_ECDH_RSA_WITH_NULL_SHA 0xC00B
136 #define TLS_ECDH_RSA_WITH_RC4_128_SHA 0xC00C
137 #define TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA 0xC00D
138 #define TLS_ECDH_RSA_WITH_AES_128_CBC_SHA 0xC00E
139 #define TLS_ECDH_RSA_WITH_AES_256_CBC_SHA 0xC00F
141 #define TLS_ECDHE_RSA_WITH_NULL_SHA 0xC010
142 #define TLS_ECDHE_RSA_WITH_RC4_128_SHA 0xC011
143 #define TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA 0xC012
144 #define TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA 0xC013
145 #define TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA 0xC014
147 #define TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 0xC023
148 #define TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 0xC024
149 #define TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 0xC025
150 #define TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 0xC026
151 #define TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 0xC027
152 #define TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 0xC028
153 #define TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 0xC029
154 #define TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 0xC02A
156 #define TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 0xC02B
157 #define TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 0xC02C
158 #define TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 0xC02D
159 #define TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 0xC02E
160 #define TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 0xC02F
161 #define TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 0xC030
162 #define TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 0xC031
163 #define TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 0xC032
165 #define TLS_ECDHE_PSK_WITH_RC4_128_SHA 0xC033
166 #define TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA 0xC034
167 #define TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA 0xC035
168 #define TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA 0xC036
169 #define TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256 0xC037
170 #define TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384 0xC038
171 #define TLS_ECDHE_PSK_WITH_NULL_SHA 0xC039
172 #define TLS_ECDHE_PSK_WITH_NULL_SHA256 0xC03A
173 #define TLS_ECDHE_PSK_WITH_NULL_SHA384 0xC03B
175 #define TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0xC072
176 #define TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0xC073
177 #define TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0xC074
178 #define TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0xC075
179 #define TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0xC076
180 #define TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 0xC077
181 #define TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 0xC078
182 #define TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 0xC079
184 #define TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256 0xC07A
185 #define TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384 0xC07B
186 #define TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 0xC07C
187 #define TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 0xC07D
188 #define TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 0xC086
189 #define TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 0xC087
190 #define TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 0xC088
191 #define TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 0xC089
192 #define TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 0xC08A
193 #define TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 0xC08B
194 #define TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256 0xC08C
195 #define TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384 0xC08D
197 #define TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256 0xC08E
198 #define TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384 0xC08F
199 #define TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256 0xC090
200 #define TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384 0xC091
201 #define TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256 0xC092
202 #define TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384 0xC093
204 #define TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256 0xC094
205 #define TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384 0xC095
206 #define TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0xC096
207 #define TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0xC097
208 #define TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 0xC098
209 #define TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 0xC099
210 #define TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0xC09A
211 #define TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0xC09B
213 typedef enum {
226 
228 
229 #define POLARSSL_CIPHERSUITE_WEAK 0x01
234 struct _ssl_ciphersuite_t
235 {
236  int id;
237  const char * name;
238 
242 
247 
248  unsigned char flags;
249 };
250 
251 const int *ssl_list_ciphersuites( void );
252 
253 const ssl_ciphersuite_t *ssl_ciphersuite_from_string( const char *ciphersuite_name );
254 const ssl_ciphersuite_t *ssl_ciphersuite_from_id( int ciphersuite_id );
255 
256 #if defined(POLARSSL_PK_C)
258 #endif
259 
260 int ssl_ciphersuite_uses_ec( const ssl_ciphersuite_t *info );
262 
263 #ifdef __cplusplus
264 }
265 #endif
266 
267 #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
int ssl_ciphersuite_uses_psk(const ssl_ciphersuite_t *info)
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