1*e0c4386eSCy Schubert /*
2*e0c4386eSCy Schubert * Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved.
3*e0c4386eSCy Schubert * Copyright 2017 BaishanCloud. All rights reserved.
4*e0c4386eSCy Schubert *
5*e0c4386eSCy Schubert * Licensed under the Apache License 2.0 (the "License");
6*e0c4386eSCy Schubert * you may not use this file except in compliance with the License.
7*e0c4386eSCy Schubert * You may obtain a copy of the License at
8*e0c4386eSCy Schubert * https://www.openssl.org/source/license.html
9*e0c4386eSCy Schubert * or in the file LICENSE in the source distribution.
10*e0c4386eSCy Schubert */
11*e0c4386eSCy Schubert
12*e0c4386eSCy Schubert #include <stdio.h>
13*e0c4386eSCy Schubert #include <string.h>
14*e0c4386eSCy Schubert
15*e0c4386eSCy Schubert #include <openssl/opensslconf.h>
16*e0c4386eSCy Schubert #include <openssl/err.h>
17*e0c4386eSCy Schubert #include <openssl/e_os2.h>
18*e0c4386eSCy Schubert #include <openssl/ssl.h>
19*e0c4386eSCy Schubert #include <openssl/ssl3.h>
20*e0c4386eSCy Schubert #include <openssl/tls1.h>
21*e0c4386eSCy Schubert
22*e0c4386eSCy Schubert #include "internal/nelem.h"
23*e0c4386eSCy Schubert #include "testutil.h"
24*e0c4386eSCy Schubert
25*e0c4386eSCy Schubert typedef struct cipher_id_name {
26*e0c4386eSCy Schubert int id;
27*e0c4386eSCy Schubert const char *name;
28*e0c4386eSCy Schubert } CIPHER_ID_NAME;
29*e0c4386eSCy Schubert
30*e0c4386eSCy Schubert /* Cipher suites, copied from t1_trce.c */
31*e0c4386eSCy Schubert static CIPHER_ID_NAME cipher_names[] = {
32*e0c4386eSCy Schubert {0x0000, "TLS_NULL_WITH_NULL_NULL"},
33*e0c4386eSCy Schubert {0x0001, "TLS_RSA_WITH_NULL_MD5"},
34*e0c4386eSCy Schubert {0x0002, "TLS_RSA_WITH_NULL_SHA"},
35*e0c4386eSCy Schubert {0x0003, "TLS_RSA_EXPORT_WITH_RC4_40_MD5"},
36*e0c4386eSCy Schubert {0x0004, "TLS_RSA_WITH_RC4_128_MD5"},
37*e0c4386eSCy Schubert {0x0005, "TLS_RSA_WITH_RC4_128_SHA"},
38*e0c4386eSCy Schubert {0x0006, "TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5"},
39*e0c4386eSCy Schubert {0x0007, "TLS_RSA_WITH_IDEA_CBC_SHA"},
40*e0c4386eSCy Schubert {0x0008, "TLS_RSA_EXPORT_WITH_DES40_CBC_SHA"},
41*e0c4386eSCy Schubert {0x0009, "TLS_RSA_WITH_DES_CBC_SHA"},
42*e0c4386eSCy Schubert {0x000A, "TLS_RSA_WITH_3DES_EDE_CBC_SHA"},
43*e0c4386eSCy Schubert {0x000B, "TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA"},
44*e0c4386eSCy Schubert {0x000C, "TLS_DH_DSS_WITH_DES_CBC_SHA"},
45*e0c4386eSCy Schubert {0x000D, "TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA"},
46*e0c4386eSCy Schubert {0x000E, "TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA"},
47*e0c4386eSCy Schubert {0x000F, "TLS_DH_RSA_WITH_DES_CBC_SHA"},
48*e0c4386eSCy Schubert {0x0010, "TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA"},
49*e0c4386eSCy Schubert {0x0011, "TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA"},
50*e0c4386eSCy Schubert {0x0012, "TLS_DHE_DSS_WITH_DES_CBC_SHA"},
51*e0c4386eSCy Schubert {0x0013, "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA"},
52*e0c4386eSCy Schubert {0x0014, "TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA"},
53*e0c4386eSCy Schubert {0x0015, "TLS_DHE_RSA_WITH_DES_CBC_SHA"},
54*e0c4386eSCy Schubert {0x0016, "TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA"},
55*e0c4386eSCy Schubert {0x0017, "TLS_DH_anon_EXPORT_WITH_RC4_40_MD5"},
56*e0c4386eSCy Schubert {0x0018, "TLS_DH_anon_WITH_RC4_128_MD5"},
57*e0c4386eSCy Schubert {0x0019, "TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA"},
58*e0c4386eSCy Schubert {0x001A, "TLS_DH_anon_WITH_DES_CBC_SHA"},
59*e0c4386eSCy Schubert {0x001B, "TLS_DH_anon_WITH_3DES_EDE_CBC_SHA"},
60*e0c4386eSCy Schubert {0x001D, "SSL_FORTEZZA_KEA_WITH_FORTEZZA_CBC_SHA"},
61*e0c4386eSCy Schubert {0x001E, "SSL_FORTEZZA_KEA_WITH_RC4_128_SHA"},
62*e0c4386eSCy Schubert {0x001F, "TLS_KRB5_WITH_3DES_EDE_CBC_SHA"},
63*e0c4386eSCy Schubert {0x0020, "TLS_KRB5_WITH_RC4_128_SHA"},
64*e0c4386eSCy Schubert {0x0021, "TLS_KRB5_WITH_IDEA_CBC_SHA"},
65*e0c4386eSCy Schubert {0x0022, "TLS_KRB5_WITH_DES_CBC_MD5"},
66*e0c4386eSCy Schubert {0x0023, "TLS_KRB5_WITH_3DES_EDE_CBC_MD5"},
67*e0c4386eSCy Schubert {0x0024, "TLS_KRB5_WITH_RC4_128_MD5"},
68*e0c4386eSCy Schubert {0x0025, "TLS_KRB5_WITH_IDEA_CBC_MD5"},
69*e0c4386eSCy Schubert {0x0026, "TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA"},
70*e0c4386eSCy Schubert {0x0027, "TLS_KRB5_EXPORT_WITH_RC2_CBC_40_SHA"},
71*e0c4386eSCy Schubert {0x0028, "TLS_KRB5_EXPORT_WITH_RC4_40_SHA"},
72*e0c4386eSCy Schubert {0x0029, "TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5"},
73*e0c4386eSCy Schubert {0x002A, "TLS_KRB5_EXPORT_WITH_RC2_CBC_40_MD5"},
74*e0c4386eSCy Schubert {0x002B, "TLS_KRB5_EXPORT_WITH_RC4_40_MD5"},
75*e0c4386eSCy Schubert {0x002C, "TLS_PSK_WITH_NULL_SHA"},
76*e0c4386eSCy Schubert {0x002D, "TLS_DHE_PSK_WITH_NULL_SHA"},
77*e0c4386eSCy Schubert {0x002E, "TLS_RSA_PSK_WITH_NULL_SHA"},
78*e0c4386eSCy Schubert {0x002F, "TLS_RSA_WITH_AES_128_CBC_SHA"},
79*e0c4386eSCy Schubert {0x0030, "TLS_DH_DSS_WITH_AES_128_CBC_SHA"},
80*e0c4386eSCy Schubert {0x0031, "TLS_DH_RSA_WITH_AES_128_CBC_SHA"},
81*e0c4386eSCy Schubert {0x0032, "TLS_DHE_DSS_WITH_AES_128_CBC_SHA"},
82*e0c4386eSCy Schubert {0x0033, "TLS_DHE_RSA_WITH_AES_128_CBC_SHA"},
83*e0c4386eSCy Schubert {0x0034, "TLS_DH_anon_WITH_AES_128_CBC_SHA"},
84*e0c4386eSCy Schubert {0x0035, "TLS_RSA_WITH_AES_256_CBC_SHA"},
85*e0c4386eSCy Schubert {0x0036, "TLS_DH_DSS_WITH_AES_256_CBC_SHA"},
86*e0c4386eSCy Schubert {0x0037, "TLS_DH_RSA_WITH_AES_256_CBC_SHA"},
87*e0c4386eSCy Schubert {0x0038, "TLS_DHE_DSS_WITH_AES_256_CBC_SHA"},
88*e0c4386eSCy Schubert {0x0039, "TLS_DHE_RSA_WITH_AES_256_CBC_SHA"},
89*e0c4386eSCy Schubert {0x003A, "TLS_DH_anon_WITH_AES_256_CBC_SHA"},
90*e0c4386eSCy Schubert {0x003B, "TLS_RSA_WITH_NULL_SHA256"},
91*e0c4386eSCy Schubert {0x003C, "TLS_RSA_WITH_AES_128_CBC_SHA256"},
92*e0c4386eSCy Schubert {0x003D, "TLS_RSA_WITH_AES_256_CBC_SHA256"},
93*e0c4386eSCy Schubert {0x003E, "TLS_DH_DSS_WITH_AES_128_CBC_SHA256"},
94*e0c4386eSCy Schubert {0x003F, "TLS_DH_RSA_WITH_AES_128_CBC_SHA256"},
95*e0c4386eSCy Schubert {0x0040, "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256"},
96*e0c4386eSCy Schubert {0x0041, "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA"},
97*e0c4386eSCy Schubert {0x0042, "TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA"},
98*e0c4386eSCy Schubert {0x0043, "TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA"},
99*e0c4386eSCy Schubert {0x0044, "TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA"},
100*e0c4386eSCy Schubert {0x0045, "TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA"},
101*e0c4386eSCy Schubert {0x0046, "TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA"},
102*e0c4386eSCy Schubert {0x0067, "TLS_DHE_RSA_WITH_AES_128_CBC_SHA256"},
103*e0c4386eSCy Schubert {0x0068, "TLS_DH_DSS_WITH_AES_256_CBC_SHA256"},
104*e0c4386eSCy Schubert {0x0069, "TLS_DH_RSA_WITH_AES_256_CBC_SHA256"},
105*e0c4386eSCy Schubert {0x006A, "TLS_DHE_DSS_WITH_AES_256_CBC_SHA256"},
106*e0c4386eSCy Schubert {0x006B, "TLS_DHE_RSA_WITH_AES_256_CBC_SHA256"},
107*e0c4386eSCy Schubert {0x006C, "TLS_DH_anon_WITH_AES_128_CBC_SHA256"},
108*e0c4386eSCy Schubert {0x006D, "TLS_DH_anon_WITH_AES_256_CBC_SHA256"},
109*e0c4386eSCy Schubert {0x0084, "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA"},
110*e0c4386eSCy Schubert {0x0085, "TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA"},
111*e0c4386eSCy Schubert {0x0086, "TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA"},
112*e0c4386eSCy Schubert {0x0087, "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA"},
113*e0c4386eSCy Schubert {0x0088, "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA"},
114*e0c4386eSCy Schubert {0x0089, "TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA"},
115*e0c4386eSCy Schubert {0x008A, "TLS_PSK_WITH_RC4_128_SHA"},
116*e0c4386eSCy Schubert {0x008B, "TLS_PSK_WITH_3DES_EDE_CBC_SHA"},
117*e0c4386eSCy Schubert {0x008C, "TLS_PSK_WITH_AES_128_CBC_SHA"},
118*e0c4386eSCy Schubert {0x008D, "TLS_PSK_WITH_AES_256_CBC_SHA"},
119*e0c4386eSCy Schubert {0x008E, "TLS_DHE_PSK_WITH_RC4_128_SHA"},
120*e0c4386eSCy Schubert {0x008F, "TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA"},
121*e0c4386eSCy Schubert {0x0090, "TLS_DHE_PSK_WITH_AES_128_CBC_SHA"},
122*e0c4386eSCy Schubert {0x0091, "TLS_DHE_PSK_WITH_AES_256_CBC_SHA"},
123*e0c4386eSCy Schubert {0x0092, "TLS_RSA_PSK_WITH_RC4_128_SHA"},
124*e0c4386eSCy Schubert {0x0093, "TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA"},
125*e0c4386eSCy Schubert {0x0094, "TLS_RSA_PSK_WITH_AES_128_CBC_SHA"},
126*e0c4386eSCy Schubert {0x0095, "TLS_RSA_PSK_WITH_AES_256_CBC_SHA"},
127*e0c4386eSCy Schubert {0x0096, "TLS_RSA_WITH_SEED_CBC_SHA"},
128*e0c4386eSCy Schubert {0x0097, "TLS_DH_DSS_WITH_SEED_CBC_SHA"},
129*e0c4386eSCy Schubert {0x0098, "TLS_DH_RSA_WITH_SEED_CBC_SHA"},
130*e0c4386eSCy Schubert {0x0099, "TLS_DHE_DSS_WITH_SEED_CBC_SHA"},
131*e0c4386eSCy Schubert {0x009A, "TLS_DHE_RSA_WITH_SEED_CBC_SHA"},
132*e0c4386eSCy Schubert {0x009B, "TLS_DH_anon_WITH_SEED_CBC_SHA"},
133*e0c4386eSCy Schubert {0x009C, "TLS_RSA_WITH_AES_128_GCM_SHA256"},
134*e0c4386eSCy Schubert {0x009D, "TLS_RSA_WITH_AES_256_GCM_SHA384"},
135*e0c4386eSCy Schubert {0x009E, "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256"},
136*e0c4386eSCy Schubert {0x009F, "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384"},
137*e0c4386eSCy Schubert {0x00A0, "TLS_DH_RSA_WITH_AES_128_GCM_SHA256"},
138*e0c4386eSCy Schubert {0x00A1, "TLS_DH_RSA_WITH_AES_256_GCM_SHA384"},
139*e0c4386eSCy Schubert {0x00A2, "TLS_DHE_DSS_WITH_AES_128_GCM_SHA256"},
140*e0c4386eSCy Schubert {0x00A3, "TLS_DHE_DSS_WITH_AES_256_GCM_SHA384"},
141*e0c4386eSCy Schubert {0x00A4, "TLS_DH_DSS_WITH_AES_128_GCM_SHA256"},
142*e0c4386eSCy Schubert {0x00A5, "TLS_DH_DSS_WITH_AES_256_GCM_SHA384"},
143*e0c4386eSCy Schubert {0x00A6, "TLS_DH_anon_WITH_AES_128_GCM_SHA256"},
144*e0c4386eSCy Schubert {0x00A7, "TLS_DH_anon_WITH_AES_256_GCM_SHA384"},
145*e0c4386eSCy Schubert {0x00A8, "TLS_PSK_WITH_AES_128_GCM_SHA256"},
146*e0c4386eSCy Schubert {0x00A9, "TLS_PSK_WITH_AES_256_GCM_SHA384"},
147*e0c4386eSCy Schubert {0x00AA, "TLS_DHE_PSK_WITH_AES_128_GCM_SHA256"},
148*e0c4386eSCy Schubert {0x00AB, "TLS_DHE_PSK_WITH_AES_256_GCM_SHA384"},
149*e0c4386eSCy Schubert {0x00AC, "TLS_RSA_PSK_WITH_AES_128_GCM_SHA256"},
150*e0c4386eSCy Schubert {0x00AD, "TLS_RSA_PSK_WITH_AES_256_GCM_SHA384"},
151*e0c4386eSCy Schubert {0x00AE, "TLS_PSK_WITH_AES_128_CBC_SHA256"},
152*e0c4386eSCy Schubert {0x00AF, "TLS_PSK_WITH_AES_256_CBC_SHA384"},
153*e0c4386eSCy Schubert {0x00B0, "TLS_PSK_WITH_NULL_SHA256"},
154*e0c4386eSCy Schubert {0x00B1, "TLS_PSK_WITH_NULL_SHA384"},
155*e0c4386eSCy Schubert {0x00B2, "TLS_DHE_PSK_WITH_AES_128_CBC_SHA256"},
156*e0c4386eSCy Schubert {0x00B3, "TLS_DHE_PSK_WITH_AES_256_CBC_SHA384"},
157*e0c4386eSCy Schubert {0x00B4, "TLS_DHE_PSK_WITH_NULL_SHA256"},
158*e0c4386eSCy Schubert {0x00B5, "TLS_DHE_PSK_WITH_NULL_SHA384"},
159*e0c4386eSCy Schubert {0x00B6, "TLS_RSA_PSK_WITH_AES_128_CBC_SHA256"},
160*e0c4386eSCy Schubert {0x00B7, "TLS_RSA_PSK_WITH_AES_256_CBC_SHA384"},
161*e0c4386eSCy Schubert {0x00B8, "TLS_RSA_PSK_WITH_NULL_SHA256"},
162*e0c4386eSCy Schubert {0x00B9, "TLS_RSA_PSK_WITH_NULL_SHA384"},
163*e0c4386eSCy Schubert {0x00BA, "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256"},
164*e0c4386eSCy Schubert {0x00BB, "TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256"},
165*e0c4386eSCy Schubert {0x00BC, "TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256"},
166*e0c4386eSCy Schubert {0x00BD, "TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256"},
167*e0c4386eSCy Schubert {0x00BE, "TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256"},
168*e0c4386eSCy Schubert {0x00BF, "TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256"},
169*e0c4386eSCy Schubert {0x00C0, "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256"},
170*e0c4386eSCy Schubert {0x00C1, "TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256"},
171*e0c4386eSCy Schubert {0x00C2, "TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256"},
172*e0c4386eSCy Schubert {0x00C3, "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256"},
173*e0c4386eSCy Schubert {0x00C4, "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256"},
174*e0c4386eSCy Schubert {0x00C5, "TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256"},
175*e0c4386eSCy Schubert {0x00FF, "TLS_EMPTY_RENEGOTIATION_INFO_SCSV"},
176*e0c4386eSCy Schubert {0x5600, "TLS_FALLBACK_SCSV"},
177*e0c4386eSCy Schubert {0xC001, "TLS_ECDH_ECDSA_WITH_NULL_SHA"},
178*e0c4386eSCy Schubert {0xC002, "TLS_ECDH_ECDSA_WITH_RC4_128_SHA"},
179*e0c4386eSCy Schubert {0xC003, "TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA"},
180*e0c4386eSCy Schubert {0xC004, "TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA"},
181*e0c4386eSCy Schubert {0xC005, "TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA"},
182*e0c4386eSCy Schubert {0xC006, "TLS_ECDHE_ECDSA_WITH_NULL_SHA"},
183*e0c4386eSCy Schubert {0xC007, "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA"},
184*e0c4386eSCy Schubert {0xC008, "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA"},
185*e0c4386eSCy Schubert {0xC009, "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA"},
186*e0c4386eSCy Schubert {0xC00A, "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA"},
187*e0c4386eSCy Schubert {0xC00B, "TLS_ECDH_RSA_WITH_NULL_SHA"},
188*e0c4386eSCy Schubert {0xC00C, "TLS_ECDH_RSA_WITH_RC4_128_SHA"},
189*e0c4386eSCy Schubert {0xC00D, "TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA"},
190*e0c4386eSCy Schubert {0xC00E, "TLS_ECDH_RSA_WITH_AES_128_CBC_SHA"},
191*e0c4386eSCy Schubert {0xC00F, "TLS_ECDH_RSA_WITH_AES_256_CBC_SHA"},
192*e0c4386eSCy Schubert {0xC010, "TLS_ECDHE_RSA_WITH_NULL_SHA"},
193*e0c4386eSCy Schubert {0xC011, "TLS_ECDHE_RSA_WITH_RC4_128_SHA"},
194*e0c4386eSCy Schubert {0xC012, "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA"},
195*e0c4386eSCy Schubert {0xC013, "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA"},
196*e0c4386eSCy Schubert {0xC014, "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA"},
197*e0c4386eSCy Schubert {0xC015, "TLS_ECDH_anon_WITH_NULL_SHA"},
198*e0c4386eSCy Schubert {0xC016, "TLS_ECDH_anon_WITH_RC4_128_SHA"},
199*e0c4386eSCy Schubert {0xC017, "TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA"},
200*e0c4386eSCy Schubert {0xC018, "TLS_ECDH_anon_WITH_AES_128_CBC_SHA"},
201*e0c4386eSCy Schubert {0xC019, "TLS_ECDH_anon_WITH_AES_256_CBC_SHA"},
202*e0c4386eSCy Schubert {0xC01A, "TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA"},
203*e0c4386eSCy Schubert {0xC01B, "TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA"},
204*e0c4386eSCy Schubert {0xC01C, "TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA"},
205*e0c4386eSCy Schubert {0xC01D, "TLS_SRP_SHA_WITH_AES_128_CBC_SHA"},
206*e0c4386eSCy Schubert {0xC01E, "TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA"},
207*e0c4386eSCy Schubert {0xC01F, "TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA"},
208*e0c4386eSCy Schubert {0xC020, "TLS_SRP_SHA_WITH_AES_256_CBC_SHA"},
209*e0c4386eSCy Schubert {0xC021, "TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA"},
210*e0c4386eSCy Schubert {0xC022, "TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA"},
211*e0c4386eSCy Schubert {0xC023, "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256"},
212*e0c4386eSCy Schubert {0xC024, "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384"},
213*e0c4386eSCy Schubert {0xC025, "TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256"},
214*e0c4386eSCy Schubert {0xC026, "TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384"},
215*e0c4386eSCy Schubert {0xC027, "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256"},
216*e0c4386eSCy Schubert {0xC028, "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384"},
217*e0c4386eSCy Schubert {0xC029, "TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256"},
218*e0c4386eSCy Schubert {0xC02A, "TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384"},
219*e0c4386eSCy Schubert {0xC02B, "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"},
220*e0c4386eSCy Schubert {0xC02C, "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"},
221*e0c4386eSCy Schubert {0xC02D, "TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256"},
222*e0c4386eSCy Schubert {0xC02E, "TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384"},
223*e0c4386eSCy Schubert {0xC02F, "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"},
224*e0c4386eSCy Schubert {0xC030, "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"},
225*e0c4386eSCy Schubert {0xC031, "TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256"},
226*e0c4386eSCy Schubert {0xC032, "TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384"},
227*e0c4386eSCy Schubert {0xC033, "TLS_ECDHE_PSK_WITH_RC4_128_SHA"},
228*e0c4386eSCy Schubert {0xC034, "TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA"},
229*e0c4386eSCy Schubert {0xC035, "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA"},
230*e0c4386eSCy Schubert {0xC036, "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA"},
231*e0c4386eSCy Schubert {0xC037, "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256"},
232*e0c4386eSCy Schubert {0xC038, "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384"},
233*e0c4386eSCy Schubert {0xC039, "TLS_ECDHE_PSK_WITH_NULL_SHA"},
234*e0c4386eSCy Schubert {0xC03A, "TLS_ECDHE_PSK_WITH_NULL_SHA256"},
235*e0c4386eSCy Schubert {0xC03B, "TLS_ECDHE_PSK_WITH_NULL_SHA384"},
236*e0c4386eSCy Schubert {0xC03C, "TLS_RSA_WITH_ARIA_128_CBC_SHA256"},
237*e0c4386eSCy Schubert {0xC03D, "TLS_RSA_WITH_ARIA_256_CBC_SHA384"},
238*e0c4386eSCy Schubert {0xC03E, "TLS_DH_DSS_WITH_ARIA_128_CBC_SHA256"},
239*e0c4386eSCy Schubert {0xC03F, "TLS_DH_DSS_WITH_ARIA_256_CBC_SHA384"},
240*e0c4386eSCy Schubert {0xC040, "TLS_DH_RSA_WITH_ARIA_128_CBC_SHA256"},
241*e0c4386eSCy Schubert {0xC041, "TLS_DH_RSA_WITH_ARIA_256_CBC_SHA384"},
242*e0c4386eSCy Schubert {0xC042, "TLS_DHE_DSS_WITH_ARIA_128_CBC_SHA256"},
243*e0c4386eSCy Schubert {0xC043, "TLS_DHE_DSS_WITH_ARIA_256_CBC_SHA384"},
244*e0c4386eSCy Schubert {0xC044, "TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256"},
245*e0c4386eSCy Schubert {0xC045, "TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384"},
246*e0c4386eSCy Schubert {0xC046, "TLS_DH_anon_WITH_ARIA_128_CBC_SHA256"},
247*e0c4386eSCy Schubert {0xC047, "TLS_DH_anon_WITH_ARIA_256_CBC_SHA384"},
248*e0c4386eSCy Schubert {0xC048, "TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256"},
249*e0c4386eSCy Schubert {0xC049, "TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384"},
250*e0c4386eSCy Schubert {0xC04A, "TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256"},
251*e0c4386eSCy Schubert {0xC04B, "TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384"},
252*e0c4386eSCy Schubert {0xC04C, "TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256"},
253*e0c4386eSCy Schubert {0xC04D, "TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384"},
254*e0c4386eSCy Schubert {0xC04E, "TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256"},
255*e0c4386eSCy Schubert {0xC04F, "TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384"},
256*e0c4386eSCy Schubert {0xC050, "TLS_RSA_WITH_ARIA_128_GCM_SHA256"},
257*e0c4386eSCy Schubert {0xC051, "TLS_RSA_WITH_ARIA_256_GCM_SHA384"},
258*e0c4386eSCy Schubert {0xC052, "TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256"},
259*e0c4386eSCy Schubert {0xC053, "TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384"},
260*e0c4386eSCy Schubert {0xC054, "TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256"},
261*e0c4386eSCy Schubert {0xC055, "TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384"},
262*e0c4386eSCy Schubert {0xC056, "TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256"},
263*e0c4386eSCy Schubert {0xC057, "TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384"},
264*e0c4386eSCy Schubert {0xC058, "TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256"},
265*e0c4386eSCy Schubert {0xC059, "TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384"},
266*e0c4386eSCy Schubert {0xC05A, "TLS_DH_anon_WITH_ARIA_128_GCM_SHA256"},
267*e0c4386eSCy Schubert {0xC05B, "TLS_DH_anon_WITH_ARIA_256_GCM_SHA384"},
268*e0c4386eSCy Schubert {0xC05C, "TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256"},
269*e0c4386eSCy Schubert {0xC05D, "TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384"},
270*e0c4386eSCy Schubert {0xC05E, "TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256"},
271*e0c4386eSCy Schubert {0xC05F, "TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384"},
272*e0c4386eSCy Schubert {0xC060, "TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256"},
273*e0c4386eSCy Schubert {0xC061, "TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384"},
274*e0c4386eSCy Schubert {0xC062, "TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256"},
275*e0c4386eSCy Schubert {0xC063, "TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384"},
276*e0c4386eSCy Schubert {0xC064, "TLS_PSK_WITH_ARIA_128_CBC_SHA256"},
277*e0c4386eSCy Schubert {0xC065, "TLS_PSK_WITH_ARIA_256_CBC_SHA384"},
278*e0c4386eSCy Schubert {0xC066, "TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256"},
279*e0c4386eSCy Schubert {0xC067, "TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384"},
280*e0c4386eSCy Schubert {0xC068, "TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256"},
281*e0c4386eSCy Schubert {0xC069, "TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384"},
282*e0c4386eSCy Schubert {0xC06A, "TLS_PSK_WITH_ARIA_128_GCM_SHA256"},
283*e0c4386eSCy Schubert {0xC06B, "TLS_PSK_WITH_ARIA_256_GCM_SHA384"},
284*e0c4386eSCy Schubert {0xC06C, "TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256"},
285*e0c4386eSCy Schubert {0xC06D, "TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384"},
286*e0c4386eSCy Schubert {0xC06E, "TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256"},
287*e0c4386eSCy Schubert {0xC06F, "TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384"},
288*e0c4386eSCy Schubert {0xC070, "TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256"},
289*e0c4386eSCy Schubert {0xC071, "TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384"},
290*e0c4386eSCy Schubert {0xC072, "TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256"},
291*e0c4386eSCy Schubert {0xC073, "TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384"},
292*e0c4386eSCy Schubert {0xC074, "TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256"},
293*e0c4386eSCy Schubert {0xC075, "TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384"},
294*e0c4386eSCy Schubert {0xC076, "TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256"},
295*e0c4386eSCy Schubert {0xC077, "TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384"},
296*e0c4386eSCy Schubert {0xC078, "TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256"},
297*e0c4386eSCy Schubert {0xC079, "TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384"},
298*e0c4386eSCy Schubert {0xC07A, "TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256"},
299*e0c4386eSCy Schubert {0xC07B, "TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384"},
300*e0c4386eSCy Schubert {0xC07C, "TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256"},
301*e0c4386eSCy Schubert {0xC07D, "TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384"},
302*e0c4386eSCy Schubert {0xC07E, "TLS_DH_RSA_WITH_CAMELLIA_128_GCM_SHA256"},
303*e0c4386eSCy Schubert {0xC07F, "TLS_DH_RSA_WITH_CAMELLIA_256_GCM_SHA384"},
304*e0c4386eSCy Schubert {0xC080, "TLS_DHE_DSS_WITH_CAMELLIA_128_GCM_SHA256"},
305*e0c4386eSCy Schubert {0xC081, "TLS_DHE_DSS_WITH_CAMELLIA_256_GCM_SHA384"},
306*e0c4386eSCy Schubert {0xC082, "TLS_DH_DSS_WITH_CAMELLIA_128_GCM_SHA256"},
307*e0c4386eSCy Schubert {0xC083, "TLS_DH_DSS_WITH_CAMELLIA_256_GCM_SHA384"},
308*e0c4386eSCy Schubert {0xC084, "TLS_DH_anon_WITH_CAMELLIA_128_GCM_SHA256"},
309*e0c4386eSCy Schubert {0xC085, "TLS_DH_anon_WITH_CAMELLIA_256_GCM_SHA384"},
310*e0c4386eSCy Schubert {0xC086, "TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256"},
311*e0c4386eSCy Schubert {0xC087, "TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384"},
312*e0c4386eSCy Schubert {0xC088, "TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256"},
313*e0c4386eSCy Schubert {0xC089, "TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384"},
314*e0c4386eSCy Schubert {0xC08A, "TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256"},
315*e0c4386eSCy Schubert {0xC08B, "TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384"},
316*e0c4386eSCy Schubert {0xC08C, "TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256"},
317*e0c4386eSCy Schubert {0xC08D, "TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384"},
318*e0c4386eSCy Schubert {0xC08E, "TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256"},
319*e0c4386eSCy Schubert {0xC08F, "TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384"},
320*e0c4386eSCy Schubert {0xC090, "TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256"},
321*e0c4386eSCy Schubert {0xC091, "TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384"},
322*e0c4386eSCy Schubert {0xC092, "TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256"},
323*e0c4386eSCy Schubert {0xC093, "TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384"},
324*e0c4386eSCy Schubert {0xC094, "TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256"},
325*e0c4386eSCy Schubert {0xC095, "TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384"},
326*e0c4386eSCy Schubert {0xC096, "TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256"},
327*e0c4386eSCy Schubert {0xC097, "TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384"},
328*e0c4386eSCy Schubert {0xC098, "TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256"},
329*e0c4386eSCy Schubert {0xC099, "TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384"},
330*e0c4386eSCy Schubert {0xC09A, "TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256"},
331*e0c4386eSCy Schubert {0xC09B, "TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384"},
332*e0c4386eSCy Schubert {0xC09C, "TLS_RSA_WITH_AES_128_CCM"},
333*e0c4386eSCy Schubert {0xC09D, "TLS_RSA_WITH_AES_256_CCM"},
334*e0c4386eSCy Schubert {0xC09E, "TLS_DHE_RSA_WITH_AES_128_CCM"},
335*e0c4386eSCy Schubert {0xC09F, "TLS_DHE_RSA_WITH_AES_256_CCM"},
336*e0c4386eSCy Schubert {0xC0A0, "TLS_RSA_WITH_AES_128_CCM_8"},
337*e0c4386eSCy Schubert {0xC0A1, "TLS_RSA_WITH_AES_256_CCM_8"},
338*e0c4386eSCy Schubert {0xC0A2, "TLS_DHE_RSA_WITH_AES_128_CCM_8"},
339*e0c4386eSCy Schubert {0xC0A3, "TLS_DHE_RSA_WITH_AES_256_CCM_8"},
340*e0c4386eSCy Schubert {0xC0A4, "TLS_PSK_WITH_AES_128_CCM"},
341*e0c4386eSCy Schubert {0xC0A5, "TLS_PSK_WITH_AES_256_CCM"},
342*e0c4386eSCy Schubert {0xC0A6, "TLS_DHE_PSK_WITH_AES_128_CCM"},
343*e0c4386eSCy Schubert {0xC0A7, "TLS_DHE_PSK_WITH_AES_256_CCM"},
344*e0c4386eSCy Schubert {0xC0A8, "TLS_PSK_WITH_AES_128_CCM_8"},
345*e0c4386eSCy Schubert {0xC0A9, "TLS_PSK_WITH_AES_256_CCM_8"},
346*e0c4386eSCy Schubert {0xC0AA, "TLS_PSK_DHE_WITH_AES_128_CCM_8"},
347*e0c4386eSCy Schubert {0xC0AB, "TLS_PSK_DHE_WITH_AES_256_CCM_8"},
348*e0c4386eSCy Schubert {0xC0AC, "TLS_ECDHE_ECDSA_WITH_AES_128_CCM"},
349*e0c4386eSCy Schubert {0xC0AD, "TLS_ECDHE_ECDSA_WITH_AES_256_CCM"},
350*e0c4386eSCy Schubert {0xC0AE, "TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8"},
351*e0c4386eSCy Schubert {0xC0AF, "TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8"},
352*e0c4386eSCy Schubert {0xCCA8, "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256"},
353*e0c4386eSCy Schubert {0xCCA9, "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256"},
354*e0c4386eSCy Schubert {0xCCAA, "TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256"},
355*e0c4386eSCy Schubert {0xCCAB, "TLS_PSK_WITH_CHACHA20_POLY1305_SHA256"},
356*e0c4386eSCy Schubert {0xCCAC, "TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256"},
357*e0c4386eSCy Schubert {0xCCAD, "TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256"},
358*e0c4386eSCy Schubert {0xCCAE, "TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256"},
359*e0c4386eSCy Schubert {0x1301, "TLS_AES_128_GCM_SHA256"},
360*e0c4386eSCy Schubert {0x1302, "TLS_AES_256_GCM_SHA384"},
361*e0c4386eSCy Schubert {0x1303, "TLS_CHACHA20_POLY1305_SHA256"},
362*e0c4386eSCy Schubert {0x1304, "TLS_AES_128_CCM_SHA256"},
363*e0c4386eSCy Schubert {0x1305, "TLS_AES_128_CCM_8_SHA256"},
364*e0c4386eSCy Schubert {0xFEFE, "SSL_RSA_FIPS_WITH_DES_CBC_SHA"},
365*e0c4386eSCy Schubert {0xFEFF, "SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA"},
366*e0c4386eSCy Schubert };
367*e0c4386eSCy Schubert
get_std_name_by_id(int id)368*e0c4386eSCy Schubert static const char *get_std_name_by_id(int id)
369*e0c4386eSCy Schubert {
370*e0c4386eSCy Schubert size_t i;
371*e0c4386eSCy Schubert
372*e0c4386eSCy Schubert for (i = 0; i < OSSL_NELEM(cipher_names); i++)
373*e0c4386eSCy Schubert if (cipher_names[i].id == id)
374*e0c4386eSCy Schubert return cipher_names[i].name;
375*e0c4386eSCy Schubert
376*e0c4386eSCy Schubert return NULL;
377*e0c4386eSCy Schubert }
378*e0c4386eSCy Schubert
test_cipher_name(void)379*e0c4386eSCy Schubert static int test_cipher_name(void)
380*e0c4386eSCy Schubert {
381*e0c4386eSCy Schubert SSL_CTX *ctx = NULL;
382*e0c4386eSCy Schubert SSL *ssl = NULL;
383*e0c4386eSCy Schubert const SSL_CIPHER *c;
384*e0c4386eSCy Schubert STACK_OF(SSL_CIPHER) *sk = NULL;
385*e0c4386eSCy Schubert const char *ciphers = "ALL:eNULL", *p, *q, *r;
386*e0c4386eSCy Schubert int i, id = 0, ret = 0;
387*e0c4386eSCy Schubert
388*e0c4386eSCy Schubert /* tests for invalid input */
389*e0c4386eSCy Schubert p = SSL_CIPHER_standard_name(NULL);
390*e0c4386eSCy Schubert if (!TEST_str_eq(p, "(NONE)")) {
391*e0c4386eSCy Schubert TEST_info("test_cipher_name(std) failed: NULL input doesn't return \"(NONE)\"\n");
392*e0c4386eSCy Schubert goto err;
393*e0c4386eSCy Schubert }
394*e0c4386eSCy Schubert
395*e0c4386eSCy Schubert p = OPENSSL_cipher_name(NULL);
396*e0c4386eSCy Schubert if (!TEST_str_eq(p, "(NONE)")) {
397*e0c4386eSCy Schubert TEST_info("test_cipher_name(ossl) failed: NULL input doesn't return \"(NONE)\"\n");
398*e0c4386eSCy Schubert goto err;
399*e0c4386eSCy Schubert }
400*e0c4386eSCy Schubert
401*e0c4386eSCy Schubert p = OPENSSL_cipher_name("This is not a valid cipher");
402*e0c4386eSCy Schubert if (!TEST_str_eq(p, "(NONE)")) {
403*e0c4386eSCy Schubert TEST_info("test_cipher_name(ossl) failed: invalid input doesn't return \"(NONE)\"\n");
404*e0c4386eSCy Schubert goto err;
405*e0c4386eSCy Schubert }
406*e0c4386eSCy Schubert
407*e0c4386eSCy Schubert /* tests for valid input */
408*e0c4386eSCy Schubert ctx = SSL_CTX_new(TLS_server_method());
409*e0c4386eSCy Schubert if (ctx == NULL) {
410*e0c4386eSCy Schubert TEST_info("test_cipher_name failed: internal error\n");
411*e0c4386eSCy Schubert goto err;
412*e0c4386eSCy Schubert }
413*e0c4386eSCy Schubert
414*e0c4386eSCy Schubert if (!SSL_CTX_set_cipher_list(ctx, ciphers)) {
415*e0c4386eSCy Schubert TEST_info("test_cipher_name failed: internal error\n");
416*e0c4386eSCy Schubert goto err;
417*e0c4386eSCy Schubert }
418*e0c4386eSCy Schubert
419*e0c4386eSCy Schubert ssl = SSL_new(ctx);
420*e0c4386eSCy Schubert if (ssl == NULL) {
421*e0c4386eSCy Schubert TEST_info("test_cipher_name failed: internal error\n");
422*e0c4386eSCy Schubert goto err;
423*e0c4386eSCy Schubert }
424*e0c4386eSCy Schubert
425*e0c4386eSCy Schubert sk = SSL_get_ciphers(ssl);
426*e0c4386eSCy Schubert if (sk == NULL) {
427*e0c4386eSCy Schubert TEST_info("test_cipher_name failed: internal error\n");
428*e0c4386eSCy Schubert goto err;
429*e0c4386eSCy Schubert }
430*e0c4386eSCy Schubert
431*e0c4386eSCy Schubert for (i = 0; i < sk_SSL_CIPHER_num(sk); i++) {
432*e0c4386eSCy Schubert c = sk_SSL_CIPHER_value(sk, i);
433*e0c4386eSCy Schubert id = SSL_CIPHER_get_id(c) & 0xFFFF;
434*e0c4386eSCy Schubert if ((id == 0xC102) || (id == 0xFF85) ||(id == 0xFF87))
435*e0c4386eSCy Schubert /* skip GOST2012-GOST8912-GOST891 and GOST2012-NULL-GOST12 */
436*e0c4386eSCy Schubert continue;
437*e0c4386eSCy Schubert p = SSL_CIPHER_standard_name(c);
438*e0c4386eSCy Schubert q = get_std_name_by_id(id);
439*e0c4386eSCy Schubert if (!TEST_ptr(p)) {
440*e0c4386eSCy Schubert TEST_info("test_cipher_name failed: expected %s, got NULL, cipher %x\n",
441*e0c4386eSCy Schubert q, id);
442*e0c4386eSCy Schubert goto err;
443*e0c4386eSCy Schubert }
444*e0c4386eSCy Schubert /* check if p is a valid standard name */
445*e0c4386eSCy Schubert if (!TEST_str_eq(p, q)) {
446*e0c4386eSCy Schubert TEST_info("test_cipher_name(std) failed: expected %s, got %s, cipher %x\n",
447*e0c4386eSCy Schubert q, p, id);
448*e0c4386eSCy Schubert goto err;
449*e0c4386eSCy Schubert }
450*e0c4386eSCy Schubert /* test OPENSSL_cipher_name */
451*e0c4386eSCy Schubert q = SSL_CIPHER_get_name(c);
452*e0c4386eSCy Schubert r = OPENSSL_cipher_name(p);
453*e0c4386eSCy Schubert if (!TEST_str_eq(r, q)) {
454*e0c4386eSCy Schubert TEST_info("test_cipher_name(ossl) failed: expected %s, got %s, cipher %x\n",
455*e0c4386eSCy Schubert q, r, id);
456*e0c4386eSCy Schubert goto err;
457*e0c4386eSCy Schubert }
458*e0c4386eSCy Schubert }
459*e0c4386eSCy Schubert ret = 1;
460*e0c4386eSCy Schubert err:
461*e0c4386eSCy Schubert SSL_CTX_free(ctx);
462*e0c4386eSCy Schubert SSL_free(ssl);
463*e0c4386eSCy Schubert return ret;
464*e0c4386eSCy Schubert }
465*e0c4386eSCy Schubert
setup_tests(void)466*e0c4386eSCy Schubert int setup_tests(void)
467*e0c4386eSCy Schubert {
468*e0c4386eSCy Schubert ADD_TEST(test_cipher_name);
469*e0c4386eSCy Schubert return 1;
470*e0c4386eSCy Schubert }
471