5.8 KiB
Conscrypt's Capabilities
Conscrypt is relatively selective in choosing the set of primitives to provide, focusing on the most important and widely-used algorithms. Following is a list of JCA algorithm names and other identifiers that are supported by Conscrypt.
TLS
Protocol Versions
SSLv3(ignored)TLSv1TLSv1.1TLSv1.2TLSv1.3
Conscrypt supports TLS v1.0-1.3. For backwards compatibility it will accept
SSLv3 in calls to methods like
setEnabledProtocols()
but will ignore it.
SSLContext
DefaultSSLTLSTLSv1TLSv1.1TLSv1.2TLSv1.3
Conscrypt provides the above set of SSLContext algorithm names for JSSE
purposes, including the special value Default, which is used to determine the
value of
SSLContext.getDefault().
The Default, SSL, TLS, and TLSv1.3 values return a context where TLS
v1.0-1.3 are all enabled; the others return a context with TLS v1.0-1.2 enabled.
Cipher Suites
Enabled
- TLS 1.0-1.2
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHATLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHATLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256TLS_ECDHE_RSA_WITH_AES_128_CBC_SHATLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_RSA_WITH_AES_256_CBC_SHATLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256TLS_RSA_WITH_AES_128_CBC_SHATLS_RSA_WITH_AES_128_GCM_SHA256TLS_RSA_WITH_AES_256_CBC_SHATLS_RSA_WITH_AES_256_GCM_SHA384
- TLS 1.3
TLS_AES_128_GCM_SHA256TLS_AES_256_GCM_SHA384TLS_CHACHA20_POLY1305_SHA256
The above cipher suites are enabled by default when the associated version of
the protocol is enabled. The TLS 1.3 cipher suites cannot be customized; they
are always enabled when TLS 1.3 is enabled, and any attempt to disable them via
a call to
setEnabledCipherSuites()
is ignored.
Supported But Not Enabled
- TLS 1.0-1.2
SSL_RSA_WITH_3DES_EDE_CBC_SHATLS_ECDHE_PSK_WITH_AES_128_CBC_SHATLS_ECDHE_PSK_WITH_AES_256_CBC_SHATLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256TLS_PSK_WITH_AES_128_CBC_SHATLS_PSK_WITH_AES_256_CBC_SHA
The above cipher suites are supported, but not enabled by default. TLS 1.3 cipher suites cannot be customized, so there are no cipher suites that are supported but not enabled.
Cryptography
Cipher
AES/CBC/NoPaddingAES/CBC/PKCS5PaddingAES/CTR/NoPaddingAES/ECB/NoPaddingAES/ECB/PKCS5PaddingAES/GCM-SIV/NoPadding
AES with 128, 192, or 256-bit keys.
AES/GCM/NoPadding
AES/GCM with 128 or 256-bit keys.
AES_128/CBC/NoPaddingAES_128/CBC/PKCS5PaddingAES_128/ECB/NoPaddingAES_128/ECB/PKCS5PaddingAES_128/GCM/NoPaddingAES_128/GCM-SIV/NoPaddingAES_256/CBC/NoPaddingAES_256/CBC/PKCS5PaddingAES_256/ECB/NoPaddingAES_256/ECB/PKCS5PaddingAES_256/GCM/NoPaddingAES_256/GCM-SIV/NoPadding
Key-restricted versions of the AES ciphers.
ARC4
The RC4 stream cipher.
ChaCha20/NONE/NoPaddingChaCha20/Poly1305/NoPadding
ChaCha with 20 rounds, 96-bit nonce, and 32-bit counter as described in RFC 7539, either with or without a Poly1305 AEAD authenticator.
DESEDE/CBC/NoPaddingDESEDE/CBC/PKCS5Padding
Triple DES with either two or three intermediate keys.
RSA/ECB/NoPaddingRSA/ECB/OAEPPaddingRSA/ECB/OAEPWithSHA-1AndMGF1PaddingRSA/ECB/OAEPWithSHA-224AndMGF1PaddingRSA/ECB/OAEPWithSHA-256AndMGF1PaddingRSA/ECB/OAEPWithSHA-384AndMGF1PaddingRSA/ECB/OAEPWithSHA-512AndMGF1PaddingRSA/ECB/PKCS1Padding
Conscrypt's OAEP ciphers (eg, RSA/ECB/OAEPWithSHA-256AndMGF1Padding) use the named digest for
both the main digest and the MGF1 digest. This differs from the behavior of some other
providers, including the ones bundled with OpenJDK, which always use SHA-1 for the MGF1 digest.
For maximum compatibility, you should use RSA/ECB/OAEPPadding and initialize it with an
OAEPParameterSpec.
AlgorithmParameters
AESChaCha20DESEDEECGCMOAEPPSS
Conscrypt's EC AlgorithmParameters implementation only supports named curves.
CertificateFactory
X509
KeyAgreement
ECDH
KeyFactory
ECRSA
KeyGenerator
AESARC4ChaCha20DESEDEHmacMD5HmacSHA1HmacSHA224HmacSHA256HmacSHA384HmacSHA512
KeyPairGenerator
ECRSA
Mac
HmacMD5HmacSHA1HmacSHA224HmacSHA256HmacSHA384HmacSHA512
MessageDigest
MD5SHA-1SHA-224SHA-256SHA-384SHA-512
SecretKeyFactory
DESEDE
SecureRandom
SHA1PRNG
Signature
MD5withRSANONEwithECDSANONEwithRSASHA1withRSASHA1withECDSASHA1withRSA/PSSSHA224withRSASHA224withECDSASHA224withRSA/PSSSHA256withRSASHA256withECDSASHA256withRSA/PSSSHA384withRSASHA384withECDSASHA384withRSA/PSSSHA512withRSASHA512withECDSASHA512withRSA/PSS
Elliptic Curves
Conscrypt supports the following curves in EC crypto operations (such as ECDSA signatures) and TLS:
| Curve | EC Crypto | TLS |
|---|---|---|
| secp224r1 | X | |
| prime256v1 (aka secp256r1) |
X | X |
| secp384r1 | X | X |
| secp521r1 | X | |
| x25519 | X |