xref: /netbsd-src/crypto/external/bsd/openssl/dist/test/ciphername_test.c (revision b0d1725196a7921d003d2c66a14f186abda4176b)
113d40330Schristos /*
2*b0d17251Schristos  * Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved.
313d40330Schristos  * Copyright 2017 BaishanCloud. All rights reserved.
413d40330Schristos  *
5*b0d17251Schristos  * Licensed under the Apache License 2.0 (the "License");
613d40330Schristos  * you may not use this file except in compliance with the License.
713d40330Schristos  * You may obtain a copy of the License at
813d40330Schristos  * https://www.openssl.org/source/license.html
913d40330Schristos  * or in the file LICENSE in the source distribution.
1013d40330Schristos  */
1113d40330Schristos 
1213d40330Schristos #include <stdio.h>
1313d40330Schristos #include <string.h>
1413d40330Schristos 
1513d40330Schristos #include <openssl/opensslconf.h>
1613d40330Schristos #include <openssl/err.h>
1713d40330Schristos #include <openssl/e_os2.h>
1813d40330Schristos #include <openssl/ssl.h>
1913d40330Schristos #include <openssl/ssl3.h>
2013d40330Schristos #include <openssl/tls1.h>
2113d40330Schristos 
2213d40330Schristos #include "internal/nelem.h"
2313d40330Schristos #include "testutil.h"
2413d40330Schristos 
2513d40330Schristos typedef struct cipher_id_name {
2613d40330Schristos     int id;
2713d40330Schristos     const char *name;
2813d40330Schristos } CIPHER_ID_NAME;
2913d40330Schristos 
3013d40330Schristos /* Cipher suites, copied from t1_trce.c */
3113d40330Schristos static CIPHER_ID_NAME cipher_names[] = {
3213d40330Schristos     {0x0000, "TLS_NULL_WITH_NULL_NULL"},
3313d40330Schristos     {0x0001, "TLS_RSA_WITH_NULL_MD5"},
3413d40330Schristos     {0x0002, "TLS_RSA_WITH_NULL_SHA"},
3513d40330Schristos     {0x0003, "TLS_RSA_EXPORT_WITH_RC4_40_MD5"},
3613d40330Schristos     {0x0004, "TLS_RSA_WITH_RC4_128_MD5"},
3713d40330Schristos     {0x0005, "TLS_RSA_WITH_RC4_128_SHA"},
3813d40330Schristos     {0x0006, "TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5"},
3913d40330Schristos     {0x0007, "TLS_RSA_WITH_IDEA_CBC_SHA"},
4013d40330Schristos     {0x0008, "TLS_RSA_EXPORT_WITH_DES40_CBC_SHA"},
4113d40330Schristos     {0x0009, "TLS_RSA_WITH_DES_CBC_SHA"},
4213d40330Schristos     {0x000A, "TLS_RSA_WITH_3DES_EDE_CBC_SHA"},
4313d40330Schristos     {0x000B, "TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA"},
4413d40330Schristos     {0x000C, "TLS_DH_DSS_WITH_DES_CBC_SHA"},
4513d40330Schristos     {0x000D, "TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA"},
4613d40330Schristos     {0x000E, "TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA"},
4713d40330Schristos     {0x000F, "TLS_DH_RSA_WITH_DES_CBC_SHA"},
4813d40330Schristos     {0x0010, "TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA"},
4913d40330Schristos     {0x0011, "TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA"},
5013d40330Schristos     {0x0012, "TLS_DHE_DSS_WITH_DES_CBC_SHA"},
5113d40330Schristos     {0x0013, "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA"},
5213d40330Schristos     {0x0014, "TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA"},
5313d40330Schristos     {0x0015, "TLS_DHE_RSA_WITH_DES_CBC_SHA"},
5413d40330Schristos     {0x0016, "TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA"},
5513d40330Schristos     {0x0017, "TLS_DH_anon_EXPORT_WITH_RC4_40_MD5"},
5613d40330Schristos     {0x0018, "TLS_DH_anon_WITH_RC4_128_MD5"},
5713d40330Schristos     {0x0019, "TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA"},
5813d40330Schristos     {0x001A, "TLS_DH_anon_WITH_DES_CBC_SHA"},
5913d40330Schristos     {0x001B, "TLS_DH_anon_WITH_3DES_EDE_CBC_SHA"},
6013d40330Schristos     {0x001D, "SSL_FORTEZZA_KEA_WITH_FORTEZZA_CBC_SHA"},
6113d40330Schristos     {0x001E, "SSL_FORTEZZA_KEA_WITH_RC4_128_SHA"},
6213d40330Schristos     {0x001F, "TLS_KRB5_WITH_3DES_EDE_CBC_SHA"},
6313d40330Schristos     {0x0020, "TLS_KRB5_WITH_RC4_128_SHA"},
6413d40330Schristos     {0x0021, "TLS_KRB5_WITH_IDEA_CBC_SHA"},
6513d40330Schristos     {0x0022, "TLS_KRB5_WITH_DES_CBC_MD5"},
6613d40330Schristos     {0x0023, "TLS_KRB5_WITH_3DES_EDE_CBC_MD5"},
6713d40330Schristos     {0x0024, "TLS_KRB5_WITH_RC4_128_MD5"},
6813d40330Schristos     {0x0025, "TLS_KRB5_WITH_IDEA_CBC_MD5"},
6913d40330Schristos     {0x0026, "TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA"},
7013d40330Schristos     {0x0027, "TLS_KRB5_EXPORT_WITH_RC2_CBC_40_SHA"},
7113d40330Schristos     {0x0028, "TLS_KRB5_EXPORT_WITH_RC4_40_SHA"},
7213d40330Schristos     {0x0029, "TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5"},
7313d40330Schristos     {0x002A, "TLS_KRB5_EXPORT_WITH_RC2_CBC_40_MD5"},
7413d40330Schristos     {0x002B, "TLS_KRB5_EXPORT_WITH_RC4_40_MD5"},
7513d40330Schristos     {0x002C, "TLS_PSK_WITH_NULL_SHA"},
7613d40330Schristos     {0x002D, "TLS_DHE_PSK_WITH_NULL_SHA"},
7713d40330Schristos     {0x002E, "TLS_RSA_PSK_WITH_NULL_SHA"},
7813d40330Schristos     {0x002F, "TLS_RSA_WITH_AES_128_CBC_SHA"},
7913d40330Schristos     {0x0030, "TLS_DH_DSS_WITH_AES_128_CBC_SHA"},
8013d40330Schristos     {0x0031, "TLS_DH_RSA_WITH_AES_128_CBC_SHA"},
8113d40330Schristos     {0x0032, "TLS_DHE_DSS_WITH_AES_128_CBC_SHA"},
8213d40330Schristos     {0x0033, "TLS_DHE_RSA_WITH_AES_128_CBC_SHA"},
8313d40330Schristos     {0x0034, "TLS_DH_anon_WITH_AES_128_CBC_SHA"},
8413d40330Schristos     {0x0035, "TLS_RSA_WITH_AES_256_CBC_SHA"},
8513d40330Schristos     {0x0036, "TLS_DH_DSS_WITH_AES_256_CBC_SHA"},
8613d40330Schristos     {0x0037, "TLS_DH_RSA_WITH_AES_256_CBC_SHA"},
8713d40330Schristos     {0x0038, "TLS_DHE_DSS_WITH_AES_256_CBC_SHA"},
8813d40330Schristos     {0x0039, "TLS_DHE_RSA_WITH_AES_256_CBC_SHA"},
8913d40330Schristos     {0x003A, "TLS_DH_anon_WITH_AES_256_CBC_SHA"},
9013d40330Schristos     {0x003B, "TLS_RSA_WITH_NULL_SHA256"},
9113d40330Schristos     {0x003C, "TLS_RSA_WITH_AES_128_CBC_SHA256"},
9213d40330Schristos     {0x003D, "TLS_RSA_WITH_AES_256_CBC_SHA256"},
9313d40330Schristos     {0x003E, "TLS_DH_DSS_WITH_AES_128_CBC_SHA256"},
9413d40330Schristos     {0x003F, "TLS_DH_RSA_WITH_AES_128_CBC_SHA256"},
9513d40330Schristos     {0x0040, "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256"},
9613d40330Schristos     {0x0041, "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA"},
9713d40330Schristos     {0x0042, "TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA"},
9813d40330Schristos     {0x0043, "TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA"},
9913d40330Schristos     {0x0044, "TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA"},
10013d40330Schristos     {0x0045, "TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA"},
10113d40330Schristos     {0x0046, "TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA"},
10213d40330Schristos     {0x0067, "TLS_DHE_RSA_WITH_AES_128_CBC_SHA256"},
10313d40330Schristos     {0x0068, "TLS_DH_DSS_WITH_AES_256_CBC_SHA256"},
10413d40330Schristos     {0x0069, "TLS_DH_RSA_WITH_AES_256_CBC_SHA256"},
10513d40330Schristos     {0x006A, "TLS_DHE_DSS_WITH_AES_256_CBC_SHA256"},
10613d40330Schristos     {0x006B, "TLS_DHE_RSA_WITH_AES_256_CBC_SHA256"},
10713d40330Schristos     {0x006C, "TLS_DH_anon_WITH_AES_128_CBC_SHA256"},
10813d40330Schristos     {0x006D, "TLS_DH_anon_WITH_AES_256_CBC_SHA256"},
10913d40330Schristos     {0x0084, "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA"},
11013d40330Schristos     {0x0085, "TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA"},
11113d40330Schristos     {0x0086, "TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA"},
11213d40330Schristos     {0x0087, "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA"},
11313d40330Schristos     {0x0088, "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA"},
11413d40330Schristos     {0x0089, "TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA"},
11513d40330Schristos     {0x008A, "TLS_PSK_WITH_RC4_128_SHA"},
11613d40330Schristos     {0x008B, "TLS_PSK_WITH_3DES_EDE_CBC_SHA"},
11713d40330Schristos     {0x008C, "TLS_PSK_WITH_AES_128_CBC_SHA"},
11813d40330Schristos     {0x008D, "TLS_PSK_WITH_AES_256_CBC_SHA"},
11913d40330Schristos     {0x008E, "TLS_DHE_PSK_WITH_RC4_128_SHA"},
12013d40330Schristos     {0x008F, "TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA"},
12113d40330Schristos     {0x0090, "TLS_DHE_PSK_WITH_AES_128_CBC_SHA"},
12213d40330Schristos     {0x0091, "TLS_DHE_PSK_WITH_AES_256_CBC_SHA"},
12313d40330Schristos     {0x0092, "TLS_RSA_PSK_WITH_RC4_128_SHA"},
12413d40330Schristos     {0x0093, "TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA"},
12513d40330Schristos     {0x0094, "TLS_RSA_PSK_WITH_AES_128_CBC_SHA"},
12613d40330Schristos     {0x0095, "TLS_RSA_PSK_WITH_AES_256_CBC_SHA"},
12713d40330Schristos     {0x0096, "TLS_RSA_WITH_SEED_CBC_SHA"},
12813d40330Schristos     {0x0097, "TLS_DH_DSS_WITH_SEED_CBC_SHA"},
12913d40330Schristos     {0x0098, "TLS_DH_RSA_WITH_SEED_CBC_SHA"},
13013d40330Schristos     {0x0099, "TLS_DHE_DSS_WITH_SEED_CBC_SHA"},
13113d40330Schristos     {0x009A, "TLS_DHE_RSA_WITH_SEED_CBC_SHA"},
13213d40330Schristos     {0x009B, "TLS_DH_anon_WITH_SEED_CBC_SHA"},
13313d40330Schristos     {0x009C, "TLS_RSA_WITH_AES_128_GCM_SHA256"},
13413d40330Schristos     {0x009D, "TLS_RSA_WITH_AES_256_GCM_SHA384"},
13513d40330Schristos     {0x009E, "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256"},
13613d40330Schristos     {0x009F, "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384"},
13713d40330Schristos     {0x00A0, "TLS_DH_RSA_WITH_AES_128_GCM_SHA256"},
13813d40330Schristos     {0x00A1, "TLS_DH_RSA_WITH_AES_256_GCM_SHA384"},
13913d40330Schristos     {0x00A2, "TLS_DHE_DSS_WITH_AES_128_GCM_SHA256"},
14013d40330Schristos     {0x00A3, "TLS_DHE_DSS_WITH_AES_256_GCM_SHA384"},
14113d40330Schristos     {0x00A4, "TLS_DH_DSS_WITH_AES_128_GCM_SHA256"},
14213d40330Schristos     {0x00A5, "TLS_DH_DSS_WITH_AES_256_GCM_SHA384"},
14313d40330Schristos     {0x00A6, "TLS_DH_anon_WITH_AES_128_GCM_SHA256"},
14413d40330Schristos     {0x00A7, "TLS_DH_anon_WITH_AES_256_GCM_SHA384"},
14513d40330Schristos     {0x00A8, "TLS_PSK_WITH_AES_128_GCM_SHA256"},
14613d40330Schristos     {0x00A9, "TLS_PSK_WITH_AES_256_GCM_SHA384"},
14713d40330Schristos     {0x00AA, "TLS_DHE_PSK_WITH_AES_128_GCM_SHA256"},
14813d40330Schristos     {0x00AB, "TLS_DHE_PSK_WITH_AES_256_GCM_SHA384"},
14913d40330Schristos     {0x00AC, "TLS_RSA_PSK_WITH_AES_128_GCM_SHA256"},
15013d40330Schristos     {0x00AD, "TLS_RSA_PSK_WITH_AES_256_GCM_SHA384"},
15113d40330Schristos     {0x00AE, "TLS_PSK_WITH_AES_128_CBC_SHA256"},
15213d40330Schristos     {0x00AF, "TLS_PSK_WITH_AES_256_CBC_SHA384"},
15313d40330Schristos     {0x00B0, "TLS_PSK_WITH_NULL_SHA256"},
15413d40330Schristos     {0x00B1, "TLS_PSK_WITH_NULL_SHA384"},
15513d40330Schristos     {0x00B2, "TLS_DHE_PSK_WITH_AES_128_CBC_SHA256"},
15613d40330Schristos     {0x00B3, "TLS_DHE_PSK_WITH_AES_256_CBC_SHA384"},
15713d40330Schristos     {0x00B4, "TLS_DHE_PSK_WITH_NULL_SHA256"},
15813d40330Schristos     {0x00B5, "TLS_DHE_PSK_WITH_NULL_SHA384"},
15913d40330Schristos     {0x00B6, "TLS_RSA_PSK_WITH_AES_128_CBC_SHA256"},
16013d40330Schristos     {0x00B7, "TLS_RSA_PSK_WITH_AES_256_CBC_SHA384"},
16113d40330Schristos     {0x00B8, "TLS_RSA_PSK_WITH_NULL_SHA256"},
16213d40330Schristos     {0x00B9, "TLS_RSA_PSK_WITH_NULL_SHA384"},
16313d40330Schristos     {0x00BA, "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256"},
16413d40330Schristos     {0x00BB, "TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256"},
16513d40330Schristos     {0x00BC, "TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256"},
16613d40330Schristos     {0x00BD, "TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256"},
16713d40330Schristos     {0x00BE, "TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256"},
16813d40330Schristos     {0x00BF, "TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256"},
16913d40330Schristos     {0x00C0, "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256"},
17013d40330Schristos     {0x00C1, "TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256"},
17113d40330Schristos     {0x00C2, "TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256"},
17213d40330Schristos     {0x00C3, "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256"},
17313d40330Schristos     {0x00C4, "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256"},
17413d40330Schristos     {0x00C5, "TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256"},
17513d40330Schristos     {0x00FF, "TLS_EMPTY_RENEGOTIATION_INFO_SCSV"},
17613d40330Schristos     {0x5600, "TLS_FALLBACK_SCSV"},
17713d40330Schristos     {0xC001, "TLS_ECDH_ECDSA_WITH_NULL_SHA"},
17813d40330Schristos     {0xC002, "TLS_ECDH_ECDSA_WITH_RC4_128_SHA"},
17913d40330Schristos     {0xC003, "TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA"},
18013d40330Schristos     {0xC004, "TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA"},
18113d40330Schristos     {0xC005, "TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA"},
18213d40330Schristos     {0xC006, "TLS_ECDHE_ECDSA_WITH_NULL_SHA"},
18313d40330Schristos     {0xC007, "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA"},
18413d40330Schristos     {0xC008, "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA"},
18513d40330Schristos     {0xC009, "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA"},
18613d40330Schristos     {0xC00A, "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA"},
18713d40330Schristos     {0xC00B, "TLS_ECDH_RSA_WITH_NULL_SHA"},
18813d40330Schristos     {0xC00C, "TLS_ECDH_RSA_WITH_RC4_128_SHA"},
18913d40330Schristos     {0xC00D, "TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA"},
19013d40330Schristos     {0xC00E, "TLS_ECDH_RSA_WITH_AES_128_CBC_SHA"},
19113d40330Schristos     {0xC00F, "TLS_ECDH_RSA_WITH_AES_256_CBC_SHA"},
19213d40330Schristos     {0xC010, "TLS_ECDHE_RSA_WITH_NULL_SHA"},
19313d40330Schristos     {0xC011, "TLS_ECDHE_RSA_WITH_RC4_128_SHA"},
19413d40330Schristos     {0xC012, "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA"},
19513d40330Schristos     {0xC013, "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA"},
19613d40330Schristos     {0xC014, "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA"},
19713d40330Schristos     {0xC015, "TLS_ECDH_anon_WITH_NULL_SHA"},
19813d40330Schristos     {0xC016, "TLS_ECDH_anon_WITH_RC4_128_SHA"},
19913d40330Schristos     {0xC017, "TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA"},
20013d40330Schristos     {0xC018, "TLS_ECDH_anon_WITH_AES_128_CBC_SHA"},
20113d40330Schristos     {0xC019, "TLS_ECDH_anon_WITH_AES_256_CBC_SHA"},
20213d40330Schristos     {0xC01A, "TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA"},
20313d40330Schristos     {0xC01B, "TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA"},
20413d40330Schristos     {0xC01C, "TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA"},
20513d40330Schristos     {0xC01D, "TLS_SRP_SHA_WITH_AES_128_CBC_SHA"},
20613d40330Schristos     {0xC01E, "TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA"},
20713d40330Schristos     {0xC01F, "TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA"},
20813d40330Schristos     {0xC020, "TLS_SRP_SHA_WITH_AES_256_CBC_SHA"},
20913d40330Schristos     {0xC021, "TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA"},
21013d40330Schristos     {0xC022, "TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA"},
21113d40330Schristos     {0xC023, "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256"},
21213d40330Schristos     {0xC024, "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384"},
21313d40330Schristos     {0xC025, "TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256"},
21413d40330Schristos     {0xC026, "TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384"},
21513d40330Schristos     {0xC027, "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256"},
21613d40330Schristos     {0xC028, "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384"},
21713d40330Schristos     {0xC029, "TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256"},
21813d40330Schristos     {0xC02A, "TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384"},
21913d40330Schristos     {0xC02B, "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"},
22013d40330Schristos     {0xC02C, "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"},
22113d40330Schristos     {0xC02D, "TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256"},
22213d40330Schristos     {0xC02E, "TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384"},
22313d40330Schristos     {0xC02F, "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"},
22413d40330Schristos     {0xC030, "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"},
22513d40330Schristos     {0xC031, "TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256"},
22613d40330Schristos     {0xC032, "TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384"},
22713d40330Schristos     {0xC033, "TLS_ECDHE_PSK_WITH_RC4_128_SHA"},
22813d40330Schristos     {0xC034, "TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA"},
22913d40330Schristos     {0xC035, "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA"},
23013d40330Schristos     {0xC036, "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA"},
23113d40330Schristos     {0xC037, "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256"},
23213d40330Schristos     {0xC038, "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384"},
23313d40330Schristos     {0xC039, "TLS_ECDHE_PSK_WITH_NULL_SHA"},
23413d40330Schristos     {0xC03A, "TLS_ECDHE_PSK_WITH_NULL_SHA256"},
23513d40330Schristos     {0xC03B, "TLS_ECDHE_PSK_WITH_NULL_SHA384"},
23613d40330Schristos     {0xC03C, "TLS_RSA_WITH_ARIA_128_CBC_SHA256"},
23713d40330Schristos     {0xC03D, "TLS_RSA_WITH_ARIA_256_CBC_SHA384"},
23813d40330Schristos     {0xC03E, "TLS_DH_DSS_WITH_ARIA_128_CBC_SHA256"},
23913d40330Schristos     {0xC03F, "TLS_DH_DSS_WITH_ARIA_256_CBC_SHA384"},
24013d40330Schristos     {0xC040, "TLS_DH_RSA_WITH_ARIA_128_CBC_SHA256"},
24113d40330Schristos     {0xC041, "TLS_DH_RSA_WITH_ARIA_256_CBC_SHA384"},
24213d40330Schristos     {0xC042, "TLS_DHE_DSS_WITH_ARIA_128_CBC_SHA256"},
24313d40330Schristos     {0xC043, "TLS_DHE_DSS_WITH_ARIA_256_CBC_SHA384"},
24413d40330Schristos     {0xC044, "TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256"},
24513d40330Schristos     {0xC045, "TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384"},
24613d40330Schristos     {0xC046, "TLS_DH_anon_WITH_ARIA_128_CBC_SHA256"},
24713d40330Schristos     {0xC047, "TLS_DH_anon_WITH_ARIA_256_CBC_SHA384"},
24813d40330Schristos     {0xC048, "TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256"},
24913d40330Schristos     {0xC049, "TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384"},
25013d40330Schristos     {0xC04A, "TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256"},
25113d40330Schristos     {0xC04B, "TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384"},
25213d40330Schristos     {0xC04C, "TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256"},
25313d40330Schristos     {0xC04D, "TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384"},
25413d40330Schristos     {0xC04E, "TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256"},
25513d40330Schristos     {0xC04F, "TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384"},
25613d40330Schristos     {0xC050, "TLS_RSA_WITH_ARIA_128_GCM_SHA256"},
25713d40330Schristos     {0xC051, "TLS_RSA_WITH_ARIA_256_GCM_SHA384"},
25813d40330Schristos     {0xC052, "TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256"},
25913d40330Schristos     {0xC053, "TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384"},
26013d40330Schristos     {0xC054, "TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256"},
26113d40330Schristos     {0xC055, "TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384"},
26213d40330Schristos     {0xC056, "TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256"},
26313d40330Schristos     {0xC057, "TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384"},
26413d40330Schristos     {0xC058, "TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256"},
26513d40330Schristos     {0xC059, "TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384"},
26613d40330Schristos     {0xC05A, "TLS_DH_anon_WITH_ARIA_128_GCM_SHA256"},
26713d40330Schristos     {0xC05B, "TLS_DH_anon_WITH_ARIA_256_GCM_SHA384"},
26813d40330Schristos     {0xC05C, "TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256"},
26913d40330Schristos     {0xC05D, "TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384"},
27013d40330Schristos     {0xC05E, "TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256"},
27113d40330Schristos     {0xC05F, "TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384"},
27213d40330Schristos     {0xC060, "TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256"},
27313d40330Schristos     {0xC061, "TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384"},
27413d40330Schristos     {0xC062, "TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256"},
27513d40330Schristos     {0xC063, "TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384"},
27613d40330Schristos     {0xC064, "TLS_PSK_WITH_ARIA_128_CBC_SHA256"},
27713d40330Schristos     {0xC065, "TLS_PSK_WITH_ARIA_256_CBC_SHA384"},
27813d40330Schristos     {0xC066, "TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256"},
27913d40330Schristos     {0xC067, "TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384"},
28013d40330Schristos     {0xC068, "TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256"},
28113d40330Schristos     {0xC069, "TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384"},
28213d40330Schristos     {0xC06A, "TLS_PSK_WITH_ARIA_128_GCM_SHA256"},
28313d40330Schristos     {0xC06B, "TLS_PSK_WITH_ARIA_256_GCM_SHA384"},
28413d40330Schristos     {0xC06C, "TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256"},
28513d40330Schristos     {0xC06D, "TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384"},
28613d40330Schristos     {0xC06E, "TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256"},
28713d40330Schristos     {0xC06F, "TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384"},
28813d40330Schristos     {0xC070, "TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256"},
28913d40330Schristos     {0xC071, "TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384"},
29013d40330Schristos     {0xC072, "TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256"},
29113d40330Schristos     {0xC073, "TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384"},
29213d40330Schristos     {0xC074, "TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256"},
29313d40330Schristos     {0xC075, "TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384"},
29413d40330Schristos     {0xC076, "TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256"},
29513d40330Schristos     {0xC077, "TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384"},
29613d40330Schristos     {0xC078, "TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256"},
29713d40330Schristos     {0xC079, "TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384"},
29813d40330Schristos     {0xC07A, "TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256"},
29913d40330Schristos     {0xC07B, "TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384"},
30013d40330Schristos     {0xC07C, "TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256"},
30113d40330Schristos     {0xC07D, "TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384"},
30213d40330Schristos     {0xC07E, "TLS_DH_RSA_WITH_CAMELLIA_128_GCM_SHA256"},
30313d40330Schristos     {0xC07F, "TLS_DH_RSA_WITH_CAMELLIA_256_GCM_SHA384"},
30413d40330Schristos     {0xC080, "TLS_DHE_DSS_WITH_CAMELLIA_128_GCM_SHA256"},
30513d40330Schristos     {0xC081, "TLS_DHE_DSS_WITH_CAMELLIA_256_GCM_SHA384"},
30613d40330Schristos     {0xC082, "TLS_DH_DSS_WITH_CAMELLIA_128_GCM_SHA256"},
30713d40330Schristos     {0xC083, "TLS_DH_DSS_WITH_CAMELLIA_256_GCM_SHA384"},
30813d40330Schristos     {0xC084, "TLS_DH_anon_WITH_CAMELLIA_128_GCM_SHA256"},
30913d40330Schristos     {0xC085, "TLS_DH_anon_WITH_CAMELLIA_256_GCM_SHA384"},
31013d40330Schristos     {0xC086, "TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256"},
31113d40330Schristos     {0xC087, "TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384"},
31213d40330Schristos     {0xC088, "TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256"},
31313d40330Schristos     {0xC089, "TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384"},
31413d40330Schristos     {0xC08A, "TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256"},
31513d40330Schristos     {0xC08B, "TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384"},
31613d40330Schristos     {0xC08C, "TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256"},
31713d40330Schristos     {0xC08D, "TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384"},
31813d40330Schristos     {0xC08E, "TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256"},
31913d40330Schristos     {0xC08F, "TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384"},
32013d40330Schristos     {0xC090, "TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256"},
32113d40330Schristos     {0xC091, "TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384"},
32213d40330Schristos     {0xC092, "TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256"},
32313d40330Schristos     {0xC093, "TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384"},
32413d40330Schristos     {0xC094, "TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256"},
32513d40330Schristos     {0xC095, "TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384"},
32613d40330Schristos     {0xC096, "TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256"},
32713d40330Schristos     {0xC097, "TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384"},
32813d40330Schristos     {0xC098, "TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256"},
32913d40330Schristos     {0xC099, "TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384"},
33013d40330Schristos     {0xC09A, "TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256"},
33113d40330Schristos     {0xC09B, "TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384"},
33213d40330Schristos     {0xC09C, "TLS_RSA_WITH_AES_128_CCM"},
33313d40330Schristos     {0xC09D, "TLS_RSA_WITH_AES_256_CCM"},
33413d40330Schristos     {0xC09E, "TLS_DHE_RSA_WITH_AES_128_CCM"},
33513d40330Schristos     {0xC09F, "TLS_DHE_RSA_WITH_AES_256_CCM"},
33613d40330Schristos     {0xC0A0, "TLS_RSA_WITH_AES_128_CCM_8"},
33713d40330Schristos     {0xC0A1, "TLS_RSA_WITH_AES_256_CCM_8"},
33813d40330Schristos     {0xC0A2, "TLS_DHE_RSA_WITH_AES_128_CCM_8"},
33913d40330Schristos     {0xC0A3, "TLS_DHE_RSA_WITH_AES_256_CCM_8"},
34013d40330Schristos     {0xC0A4, "TLS_PSK_WITH_AES_128_CCM"},
34113d40330Schristos     {0xC0A5, "TLS_PSK_WITH_AES_256_CCM"},
34213d40330Schristos     {0xC0A6, "TLS_DHE_PSK_WITH_AES_128_CCM"},
34313d40330Schristos     {0xC0A7, "TLS_DHE_PSK_WITH_AES_256_CCM"},
34413d40330Schristos     {0xC0A8, "TLS_PSK_WITH_AES_128_CCM_8"},
34513d40330Schristos     {0xC0A9, "TLS_PSK_WITH_AES_256_CCM_8"},
34613d40330Schristos     {0xC0AA, "TLS_PSK_DHE_WITH_AES_128_CCM_8"},
34713d40330Schristos     {0xC0AB, "TLS_PSK_DHE_WITH_AES_256_CCM_8"},
34813d40330Schristos     {0xC0AC, "TLS_ECDHE_ECDSA_WITH_AES_128_CCM"},
34913d40330Schristos     {0xC0AD, "TLS_ECDHE_ECDSA_WITH_AES_256_CCM"},
35013d40330Schristos     {0xC0AE, "TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8"},
35113d40330Schristos     {0xC0AF, "TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8"},
35213d40330Schristos     {0xCCA8, "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256"},
35313d40330Schristos     {0xCCA9, "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256"},
35413d40330Schristos     {0xCCAA, "TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256"},
35513d40330Schristos     {0xCCAB, "TLS_PSK_WITH_CHACHA20_POLY1305_SHA256"},
35613d40330Schristos     {0xCCAC, "TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256"},
35713d40330Schristos     {0xCCAD, "TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256"},
35813d40330Schristos     {0xCCAE, "TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256"},
35913d40330Schristos     {0x1301, "TLS_AES_128_GCM_SHA256"},
36013d40330Schristos     {0x1302, "TLS_AES_256_GCM_SHA384"},
36113d40330Schristos     {0x1303, "TLS_CHACHA20_POLY1305_SHA256"},
36213d40330Schristos     {0x1304, "TLS_AES_128_CCM_SHA256"},
36313d40330Schristos     {0x1305, "TLS_AES_128_CCM_8_SHA256"},
36413d40330Schristos     {0xFEFE, "SSL_RSA_FIPS_WITH_DES_CBC_SHA"},
36513d40330Schristos     {0xFEFF, "SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA"},
36613d40330Schristos };
36713d40330Schristos 
get_std_name_by_id(int id)36813d40330Schristos static const char *get_std_name_by_id(int id)
36913d40330Schristos {
37013d40330Schristos     size_t i;
37113d40330Schristos 
37213d40330Schristos     for (i = 0; i < OSSL_NELEM(cipher_names); i++)
37313d40330Schristos         if (cipher_names[i].id == id)
37413d40330Schristos             return cipher_names[i].name;
37513d40330Schristos 
37613d40330Schristos     return NULL;
37713d40330Schristos }
37813d40330Schristos 
test_cipher_name(void)37913d40330Schristos static int test_cipher_name(void)
38013d40330Schristos {
38113d40330Schristos     SSL_CTX *ctx = NULL;
38213d40330Schristos     SSL *ssl = NULL;
38313d40330Schristos     const SSL_CIPHER *c;
38413d40330Schristos     STACK_OF(SSL_CIPHER) *sk = NULL;
38513d40330Schristos     const char *ciphers = "ALL:eNULL", *p, *q, *r;
38613d40330Schristos     int i, id = 0, ret = 0;
38713d40330Schristos 
38813d40330Schristos     /* tests for invalid input */
38913d40330Schristos     p = SSL_CIPHER_standard_name(NULL);
39013d40330Schristos     if (!TEST_str_eq(p, "(NONE)")) {
39113d40330Schristos         TEST_info("test_cipher_name(std) failed: NULL input doesn't return \"(NONE)\"\n");
39213d40330Schristos         goto err;
39313d40330Schristos     }
39413d40330Schristos 
39513d40330Schristos     p = OPENSSL_cipher_name(NULL);
39613d40330Schristos     if (!TEST_str_eq(p, "(NONE)")) {
39713d40330Schristos         TEST_info("test_cipher_name(ossl) failed: NULL input doesn't return \"(NONE)\"\n");
39813d40330Schristos         goto err;
39913d40330Schristos     }
40013d40330Schristos 
40113d40330Schristos     p = OPENSSL_cipher_name("This is not a valid cipher");
40213d40330Schristos     if (!TEST_str_eq(p, "(NONE)")) {
40313d40330Schristos         TEST_info("test_cipher_name(ossl) failed: invalid input doesn't return \"(NONE)\"\n");
40413d40330Schristos         goto err;
40513d40330Schristos     }
40613d40330Schristos 
40713d40330Schristos     /* tests for valid input */
40813d40330Schristos     ctx = SSL_CTX_new(TLS_server_method());
40913d40330Schristos     if (ctx == NULL) {
41013d40330Schristos         TEST_info("test_cipher_name failed: internal error\n");
41113d40330Schristos         goto err;
41213d40330Schristos     }
41313d40330Schristos 
41413d40330Schristos     if (!SSL_CTX_set_cipher_list(ctx, ciphers)) {
41513d40330Schristos         TEST_info("test_cipher_name failed: internal error\n");
41613d40330Schristos         goto err;
41713d40330Schristos     }
41813d40330Schristos 
41913d40330Schristos     ssl = SSL_new(ctx);
42013d40330Schristos     if (ssl == NULL) {
42113d40330Schristos         TEST_info("test_cipher_name failed: internal error\n");
42213d40330Schristos         goto err;
42313d40330Schristos     }
42413d40330Schristos 
42513d40330Schristos     sk = SSL_get_ciphers(ssl);
42613d40330Schristos     if (sk == NULL) {
42713d40330Schristos         TEST_info("test_cipher_name failed: internal error\n");
42813d40330Schristos         goto err;
42913d40330Schristos     }
43013d40330Schristos 
43113d40330Schristos     for (i = 0; i < sk_SSL_CIPHER_num(sk); i++) {
43213d40330Schristos         c = sk_SSL_CIPHER_value(sk, i);
43313d40330Schristos         id = SSL_CIPHER_get_id(c) & 0xFFFF;
434*b0d17251Schristos         if ((id == 0xC102) || (id == 0xFF85) ||(id == 0xFF87))
43513d40330Schristos             /* skip GOST2012-GOST8912-GOST891 and GOST2012-NULL-GOST12 */
43613d40330Schristos             continue;
43713d40330Schristos         p = SSL_CIPHER_standard_name(c);
43813d40330Schristos         q = get_std_name_by_id(id);
43913d40330Schristos         if (!TEST_ptr(p)) {
44013d40330Schristos             TEST_info("test_cipher_name failed: expected %s, got NULL, cipher %x\n",
44113d40330Schristos                       q, id);
44213d40330Schristos             goto err;
44313d40330Schristos         }
44413d40330Schristos         /* check if p is a valid standard name */
44513d40330Schristos         if (!TEST_str_eq(p, q)) {
44613d40330Schristos             TEST_info("test_cipher_name(std) failed: expected %s, got %s, cipher %x\n",
44713d40330Schristos                        q, p, id);
44813d40330Schristos             goto err;
44913d40330Schristos         }
45013d40330Schristos         /* test OPENSSL_cipher_name */
45113d40330Schristos         q = SSL_CIPHER_get_name(c);
45213d40330Schristos         r = OPENSSL_cipher_name(p);
45313d40330Schristos         if (!TEST_str_eq(r, q)) {
45413d40330Schristos             TEST_info("test_cipher_name(ossl) failed: expected %s, got %s, cipher %x\n",
45513d40330Schristos                        q, r, id);
45613d40330Schristos             goto err;
45713d40330Schristos         }
45813d40330Schristos     }
45913d40330Schristos     ret = 1;
46013d40330Schristos err:
46113d40330Schristos     SSL_CTX_free(ctx);
46213d40330Schristos     SSL_free(ssl);
46313d40330Schristos     return ret;
46413d40330Schristos }
46513d40330Schristos 
setup_tests(void)46613d40330Schristos int setup_tests(void)
46713d40330Schristos {
46813d40330Schristos     ADD_TEST(test_cipher_name);
46913d40330Schristos     return 1;
47013d40330Schristos }
471