Skip to content

Commit 62a4f09

Browse files
authored
use secp256r1 if FFDHE named group is negotiated (#913)
1 parent fcb0856 commit 62a4f09

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/protocol/preparator/ECDHClientKeyExchangePreparator.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ protected void prepareClientServerRandom(T msg) {
8888
public void prepareAfterParse(boolean clientMode) {
8989
msg.prepareComputations();
9090
prepareClientServerRandom(msg);
91-
NamedGroup usedGroup = chooser.getSelectedNamedGroup();
91+
NamedGroup usedGroup = getSuitableNamedGroup();
9292
LOGGER.debug("PMS used Group: " + usedGroup.name());
9393
if (msg.getComputations().getPrivateKey() == null) {
9494
setComputationPrivateKey(msg, clientMode);
@@ -106,7 +106,7 @@ public void prepareAfterParse(boolean clientMode) {
106106
}
107107

108108
private void setSerializedPublicKey() {
109-
NamedGroup usedGroup = chooser.getSelectedNamedGroup();
109+
NamedGroup usedGroup = getSuitableNamedGroup();
110110
LOGGER.debug("PublicKey used Group: " + usedGroup.name());
111111
ECPointFormat pointFormat = chooser.getConfig().getDefaultSelectedPointFormat();
112112
LOGGER.debug("EC Point format: " + pointFormat.name());
@@ -128,6 +128,16 @@ private void setSerializedPublicKey() {
128128
msg.setPublicKey(publicKeyBytes);
129129
}
130130

131+
private NamedGroup getSuitableNamedGroup() {
132+
NamedGroup usedGroup = chooser.getSelectedNamedGroup();
133+
if (!usedGroup.isCurve() || usedGroup.isGost()) {
134+
usedGroup = NamedGroup.SECP256R1;
135+
LOGGER.warn("Selected NamedGroup {} is not suitable for ECDHClientKeyExchange message. Using {} instead.",
136+
chooser.getSelectedNamedGroup(), usedGroup);
137+
}
138+
return usedGroup;
139+
}
140+
131141
protected void setComputationPrivateKey(T msg, boolean clientMode) {
132142
if (clientMode) {
133143
LOGGER.debug("Using Client PrivateKey");

TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/protocol/preparator/ECDHEServerKeyExchangePreparator.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,12 @@ protected NamedGroup selectNamedGroup(T msg) {
143143
}
144144
}
145145
}
146+
if (!namedGroup.isCurve() || namedGroup.isGost()) {
147+
NamedGroup previousNamedGroup = namedGroup;
148+
namedGroup = NamedGroup.SECP256R1;
149+
LOGGER.warn("NamedGroup {} is not suitable for ECDHEServerKeyExchange message. Using {} instead.",
150+
previousNamedGroup, namedGroup);
151+
}
146152
return namedGroup;
147153
}
148154

0 commit comments

Comments
 (0)