Package io.netty.handler.ssl
Class SslUtils
- java.lang.Object
-
- io.netty.handler.ssl.SslUtils
-
final class SslUtils extends java.lang.ObjectConstants for SSL packets.
-
-
Field Summary
Fields Modifier and Type Field Description (package private) static java.lang.String[]DEFAULT_CIPHER_SUITES(package private) static java.lang.String[]DEFAULT_TLSV13_CIPHER_SUITES(package private) static shortDTLS_1_0(package private) static shortDTLS_1_2(package private) static shortDTLS_1_3(package private) static shortDTLS_RECORD_HEADER_LENGTH(package private) static intGMSSL_PROTOCOL_VERSIONGMSSL Protocol Version(package private) static java.lang.StringINVALID_CIPHERprivate static InternalLoggerlogger(package private) static intNOT_ENCRYPTEDdata is not encrypted(package private) static intNOT_ENOUGH_DATANot enough data in buffer to parse the record length(package private) static java.lang.StringPROBING_CERT(package private) static java.lang.StringPROBING_KEY(package private) static intSSL_CONTENT_TYPE_ALERTalert(package private) static intSSL_CONTENT_TYPE_APPLICATION_DATAapplication data(package private) static intSSL_CONTENT_TYPE_CHANGE_CIPHER_SPECchange cipher spec(package private) static intSSL_CONTENT_TYPE_EXTENSION_HEARTBEATHeartBeat Extension(package private) static intSSL_CONTENT_TYPE_HANDSHAKEhandshake(package private) static intSSL_RECORD_HEADER_LENGTHthe length of the ssl record header (in bytes)private static booleanTLSV1_3_JDK_DEFAULT_ENABLEDprivate static booleanTLSV1_3_JDK_SUPPORTED(package private) static java.lang.String[]TLSV13_CIPHER_SUITES(package private) static java.util.Set<java.lang.String>TLSV13_CIPHERS
-
Constructor Summary
Constructors Modifier Constructor Description privateSslUtils()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description (package private) static voidaddIfSupported(java.util.Set<java.lang.String> supported, java.util.List<java.lang.String> enabled, java.lang.String... names)Add elements fromnamesintoenabledif they are insupported.(package private) static booleanarrayContains(java.lang.String[] array, java.lang.String value)(package private) static intgetEncryptedPacketLength(ByteBuf buffer, int offset, boolean probeSSLv2)Return how much bytes can be read out of the encrypted data.private static intgetEncryptedPacketLength(java.nio.ByteBuffer buffer)(package private) static intgetEncryptedPacketLength(java.nio.ByteBuffer[] buffers, int offset)(package private) static javax.net.ssl.SSLContextgetSSLContext(java.security.Provider provider)(package private) static javax.net.ssl.SSLContextgetSSLContext(java.security.Provider provider, java.security.SecureRandom secureRandom)private static java.lang.StringgetTlsVersion()(package private) static voidhandleHandshakeFailure(ChannelHandlerContext ctx, java.lang.Throwable cause, boolean notify)(package private) static booleanisTLSv13Cipher(java.lang.String cipher)Returnstrueif the given cipher (in openssl format) is for TLSv1.3,falseotherwise.(package private) static booleanisTLSv13EnabledByJDK(java.security.Provider provider)Returnstrueif the JDK itself supports TLSv1.3 and enabled it by default,falseotherwise.private static booleanisTLSv13EnabledByJDK0(java.security.Provider provider)(package private) static booleanisTLSv13SupportedByJDK(java.security.Provider provider)Returnstrueif the JDK itself supports TLSv1.3,falseotherwise.private static booleanisTLSv13SupportedByJDK0(java.security.Provider provider)(package private) static booleanisValidHostNameForSNI(java.lang.String hostname)Validate that the given hostname can be used in SNI extension.private static javax.net.ssl.SSLContextnewInitContext(java.security.Provider provider)private static shortshortBE(ByteBuf buffer, int offset)private static shortshortBE(java.nio.ByteBuffer buffer, int offset)(package private) static ByteBuftoBase64(ByteBufAllocator allocator, ByteBuf src)Same asBase64.encode(ByteBuf, boolean)but allows the use of a customByteBufAllocator.(package private) static javax.net.ssl.SSLHandshakeExceptiontoSSLHandshakeException(java.lang.Throwable e)Converts the given exception to aSSLHandshakeException, if it isn't already.private static shortunsignedByte(byte b)private static intunsignedShortBE(ByteBuf buffer, int offset)private static intunsignedShortBE(java.nio.ByteBuffer buffer, int offset)(package private) static voiduseFallbackCiphersIfDefaultIsEmpty(java.util.List<java.lang.String> defaultCiphers, java.lang.Iterable<java.lang.String> fallbackCiphers)(package private) static voiduseFallbackCiphersIfDefaultIsEmpty(java.util.List<java.lang.String> defaultCiphers, java.lang.String... fallbackCiphers)(package private) static voidzeroout(ByteBuf buffer)Fills theByteBufwith zero bytes.(package private) static voidzerooutAndRelease(ByteBuf buffer)Fills theByteBufwith zero bytes and releases it.
-
-
-
Field Detail
-
logger
private static final InternalLogger logger
-
TLSV13_CIPHERS
static final java.util.Set<java.lang.String> TLSV13_CIPHERS
-
DTLS_1_0
static final short DTLS_1_0
- See Also:
- Constant Field Values
-
DTLS_1_2
static final short DTLS_1_2
- See Also:
- Constant Field Values
-
DTLS_1_3
static final short DTLS_1_3
- See Also:
- Constant Field Values
-
DTLS_RECORD_HEADER_LENGTH
static final short DTLS_RECORD_HEADER_LENGTH
- See Also:
- Constant Field Values
-
GMSSL_PROTOCOL_VERSION
static final int GMSSL_PROTOCOL_VERSION
GMSSL Protocol Version- See Also:
- Constant Field Values
-
INVALID_CIPHER
static final java.lang.String INVALID_CIPHER
- See Also:
- Constant Field Values
-
SSL_CONTENT_TYPE_CHANGE_CIPHER_SPEC
static final int SSL_CONTENT_TYPE_CHANGE_CIPHER_SPEC
change cipher spec- See Also:
- Constant Field Values
-
SSL_CONTENT_TYPE_ALERT
static final int SSL_CONTENT_TYPE_ALERT
alert- See Also:
- Constant Field Values
-
SSL_CONTENT_TYPE_HANDSHAKE
static final int SSL_CONTENT_TYPE_HANDSHAKE
handshake- See Also:
- Constant Field Values
-
SSL_CONTENT_TYPE_APPLICATION_DATA
static final int SSL_CONTENT_TYPE_APPLICATION_DATA
application data- See Also:
- Constant Field Values
-
SSL_CONTENT_TYPE_EXTENSION_HEARTBEAT
static final int SSL_CONTENT_TYPE_EXTENSION_HEARTBEAT
HeartBeat Extension- See Also:
- Constant Field Values
-
SSL_RECORD_HEADER_LENGTH
static final int SSL_RECORD_HEADER_LENGTH
the length of the ssl record header (in bytes)- See Also:
- Constant Field Values
-
NOT_ENOUGH_DATA
static final int NOT_ENOUGH_DATA
Not enough data in buffer to parse the record length- See Also:
- Constant Field Values
-
NOT_ENCRYPTED
static final int NOT_ENCRYPTED
data is not encrypted- See Also:
- Constant Field Values
-
DEFAULT_CIPHER_SUITES
static final java.lang.String[] DEFAULT_CIPHER_SUITES
-
DEFAULT_TLSV13_CIPHER_SUITES
static final java.lang.String[] DEFAULT_TLSV13_CIPHER_SUITES
-
TLSV13_CIPHER_SUITES
static final java.lang.String[] TLSV13_CIPHER_SUITES
-
PROBING_CERT
static final java.lang.String PROBING_CERT
- See Also:
- Constant Field Values
-
PROBING_KEY
static final java.lang.String PROBING_KEY
- See Also:
- Constant Field Values
-
TLSV1_3_JDK_SUPPORTED
private static final boolean TLSV1_3_JDK_SUPPORTED
-
TLSV1_3_JDK_DEFAULT_ENABLED
private static final boolean TLSV1_3_JDK_DEFAULT_ENABLED
-
-
Method Detail
-
isTLSv13SupportedByJDK
static boolean isTLSv13SupportedByJDK(java.security.Provider provider)
Returnstrueif the JDK itself supports TLSv1.3,falseotherwise.
-
isTLSv13SupportedByJDK0
private static boolean isTLSv13SupportedByJDK0(java.security.Provider provider)
-
isTLSv13EnabledByJDK
static boolean isTLSv13EnabledByJDK(java.security.Provider provider)
Returnstrueif the JDK itself supports TLSv1.3 and enabled it by default,falseotherwise.
-
isTLSv13EnabledByJDK0
private static boolean isTLSv13EnabledByJDK0(java.security.Provider provider)
-
newInitContext
private static javax.net.ssl.SSLContext newInitContext(java.security.Provider provider) throws java.security.NoSuchAlgorithmException, java.security.KeyManagementException- Throws:
java.security.NoSuchAlgorithmExceptionjava.security.KeyManagementException
-
getSSLContext
static javax.net.ssl.SSLContext getSSLContext(java.security.Provider provider) throws java.security.NoSuchAlgorithmException, java.security.KeyManagementException, java.security.NoSuchProviderException- Throws:
java.security.NoSuchAlgorithmExceptionjava.security.KeyManagementExceptionjava.security.NoSuchProviderException
-
getSSLContext
static javax.net.ssl.SSLContext getSSLContext(java.security.Provider provider, java.security.SecureRandom secureRandom) throws java.security.NoSuchAlgorithmException, java.security.KeyManagementException, java.security.NoSuchProviderException- Throws:
java.security.NoSuchAlgorithmExceptionjava.security.KeyManagementExceptionjava.security.NoSuchProviderException
-
getTlsVersion
private static java.lang.String getTlsVersion()
-
arrayContains
static boolean arrayContains(java.lang.String[] array, java.lang.String value)
-
addIfSupported
static void addIfSupported(java.util.Set<java.lang.String> supported, java.util.List<java.lang.String> enabled, java.lang.String... names)Add elements fromnamesintoenabledif they are insupported.
-
useFallbackCiphersIfDefaultIsEmpty
static void useFallbackCiphersIfDefaultIsEmpty(java.util.List<java.lang.String> defaultCiphers, java.lang.Iterable<java.lang.String> fallbackCiphers)
-
useFallbackCiphersIfDefaultIsEmpty
static void useFallbackCiphersIfDefaultIsEmpty(java.util.List<java.lang.String> defaultCiphers, java.lang.String... fallbackCiphers)
-
toSSLHandshakeException
static javax.net.ssl.SSLHandshakeException toSSLHandshakeException(java.lang.Throwable e)
Converts the given exception to aSSLHandshakeException, if it isn't already.
-
getEncryptedPacketLength
static int getEncryptedPacketLength(ByteBuf buffer, int offset, boolean probeSSLv2)
Return how much bytes can be read out of the encrypted data. Be aware that this method will not increase the readerIndex of the givenByteBuf.- Parameters:
buffer- TheByteBufto read from.offset- The offset to start from.probeSSLv2-trueif the inputbuffermight be SSLv2.- Returns:
- The length of the encrypted packet that is included in the buffer or
{@link #SslUtils#NOT_ENOUGH_DATA} if not enough data is present in the
ByteBuf. This will returnNOT_ENCRYPTEDif the givenByteBufis not encrypted at all.
-
unsignedShortBE
private static int unsignedShortBE(ByteBuf buffer, int offset)
-
shortBE
private static short shortBE(ByteBuf buffer, int offset)
-
unsignedByte
private static short unsignedByte(byte b)
-
unsignedShortBE
private static int unsignedShortBE(java.nio.ByteBuffer buffer, int offset)
-
shortBE
private static short shortBE(java.nio.ByteBuffer buffer, int offset)
-
getEncryptedPacketLength
static int getEncryptedPacketLength(java.nio.ByteBuffer[] buffers, int offset)
-
getEncryptedPacketLength
private static int getEncryptedPacketLength(java.nio.ByteBuffer buffer)
-
handleHandshakeFailure
static void handleHandshakeFailure(ChannelHandlerContext ctx, java.lang.Throwable cause, boolean notify)
-
zerooutAndRelease
static void zerooutAndRelease(ByteBuf buffer)
Fills theByteBufwith zero bytes and releases it.
-
toBase64
static ByteBuf toBase64(ByteBufAllocator allocator, ByteBuf src)
Same asBase64.encode(ByteBuf, boolean)but allows the use of a customByteBufAllocator.- See Also:
Base64.encode(ByteBuf, boolean)
-
isValidHostNameForSNI
static boolean isValidHostNameForSNI(java.lang.String hostname)
Validate that the given hostname can be used in SNI extension.
-
isTLSv13Cipher
static boolean isTLSv13Cipher(java.lang.String cipher)
Returnstrueif the given cipher (in openssl format) is for TLSv1.3,falseotherwise.
-
-