/**
* 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;
import de.rub.nds.tlsattacker.modifiablevariable.ModifiableVariable;
import de.rub.nds.tlsattacker.modifiablevariable.ModificationFilter;
import de.rub.nds.tlsattacker.modifiablevariable.VariableModification;
import de.rub.nds.tlsattacker.modifiablevariable.integer.IntegerAddModification;
import de.rub.nds.tlsattacker.tls.config.ClientCommandConfig;
import de.rub.nds.tlsattacker.tls.protocol.extension.ExtensionMessage;
import de.rub.nds.tlsattacker.tls.protocol.handshake.ClientHelloMessage;
import de.rub.nds.tlsattacker.tls.workflow.TlsContext;
import de.rub.nds.tlsattacker.tls.workflow.WorkflowTrace;
import de.rub.nds.tlsattacker.tls.workflow.WorkflowConfigurationFactory;
import de.rub.nds.tlsattacker.util.ByteArrayAdapter;
import java.io.StringReader;
import java.io.StringWriter;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
/**
* @author Juraj Somorovsky <juraj.somorovsky@rub.de>
*/
public class ClientHelloTest {
private final StringWriter writer;
private final JAXBContext context;
private final Marshaller m;
private Unmarshaller um;
public ClientHelloTest() throws Exception {
writer = new StringWriter();
context = JAXBContext.newInstance(ExtensionMessage.class, WorkflowTrace.class, ClientHelloMessage.class,
ModificationFilter.class, IntegerAddModification.class, VariableModification.class,
ModifiableVariable.class);
m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
m.setAdapter(new ByteArrayAdapter());
}
@BeforeClass
public static void setUpClass() {
}
@AfterClass
public static void tearDownClass() {
}
@Before
public void setUp() {
}
@After
public void tearDown() {
}
@Test
public void simpleSerialization() throws JAXBException {
ClientHelloMessage cl = new ClientHelloMessage();
cl.setCipherSuiteLength(3);
// cl.setCipherSuiteLength(new ModifiableInteger());
cl.getCipherSuiteLength().setModification(new IntegerAddModification(2));
m.marshal(cl, writer);
String xmlString = writer.toString();
System.out.println(xmlString);
um = context.createUnmarshaller();
ClientHelloMessage clu = (ClientHelloMessage) um.unmarshal(new StringReader(xmlString));
writer.append("abcd");
m.marshal(clu, writer);
xmlString = writer.toString();
System.out.println(xmlString);
}
@Test
public void simpleSerialization2() throws Exception {
ClientCommandConfig config = new ClientCommandConfig();
WorkflowConfigurationFactory cf = WorkflowConfigurationFactory.createInstance(config);
TlsContext context = cf.createHandshakeTlsContext();
m.marshal(context.getWorkflowTrace(), writer);
String xmlString = writer.toString();
System.out.println(xmlString);
}
}