/** * 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.extension; 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.modifiablevariable.singlebyte.ModifiableByte; import de.rub.nds.tlsattacker.tls.constants.ExtensionType; import de.rub.nds.tlsattacker.tls.constants.NameType; /** * Describes Server Name Indication extension from * http://tools.ietf.org/html/rfc6066 * * @author Juraj Somorovsky <juraj.somorovsky@rub.de> */ public class ServerNameIndicationExtensionMessage extends ExtensionMessage { private NameType nameTypeConfig; private String serverNameConfig; @ModifiableVariableProperty(type = ModifiableVariableProperty.Type.LENGTH) ModifiableInteger serverNameListLength; @ModifiableVariableProperty(type = ModifiableVariableProperty.Type.TLS_CONSTANT) ModifiableByte serverNameType; @ModifiableVariableProperty(type = ModifiableVariableProperty.Type.LENGTH) ModifiableInteger serverNameLength; @ModifiableVariableProperty ModifiableByteArray serverName; public ServerNameIndicationExtensionMessage() { this.extensionTypeConstant = ExtensionType.SERVER_NAME_INDICATION; } public NameType getNameTypeConfig() { return nameTypeConfig; } public void setNameTypeConfig(NameType nameTypeConfig) { this.nameTypeConfig = nameTypeConfig; } public ModifiableInteger getServerNameListLength() { return serverNameListLength; } public void setServerNameListLength(ModifiableInteger serverNameListLength) { this.serverNameListLength = serverNameListLength; } public void setServerNameListLength(int length) { this.serverNameListLength = ModifiableVariableFactory.safelySetValue(serverNameListLength, length); } public ModifiableByte getServerNameType() { return serverNameType; } public void setServerNameType(ModifiableByte serverNameType) { this.serverNameType = serverNameType; } public void setServerNameType(byte serverNameType) { this.serverNameType = ModifiableVariableFactory.safelySetValue(this.serverNameType, serverNameType); } public ModifiableInteger getServerNameLength() { return serverNameLength; } public void setServerNameLength(ModifiableInteger serverNameLength) { this.serverNameLength = serverNameLength; } public void setServerNameLength(int serverNameLength) { this.serverNameLength = ModifiableVariableFactory.safelySetValue(this.serverNameLength, serverNameLength); } public ModifiableByteArray getServerName() { return serverName; } public void setServerName(ModifiableByteArray serverName) { this.serverName = serverName; } public void setServerName(byte[] serverName) { this.serverName = ModifiableVariableFactory.safelySetValue(this.serverName, serverName); } public String getServerNameConfig() { return serverNameConfig; } public void setServerNameConfig(String serverNameConfig) { this.serverNameConfig = serverNameConfig; } @Override public ExtensionHandler<? extends ExtensionMessage> getExtensionHandler() { return ServerNameIndicationExtensionHandler.getInstance(); } }