diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 00000000..70775b09
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,13 @@
+# Changelog
+
+## [3.2.0](https://github.com/aklivity/k3po/tree/3.2.0) (2024-06-10)
+
+[Full Changelog](https://github.com/aklivity/k3po/compare/284507aec12987508378f7fb470ccc88754e17f1...3.2.0)
+
+**Merged pull requests:**
+
+- Initial tidy [\#4](https://github.com/aklivity/k3po/pull/4) ([jfallows](https://github.com/jfallows))
+
+
+
+\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*
diff --git a/pom.xml b/pom.xml
index b1cfdd47..5a1c00d7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
4.0.0
io.aklivity.k3po
k3po
- 3.2.0
+ 3.3.0
pom
k3po
https://github.com/aklivity/k3po
@@ -115,12 +115,12 @@
com.fasterxml.jackson.core
jackson-databind
- 2.9.10.6
+ 2.12.7.1
org.apache.maven
maven-compat
- 3.5.0
+ 3.8.1
provided
diff --git a/runtime/control-junit/pom.xml b/runtime/control-junit/pom.xml
index e3ecccc3..28bc421e 100644
--- a/runtime/control-junit/pom.xml
+++ b/runtime/control-junit/pom.xml
@@ -7,7 +7,7 @@
io.aklivity.k3po
runtime
- 3.2.0
+ 3.3.0
../pom.xml
diff --git a/runtime/control/pom.xml b/runtime/control/pom.xml
index 8c7b841c..ebfa8236 100644
--- a/runtime/control/pom.xml
+++ b/runtime/control/pom.xml
@@ -7,7 +7,7 @@
io.aklivity.k3po
runtime
- 3.2.0
+ 3.3.0
../pom.xml
diff --git a/runtime/driver/pom.xml b/runtime/driver/pom.xml
index 3696e12c..67543abc 100644
--- a/runtime/driver/pom.xml
+++ b/runtime/driver/pom.xml
@@ -7,7 +7,7 @@
io.aklivity.k3po
runtime
- 3.2.0
+ 3.3.0
../pom.xml
diff --git a/runtime/driver/src/main/java/io/aklivity/k3po/runtime/driver/internal/ext/tls/TlsTypeSystem.java b/runtime/driver/src/main/java/io/aklivity/k3po/runtime/driver/internal/ext/tls/TlsTypeSystem.java
index 033bafbb..22b3ed4d 100644
--- a/runtime/driver/src/main/java/io/aklivity/k3po/runtime/driver/internal/ext/tls/TlsTypeSystem.java
+++ b/runtime/driver/src/main/java/io/aklivity/k3po/runtime/driver/internal/ext/tls/TlsTypeSystem.java
@@ -36,6 +36,7 @@ public final class TlsTypeSystem implements TypeSystemSpi
public static final TypeInfo OPTION_APPLICATION_PROTOCOLS = new TypeInfo<>("applicationProtocols", String.class);
public static final TypeInfo OPTION_NEED_CLIENT_AUTH = new TypeInfo<>("needClientAuth", Boolean.class);
public static final TypeInfo OPTION_WANT_CLIENT_AUTH = new TypeInfo<>("wantClientAuth", Boolean.class);
+ public static final TypeInfo OPTION_CIPHER_SUITES = new TypeInfo<>("cipherSuites", String.class);
private final Set> acceptOptions;
private final Set> connectOptions;
@@ -57,6 +58,7 @@ public TlsTypeSystem()
acceptOptions.add(OPTION_APPLICATION_PROTOCOLS);
acceptOptions.add(OPTION_NEED_CLIENT_AUTH);
acceptOptions.add(OPTION_WANT_CLIENT_AUTH);
+ acceptOptions.add(OPTION_CIPHER_SUITES);
this.acceptOptions = unmodifiableSet(acceptOptions);
Set> connectOptions = new LinkedHashSet<>();
@@ -66,6 +68,7 @@ public TlsTypeSystem()
connectOptions.add(OPTION_TRUST_STORE_FILE);
connectOptions.add(OPTION_TRUST_STORE_PASSWORD);
connectOptions.add(OPTION_APPLICATION_PROTOCOLS);
+ connectOptions.add(OPTION_CIPHER_SUITES);
this.connectOptions = unmodifiableSet(connectOptions);
this.readOptions = emptySet();
diff --git a/runtime/driver/src/main/java/io/aklivity/k3po/runtime/driver/internal/ext/tls/bootstrap/DefaultTlsChannelConfig.java b/runtime/driver/src/main/java/io/aklivity/k3po/runtime/driver/internal/ext/tls/bootstrap/DefaultTlsChannelConfig.java
index 902a2952..a9f1ceb1 100644
--- a/runtime/driver/src/main/java/io/aklivity/k3po/runtime/driver/internal/ext/tls/bootstrap/DefaultTlsChannelConfig.java
+++ b/runtime/driver/src/main/java/io/aklivity/k3po/runtime/driver/internal/ext/tls/bootstrap/DefaultTlsChannelConfig.java
@@ -29,6 +29,7 @@ public class DefaultTlsChannelConfig extends DefaultChannelConfig implements Tls
private File trustStoreFile;
private char[] trustStorePassword;
private String[] applicationProtocols;
+ private String[] cipherSuites;
@Override
public void setParameters(SSLParameters parameters) {
@@ -105,6 +106,19 @@ public void setApplicationProtocols(
this.applicationProtocols = applicationProtocol;
}
+ @Override
+ public String[] getCipherSuites()
+ {
+ return cipherSuites;
+ }
+
+ @Override
+ public void setCipherSuites(
+ String[] cipherSuites)
+ {
+ this.cipherSuites = cipherSuites;
+ }
+
@Override
protected boolean setOption0(
String key,
@@ -130,6 +144,10 @@ else if ("applicationProtocols".equals(key))
{
applicationProtocols = ((String) value).split(",");
}
+ else if ("cipherSuites".equals(key))
+ {
+ cipherSuites = ((String) value).split(",");
+ }
else
{
return false;
diff --git a/runtime/driver/src/main/java/io/aklivity/k3po/runtime/driver/internal/ext/tls/bootstrap/DefaultTlsServerChannelConfig.java b/runtime/driver/src/main/java/io/aklivity/k3po/runtime/driver/internal/ext/tls/bootstrap/DefaultTlsServerChannelConfig.java
index eb6b9c34..686354bf 100644
--- a/runtime/driver/src/main/java/io/aklivity/k3po/runtime/driver/internal/ext/tls/bootstrap/DefaultTlsServerChannelConfig.java
+++ b/runtime/driver/src/main/java/io/aklivity/k3po/runtime/driver/internal/ext/tls/bootstrap/DefaultTlsServerChannelConfig.java
@@ -31,6 +31,7 @@ public class DefaultTlsServerChannelConfig extends DefaultServerChannelConfig im
private String[] applicationProtocols;
private boolean needClientAuth;
private boolean wantClientAuth;
+ private String[] cipherSuites;
@Override
public void setParameters(SSLParameters parameters) {
@@ -107,6 +108,19 @@ public void setApplicationProtocols(
this.applicationProtocols = applicationProtocol;
}
+ @Override
+ public String[] getCipherSuites()
+ {
+ return cipherSuites;
+ }
+
+ @Override
+ public void setCipherSuites(
+ String[] cipherSuites)
+ {
+ this.cipherSuites = cipherSuites;
+ }
+
@Override
protected boolean setOption0(
String key,
@@ -134,6 +148,9 @@ protected boolean setOption0(
case "wantClientAuth":
wantClientAuth = Boolean.valueOf((String) value);
break;
+ case "cipherSuites":
+ cipherSuites = ((String) value).split(",");
+ break;
default:
return false;
}
diff --git a/runtime/driver/src/main/java/io/aklivity/k3po/runtime/driver/internal/ext/tls/bootstrap/TlsChannelConfig.java b/runtime/driver/src/main/java/io/aklivity/k3po/runtime/driver/internal/ext/tls/bootstrap/TlsChannelConfig.java
index 28b64971..0c94c0eb 100644
--- a/runtime/driver/src/main/java/io/aklivity/k3po/runtime/driver/internal/ext/tls/bootstrap/TlsChannelConfig.java
+++ b/runtime/driver/src/main/java/io/aklivity/k3po/runtime/driver/internal/ext/tls/bootstrap/TlsChannelConfig.java
@@ -46,4 +46,8 @@ public interface TlsChannelConfig extends ChannelConfig {
void setApplicationProtocols(String[] applicationProtocol);
String[] getApplicationProtocols();
+
+ void setCipherSuites(String[] cipherSuites);
+
+ String[] getCipherSuites();
}
diff --git a/runtime/driver/src/main/java/io/aklivity/k3po/runtime/driver/internal/ext/tls/bootstrap/TlsClientChannelSink.java b/runtime/driver/src/main/java/io/aklivity/k3po/runtime/driver/internal/ext/tls/bootstrap/TlsClientChannelSink.java
index 52e69bdb..274cc57a 100644
--- a/runtime/driver/src/main/java/io/aklivity/k3po/runtime/driver/internal/ext/tls/bootstrap/TlsClientChannelSink.java
+++ b/runtime/driver/src/main/java/io/aklivity/k3po/runtime/driver/internal/ext/tls/bootstrap/TlsClientChannelSink.java
@@ -132,6 +132,7 @@ protected void connectRequested(ChannelPipeline pipeline, ChannelStateEvent evt)
char[] keyStorePassword = tlsConnectConfig.getKeyStorePassword();
char[] trustStorePassword = tlsConnectConfig.getTrustStorePassword();
String[] applicationProtocols = tlsConnectConfig.getApplicationProtocols();
+ String[] cipherSuites = tlsConnectConfig.getCipherSuites();
ChannelPipelineFactory pipelineFactory = new ChannelPipelineFactory() {
@Override
@@ -174,6 +175,9 @@ public ChannelPipeline getPipeline() throws Exception {
if (applicationProtocols != null && applicationProtocols.length > 0) {
setApplicationProtocols(tlsParameters, applicationProtocols);
}
+ if (cipherSuites != null && cipherSuites.length > 0) {
+ tlsParameters.setCipherSuites(cipherSuites);
+ }
tlsEngine.setSSLParameters(tlsParameters);
SslHandler sslHandler = new SslHandler(tlsEngine);
diff --git a/runtime/driver/src/main/java/io/aklivity/k3po/runtime/driver/internal/ext/tls/bootstrap/TlsServerChannelSink.java b/runtime/driver/src/main/java/io/aklivity/k3po/runtime/driver/internal/ext/tls/bootstrap/TlsServerChannelSink.java
index ceb972fe..9d04edeb 100644
--- a/runtime/driver/src/main/java/io/aklivity/k3po/runtime/driver/internal/ext/tls/bootstrap/TlsServerChannelSink.java
+++ b/runtime/driver/src/main/java/io/aklivity/k3po/runtime/driver/internal/ext/tls/bootstrap/TlsServerChannelSink.java
@@ -101,6 +101,7 @@ protected void bindRequested(ChannelPipeline pipeline, ChannelStateEvent evt) th
String[] applicationProtocols = tlsConnectConfig.getApplicationProtocols();
boolean wantClientAuth = tlsConnectConfig.getWantClientAuth();
boolean needClientAuth = tlsConnectConfig.getNeedClientAuth();
+ String[] cipherSuites = tlsConnectConfig.getCipherSuites();
ChannelPipelineFactory pipelineFactory = new ChannelPipelineFactory() {
@Override
@@ -148,6 +149,9 @@ public ChannelPipeline getPipeline() throws Exception {
if (applicationProtocols != null && applicationProtocols.length > 0) {
setApplicationProtocols(tlsParameters, applicationProtocols);
}
+ if (cipherSuites != null && cipherSuites.length > 0) {
+ tlsParameters.setCipherSuites(cipherSuites);
+ }
tlsEngine.setSSLParameters(tlsParameters);
SslHandler sslHandler = new SslHandler(tlsEngine);
diff --git a/runtime/k3po-maven-plugin/pom.xml b/runtime/k3po-maven-plugin/pom.xml
index cc15bf2e..76e9cfbd 100644
--- a/runtime/k3po-maven-plugin/pom.xml
+++ b/runtime/k3po-maven-plugin/pom.xml
@@ -7,7 +7,7 @@
io.aklivity.k3po
runtime
- 3.2.0
+ 3.3.0
../pom.xml
diff --git a/runtime/lang/pom.xml b/runtime/lang/pom.xml
index ab23b42e..9d8034e4 100644
--- a/runtime/lang/pom.xml
+++ b/runtime/lang/pom.xml
@@ -7,7 +7,7 @@
io.aklivity.k3po
runtime
- 3.2.0
+ 3.3.0
../pom.xml
diff --git a/runtime/pom.xml b/runtime/pom.xml
index e898116e..06ede064 100644
--- a/runtime/pom.xml
+++ b/runtime/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.k3po
k3po
- 3.2.0
+ 3.3.0
../pom.xml
diff --git a/specs/control.spec/pom.xml b/specs/control.spec/pom.xml
index 3aa97e57..2b3799cc 100644
--- a/specs/control.spec/pom.xml
+++ b/specs/control.spec/pom.xml
@@ -7,7 +7,7 @@
io.aklivity.k3po
specs
- 3.2.0
+ 3.3.0
../pom.xml
diff --git a/specs/pom.xml b/specs/pom.xml
index a556c934..1bf7f4ce 100644
--- a/specs/pom.xml
+++ b/specs/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.k3po
k3po
- 3.2.0
+ 3.3.0
../pom.xml