Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/maven.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ jobs:
# windows-latest is not used due to intermittent network failures
os: [ubuntu-latest, macos-latest]
# All LTS versions plus the current version
java: [ 11, 17, 21 ]
java: [ 11, 17, 21, 25 ]
include:
- java: 8
os: ubuntu-latest
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,70 +29,28 @@

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
import org.junit.jupiter.params.provider.ValueSource;

/**
* Unit tests for {@link TlsCiphers}.
*/
class TestTlsCiphers {

@Test
void testStrongCipherSuites() {
final String[] strongCipherSuites = {
"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384",
"TLS_RSA_WITH_AES_256_CBC_SHA256",
"TLS_DHE_RSA_WITH_AES_256_CBC_SHA256",
"TLS_RSA_WITH_AES_128_CBC_SHA",
"TLS_DHE_DSS_WITH_AES_128_CBC_SHA",
"TLS_RSA_WITH_AES_256_GCM_SHA384"
};
for (final String cipherSuite : strongCipherSuites) {
Assertions.assertFalse(TlsCiphers.isWeak(cipherSuite));
}
}

@Test
void testWeakCiphersDisabledByDefault() {
final String[] weakCiphersSuites = {
"SSL_RSA_WITH_RC4_128_SHA",
"SSL_RSA_WITH_3DES_EDE_CBC_SHA",
"TLS_DH_anon_WITH_AES_128_CBC_SHA",
"SSL_RSA_EXPORT_WITH_DES40_CBC_SHA",
"SSL_RSA_WITH_NULL_SHA",
"SSL_RSA_WITH_3DES_EDE_CBC_SHA",
"TLS_ECDHE_ECDSA_WITH_RC4_128_SHA",
"TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA",
"TLS_DH_anon_WITH_AES_256_GCM_SHA384",
"TLS_ECDH_anon_WITH_AES_256_CBC_SHA",
"TLS_RSA_WITH_NULL_SHA256",
"SSL_RSA_EXPORT_WITH_RC4_40_MD5",
"SSL_DH_anon_EXPORT_WITH_RC4_40_MD5",
"TLS_KRB5_EXPORT_WITH_RC4_40_SHA",
"SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5"
};
for (final String cipherSuite : weakCiphersSuites) {
Assertions.assertTrue(TlsCiphers.isWeak(cipherSuite));
}
static String[] testExcludeH2Blacklisted() {
final String[] mixCipherSuites = {
"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384",
"TLS_RSA_WITH_AES_256_CBC_SHA256",
"AES_SHA_US",
"TLS_RSA_WITH_AES_128_CBC_SHA",
"NULL_SHA",
"TLS_RSA_WITH_AES_256_GCM_SHA384"
};
return TlsCiphers.excludeH2Blacklisted(mixCipherSuites);
}

@Test
void excludeH2Blacklisted () {
final String[] mixCipherSuites = {
"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384",
"TLS_RSA_WITH_AES_256_CBC_SHA256",
"AES_SHA_US",
"TLS_RSA_WITH_AES_128_CBC_SHA",
"NULL_SHA",
"TLS_RSA_WITH_AES_256_GCM_SHA384"
};

final String[] strongCipherSuites = TlsCiphers.excludeH2Blacklisted(mixCipherSuites);
for (final String cipherSuite : strongCipherSuites) {
Assertions.assertFalse(TlsCiphers.isWeak(cipherSuite));
}
}

@Test
void excludeWeak () {
static String[] testExcludeWeak() {
final String[] weakCiphersSuites = {
"SSL_RSA_WITH_RC4_128_SHA",
"SSL_RSA_WITH_3DES_EDE_CBC_SHA",
Expand All @@ -116,16 +74,59 @@ void excludeWeak () {
"TLS_DHE_DSS_WITH_AES_128_CBC_SHA",
"TLS_RSA_WITH_AES_256_GCM_SHA384"
};
return TlsCiphers.excludeWeak(weakCiphersSuites);
}

@ParameterizedTest
@MethodSource
void testExcludeH2Blacklisted(final String strongCipherSuite) {
Assertions.assertFalse(TlsCiphers.isWeak(strongCipherSuite));
}

final String[] strongCipherSuites = TlsCiphers.excludeWeak(weakCiphersSuites);
for (final String cipherSuite : strongCipherSuites) {
Assertions.assertFalse(TlsCiphers.isWeak(cipherSuite));
}
@ParameterizedTest
@MethodSource
void testExcludeWeak(final String strongCipherSuite) {
Assertions.assertFalse(TlsCiphers.isWeak(strongCipherSuite));
}

@Test
void excludeWeakNull() {
void testExcludeWeakNull() {
Assertions.assertNull(TlsCiphers.excludeWeak((String[]) null));
}

@ParameterizedTest
@ValueSource(strings = {
"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384",
"TLS_RSA_WITH_AES_256_CBC_SHA256",
"TLS_DHE_RSA_WITH_AES_256_CBC_SHA256",
"TLS_RSA_WITH_AES_128_CBC_SHA",
"TLS_DHE_DSS_WITH_AES_128_CBC_SHA",
"TLS_RSA_WITH_AES_256_GCM_SHA384"
})
void testStrongCipherSuites(final String strongCipherSuite) {
Assertions.assertFalse(TlsCiphers.isWeak(strongCipherSuite));
}

@ParameterizedTest
@ValueSource(strings = {
"SSL_RSA_WITH_RC4_128_SHA",
"SSL_RSA_WITH_3DES_EDE_CBC_SHA",
"TLS_DH_anon_WITH_AES_128_CBC_SHA",
"SSL_RSA_EXPORT_WITH_DES40_CBC_SHA",
"SSL_RSA_WITH_NULL_SHA",
"SSL_RSA_WITH_3DES_EDE_CBC_SHA",
"TLS_ECDHE_ECDSA_WITH_RC4_128_SHA",
"TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA",
"TLS_DH_anon_WITH_AES_256_GCM_SHA384",
"TLS_ECDH_anon_WITH_AES_256_CBC_SHA",
"TLS_RSA_WITH_NULL_SHA256",
"SSL_RSA_EXPORT_WITH_RC4_40_MD5",
"SSL_DH_anon_EXPORT_WITH_RC4_40_MD5",
"TLS_KRB5_EXPORT_WITH_RC4_40_SHA",
"SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5"
})
void testWeakCiphersDisabledByDefault(final String weakCiphersSuite) {
Assertions.assertTrue(TlsCiphers.isWeak(weakCiphersSuite));
}

}
Loading