12c593315Sopenharmony_ci#!/usr/bin/env python3
22c593315Sopenharmony_ci# -*- coding: utf-8 -*-
32c593315Sopenharmony_ci
42c593315Sopenharmony_ci# This script read cipher suite list csv file [1] and prints out id
52c593315Sopenharmony_ci# and name of black listed cipher suites.  The output is used by
62c593315Sopenharmony_ci# src/ssl.cc.
72c593315Sopenharmony_ci#
82c593315Sopenharmony_ci# [1] http://www.iana.org/assignments/tls-parameters/tls-parameters-4.csv
92c593315Sopenharmony_ci# [2] http://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml
102c593315Sopenharmony_ci
112c593315Sopenharmony_ciimport re
122c593315Sopenharmony_ciimport sys
132c593315Sopenharmony_ciimport csv
142c593315Sopenharmony_ci
152c593315Sopenharmony_ci# From RFC 7540
162c593315Sopenharmony_ciblacklist = [
172c593315Sopenharmony_ci    'TLS_NULL_WITH_NULL_NULL',
182c593315Sopenharmony_ci    'TLS_RSA_WITH_NULL_MD5',
192c593315Sopenharmony_ci    'TLS_RSA_WITH_NULL_SHA',
202c593315Sopenharmony_ci    'TLS_RSA_EXPORT_WITH_RC4_40_MD5',
212c593315Sopenharmony_ci    'TLS_RSA_WITH_RC4_128_MD5',
222c593315Sopenharmony_ci    'TLS_RSA_WITH_RC4_128_SHA',
232c593315Sopenharmony_ci    'TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5',
242c593315Sopenharmony_ci    'TLS_RSA_WITH_IDEA_CBC_SHA',
252c593315Sopenharmony_ci    'TLS_RSA_EXPORT_WITH_DES40_CBC_SHA',
262c593315Sopenharmony_ci    'TLS_RSA_WITH_DES_CBC_SHA',
272c593315Sopenharmony_ci    'TLS_RSA_WITH_3DES_EDE_CBC_SHA',
282c593315Sopenharmony_ci    'TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA',
292c593315Sopenharmony_ci    'TLS_DH_DSS_WITH_DES_CBC_SHA',
302c593315Sopenharmony_ci    'TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA',
312c593315Sopenharmony_ci    'TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA',
322c593315Sopenharmony_ci    'TLS_DH_RSA_WITH_DES_CBC_SHA',
332c593315Sopenharmony_ci    'TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA',
342c593315Sopenharmony_ci    'TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA',
352c593315Sopenharmony_ci    'TLS_DHE_DSS_WITH_DES_CBC_SHA',
362c593315Sopenharmony_ci    'TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA',
372c593315Sopenharmony_ci    'TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA',
382c593315Sopenharmony_ci    'TLS_DHE_RSA_WITH_DES_CBC_SHA',
392c593315Sopenharmony_ci    'TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA',
402c593315Sopenharmony_ci    'TLS_DH_anon_EXPORT_WITH_RC4_40_MD5',
412c593315Sopenharmony_ci    'TLS_DH_anon_WITH_RC4_128_MD5',
422c593315Sopenharmony_ci    'TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA',
432c593315Sopenharmony_ci    'TLS_DH_anon_WITH_DES_CBC_SHA',
442c593315Sopenharmony_ci    'TLS_DH_anon_WITH_3DES_EDE_CBC_SHA',
452c593315Sopenharmony_ci    'TLS_KRB5_WITH_DES_CBC_SHA',
462c593315Sopenharmony_ci    'TLS_KRB5_WITH_3DES_EDE_CBC_SHA',
472c593315Sopenharmony_ci    'TLS_KRB5_WITH_RC4_128_SHA',
482c593315Sopenharmony_ci    'TLS_KRB5_WITH_IDEA_CBC_SHA',
492c593315Sopenharmony_ci    'TLS_KRB5_WITH_DES_CBC_MD5',
502c593315Sopenharmony_ci    'TLS_KRB5_WITH_3DES_EDE_CBC_MD5',
512c593315Sopenharmony_ci    'TLS_KRB5_WITH_RC4_128_MD5',
522c593315Sopenharmony_ci    'TLS_KRB5_WITH_IDEA_CBC_MD5',
532c593315Sopenharmony_ci    'TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA',
542c593315Sopenharmony_ci    'TLS_KRB5_EXPORT_WITH_RC2_CBC_40_SHA',
552c593315Sopenharmony_ci    'TLS_KRB5_EXPORT_WITH_RC4_40_SHA',
562c593315Sopenharmony_ci    'TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5',
572c593315Sopenharmony_ci    'TLS_KRB5_EXPORT_WITH_RC2_CBC_40_MD5',
582c593315Sopenharmony_ci    'TLS_KRB5_EXPORT_WITH_RC4_40_MD5',
592c593315Sopenharmony_ci    'TLS_PSK_WITH_NULL_SHA',
602c593315Sopenharmony_ci    'TLS_DHE_PSK_WITH_NULL_SHA',
612c593315Sopenharmony_ci    'TLS_RSA_PSK_WITH_NULL_SHA',
622c593315Sopenharmony_ci    'TLS_RSA_WITH_AES_128_CBC_SHA',
632c593315Sopenharmony_ci    'TLS_DH_DSS_WITH_AES_128_CBC_SHA',
642c593315Sopenharmony_ci    'TLS_DH_RSA_WITH_AES_128_CBC_SHA',
652c593315Sopenharmony_ci    'TLS_DHE_DSS_WITH_AES_128_CBC_SHA',
662c593315Sopenharmony_ci    'TLS_DHE_RSA_WITH_AES_128_CBC_SHA',
672c593315Sopenharmony_ci    'TLS_DH_anon_WITH_AES_128_CBC_SHA',
682c593315Sopenharmony_ci    'TLS_RSA_WITH_AES_256_CBC_SHA',
692c593315Sopenharmony_ci    'TLS_DH_DSS_WITH_AES_256_CBC_SHA',
702c593315Sopenharmony_ci    'TLS_DH_RSA_WITH_AES_256_CBC_SHA',
712c593315Sopenharmony_ci    'TLS_DHE_DSS_WITH_AES_256_CBC_SHA',
722c593315Sopenharmony_ci    'TLS_DHE_RSA_WITH_AES_256_CBC_SHA',
732c593315Sopenharmony_ci    'TLS_DH_anon_WITH_AES_256_CBC_SHA',
742c593315Sopenharmony_ci    'TLS_RSA_WITH_NULL_SHA256',
752c593315Sopenharmony_ci    'TLS_RSA_WITH_AES_128_CBC_SHA256',
762c593315Sopenharmony_ci    'TLS_RSA_WITH_AES_256_CBC_SHA256',
772c593315Sopenharmony_ci    'TLS_DH_DSS_WITH_AES_128_CBC_SHA256',
782c593315Sopenharmony_ci    'TLS_DH_RSA_WITH_AES_128_CBC_SHA256',
792c593315Sopenharmony_ci    'TLS_DHE_DSS_WITH_AES_128_CBC_SHA256',
802c593315Sopenharmony_ci    'TLS_RSA_WITH_CAMELLIA_128_CBC_SHA',
812c593315Sopenharmony_ci    'TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA',
822c593315Sopenharmony_ci    'TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA',
832c593315Sopenharmony_ci    'TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA',
842c593315Sopenharmony_ci    'TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA',
852c593315Sopenharmony_ci    'TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA',
862c593315Sopenharmony_ci    'TLS_DHE_RSA_WITH_AES_128_CBC_SHA256',
872c593315Sopenharmony_ci    'TLS_DH_DSS_WITH_AES_256_CBC_SHA256',
882c593315Sopenharmony_ci    'TLS_DH_RSA_WITH_AES_256_CBC_SHA256',
892c593315Sopenharmony_ci    'TLS_DHE_DSS_WITH_AES_256_CBC_SHA256',
902c593315Sopenharmony_ci    'TLS_DHE_RSA_WITH_AES_256_CBC_SHA256',
912c593315Sopenharmony_ci    'TLS_DH_anon_WITH_AES_128_CBC_SHA256',
922c593315Sopenharmony_ci    'TLS_DH_anon_WITH_AES_256_CBC_SHA256',
932c593315Sopenharmony_ci    'TLS_RSA_WITH_CAMELLIA_256_CBC_SHA',
942c593315Sopenharmony_ci    'TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA',
952c593315Sopenharmony_ci    'TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA',
962c593315Sopenharmony_ci    'TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA',
972c593315Sopenharmony_ci    'TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA',
982c593315Sopenharmony_ci    'TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA',
992c593315Sopenharmony_ci    'TLS_PSK_WITH_RC4_128_SHA',
1002c593315Sopenharmony_ci    'TLS_PSK_WITH_3DES_EDE_CBC_SHA',
1012c593315Sopenharmony_ci    'TLS_PSK_WITH_AES_128_CBC_SHA',
1022c593315Sopenharmony_ci    'TLS_PSK_WITH_AES_256_CBC_SHA',
1032c593315Sopenharmony_ci    'TLS_DHE_PSK_WITH_RC4_128_SHA',
1042c593315Sopenharmony_ci    'TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA',
1052c593315Sopenharmony_ci    'TLS_DHE_PSK_WITH_AES_128_CBC_SHA',
1062c593315Sopenharmony_ci    'TLS_DHE_PSK_WITH_AES_256_CBC_SHA',
1072c593315Sopenharmony_ci    'TLS_RSA_PSK_WITH_RC4_128_SHA',
1082c593315Sopenharmony_ci    'TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA',
1092c593315Sopenharmony_ci    'TLS_RSA_PSK_WITH_AES_128_CBC_SHA',
1102c593315Sopenharmony_ci    'TLS_RSA_PSK_WITH_AES_256_CBC_SHA',
1112c593315Sopenharmony_ci    'TLS_RSA_WITH_SEED_CBC_SHA',
1122c593315Sopenharmony_ci    'TLS_DH_DSS_WITH_SEED_CBC_SHA',
1132c593315Sopenharmony_ci    'TLS_DH_RSA_WITH_SEED_CBC_SHA',
1142c593315Sopenharmony_ci    'TLS_DHE_DSS_WITH_SEED_CBC_SHA',
1152c593315Sopenharmony_ci    'TLS_DHE_RSA_WITH_SEED_CBC_SHA',
1162c593315Sopenharmony_ci    'TLS_DH_anon_WITH_SEED_CBC_SHA',
1172c593315Sopenharmony_ci    'TLS_RSA_WITH_AES_128_GCM_SHA256',
1182c593315Sopenharmony_ci    'TLS_RSA_WITH_AES_256_GCM_SHA384',
1192c593315Sopenharmony_ci    'TLS_DH_RSA_WITH_AES_128_GCM_SHA256',
1202c593315Sopenharmony_ci    'TLS_DH_RSA_WITH_AES_256_GCM_SHA384',
1212c593315Sopenharmony_ci    'TLS_DH_DSS_WITH_AES_128_GCM_SHA256',
1222c593315Sopenharmony_ci    'TLS_DH_DSS_WITH_AES_256_GCM_SHA384',
1232c593315Sopenharmony_ci    'TLS_DH_anon_WITH_AES_128_GCM_SHA256',
1242c593315Sopenharmony_ci    'TLS_DH_anon_WITH_AES_256_GCM_SHA384',
1252c593315Sopenharmony_ci    'TLS_PSK_WITH_AES_128_GCM_SHA256',
1262c593315Sopenharmony_ci    'TLS_PSK_WITH_AES_256_GCM_SHA384',
1272c593315Sopenharmony_ci    'TLS_RSA_PSK_WITH_AES_128_GCM_SHA256',
1282c593315Sopenharmony_ci    'TLS_RSA_PSK_WITH_AES_256_GCM_SHA384',
1292c593315Sopenharmony_ci    'TLS_PSK_WITH_AES_128_CBC_SHA256',
1302c593315Sopenharmony_ci    'TLS_PSK_WITH_AES_256_CBC_SHA384',
1312c593315Sopenharmony_ci    'TLS_PSK_WITH_NULL_SHA256',
1322c593315Sopenharmony_ci    'TLS_PSK_WITH_NULL_SHA384',
1332c593315Sopenharmony_ci    'TLS_DHE_PSK_WITH_AES_128_CBC_SHA256',
1342c593315Sopenharmony_ci    'TLS_DHE_PSK_WITH_AES_256_CBC_SHA384',
1352c593315Sopenharmony_ci    'TLS_DHE_PSK_WITH_NULL_SHA256',
1362c593315Sopenharmony_ci    'TLS_DHE_PSK_WITH_NULL_SHA384',
1372c593315Sopenharmony_ci    'TLS_RSA_PSK_WITH_AES_128_CBC_SHA256',
1382c593315Sopenharmony_ci    'TLS_RSA_PSK_WITH_AES_256_CBC_SHA384',
1392c593315Sopenharmony_ci    'TLS_RSA_PSK_WITH_NULL_SHA256',
1402c593315Sopenharmony_ci    'TLS_RSA_PSK_WITH_NULL_SHA384',
1412c593315Sopenharmony_ci    'TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256',
1422c593315Sopenharmony_ci    'TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256',
1432c593315Sopenharmony_ci    'TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256',
1442c593315Sopenharmony_ci    'TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256',
1452c593315Sopenharmony_ci    'TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256',
1462c593315Sopenharmony_ci    'TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256',
1472c593315Sopenharmony_ci    'TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256',
1482c593315Sopenharmony_ci    'TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256',
1492c593315Sopenharmony_ci    'TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256',
1502c593315Sopenharmony_ci    'TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256',
1512c593315Sopenharmony_ci    'TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256',
1522c593315Sopenharmony_ci    'TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256',
1532c593315Sopenharmony_ci    'TLS_EMPTY_RENEGOTIATION_INFO_SCSV',
1542c593315Sopenharmony_ci    'TLS_ECDH_ECDSA_WITH_NULL_SHA',
1552c593315Sopenharmony_ci    'TLS_ECDH_ECDSA_WITH_RC4_128_SHA',
1562c593315Sopenharmony_ci    'TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA',
1572c593315Sopenharmony_ci    'TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA',
1582c593315Sopenharmony_ci    'TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA',
1592c593315Sopenharmony_ci    'TLS_ECDHE_ECDSA_WITH_NULL_SHA',
1602c593315Sopenharmony_ci    'TLS_ECDHE_ECDSA_WITH_RC4_128_SHA',
1612c593315Sopenharmony_ci    'TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA',
1622c593315Sopenharmony_ci    'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA',
1632c593315Sopenharmony_ci    'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA',
1642c593315Sopenharmony_ci    'TLS_ECDH_RSA_WITH_NULL_SHA',
1652c593315Sopenharmony_ci    'TLS_ECDH_RSA_WITH_RC4_128_SHA',
1662c593315Sopenharmony_ci    'TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA',
1672c593315Sopenharmony_ci    'TLS_ECDH_RSA_WITH_AES_128_CBC_SHA',
1682c593315Sopenharmony_ci    'TLS_ECDH_RSA_WITH_AES_256_CBC_SHA',
1692c593315Sopenharmony_ci    'TLS_ECDHE_RSA_WITH_NULL_SHA',
1702c593315Sopenharmony_ci    'TLS_ECDHE_RSA_WITH_RC4_128_SHA',
1712c593315Sopenharmony_ci    'TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA',
1722c593315Sopenharmony_ci    'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA',
1732c593315Sopenharmony_ci    'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA',
1742c593315Sopenharmony_ci    'TLS_ECDH_anon_WITH_NULL_SHA',
1752c593315Sopenharmony_ci    'TLS_ECDH_anon_WITH_RC4_128_SHA',
1762c593315Sopenharmony_ci    'TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA',
1772c593315Sopenharmony_ci    'TLS_ECDH_anon_WITH_AES_128_CBC_SHA',
1782c593315Sopenharmony_ci    'TLS_ECDH_anon_WITH_AES_256_CBC_SHA',
1792c593315Sopenharmony_ci    'TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA',
1802c593315Sopenharmony_ci    'TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA',
1812c593315Sopenharmony_ci    'TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA',
1822c593315Sopenharmony_ci    'TLS_SRP_SHA_WITH_AES_128_CBC_SHA',
1832c593315Sopenharmony_ci    'TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA',
1842c593315Sopenharmony_ci    'TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA',
1852c593315Sopenharmony_ci    'TLS_SRP_SHA_WITH_AES_256_CBC_SHA',
1862c593315Sopenharmony_ci    'TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA',
1872c593315Sopenharmony_ci    'TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA',
1882c593315Sopenharmony_ci    'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256',
1892c593315Sopenharmony_ci    'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384',
1902c593315Sopenharmony_ci    'TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256',
1912c593315Sopenharmony_ci    'TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384',
1922c593315Sopenharmony_ci    'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256',
1932c593315Sopenharmony_ci    'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384',
1942c593315Sopenharmony_ci    'TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256',
1952c593315Sopenharmony_ci    'TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384',
1962c593315Sopenharmony_ci    'TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256',
1972c593315Sopenharmony_ci    'TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384',
1982c593315Sopenharmony_ci    'TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256',
1992c593315Sopenharmony_ci    'TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384',
2002c593315Sopenharmony_ci    'TLS_ECDHE_PSK_WITH_RC4_128_SHA',
2012c593315Sopenharmony_ci    'TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA',
2022c593315Sopenharmony_ci    'TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA',
2032c593315Sopenharmony_ci    'TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA',
2042c593315Sopenharmony_ci    'TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256',
2052c593315Sopenharmony_ci    'TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384',
2062c593315Sopenharmony_ci    'TLS_ECDHE_PSK_WITH_NULL_SHA',
2072c593315Sopenharmony_ci    'TLS_ECDHE_PSK_WITH_NULL_SHA256',
2082c593315Sopenharmony_ci    'TLS_ECDHE_PSK_WITH_NULL_SHA384',
2092c593315Sopenharmony_ci    'TLS_RSA_WITH_ARIA_128_CBC_SHA256',
2102c593315Sopenharmony_ci    'TLS_RSA_WITH_ARIA_256_CBC_SHA384',
2112c593315Sopenharmony_ci    'TLS_DH_DSS_WITH_ARIA_128_CBC_SHA256',
2122c593315Sopenharmony_ci    'TLS_DH_DSS_WITH_ARIA_256_CBC_SHA384',
2132c593315Sopenharmony_ci    'TLS_DH_RSA_WITH_ARIA_128_CBC_SHA256',
2142c593315Sopenharmony_ci    'TLS_DH_RSA_WITH_ARIA_256_CBC_SHA384',
2152c593315Sopenharmony_ci    'TLS_DHE_DSS_WITH_ARIA_128_CBC_SHA256',
2162c593315Sopenharmony_ci    'TLS_DHE_DSS_WITH_ARIA_256_CBC_SHA384',
2172c593315Sopenharmony_ci    'TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256',
2182c593315Sopenharmony_ci    'TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384',
2192c593315Sopenharmony_ci    'TLS_DH_anon_WITH_ARIA_128_CBC_SHA256',
2202c593315Sopenharmony_ci    'TLS_DH_anon_WITH_ARIA_256_CBC_SHA384',
2212c593315Sopenharmony_ci    'TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256',
2222c593315Sopenharmony_ci    'TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384',
2232c593315Sopenharmony_ci    'TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256',
2242c593315Sopenharmony_ci    'TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384',
2252c593315Sopenharmony_ci    'TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256',
2262c593315Sopenharmony_ci    'TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384',
2272c593315Sopenharmony_ci    'TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256',
2282c593315Sopenharmony_ci    'TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384',
2292c593315Sopenharmony_ci    'TLS_RSA_WITH_ARIA_128_GCM_SHA256',
2302c593315Sopenharmony_ci    'TLS_RSA_WITH_ARIA_256_GCM_SHA384',
2312c593315Sopenharmony_ci    'TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256',
2322c593315Sopenharmony_ci    'TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384',
2332c593315Sopenharmony_ci    'TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256',
2342c593315Sopenharmony_ci    'TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384',
2352c593315Sopenharmony_ci    'TLS_DH_anon_WITH_ARIA_128_GCM_SHA256',
2362c593315Sopenharmony_ci    'TLS_DH_anon_WITH_ARIA_256_GCM_SHA384',
2372c593315Sopenharmony_ci    'TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256',
2382c593315Sopenharmony_ci    'TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384',
2392c593315Sopenharmony_ci    'TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256',
2402c593315Sopenharmony_ci    'TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384',
2412c593315Sopenharmony_ci    'TLS_PSK_WITH_ARIA_128_CBC_SHA256',
2422c593315Sopenharmony_ci    'TLS_PSK_WITH_ARIA_256_CBC_SHA384',
2432c593315Sopenharmony_ci    'TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256',
2442c593315Sopenharmony_ci    'TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384',
2452c593315Sopenharmony_ci    'TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256',
2462c593315Sopenharmony_ci    'TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384',
2472c593315Sopenharmony_ci    'TLS_PSK_WITH_ARIA_128_GCM_SHA256',
2482c593315Sopenharmony_ci    'TLS_PSK_WITH_ARIA_256_GCM_SHA384',
2492c593315Sopenharmony_ci    'TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256',
2502c593315Sopenharmony_ci    'TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384',
2512c593315Sopenharmony_ci    'TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256',
2522c593315Sopenharmony_ci    'TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384',
2532c593315Sopenharmony_ci    'TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256',
2542c593315Sopenharmony_ci    'TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384',
2552c593315Sopenharmony_ci    'TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256',
2562c593315Sopenharmony_ci    'TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384',
2572c593315Sopenharmony_ci    'TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256',
2582c593315Sopenharmony_ci    'TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384',
2592c593315Sopenharmony_ci    'TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256',
2602c593315Sopenharmony_ci    'TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384',
2612c593315Sopenharmony_ci    'TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256',
2622c593315Sopenharmony_ci    'TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384',
2632c593315Sopenharmony_ci    'TLS_DH_RSA_WITH_CAMELLIA_128_GCM_SHA256',
2642c593315Sopenharmony_ci    'TLS_DH_RSA_WITH_CAMELLIA_256_GCM_SHA384',
2652c593315Sopenharmony_ci    'TLS_DH_DSS_WITH_CAMELLIA_128_GCM_SHA256',
2662c593315Sopenharmony_ci    'TLS_DH_DSS_WITH_CAMELLIA_256_GCM_SHA384',
2672c593315Sopenharmony_ci    'TLS_DH_anon_WITH_CAMELLIA_128_GCM_SHA256',
2682c593315Sopenharmony_ci    'TLS_DH_anon_WITH_CAMELLIA_256_GCM_SHA384',
2692c593315Sopenharmony_ci    'TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256',
2702c593315Sopenharmony_ci    'TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384',
2712c593315Sopenharmony_ci    'TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256',
2722c593315Sopenharmony_ci    'TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384',
2732c593315Sopenharmony_ci    'TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256',
2742c593315Sopenharmony_ci    'TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384',
2752c593315Sopenharmony_ci    'TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256',
2762c593315Sopenharmony_ci    'TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384',
2772c593315Sopenharmony_ci    'TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256',
2782c593315Sopenharmony_ci    'TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384',
2792c593315Sopenharmony_ci    'TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256',
2802c593315Sopenharmony_ci    'TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384',
2812c593315Sopenharmony_ci    'TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256',
2822c593315Sopenharmony_ci    'TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384',
2832c593315Sopenharmony_ci    'TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256',
2842c593315Sopenharmony_ci    'TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384',
2852c593315Sopenharmony_ci    'TLS_RSA_WITH_AES_128_CCM',
2862c593315Sopenharmony_ci    'TLS_RSA_WITH_AES_256_CCM',
2872c593315Sopenharmony_ci    'TLS_RSA_WITH_AES_128_CCM_8',
2882c593315Sopenharmony_ci    'TLS_RSA_WITH_AES_256_CCM_8',
2892c593315Sopenharmony_ci    'TLS_PSK_WITH_AES_128_CCM',
2902c593315Sopenharmony_ci    'TLS_PSK_WITH_AES_256_CCM',
2912c593315Sopenharmony_ci    'TLS_PSK_WITH_AES_128_CCM_8',
2922c593315Sopenharmony_ci    'TLS_PSK_WITH_AES_256_CCM_8',
2932c593315Sopenharmony_ci]
2942c593315Sopenharmony_ci
2952c593315Sopenharmony_ciciphers = []
2962c593315Sopenharmony_cifound = set()
2972c593315Sopenharmony_cifor hl, name, _, _, _ in csv.reader(sys.stdin):
2982c593315Sopenharmony_ci    if name not in blacklist:
2992c593315Sopenharmony_ci        continue
3002c593315Sopenharmony_ci
3012c593315Sopenharmony_ci    found.add(name)
3022c593315Sopenharmony_ci
3032c593315Sopenharmony_ci    high, low = hl.split(',')
3042c593315Sopenharmony_ci
3052c593315Sopenharmony_ci    id = high + low[2:] + 'u'
3062c593315Sopenharmony_ci    ciphers.append((id, name))
3072c593315Sopenharmony_ci
3082c593315Sopenharmony_ciprint('''\
3092c593315Sopenharmony_cienum {''')
3102c593315Sopenharmony_ci
3112c593315Sopenharmony_cifor id, name in ciphers:
3122c593315Sopenharmony_ci    print('{} = {},'.format(name, id))
3132c593315Sopenharmony_ci
3142c593315Sopenharmony_ciprint('''\
3152c593315Sopenharmony_ci};
3162c593315Sopenharmony_ci''')
3172c593315Sopenharmony_ci
3182c593315Sopenharmony_cifor id, name in ciphers:
3192c593315Sopenharmony_ci    print('''\
3202c593315Sopenharmony_cicase {}:'''.format(name))
3212c593315Sopenharmony_ci
3222c593315Sopenharmony_ciif len(found) != len(blacklist):
3232c593315Sopenharmony_ci    print('{} found out of {}; not all cipher was found: {}'.format(
3242c593315Sopenharmony_ci        len(found), len(blacklist),
3252c593315Sopenharmony_ci        found.symmetric_difference(blacklist)))
326