/**
* 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.application;
import de.rub.nds.tlsattacker.modifiablevariable.ModifiableVariableProperty;
import de.rub.nds.tlsattacker.modifiablevariable.bytearray.ModifiableByteArray;
import de.rub.nds.tlsattacker.tls.constants.ConnectionEnd;
import de.rub.nds.tlsattacker.tls.constants.ProtocolMessageType;
import de.rub.nds.tlsattacker.tls.protocol.ProtocolMessage;
import de.rub.nds.tlsattacker.tls.protocol.ProtocolMessageHandler;
import de.rub.nds.tlsattacker.tls.workflow.TlsContext;
/**
* @author Juraj Somorovsky <juraj.somorovsky@rub.de>
*/
public class ApplicationMessage extends ProtocolMessage {
@ModifiableVariableProperty
ModifiableByteArray data;
public ApplicationMessage() {
this.protocolMessageType = ProtocolMessageType.APPLICATION_DATA;
}
public ApplicationMessage(ConnectionEnd messageIssuer) {
this();
this.messageIssuer = messageIssuer;
}
public ModifiableByteArray getData() {
return data;
}
public void setData(ModifiableByteArray data) {
this.data = data;
}
public void setData(byte[] data) {
if (this.data == null) {
this.data = new ModifiableByteArray();
}
this.data.setOriginalValue(data);
}
@Override
public ProtocolMessageHandler<? extends ProtocolMessage> getProtocolMessageHandler(TlsContext tlsContext) {
ApplicationHandler ah = new ApplicationHandler(tlsContext);
ah.setProtocolMessage(this);
return ah;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("\nApplication Data:");
return sb.toString();
}
@Override
public String toCompactString() {
return "Application";
}
}