Skip to content

Commit 6d134bf

Browse files
committed
Added setter for ModifiableVariable in KeyUpdate messages
1 parent c7210d5 commit 6d134bf

File tree

11 files changed

+62
-44
lines changed

11 files changed

+62
-44
lines changed

TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/config/Config.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import de.rub.nds.tlsattacker.core.constants.GOSTCurve;
3535
import de.rub.nds.tlsattacker.core.constants.HashAlgorithm;
3636
import de.rub.nds.tlsattacker.core.constants.HeartbeatMode;
37+
import de.rub.nds.tlsattacker.core.constants.KeyUpdateRequest;
3738
import de.rub.nds.tlsattacker.core.constants.MaxFragmentLength;
3839
import de.rub.nds.tlsattacker.core.constants.NameType;
3940
import de.rub.nds.tlsattacker.core.constants.NamedGroup;
@@ -305,6 +306,11 @@ public static Config createEmptyConfig() {
305306
*/
306307
private MaxFragmentLength maxFragmentLength = MaxFragmentLength.TWO_9;
307308

309+
/**
310+
* Determine if a KeyUpdate should be requested from peer
311+
*/
312+
private KeyUpdateRequest defaultKeyUpdateRequestMode = KeyUpdateRequest.UPDATE_NOT_REQUESTED;
313+
308314
/**
309315
* Determine if CCS should be encrypted in TLS 1.3 if encryption is set up for record layer
310316
*/
@@ -3923,4 +3929,12 @@ public Boolean isEncryptChangeCipherSpec() {
39233929
public void setEncryptChangeCipherSpec(Boolean encryptChangeCipherSpec) {
39243930
this.encryptChangeCipherSpecTls13 = encryptChangeCipherSpec;
39253931
}
3932+
3933+
public KeyUpdateRequest getDefaultKeyUpdateRequestMode() {
3934+
return defaultKeyUpdateRequestMode;
3935+
}
3936+
3937+
public void setDefaultKeyUpdateRequestMode(KeyUpdateRequest defaultKeyUpdateRequestMode) {
3938+
this.defaultKeyUpdateRequestMode = defaultKeyUpdateRequestMode;
3939+
}
39263940
}

TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/constants/KeyUpdateRequest.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,18 @@
99

1010
package de.rub.nds.tlsattacker.core.constants;
1111

12-
import de.rub.nds.modifiablevariable.ModifiableVariableFactory;
13-
import de.rub.nds.modifiablevariable.singlebyte.ModifiableByte;
14-
1512
public enum KeyUpdateRequest {
1613

1714
UPDATE_NOT_REQUESTED((byte) 0),
1815
UPDATE_REQUESTED((byte) 1);
1916

20-
private ModifiableByte requestUpdate;
17+
private byte value;
2118

22-
private KeyUpdateRequest(byte requestUpdate) {
23-
this.requestUpdate = ModifiableVariableFactory.safelySetValue(this.requestUpdate, requestUpdate);
19+
private KeyUpdateRequest(byte value) {
20+
this.value = value;
2421
}
2522

2623
public byte getValue() {
27-
return requestUpdate.getValue();
24+
return value;
2825
}
29-
3026
}

TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/protocol/message/KeyUpdateMessage.java

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99

1010
package de.rub.nds.tlsattacker.core.protocol.message;
1111

12+
import de.rub.nds.modifiablevariable.ModifiableVariableFactory;
13+
import de.rub.nds.modifiablevariable.singlebyte.ModifiableByte;
1214
import de.rub.nds.tlsattacker.core.config.Config;
1315
import de.rub.nds.tlsattacker.core.constants.HandshakeMessageType;
1416
import de.rub.nds.tlsattacker.core.constants.KeyUpdateRequest;
@@ -22,7 +24,7 @@ public class KeyUpdateMessage extends HandshakeMessage {
2224

2325
private static final Logger LOGGER = LogManager.getLogger();
2426

25-
private KeyUpdateRequest requestUpdate;
27+
private ModifiableByte requestMode;
2628

2729
@Override
2830
public KeyUpdateHandler getHandler(TlsContext context) {
@@ -32,27 +34,29 @@ public KeyUpdateHandler getHandler(TlsContext context) {
3234
public KeyUpdateMessage() {
3335
super(HandshakeMessageType.KEY_UPDATE);
3436
this.setIncludeInDigest(false);
35-
this.requestUpdate = KeyUpdateRequest.UPDATE_NOT_REQUESTED;
3637
}
3738

3839
public KeyUpdateMessage(Config tlsConfig) {
3940
super(tlsConfig, HandshakeMessageType.KEY_UPDATE);
40-
this.requestUpdate = KeyUpdateRequest.UPDATE_NOT_REQUESTED;
4141
this.setIncludeInDigest(false);
4242
}
4343

44-
public KeyUpdateMessage(HandshakeMessageType handshakeMessageType, KeyUpdateRequest requestUpdate) {
45-
super(handshakeMessageType);
46-
this.requestUpdate = requestUpdate;
44+
public KeyUpdateMessage(Config tlsConfig, KeyUpdateRequest requestUpdate) {
45+
super(tlsConfig, HandshakeMessageType.KEY_UPDATE);
46+
setRequestMode(requestUpdate);
4747
this.setIncludeInDigest(false);
4848
}
4949

50-
public void setRequestUpdate(KeyUpdateRequest keyupdaterequest) {
51-
requestUpdate = keyupdaterequest;
50+
public final void setRequestMode(KeyUpdateRequest requestMode) {
51+
this.requestMode = ModifiableVariableFactory.safelySetValue(this.requestMode, requestMode.getValue());
52+
}
53+
54+
public void setRequestMode(ModifiableByte requestMode) {
55+
this.requestMode = requestMode;
5256
}
5357

54-
public KeyUpdateRequest getRequestUpdate() {
55-
return this.requestUpdate;
58+
public ModifiableByte getRequestMode() {
59+
return this.requestMode;
5660
}
5761

5862
}

TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/protocol/parser/KeyUpdateParser.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,13 @@ protected KeyUpdateMessage createHandshakeMessage() {
3838
}
3939

4040
private void parseUpdateRequest(KeyUpdateMessage msg) {
41-
42-
if (parseByteField(HandshakeByteLength.KEY_UPDATE_LENGTH) == KeyUpdateRequest.UPDATE_REQUESTED.getValue()) {
43-
msg.setRequestUpdate(KeyUpdateRequest.UPDATE_REQUESTED);
41+
byte requestMode = parseByteField(HandshakeByteLength.KEY_UPDATE_LENGTH);
42+
if (requestMode == KeyUpdateRequest.UPDATE_REQUESTED.getValue()) {
43+
msg.setRequestMode(KeyUpdateRequest.UPDATE_REQUESTED);
4444
} else {
45-
msg.setRequestUpdate(KeyUpdateRequest.UPDATE_NOT_REQUESTED);
45+
msg.setRequestMode(KeyUpdateRequest.UPDATE_NOT_REQUESTED);
4646
}
47-
LOGGER.debug("KeyUpdateValue: " + msg.getRequestUpdate());
47+
LOGGER.debug("KeyUpdateValue: " + msg.getRequestMode().getValue());
4848

4949
}
5050

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99

1010
package de.rub.nds.tlsattacker.core.protocol.preparator;
1111

12-
import de.rub.nds.tlsattacker.core.constants.KeyUpdateRequest;
1312
import de.rub.nds.tlsattacker.core.protocol.message.KeyUpdateMessage;
1413
import de.rub.nds.tlsattacker.core.workflow.chooser.Chooser;
1514
import org.apache.logging.log4j.LogManager;
@@ -27,8 +26,10 @@ public KeyUpdatePreparator(Chooser chooser, KeyUpdateMessage message) {
2726

2827
@Override
2928
protected void prepareHandshakeMessageContents() {
30-
msg.setRequestUpdate(msg.getRequestUpdate());
31-
LOGGER.debug("Preparing KeyUpdate - MessageContent is: " + msg.getRequestUpdate());
29+
if (msg.getRequestMode() == null) {
30+
msg.setRequestMode(chooser.getConfig().getDefaultKeyUpdateRequestMode());
31+
}
32+
LOGGER.debug("Preparing KeyUpdate - MessageContent is: " + msg.getRequestMode().getValue());
3233
}
3334

3435
}

TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/protocol/serializer/KeyUpdateSerializer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ public byte[] serializeHandshakeMessageContent() {
4343
}
4444

4545
private void writeKeyUpdateData(KeyUpdateMessage msg) {
46-
appendByte(msg.getRequestUpdate().getValue());
47-
LOGGER.debug("Serialized KeyUpdate Value: " + msg.getRequestUpdate());
46+
appendByte(msg.getRequestMode().getValue());
47+
LOGGER.debug("Serialized KeyUpdate Value: " + msg.getRequestMode());
4848
}
4949

5050
}

TLS-Core/src/main/resources/Config.xsd

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@
171171
<xs:element name="prefferedCertRsaKeySize" type="xs:int" minOccurs="0"/>
172172
<xs:element name="prefferedCertDssKeySize" type="xs:int" minOccurs="0"/>
173173
<xs:element name="maxFragmentLength" type="maxFragmentLength" minOccurs="0"/>
174+
<xs:element name="defaultKeyUpdateRequestMode" type="keyUpdateRequest" minOccurs="0"/>
174175
<xs:element name="encryptChangeCipherSpecTls13" type="xs:boolean" minOccurs="0"/>
175176
<xs:element name="tlsSessionTicket" type="xs:string" minOccurs="0"/>
176177
<xs:element name="defaultClientRenegotiationInfo" type="xs:string" minOccurs="0"/>
@@ -1902,6 +1903,13 @@
19021903
</xs:restriction>
19031904
</xs:simpleType>
19041905

1906+
<xs:simpleType name="keyUpdateRequest">
1907+
<xs:restriction base="xs:string">
1908+
<xs:enumeration value="UPDATE_NOT_REQUESTED"/>
1909+
<xs:enumeration value="UPDATE_REQUESTED"/>
1910+
</xs:restriction>
1911+
</xs:simpleType>
1912+
19051913
<xs:simpleType name="tokenBindingVersion">
19061914
<xs:restriction base="xs:string">
19071915
<xs:enumeration value="DRAFT_1"/>

TLS-Core/src/main/resources/default_config.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -811,6 +811,7 @@
811811
<prefferedCertRsaKeySize>2048</prefferedCertRsaKeySize>
812812
<prefferedCertDssKeySize>2048</prefferedCertDssKeySize>
813813
<maxFragmentLength>TWO_9</maxFragmentLength>
814+
<defaultKeyUpdateRequestMode>UPDATE_NOT_REQUESTED</defaultKeyUpdateRequestMode>
814815
<encryptChangeCipherSpecTls13>false</encryptChangeCipherSpecTls13>
815816
<tlsSessionTicket></tlsSessionTicket>
816817
<defaultClientRenegotiationInfo></defaultClientRenegotiationInfo>

TLS-Core/src/main/resources/workflowTrace.xsd

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2302,7 +2302,7 @@
23022302
<xs:complexContent>
23032303
<xs:extension base="handshakeMessage">
23042304
<xs:sequence>
2305-
<xs:element name="requestUpdate" type="keyUpdateRequest" minOccurs="0"/>
2305+
<xs:element name="requestMode" type="modifiableByte" minOccurs="0"/>
23062306
</xs:sequence>
23072307
</xs:extension>
23082308
</xs:complexContent>
@@ -4542,13 +4542,6 @@
45424542
</xs:restriction>
45434543
</xs:simpleType>
45444544

4545-
<xs:simpleType name="keyUpdateRequest">
4546-
<xs:restriction base="xs:string">
4547-
<xs:enumeration value="UPDATE_NOT_REQUESTED"/>
4548-
<xs:enumeration value="UPDATE_REQUESTED"/>
4549-
</xs:restriction>
4550-
</xs:simpleType>
4551-
45524545
<xs:simpleType name="protocolMessageType">
45534546
<xs:restriction base="xs:string">
45544547
<xs:enumeration value="UNKNOWN"/>

resources/schema/Config.xsd

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@
171171
<xs:element name="prefferedCertRsaKeySize" type="xs:int" minOccurs="0"/>
172172
<xs:element name="prefferedCertDssKeySize" type="xs:int" minOccurs="0"/>
173173
<xs:element name="maxFragmentLength" type="maxFragmentLength" minOccurs="0"/>
174+
<xs:element name="defaultKeyUpdateRequestMode" type="keyUpdateRequest" minOccurs="0"/>
174175
<xs:element name="encryptChangeCipherSpecTls13" type="xs:boolean" minOccurs="0"/>
175176
<xs:element name="tlsSessionTicket" type="xs:string" minOccurs="0"/>
176177
<xs:element name="defaultClientRenegotiationInfo" type="xs:string" minOccurs="0"/>
@@ -1902,6 +1903,13 @@
19021903
</xs:restriction>
19031904
</xs:simpleType>
19041905

1906+
<xs:simpleType name="keyUpdateRequest">
1907+
<xs:restriction base="xs:string">
1908+
<xs:enumeration value="UPDATE_NOT_REQUESTED"/>
1909+
<xs:enumeration value="UPDATE_REQUESTED"/>
1910+
</xs:restriction>
1911+
</xs:simpleType>
1912+
19051913
<xs:simpleType name="tokenBindingVersion">
19061914
<xs:restriction base="xs:string">
19071915
<xs:enumeration value="DRAFT_1"/>

0 commit comments

Comments
 (0)