/** * 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.eap; import de.rub.nds.tlsattacker.util.ArrayConverter; /** * Construct the EAP Start Frame with first TLS-Packet and EAP-FLag 0xc0. * * @author Felix Lange <flx.lange@gmail.com> */ public class FragStart extends EAPResponseDecorator { EAPFrame eapframe; byte[] tlspacket; public FragStart(EAPFrame eapframe, int id, byte[] tlspacket) { this.eapframe = eapframe; this.id = id; this.tlspacket = tlspacket; createFrame(); } @Override public byte[] getFrame() { return ArrayConverter.concatenate(eapframe.getFrame(), frame, tlspacket); } @Override public void createFrame() { SplitTLS fragment = SplitTLS.getInstance(); frame = new byte[12]; eaplength = (short) ((frame.length - 2) + tlspacket.length); tlslength = fragment.getSizeInt(); frame[0] = (byte) (super.eaplength >>> 8); // Length frame[1] = (byte) (super.eaplength); // Length frame[2] = 0x02; // Code frame[3] = (byte) id; // ID frame[4] = (byte) (super.eaplength >>> 8); // Length frame[5] = (byte) (super.eaplength); // Length frame[6] = 0x0d; // Type frame[7] = (byte) 0xc0; // EAP-Flag Start Fragment frame[8] = (byte) (super.tlslength >>> 24); // TLS-Length frame[9] = (byte) (super.tlslength >>> 16); // TLS-Length frame[10] = (byte) (super.tlslength >>> 8); // TLS-Length frame[11] = (byte) (super.tlslength); // TLS-Length } }