/**
* 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;
/**
* Set EAP-TLS Statemachine in Start-State and send EAP-Start out. Change the
* State if a Identity Frame was received.
*
* @author Felix Lange <flx.lange@gmail.com>
*/
public class EapStartState implements EapState {
EapolMachine eapolMachine;
EapFactory eaptlsfactory = new EapTlsFactory();
NetworkHandler nic = NetworkHandler.getInstance();
byte[] data = {};
public EapStartState(EapolMachine eapolMachine) {
this.eapolMachine = eapolMachine;
}
@Override
public void send() {
EAPFrame eapstart = eaptlsfactory.createFrame("STARTEAP", 0);
nic.sendFrame(eapstart.getFrame());
}
@Override
public void sendTLS(byte[] tlspacket) {
}
@Override
public byte[] receive() {
data = nic.receiveFrame();
int id = (int) data[19]; // Get ID
// Identity Frame?
if (data[22] == 0x01) {
eapolMachine.setState(new IdentityState(eapolMachine, id));
} else {
eapolMachine.setState(new EapStartState(eapolMachine));
}
return data;
}
@Override
public String getState() {
return "EapStartState";
}
@Override
public int getID() {
return (int) data[19];
}
}