/** * 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.modifiablevariable.bytearray; import de.rub.nds.tlsattacker.modifiablevariable.ModifiableVariable; import de.rub.nds.tlsattacker.modifiablevariable.VariableModification; import de.rub.nds.tlsattacker.util.ByteArrayAdapter; import java.io.Serializable; import java.util.Arrays; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlSeeAlso; import javax.xml.bind.annotation.XmlType; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; /** * * @author Juraj Somorovsky - juraj.somorovsky@rub.de */ @XmlRootElement @XmlSeeAlso({ByteArrayDeleteModification.class, ByteArrayExplicitValueModification.class, ByteArrayInsertModification.class, ByteArrayXorModification.class, ByteArrayDuplicateModification.class}) @XmlType(propOrder = {"originalValue", "modification", "assertEquals"}) public class ModifiableByteArray extends ModifiableVariable<byte[]> implements Serializable { @Override protected void createRandomModification() { VariableModification<byte[]> vm = ByteArrayModificationFactory.createRandomModification((byte[]) originalValue); setModification(vm); } @XmlJavaTypeAdapter(ByteArrayAdapter.class) public byte[] getOriginalValue() { return originalValue; } public void setOriginalValue(byte[] value) { this.originalValue = value; } @XmlJavaTypeAdapter(ByteArrayAdapter.class) public byte[] getAssertEquals() { return assertEquals; } public void setAssertEquals(byte[] assertEquals) { this.assertEquals = assertEquals; } @Override public boolean isOriginalValueModified() { return originalValue != null && !Arrays.equals(originalValue, getValue()); } @Override public boolean validateAssertions() { boolean valid = true; if (assertEquals != null) { if (!Arrays.equals(assertEquals, getValue())) { valid = false; } } return valid; } }