mirror of
https://github.com/vanitasvitae/Smack.git
synced 2025-09-09 17:19:39 +02:00
[core] Rework TLS logic
This moves the logic in AbstractXMPPConnection.getSmackTlsContext() into the ConnectionConfiguration constructor. Also introduce SslContextFactory and use it in ConnectionConfiguration.
This commit is contained in:
parent
7156849c77
commit
f5448c5faa
14 changed files with 252 additions and 314 deletions
|
@ -84,9 +84,9 @@ public abstract class AbstractSmackIntTest {
|
|||
|
||||
protected HttpURLConnection getHttpUrlConnectionFor(URL url) throws IOException {
|
||||
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
|
||||
if (sinttestConfiguration.tlsContext != null && urlConnection instanceof HttpsURLConnection) {
|
||||
if (sinttestConfiguration.sslContextFactory != null && urlConnection instanceof HttpsURLConnection) {
|
||||
HttpsURLConnection httpsUrlConnection = (HttpsURLConnection) urlConnection;
|
||||
httpsUrlConnection.setSSLSocketFactory(sinttestConfiguration.tlsContext.getSocketFactory());
|
||||
httpsUrlConnection.setSSLSocketFactory(sinttestConfiguration.sslContextFactory.createSslContext().getSocketFactory());
|
||||
}
|
||||
return urlConnection;
|
||||
}
|
||||
|
|
|
@ -36,6 +36,7 @@ import org.jivesoftware.smack.debugger.ConsoleDebugger;
|
|||
import org.jivesoftware.smack.util.Function;
|
||||
import org.jivesoftware.smack.util.Objects;
|
||||
import org.jivesoftware.smack.util.ParserUtils;
|
||||
import org.jivesoftware.smack.util.SslContextFactory;
|
||||
import org.jivesoftware.smack.util.StringUtils;
|
||||
|
||||
import org.jivesoftware.smackx.debugger.EnhancedDebugger;
|
||||
|
@ -72,7 +73,7 @@ public final class Configuration {
|
|||
|
||||
public final String serviceTlsPin;
|
||||
|
||||
public final SSLContext tlsContext;
|
||||
public final SslContextFactory sslContextFactory;
|
||||
|
||||
public final SecurityMode securityMode;
|
||||
|
||||
|
@ -121,9 +122,10 @@ public final class Configuration {
|
|||
"'service' must be set. Either via 'properties' files or via system property 'sinttest.service'.");
|
||||
serviceTlsPin = builder.serviceTlsPin;
|
||||
if (serviceTlsPin != null) {
|
||||
tlsContext = Java7Pinning.forPin(serviceTlsPin);
|
||||
SSLContext sslContext = Java7Pinning.forPin(serviceTlsPin);
|
||||
sslContextFactory = () -> sslContext;
|
||||
} else {
|
||||
tlsContext = null;
|
||||
sslContextFactory = null;
|
||||
}
|
||||
securityMode = builder.securityMode;
|
||||
if (builder.replyTimeout > 0) {
|
||||
|
@ -168,8 +170,8 @@ public final class Configuration {
|
|||
this.testPackages = builder.testPackages;
|
||||
|
||||
this.configurationApplier = b -> {
|
||||
if (tlsContext != null) {
|
||||
b.setCustomSSLContext(tlsContext);
|
||||
if (sslContextFactory != null) {
|
||||
b.setSslContextFactory(sslContextFactory);
|
||||
}
|
||||
b.setSecurityMode(securityMode);
|
||||
b.setXmppDomain(service);
|
||||
|
|
|
@ -57,7 +57,9 @@ public class HttpFileUploadIntegrationTest extends AbstractSmackIntegrationTest
|
|||
+ " does not accept files of size " + FILE_SIZE
|
||||
+ ". It only accepts files with a maximum size of " + uploadService.getMaxFileSize());
|
||||
}
|
||||
hfumOne.setTlsContext(environment.configuration.tlsContext);
|
||||
if (environment.configuration.sslContextFactory != null) {
|
||||
hfumOne.setTlsContext(environment.configuration.sslContextFactory.createSslContext());
|
||||
}
|
||||
}
|
||||
|
||||
@SmackIntegrationTest
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue