/**
* TLS-Attacker - A Modular Penetration Testing Framework for TLS
*
* Copyright 2014-2016 Ruhr University Bochum / Hackmanit GmbH
*
* Licensed under Apache License 2.0
* http://www.apache.org/licenses/LICENSE-2.0
*/
package de.rub.nds.tlsattacker.tls.protocol.handshake;
import de.rub.nds.tlsattacker.modifiablevariable.ModifiableVariableFactory;
import de.rub.nds.tlsattacker.modifiablevariable.ModifiableVariableProperty;
import de.rub.nds.tlsattacker.modifiablevariable.bytearray.ModifiableByteArray;
import de.rub.nds.tlsattacker.modifiablevariable.integer.ModifiableInteger;
import de.rub.nds.tlsattacker.tls.constants.ConnectionEnd;
import de.rub.nds.tlsattacker.tls.constants.HandshakeMessageType;
/**
* @author Juraj Somorovsky <juraj.somorovsky@rub.de>
*/
public class RSAClientKeyExchangeMessage extends ClientKeyExchangeMessage {
@ModifiableVariableProperty(type = ModifiableVariableProperty.Type.LENGTH)
ModifiableInteger encryptedPremasterSecretLength;
@ModifiableVariableProperty(type = ModifiableVariableProperty.Type.CIPHERTEXT)
ModifiableByteArray encryptedPremasterSecret;
@ModifiableVariableProperty(format = ModifiableVariableProperty.Format.PKCS1, type = ModifiableVariableProperty.Type.KEY_MATERIAL)
ModifiableByteArray plainPaddedPremasterSecret;
public RSAClientKeyExchangeMessage() {
super(HandshakeMessageType.CLIENT_KEY_EXCHANGE);
this.messageIssuer = ConnectionEnd.CLIENT;
}
public RSAClientKeyExchangeMessage(ConnectionEnd messageIssuer) {
super(HandshakeMessageType.CLIENT_KEY_EXCHANGE);
this.messageIssuer = messageIssuer;
}
public ModifiableInteger getEncryptedPremasterSecretLength() {
return encryptedPremasterSecretLength;
}
public void setEncryptedPremasterSecretLength(ModifiableInteger encryptedPremasterSecretLength) {
this.encryptedPremasterSecretLength = encryptedPremasterSecretLength;
}
public void setEncryptedPremasterSecretLength(int length) {
this.encryptedPremasterSecretLength = ModifiableVariableFactory.safelySetValue(
this.encryptedPremasterSecretLength, length);
}
public ModifiableByteArray getEncryptedPremasterSecret() {
return encryptedPremasterSecret;
}
public void setEncryptedPremasterSecret(ModifiableByteArray encryptedPremasterSecret) {
this.encryptedPremasterSecret = encryptedPremasterSecret;
}
public void setEncryptedPremasterSecret(byte[] value) {
this.encryptedPremasterSecret = ModifiableVariableFactory.safelySetValue(this.encryptedPremasterSecret, value);
}
public ModifiableByteArray getPlainPaddedPremasterSecret() {
return plainPaddedPremasterSecret;
}
public void setPlainPaddedPremasterSecret(ModifiableByteArray plainPaddedPremasterSecret) {
this.plainPaddedPremasterSecret = plainPaddedPremasterSecret;
}
public void setPlainPaddedPremasterSecret(byte[] value) {
this.plainPaddedPremasterSecret = ModifiableVariableFactory.safelySetValue(this.plainPaddedPremasterSecret,
value);
}
public void setMasterSecret(ModifiableByteArray masterSecret) {
this.masterSecret = masterSecret;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("\nClient Key Exchange message:");
return sb.toString();
}
}