Skip to content
Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ protected void setupResources() throws Exception {
java.util.List.of(MediaType.APPLICATION_JSON, MediaType.valueOf("application/x-ndjson")));

RestClient.Builder restClientBuilder = RestClient.builder()
.messageConverters(converters -> converters.addFirst(ndjsonConverter));
.messageConverters(converters -> converters.add(0, ndjsonConverter));

OpenAiImageApi imageApi = OpenAiImageApi.builder()
.baseUrl(OLLAMA.baseUrl())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package org.apache.camel.support.jsse;

import java.io.IOException;
import java.lang.reflect.Method;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
Expand Down Expand Up @@ -96,6 +97,72 @@ public abstract class BaseSSLContextParameters extends JsseParameters {
private static final String SSL_SERVER_SOCKET_SIGNATURE_SCHEME_LOG_MSG
= createSignatureSchemeLogMessage("SSLServerSocket");

// Reflection handles for JDK 19/20 SSLParameters methods (not available on JDK 17)
private static final Method GET_NAMED_GROUPS;
private static final Method SET_NAMED_GROUPS;
private static final Method GET_SIGNATURE_SCHEMES;
private static final Method SET_SIGNATURE_SCHEMES;

static {
Method gng = null, sng = null, gss = null, sss = null;
try {
gng = SSLParameters.class.getMethod("getNamedGroups");
sng = SSLParameters.class.getMethod("setNamedGroups", String[].class);
gss = SSLParameters.class.getMethod("getSignatureSchemes");
sss = SSLParameters.class.getMethod("setSignatureSchemes", String[].class);
} catch (NoSuchMethodException e) {
// JDK < 19/20 — these methods don't exist, features will be silently skipped
}
GET_NAMED_GROUPS = gng;
SET_NAMED_GROUPS = sng;
GET_SIGNATURE_SCHEMES = gss;
SET_SIGNATURE_SCHEMES = sss;
}

static String[] getNamedGroupsFromParams(SSLParameters params) {
if (GET_NAMED_GROUPS == null) {
return null;
}
try {
return (String[]) GET_NAMED_GROUPS.invoke(params);
} catch (Exception e) {
return null;
}
}

private static void setNamedGroupsOnParams(SSLParameters params, String[] namedGroups) {
if (SET_NAMED_GROUPS == null) {
return;
}
try {
SET_NAMED_GROUPS.invoke(params, (Object) namedGroups);
} catch (Exception e) {
// ignore
}
}

private static String[] getSignatureSchemesFromParams(SSLParameters params) {
if (GET_SIGNATURE_SCHEMES == null) {
return null;
}
try {
return (String[]) GET_SIGNATURE_SCHEMES.invoke(params);
} catch (Exception e) {
return null;
}
}

private static void setSignatureSchemesOnParams(SSLParameters params, String[] signatureSchemes) {
if (SET_SIGNATURE_SCHEMES == null) {
return;
}
try {
SET_SIGNATURE_SCHEMES.invoke(params, (Object) signatureSchemes);
} catch (Exception e) {
// ignore
}
}

/**
* The optional explicitly configured cipher suites for this configuration.
*/
Expand Down Expand Up @@ -536,36 +603,36 @@ public SSLEngine configure(SSLEngine engine) {
filteredSecureSocketProtocols.toArray(new String[0]));

String[] namedGroups = resolveNamedGroups(
engine.getSSLParameters().getNamedGroups(),
getNamedGroupsFromParams(engine.getSSLParameters()),
enabledNamedGroups, enabledNamedGroupsPatterns);
if (namedGroups != null) {
if (LOG.isDebugEnabled()) {
LOG.debug(SSL_ENGINE_NAMED_GROUP_LOG_MSG,
engine,
enabledNamedGroups,
enabledNamedGroupsPatterns,
engine.getSSLParameters().getNamedGroups(),
getNamedGroupsFromParams(engine.getSSLParameters()),
namedGroups);
}
SSLParameters params = engine.getSSLParameters();
params.setNamedGroups(namedGroups);
setNamedGroupsOnParams(params, namedGroups);
engine.setSSLParameters(params);
}

String[] signatureSchemes = resolveSignatureSchemes(
engine.getSSLParameters().getSignatureSchemes(),
getSignatureSchemesFromParams(engine.getSSLParameters()),
enabledSignatureSchemes, enabledSignatureSchemesPatterns);
if (signatureSchemes != null) {
if (LOG.isDebugEnabled()) {
LOG.debug(SSL_ENGINE_SIGNATURE_SCHEME_LOG_MSG,
engine,
enabledSignatureSchemes,
enabledSignatureSchemesPatterns,
engine.getSSLParameters().getSignatureSchemes(),
getSignatureSchemesFromParams(engine.getSSLParameters()),
signatureSchemes);
}
SSLParameters params = engine.getSSLParameters();
params.setSignatureSchemes(signatureSchemes);
setSignatureSchemesOnParams(params, signatureSchemes);
engine.setSSLParameters(params);
}

Expand Down Expand Up @@ -762,36 +829,36 @@ public SSLSocket configure(SSLSocket socket) {
filteredSecureSocketProtocols.toArray(new String[0]));

String[] namedGroups = resolveNamedGroups(
socket.getSSLParameters().getNamedGroups(),
getNamedGroupsFromParams(socket.getSSLParameters()),
enabledNamedGroups, enabledNamedGroupsPatterns);
if (namedGroups != null) {
if (LOG.isDebugEnabled()) {
LOG.debug(SSL_SOCKET_NAMED_GROUP_LOG_MSG,
socket,
enabledNamedGroups,
enabledNamedGroupsPatterns,
socket.getSSLParameters().getNamedGroups(),
getNamedGroupsFromParams(socket.getSSLParameters()),
namedGroups);
}
SSLParameters params = socket.getSSLParameters();
params.setNamedGroups(namedGroups);
setNamedGroupsOnParams(params, namedGroups);
socket.setSSLParameters(params);
}

String[] signatureSchemes = resolveSignatureSchemes(
socket.getSSLParameters().getSignatureSchemes(),
getSignatureSchemesFromParams(socket.getSSLParameters()),
enabledSignatureSchemes, enabledSignatureSchemesPatterns);
if (signatureSchemes != null) {
if (LOG.isDebugEnabled()) {
LOG.debug(SSL_SOCKET_SIGNATURE_SCHEME_LOG_MSG,
socket,
enabledSignatureSchemes,
enabledSignatureSchemesPatterns,
socket.getSSLParameters().getSignatureSchemes(),
getSignatureSchemesFromParams(socket.getSSLParameters()),
signatureSchemes);
}
SSLParameters params = socket.getSSLParameters();
params.setSignatureSchemes(signatureSchemes);
setSignatureSchemesOnParams(params, signatureSchemes);
socket.setSSLParameters(params);
}

Expand Down Expand Up @@ -913,36 +980,36 @@ public SSLServerSocket configure(SSLServerSocket socket) {
filteredSecureSocketProtocols.toArray(new String[0]));

String[] namedGroups = resolveNamedGroups(
socket.getSSLParameters().getNamedGroups(),
getNamedGroupsFromParams(socket.getSSLParameters()),
enabledNamedGroups, enabledNamedGroupsPatterns);
if (namedGroups != null) {
if (LOG.isDebugEnabled()) {
LOG.debug(SSL_SERVER_SOCKET_NAMED_GROUP_LOG_MSG,
socket,
enabledNamedGroups,
enabledNamedGroupsPatterns,
socket.getSSLParameters().getNamedGroups(),
getNamedGroupsFromParams(socket.getSSLParameters()),
namedGroups);
}
SSLParameters params = socket.getSSLParameters();
params.setNamedGroups(namedGroups);
setNamedGroupsOnParams(params, namedGroups);
socket.setSSLParameters(params);
}

String[] signatureSchemes = resolveSignatureSchemes(
socket.getSSLParameters().getSignatureSchemes(),
getSignatureSchemesFromParams(socket.getSSLParameters()),
enabledSignatureSchemes, enabledSignatureSchemesPatterns);
if (signatureSchemes != null) {
if (LOG.isDebugEnabled()) {
LOG.debug(SSL_SERVER_SOCKET_SIGNATURE_SCHEME_LOG_MSG,
socket,
enabledSignatureSchemes,
enabledSignatureSchemesPatterns,
socket.getSSLParameters().getSignatureSchemes(),
getSignatureSchemesFromParams(socket.getSSLParameters()),
signatureSchemes);
}
SSLParameters params = socket.getSSLParameters();
params.setSignatureSchemes(signatureSchemes);
setSignatureSchemesOnParams(params, signatureSchemes);
socket.setSSLParameters(params);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,7 @@ public SSLContext createSSLContext(CamelContext camelContext) throws GeneralSecu
*/
private boolean applyPqcNamedGroupDefaults(SSLContext context) {
SSLEngine probeEngine = context.createSSLEngine();
String[] availableGroups = probeEngine.getSSLParameters().getNamedGroups();
String[] availableGroups = getNamedGroupsFromParams(probeEngine.getSSLParameters());

if (availableGroups == null) {
return false;
Expand Down
Loading
Loading