/** * 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.handshake; 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.tls.constants.ConnectionEnd; import de.rub.nds.tlsattacker.tls.constants.HandshakeMessageType; /** * * @author Juraj Somorovsky <juraj.somorovsky@rub.de> * @author Philip Riese <philip.riese@rub.de> */ public class CertificateVerifyMessage extends HandshakeMessage { /** * selected Signature and Hashalgorithm */ @ModifiableVariableProperty(type = ModifiableVariableProperty.Type.TLS_CONSTANT) ModifiableByteArray signatureHashAlgorithm; /** * signature length */ @ModifiableVariableProperty(type = ModifiableVariableProperty.Type.LENGTH) ModifiableInteger signatureLength; /** * signature */ @ModifiableVariableProperty(type = ModifiableVariableProperty.Type.SIGNATURE) ModifiableByteArray signature; public CertificateVerifyMessage() { super(HandshakeMessageType.CERTIFICATE_VERIFY); this.messageIssuer = ConnectionEnd.CLIENT; } public CertificateVerifyMessage(ConnectionEnd messageIssuer) { super(HandshakeMessageType.CERTIFICATE_VERIFY); this.messageIssuer = messageIssuer; } public ModifiableByteArray getSignatureHashAlgorithm() { return signatureHashAlgorithm; } public void setSignatureHashAlgorithm(ModifiableByteArray signatureHashAlgorithm) { this.signatureHashAlgorithm = signatureHashAlgorithm; } public void setSignatureHashAlgorithm(byte[] signatureHashAlgorithm) { this.signatureHashAlgorithm = ModifiableVariableFactory.safelySetValue(this.signatureHashAlgorithm, signatureHashAlgorithm); } public ModifiableInteger getSignatureLength() { return signatureLength; } public void setSignatureLength(ModifiableInteger signatureLength) { this.signatureLength = signatureLength; } public void setSignatureLength(int length) { this.signatureLength = ModifiableVariableFactory.safelySetValue(this.signatureLength, length); } public ModifiableByteArray getSignature() { return signature; } public void setSignature(ModifiableByteArray signature) { this.signature = signature; } public void setSignature(byte[] signature) { this.signature = ModifiableVariableFactory.safelySetValue(this.signature, signature); } }