#
# Licensed Materials - Property of IBM Corp.
# IBM UrbanCode Build
# IBM UrbanCode Deploy
# IBM UrbanCode Release
# IBM AnthillPro
# (c) Copyright IBM Corporation 2015. All Rights Reserved.
#
# U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by
# GSA ADP Schedule Contract with IBM Corp.
#
# Suggested Cipher Suites:
#  {key-exchange}_{authentication}_WITH_{bulk-cipher}_{message-authentication-hash}
#
# Names taken from https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites
#  and http://www-01.ibm.com/support/knowledgecenter/SSYKE2_7.0.0/com.ibm.java.security.component.71.doc/security-component/jsse2Docs/ciphersuites.html?lang=en
#
# Suites with NULL, DES, RC4 bulk-ciphers are not cryptographically secure.
# Suites with MD5 authentication-hash are not cryptographically secure
# Suites with anon authentication are not cryptographically secure.
# Suites with PSK, SRP key-exchange are not suitable due to required client setup.
# Suites with KRB5 are disabled by default in jvm, not suitable due to required client setup.
#
# Modern TLS1.2 suites use PFS (perfect forward secrecy) key-exchange and AEAD (authenticated encryption) cipher.
#  PFS: ECDHE, DHE
#  AEAD: AES_*_GCM, ChaCha20-Poly1305
#
# We would prefer the following guidelines. JVM impl may differ in ordering, notably seems to penalize GCM:
#  ECDHE ephemeral key-exchange is preferred for perfect forward secrecy.
#  Elliptic Curve key-exchange is preferred over RSA for strength/efficiency.
#  AES is preferred over 3DESede (DES and RC4 are bad)
#  GCM is preferred over CBC due to its built-in authentication and parallelization friendly implementation
#  longer hashes are preferred
#
# AES256 and SHA384 require JCE to be installed
#
# Windows XP supports maximum of TLS 1.0 and only two secure ciphers, also an optional AES add-on.
#   https://msdn.microsoft.com/en-us/library/windows/desktop/aa380512(v=vs.85).aspx
#   TLS_RSA_WITH_3DES_EDE_CBC_SHA
#   TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA
#   kb/948963 can add optional AES_128/256_SHA ciphers

# signaling cipher suite for secure re-negotiation of TLS connections rfc5746
#EMPTY_RENEGOTIATION_INFO_SCSV

# PFS + AEAD
ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
ECDHE_RSA_WITH_AES_256_GCM_SHA384
ECDHE_RSA_WITH_AES_128_GCM_SHA256

# PFS + !AEAD
ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
ECDHE_ECDSA_WITH_AES_256_CBC_SHA
ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
ECDHE_ECDSA_WITH_AES_128_CBC_SHA
ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA
ECDHE_RSA_WITH_AES_256_CBC_SHA384
ECDHE_RSA_WITH_AES_256_CBC_SHA
ECDHE_RSA_WITH_AES_128_CBC_SHA256
ECDHE_RSA_WITH_AES_128_CBC_SHA
ECDHE_RSA_WITH_3DES_EDE_CBC_SHA

# !PFS + AEAD
ECDH_ECDSA_WITH_AES_256_GCM_SHA384
ECDH_ECDSA_WITH_AES_128_GCM_SHA256
ECDH_RSA_WITH_AES_256_GCM_SHA384
ECDH_RSA_WITH_AES_128_GCM_SHA256
RSA_WITH_AES_256_GCM_SHA384
RSA_WITH_AES_128_GCM_SHA256

# !PFS + !AEAD
ECDH_ECDSA_WITH_AES_256_CBC_SHA384
ECDH_ECDSA_WITH_AES_256_CBC_SHA
ECDH_ECDSA_WITH_AES_128_CBC_SHA256
ECDH_ECDSA_WITH_AES_128_CBC_SHA
ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA
ECDH_RSA_WITH_AES_256_CBC_SHA384
ECDH_RSA_WITH_AES_256_CBC_SHA
ECDH_RSA_WITH_AES_128_CBC_SHA256
ECDH_RSA_WITH_AES_128_CBC_SHA
ECDH_RSA_WITH_3DES_EDE_CBC_SHA
RSA_WITH_CAMELLIA_256_CBC_SHA256
RSA_WITH_CAMELLIA_256_CBC_SHA
RSA_WITH_CAMELLIA_128_CBC_SHA256
RSA_WITH_CAMELLIA_128_CBC_SHA
RSA_WITH_AES_256_CBC_SHA256
RSA_WITH_AES_128_CBC_SHA256
RSA_FIPS_WITH_3DES_EDE_CBC_SHA

# only remaining suites that work in all protocol levels (including sslv3, if user have enabled that)
RSA_WITH_AES_256_CBC_SHA
RSA_WITH_AES_128_CBC_SHA
RSA_WITH_3DES_EDE_CBC_SHA
