/**
* WS-Attacker - A Modular Web Services Penetration Testing Framework Copyright
* (C) 2013 Dennis Kupser
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc., 51
* Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package wsattacker.plugin.xmlencryptionattack.gui;
import java.util.List;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.ListModel;
import wsattacker.gui.component.pluginconfiguration.composition.OptionGUI;
import wsattacker.library.xmlencryptionattack.attackengine.AttackConfig;
import wsattacker.library.xmlencryptionattack.attackengine.oracle.concrete.pkcs1.strategy.PKCS1StrategyFactory.PKCS1Strategy;
import wsattacker.library.xmlencryptionattack.encryptedelements.AbstractEncryptionElement;
import wsattacker.library.xmlencryptionattack.encryptedelements.AbstractRefElement;
import wsattacker.library.xmlencryptionattack.encryptedelements.ElementAttackProperties;
import wsattacker.library.xmlencryptionattack.encryptedelements.data.EncryptedDataElement;
import wsattacker.library.xmlencryptionattack.encryptedelements.key.DataReferenceElement;
import wsattacker.library.xmlencryptionattack.encryptedelements.key.EncryptedKeyElement;
import wsattacker.library.xmlencryptionattack.util.SimStringStrategyFactory.SimStringStrategy;
import wsattacker.library.xmlencryptionattack.util.XMLEncryptionConstants.OracleMode;
import wsattacker.library.xmlencryptionattack.util.XMLEncryptionConstants.WrappingAttackMode;
import static wsattacker.library.xmlencryptionattack.util.XMLEncryptionConstants.WrappingAttackMode.ENCRYPTION;
import static wsattacker.library.xmlencryptionattack.util.XMLEncryptionConstants.WrappingAttackMode.SIG_ENC_WRAP;
import wsattacker.library.xmlencryptionattack.util.XMLEncryptionConstants.XMLEncryptionAttackMode;
import static wsattacker.library.xmlutilities.dom.DomUtilities.domToString;
import wsattacker.main.composition.plugin.AbstractPlugin;
import wsattacker.main.composition.plugin.option.AbstractOption;
import wsattacker.plugin.xmlencryptionattack.XMLEncryptionAttack;
import wsattacker.plugin.xmlencryptionattack.option.OptionPayloadEncryption;
import static wsattacker.plugin.xmlencryptionattack.option.OptionPayloadEncryption.NO_ENCDATA_ELEMENTS;
import static wsattacker.plugin.xmlencryptionattack.option.OptionPayloadEncryption.NO_ENCKEY_ELEMENTS;
/**
* @author Dennis
*/
public class OptionPayloadEncGUI
extends OptionGUI
{
private OptionPayloadEncryption m_Option = null;
private AbstractPlugin m_Plugin;
private final AbstractEncryptionElement NO_CHOSEN_PAY = null;
public static final String PROP_OPTION = "option";
private int m_CurrIndexOfEncKeyEncDataElement = 0;
/**
* Get the value of m_Option
*
* @return the value of m_Option
*/
public OptionPayloadEncryption getOption()
{
return m_Option;
}
/**
* Set the value of m_Option
*
* @param option new value of m_Option
*/
public void setOption( OptionPayloadEncryption option )
{
OptionPayloadEncryption oldOption = this.m_Option;
this.m_Option = option;
setEncryptedElementText();
firePropertyChange( PROP_OPTION, oldOption, option );
}
private void initEncKeyFormElements( boolean state )
{
initAddDataWrap( state );
cbEncKeyAttack.setEnabled( state );
cboxPKSC1Strategy.setEnabled( state );
}
private void initAddDataWrap( boolean state )
{
if ( state )
{
WrappingAttackMode wrapMode = (WrappingAttackMode) cboxWrappingAttack.getSelectedItem();
if ( ENCRYPTION == wrapMode || SIG_ENC_WRAP == wrapMode )
{
cbEncKeyAddWrapp.setEnabled( !cbEncKeyIsSigned.isSelected() );
cbEncDataAddWrapp.setEnabled( !cbEncDataIsSigned.isSelected() );
}
else
{
cbEncKeyAddWrapp.setEnabled( false );
cbEncDataAddWrapp.setEnabled( false );
}
}
else
{
cbEncKeyAddWrapp.setEnabled( state );
cbEncDataAddWrapp.setEnabled( state );
}
}
private void initEncDataFormElements( boolean state )
{
cbEncDataAttack.setEnabled( state );
}
private void setEncryptedElementText()
{
if ( 0 != listEncryptedEl.getModel().getSize() )
{
initEncKeyEncDataTextFields();
}
else
// no encrypted elements
{
initEncKeyFormElements( false );
initEncDataFormElements( false );
cbEncDataIsSigned.setSelected( false );
cbEncKeyIsSigned.setSelected( false );
tbEncryptedKey.setText( NO_ENCKEY_ELEMENTS );
tbEncryptedData.setText( NO_ENCDATA_ELEMENTS );
tbEncDataCount.setText( "0/0" );
}
cbEncKeyAddWrapp.setSelected( false );
cbEncDataAddWrapp.setSelected( false );
cbEncKeyAttack.setSelected( false );
cbEncDataAttack.setSelected( false );
}
public void initEncKeyEncDataTextFields()
{
AbstractEncryptionElement selectVal = getSelectedListElement();
ElementAttackProperties attackPropsSelectVal = selectVal.getAttackProperties();
if ( selectVal instanceof EncryptedKeyElement )
{
tbEncryptedKey.setText( domToString( selectVal.getEncryptedElement() ) );
cbEncKeyIsSigned.setSelected( attackPropsSelectVal.isSigned() );
DataReferenceElement encRef =
(DataReferenceElement) ( (EncryptedKeyElement) selectVal ).getReferenceElementList().get( m_CurrIndexOfEncKeyEncDataElement );
ElementAttackProperties attackPropsEncRef = encRef.getRefEncData().getAttackProperties();
tbEncDataCount.setText( ( m_CurrIndexOfEncKeyEncDataElement + 1 ) + "/"
+ ( (EncryptedKeyElement) selectVal ).getReferenceElementList().size() );
cbEncDataIsSigned.setSelected( attackPropsEncRef.isSigned() );
tbEncryptedData.setText( domToString( encRef.getRefEncData().getEncryptedElement() ) );
initEncKeyFormElements( true );
initEncDataFormElements( true );
}
else
{
tbEncryptedKey.setText( NO_ENCKEY_ELEMENTS );
initEncKeyFormElements( false );
initEncDataFormElements( true );
if ( null != selectVal.getKeyInfoElement() ) // case enckey inside encdata
{
if ( null != selectVal.getKeyInfoElement().getEncryptedKeyElement() )
cboxPKSC1Strategy.setEnabled( true );
}
tbEncryptedData.setText( domToString( selectVal.getEncryptedElement() ) );
cbEncDataIsSigned.setSelected( attackPropsSelectVal.isSigned() );
cbEncKeyIsSigned.setSelected( false );
tbEncDataCount.setText( "1/1" );
}
}
private AbstractEncryptionElement getSelectedListElement()
{
int selectIdx = listEncryptedEl.getSelectedIndex();
AbstractEncryptionElement selectVal = null;
if ( 0 <= selectIdx )
selectVal = (AbstractEncryptionElement) listEncryptedEl.getModel().getElementAt( selectIdx );
return selectVal;
}
/**
* Creates new form OptionVarcharGUI
*/
public OptionPayloadEncGUI()
{
initComponents();
}
public OptionPayloadEncGUI( OptionPayloadEncryption option, AbstractPlugin plug )
{
this.m_Option = option;
this.m_Plugin = (XMLEncryptionAttack) plug;
initComponents();
setEncryptedElementText();
if ( null != m_Option.getTimestamp() )
{
cbIsTimeStamp.setSelected( true );
if ( m_Option.getTimestamp().isSigned() )
cbIsTimeStamp.setText( "Timestamp Signed" );
else
cbIsTimeStamp.setText( "Timestamp" );
}
else
cbIsTimeStamp.setSelected( false );
}
/**
* This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The
* content of this method is always regenerated by the Form Editor.
*/
@SuppressWarnings( "unchecked" )
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents()
{
lbEncKeyPay = new javax.swing.JLabel();
lbEncryptedData = new javax.swing.JLabel();
cbEncKeyIsSigned = new javax.swing.JCheckBox();
cbEncDataIsSigned = new javax.swing.JCheckBox();
cbEncKeyAttack = new javax.swing.JCheckBox();
cbEncDataAttack = new javax.swing.JCheckBox();
tbEncDataCount = new javax.swing.JTextField();
cboxAttack = new javax.swing.JComboBox();
cboxOracle = new javax.swing.JComboBox();
lbAttackCombo = new javax.swing.JLabel();
lbOracleCombo = new javax.swing.JLabel();
lbWrappingAttack = new javax.swing.JLabel();
cboxWrappingAttack = new javax.swing.JComboBox();
lbStringComp = new javax.swing.JLabel();
cboxStringComp = new javax.swing.JComboBox();
jPanelEncKey = new javax.swing.JPanel();
jScrollPane1 = new org.fife.ui.rtextarea.RTextScrollPane();
tbEncryptedKey = new org.fife.ui.rsyntaxtextarea.RSyntaxTextArea();
tbEncryptedKey.setLineWrap( true );
tbEncryptedKey.setWrapStyleWord( false );
jPanelEncData = new javax.swing.JPanel();
jScrollPane3 = new org.fife.ui.rtextarea.RTextScrollPane();
tbEncryptedData = new org.fife.ui.rsyntaxtextarea.RSyntaxTextArea();
tbEncryptedData.setLineWrap( true );
tbEncryptedData.setWrapStyleWord( false );
jScrollPane2 = new javax.swing.JScrollPane();
final ListModel<AbstractEncryptionElement> listModel = new PayloadListModel( m_Option.getPayloads() );
listEncryptedEl = new JList<AbstractEncryptionElement>( listModel );
lbTitleEncElements = new javax.swing.JLabel();
btnPrevEncData = new javax.swing.JButton();
btnNextEncData = new javax.swing.JButton();
lbStringCmpTresh = new javax.swing.JLabel();
tbCmpThres = new javax.swing.JTextField();
lbEncElements = new javax.swing.JLabel();
cbIsTimeStamp = new javax.swing.JCheckBox();
tbThresHoldWrap = new javax.swing.JTextField();
lbThresWrap = new javax.swing.JLabel();
cboxPKSC1Strategy = new javax.swing.JComboBox();
cbEncKeyAddWrapp = new javax.swing.JCheckBox();
lbPKCS1Strategy = new javax.swing.JLabel();
cbEncDataAddWrapp = new javax.swing.JCheckBox();
cbEncTypeWeak = new javax.swing.JCheckBox();
jLabel1 = new javax.swing.JLabel();
lbEncKeyPay.setText( "EncryptedKey:" );
lbEncryptedData.setText( "EncryptedData:" );
cbEncKeyIsSigned.setText( "isSigned" );
cbEncKeyIsSigned.setToolTipText( "" );
cbEncKeyIsSigned.setEnabled( false );
cbEncDataIsSigned.setText( "isSigned" );
cbEncDataIsSigned.setEnabled( false );
cbEncKeyAttack.setText( "isAttackPayload" );
cbEncKeyAttack.addActionListener( new java.awt.event.ActionListener()
{
public void actionPerformed( java.awt.event.ActionEvent evt )
{
cbEncKeyAttackActionPerformed( evt );
}
} );
cbEncDataAttack.setText( "isAttackPayload" );
cbEncDataAttack.addActionListener( new java.awt.event.ActionListener()
{
public void actionPerformed( java.awt.event.ActionEvent evt )
{
cbEncDataAttackActionPerformed( evt );
}
} );
tbEncDataCount.setHorizontalAlignment( javax.swing.JTextField.CENTER );
tbEncDataCount.setEnabled( false );
cboxAttack.setModel( new javax.swing.DefaultComboBoxModel( XMLEncryptionAttackMode.values() ) );
cboxAttack.addItemListener( new java.awt.event.ItemListener()
{
public void itemStateChanged( java.awt.event.ItemEvent evt )
{
cboxAttackItemStateChanged( evt );
}
} );
cboxOracle.setModel( new javax.swing.DefaultComboBoxModel( OracleMode.values() ) );
cboxOracle.addItemListener( new java.awt.event.ItemListener()
{
public void itemStateChanged( java.awt.event.ItemEvent evt )
{
cboxOracleItemStateChanged( evt );
}
} );
lbAttackCombo.setText( "Attack:" );
lbOracleCombo.setText( "Oracle Type:" );
lbWrappingAttack.setText( "Wrapping Attack:" );
cboxWrappingAttack.setModel( new javax.swing.DefaultComboBoxModel( WrappingAttackMode.values() ) );
cboxWrappingAttack.addItemListener( new java.awt.event.ItemListener()
{
public void itemStateChanged( java.awt.event.ItemEvent evt )
{
cboxWrappingAttackItemStateChanged( evt );
}
} );
lbStringComp.setText( "StringCompare:" );
cboxStringComp.setModel( new javax.swing.DefaultComboBoxModel( SimStringStrategy.values() ) );
cboxStringComp.addItemListener( new java.awt.event.ItemListener()
{
public void itemStateChanged( java.awt.event.ItemEvent evt )
{
cboxStringCompItemStateChanged( evt );
}
} );
tbEncryptedKey.setEditable( false );
tbEncryptedKey.setToolTipText( "" );
tbEncryptedKey.setMaximumSize( new java.awt.Dimension( 700, 133 ) );
tbEncryptedKey.setMinimumSize( new java.awt.Dimension( 700, 133 ) );
tbEncryptedKey.setName( "" ); // NOI18N
tbEncryptedKey.setPreferredSize( new java.awt.Dimension( 700, 133 ) );
tbEncryptedKey.setSyntaxEditingStyle( "text/xml" );
jScrollPane1.setViewportView( tbEncryptedKey );
javax.swing.GroupLayout jPanelEncKeyLayout = new javax.swing.GroupLayout( jPanelEncKey );
jPanelEncKey.setLayout( jPanelEncKeyLayout );
jPanelEncKeyLayout.setHorizontalGroup( jPanelEncKeyLayout.createParallelGroup( javax.swing.GroupLayout.Alignment.LEADING ).addGroup( jPanelEncKeyLayout.createSequentialGroup().addGap( 0,
0,
0 ).addComponent( jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE,
0,
Short.MAX_VALUE ).addGap( 0,
0,
0 ) ) );
jPanelEncKeyLayout.setVerticalGroup( jPanelEncKeyLayout.createParallelGroup( javax.swing.GroupLayout.Alignment.LEADING ).addGroup( jPanelEncKeyLayout.createSequentialGroup().addContainerGap().addComponent( jScrollPane1,
javax.swing.GroupLayout.DEFAULT_SIZE,
105,
Short.MAX_VALUE ).addContainerGap() ) );
tbEncryptedData.setEditable( false );
tbEncryptedData.setMaximumSize( new java.awt.Dimension( 701, 200 ) );
tbEncryptedData.setMinimumSize( new java.awt.Dimension( 701, 200 ) );
tbEncryptedData.setName( "" ); // NOI18N
tbEncryptedData.setPreferredSize( new java.awt.Dimension( 701, 200 ) );
tbEncryptedData.setSyntaxEditingStyle( "text/xml" );
jScrollPane3.setViewportView( tbEncryptedData );
javax.swing.GroupLayout jPanelEncDataLayout = new javax.swing.GroupLayout( jPanelEncData );
jPanelEncData.setLayout( jPanelEncDataLayout );
jPanelEncDataLayout.setHorizontalGroup( jPanelEncDataLayout.createParallelGroup( javax.swing.GroupLayout.Alignment.LEADING ).addGroup( jPanelEncDataLayout.createSequentialGroup().addGap( 0,
0,
0 ).addComponent( jScrollPane3,
javax.swing.GroupLayout.PREFERRED_SIZE,
0,
Short.MAX_VALUE ) ) );
jPanelEncDataLayout.setVerticalGroup( jPanelEncDataLayout.createParallelGroup( javax.swing.GroupLayout.Alignment.LEADING ).addGroup( jPanelEncDataLayout.createSequentialGroup().addContainerGap().addComponent( jScrollPane3,
javax.swing.GroupLayout.DEFAULT_SIZE,
113,
Short.MAX_VALUE ).addContainerGap() ) );
listEncryptedEl.setCellRenderer( new PayloadListCellRenderer() );
listEncryptedEl.setSelectedIndex( 0 );
listEncryptedEl.setSelectionMode( javax.swing.ListSelectionModel.SINGLE_SELECTION );
listEncryptedEl.setToolTipText( "" );
listEncryptedEl.addListSelectionListener( new javax.swing.event.ListSelectionListener()
{
public void valueChanged( javax.swing.event.ListSelectionEvent evt )
{
listEncryptedElValueChanged( evt );
}
} );
jScrollPane2.setViewportView( listEncryptedEl );
lbTitleEncElements.setFont( new java.awt.Font( "Tahoma", 1, 18 ) ); // NOI18N
lbTitleEncElements.setText( "Detected Encrypted Elements:" );
btnPrevEncData.setFont( new java.awt.Font( "Tahoma", 0, 8 ) ); // NOI18N
btnPrevEncData.setText( "<" );
btnPrevEncData.setCursor( new java.awt.Cursor( java.awt.Cursor.DEFAULT_CURSOR ) );
btnPrevEncData.setHorizontalAlignment( javax.swing.SwingConstants.LEADING );
btnPrevEncData.setHorizontalTextPosition( javax.swing.SwingConstants.LEADING );
btnPrevEncData.addActionListener( new java.awt.event.ActionListener()
{
public void actionPerformed( java.awt.event.ActionEvent evt )
{
btnPrevEncDataActionPerformed( evt );
}
} );
btnNextEncData.setFont( new java.awt.Font( "Tahoma", 0, 8 ) ); // NOI18N
btnNextEncData.setText( ">" );
btnNextEncData.setCursor( new java.awt.Cursor( java.awt.Cursor.DEFAULT_CURSOR ) );
btnNextEncData.setHorizontalAlignment( javax.swing.SwingConstants.LEADING );
btnNextEncData.setHorizontalTextPosition( javax.swing.SwingConstants.LEADING );
btnNextEncData.addActionListener( new java.awt.event.ActionListener()
{
public void actionPerformed( java.awt.event.ActionEvent evt )
{
btnNextEncDataBtnActionPerformed( evt );
}
} );
lbStringCmpTresh.setText( "Threshold General Error:" );
tbCmpThres.setHorizontalAlignment( javax.swing.JTextField.RIGHT );
tbCmpThres.setText( Double.toString( AttackConfig.DEFAULT_STRING_CMP_WRAP_ERROR_THRESHOLD ) );
tbCmpThres.setToolTipText( "" );
tbCmpThres.addFocusListener( new java.awt.event.FocusAdapter()
{
public void focusLost( java.awt.event.FocusEvent evt )
{
tbCmpThresFocusLost( evt );
}
} );
lbEncElements.setText( "Elements:" );
cbIsTimeStamp.setText( "TimeStamp" );
cbIsTimeStamp.setEnabled( false );
cbIsTimeStamp.addActionListener( new java.awt.event.ActionListener()
{
public void actionPerformed( java.awt.event.ActionEvent evt )
{
cbIsTimeStampActionPerformed( evt );
}
} );
tbThresHoldWrap.setHorizontalAlignment( javax.swing.JTextField.RIGHT );
tbThresHoldWrap.setText( Double.toString( AttackConfig.DEFAULT_STRING_CMP_THRESHOLD ) );
tbThresHoldWrap.addFocusListener( new java.awt.event.FocusAdapter()
{
public void focusLost( java.awt.event.FocusEvent evt )
{
tbThresHoldWrapFocusLost( evt );
}
} );
lbThresWrap.setText( "Threshold Wrap Error:" );
cboxPKSC1Strategy.setModel( new javax.swing.DefaultComboBoxModel( PKCS1Strategy.values() ) );
cboxPKSC1Strategy.addActionListener( new java.awt.event.ActionListener()
{
public void actionPerformed( java.awt.event.ActionEvent evt )
{
cboxPKSC1StrategyActionPerformed( evt );
}
} );
cbEncKeyAddWrapp.setText( "isAddWrap" );
cbEncKeyAddWrapp.setEnabled( false );
cbEncKeyAddWrapp.addActionListener( new java.awt.event.ActionListener()
{
public void actionPerformed( java.awt.event.ActionEvent evt )
{
cbEncKeyAddWrappActionPerformed( evt );
}
} );
lbPKCS1Strategy.setText( "PKCS1 Strategy" );
cbEncDataAddWrapp.setText( "isAddWrapp" );
cbEncDataAddWrapp.setEnabled( false );
cbEncDataAddWrapp.addActionListener( new java.awt.event.ActionListener()
{
public void actionPerformed( java.awt.event.ActionEvent evt )
{
cbEncDataAddWrappActionPerformed( evt );
}
} );
cbEncTypeWeak.setText( "useTypeWeakness" );
cbEncTypeWeak.addActionListener( new java.awt.event.ActionListener()
{
public void actionPerformed( java.awt.event.ActionEvent evt )
{
cbEncTypeWeakActionPerformed( evt );
}
} );
jLabel1.setText( "Configuration:" );
javax.swing.GroupLayout layout = new javax.swing.GroupLayout( this );
this.setLayout( layout );
layout.setHorizontalGroup( layout.createParallelGroup( javax.swing.GroupLayout.Alignment.LEADING ).addGroup( layout.createSequentialGroup().addContainerGap().addGroup( layout.createParallelGroup( javax.swing.GroupLayout.Alignment.LEADING ).addComponent( lbTitleEncElements ).addGroup( layout.createSequentialGroup().addGroup( layout.createParallelGroup( javax.swing.GroupLayout.Alignment.LEADING ).addGroup( layout.createSequentialGroup().addGap( 1,
1,
1 ).addGroup( layout.createParallelGroup( javax.swing.GroupLayout.Alignment.LEADING ).addComponent( lbEncElements,
javax.swing.GroupLayout.Alignment.TRAILING ).addComponent( lbEncKeyPay,
javax.swing.GroupLayout.Alignment.TRAILING ) ) ).addComponent( cbEncKeyAttack ).addComponent( cbEncKeyIsSigned ).addComponent( cbEncKeyAddWrapp ).addGroup( layout.createParallelGroup( javax.swing.GroupLayout.Alignment.TRAILING,
false ).addComponent( cboxPKSC1Strategy,
javax.swing.GroupLayout.Alignment.LEADING,
0,
javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE ).addComponent( lbPKCS1Strategy,
javax.swing.GroupLayout.Alignment.LEADING,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE ) ).addComponent( jLabel1 ).addGroup( layout.createParallelGroup( javax.swing.GroupLayout.Alignment.LEADING,
false ).addComponent( tbEncDataCount ).addGroup( layout.createSequentialGroup().addComponent( btnPrevEncData ).addGap( 2,
2,
2 ).addComponent( btnNextEncData ) ) ).addComponent( lbEncryptedData ).addComponent( cbEncDataAttack ).addComponent( cbEncDataIsSigned ).addComponent( cbEncDataAddWrapp ).addComponent( cbEncTypeWeak ) ).addGroup( layout.createParallelGroup( javax.swing.GroupLayout.Alignment.LEADING ).addGroup( javax.swing.GroupLayout.Alignment.TRAILING,
layout.createSequentialGroup().addGap( 12,
12,
12 ).addComponent( jPanelEncKey,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE ) ).addGroup( layout.createSequentialGroup().addGap( 9,
9,
9 ).addGroup( layout.createParallelGroup( javax.swing.GroupLayout.Alignment.LEADING ).addComponent( jPanelEncData,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE ).addGroup( layout.createSequentialGroup().addGroup( layout.createParallelGroup( javax.swing.GroupLayout.Alignment.LEADING,
false ).addComponent( lbThresWrap,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE ).addComponent( lbAttackCombo,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE ).addComponent( lbWrappingAttack,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE ).addComponent( jScrollPane2,
javax.swing.GroupLayout.PREFERRED_SIZE,
0,
Short.MAX_VALUE ) ).addPreferredGap( javax.swing.LayoutStyle.ComponentPlacement.RELATED ).addGroup( layout.createParallelGroup( javax.swing.GroupLayout.Alignment.LEADING,
false ).addComponent( cboxWrappingAttack,
0,
javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE ).addComponent( tbThresHoldWrap,
javax.swing.GroupLayout.DEFAULT_SIZE,
28,
Short.MAX_VALUE ).addComponent( cboxAttack,
0,
140,
Short.MAX_VALUE ).addComponent( cbIsTimeStamp,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE ) ).addPreferredGap( javax.swing.LayoutStyle.ComponentPlacement.RELATED ).addGroup( layout.createParallelGroup( javax.swing.GroupLayout.Alignment.LEADING ).addGroup( layout.createSequentialGroup().addComponent( lbStringComp ).addPreferredGap( javax.swing.LayoutStyle.ComponentPlacement.RELATED ).addComponent( cboxStringComp,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE ) ).addGroup( layout.createSequentialGroup().addComponent( lbOracleCombo ).addPreferredGap( javax.swing.LayoutStyle.ComponentPlacement.RELATED ).addComponent( cboxOracle,
javax.swing.GroupLayout.PREFERRED_SIZE,
140,
javax.swing.GroupLayout.PREFERRED_SIZE ) ).addGroup( layout.createSequentialGroup().addComponent( lbStringCmpTresh ).addPreferredGap( javax.swing.LayoutStyle.ComponentPlacement.RELATED ).addComponent( tbCmpThres,
javax.swing.GroupLayout.PREFERRED_SIZE,
27,
javax.swing.GroupLayout.PREFERRED_SIZE ) ) ) ) ) ) ) ) ).addGap( 9,
9,
9 ) ) );
layout.linkSize( javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] { lbEncElements, lbEncKeyPay,
lbEncryptedData } );
layout.linkSize( javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] { lbAttackCombo, lbThresWrap,
lbWrappingAttack } );
layout.linkSize( javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] { lbOracleCombo,
lbStringCmpTresh, lbStringComp } );
layout.linkSize( javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] { cboxAttack,
cboxWrappingAttack, tbThresHoldWrap } );
layout.linkSize( javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] { cboxOracle, cboxStringComp,
tbCmpThres } );
layout.setVerticalGroup( layout.createParallelGroup( javax.swing.GroupLayout.Alignment.LEADING ).addGroup( layout.createSequentialGroup().addContainerGap().addComponent( lbTitleEncElements ).addGap( 18,
18,
18 ).addGroup( layout.createParallelGroup( javax.swing.GroupLayout.Alignment.LEADING ).addComponent( jScrollPane2,
javax.swing.GroupLayout.PREFERRED_SIZE,
65,
javax.swing.GroupLayout.PREFERRED_SIZE ).addGroup( layout.createSequentialGroup().addGroup( layout.createParallelGroup( javax.swing.GroupLayout.Alignment.LEADING ).addComponent( lbEncElements ).addComponent( cbIsTimeStamp ) ).addGap( 48,
48,
48 ).addGroup( layout.createParallelGroup( javax.swing.GroupLayout.Alignment.LEADING ).addComponent( jLabel1 ).addGroup( layout.createParallelGroup( javax.swing.GroupLayout.Alignment.BASELINE ).addComponent( lbAttackCombo,
javax.swing.GroupLayout.PREFERRED_SIZE,
20,
javax.swing.GroupLayout.PREFERRED_SIZE ).addComponent( cboxAttack,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE ).addComponent( lbOracleCombo,
javax.swing.GroupLayout.PREFERRED_SIZE,
20,
javax.swing.GroupLayout.PREFERRED_SIZE ).addComponent( cboxOracle,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE ) ) ).addPreferredGap( javax.swing.LayoutStyle.ComponentPlacement.RELATED ).addGroup( layout.createParallelGroup( javax.swing.GroupLayout.Alignment.LEADING ).addGroup( layout.createSequentialGroup().addGroup( layout.createParallelGroup( javax.swing.GroupLayout.Alignment.BASELINE ).addComponent( lbStringComp,
javax.swing.GroupLayout.PREFERRED_SIZE,
20,
javax.swing.GroupLayout.PREFERRED_SIZE ).addComponent( cboxStringComp,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE ) ).addPreferredGap( javax.swing.LayoutStyle.ComponentPlacement.RELATED ).addGroup( layout.createParallelGroup( javax.swing.GroupLayout.Alignment.BASELINE ).addComponent( lbStringCmpTresh ).addComponent( tbCmpThres,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE ) ) ).addGroup( layout.createSequentialGroup().addGroup( layout.createParallelGroup( javax.swing.GroupLayout.Alignment.BASELINE ).addComponent( lbWrappingAttack,
javax.swing.GroupLayout.PREFERRED_SIZE,
20,
javax.swing.GroupLayout.PREFERRED_SIZE ).addComponent( cboxWrappingAttack,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE ) ).addPreferredGap( javax.swing.LayoutStyle.ComponentPlacement.RELATED ).addGroup( layout.createParallelGroup( javax.swing.GroupLayout.Alignment.BASELINE ).addComponent( lbThresWrap ).addComponent( tbThresHoldWrap,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE ) ) ) ) ) ).addPreferredGap( javax.swing.LayoutStyle.ComponentPlacement.UNRELATED ).addComponent( lbEncKeyPay ).addPreferredGap( javax.swing.LayoutStyle.ComponentPlacement.UNRELATED ).addGroup( layout.createParallelGroup( javax.swing.GroupLayout.Alignment.LEADING ).addGroup( layout.createSequentialGroup().addComponent( cbEncKeyAttack ).addPreferredGap( javax.swing.LayoutStyle.ComponentPlacement.UNRELATED ).addComponent( cbEncKeyIsSigned ).addPreferredGap( javax.swing.LayoutStyle.ComponentPlacement.RELATED ).addComponent( cbEncKeyAddWrapp ).addPreferredGap( javax.swing.LayoutStyle.ComponentPlacement.RELATED ).addComponent( lbPKCS1Strategy ).addPreferredGap( javax.swing.LayoutStyle.ComponentPlacement.RELATED ).addComponent( cboxPKSC1Strategy,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE ) ).addComponent( jPanelEncKey,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE ) ).addGap( 13,
13,
13 ).addComponent( lbEncryptedData ).addPreferredGap( javax.swing.LayoutStyle.ComponentPlacement.UNRELATED ).addGroup( layout.createParallelGroup( javax.swing.GroupLayout.Alignment.LEADING ).addGroup( layout.createSequentialGroup().addComponent( tbEncDataCount,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE ).addPreferredGap( javax.swing.LayoutStyle.ComponentPlacement.RELATED ).addGroup( layout.createParallelGroup( javax.swing.GroupLayout.Alignment.TRAILING ).addComponent( btnNextEncData ).addComponent( btnPrevEncData,
javax.swing.GroupLayout.PREFERRED_SIZE,
19,
javax.swing.GroupLayout.PREFERRED_SIZE ) ).addPreferredGap( javax.swing.LayoutStyle.ComponentPlacement.RELATED ).addComponent( cbEncDataAttack ).addPreferredGap( javax.swing.LayoutStyle.ComponentPlacement.RELATED ).addComponent( cbEncDataIsSigned,
javax.swing.GroupLayout.PREFERRED_SIZE,
20,
javax.swing.GroupLayout.PREFERRED_SIZE ).addPreferredGap( javax.swing.LayoutStyle.ComponentPlacement.RELATED ).addComponent( cbEncDataAddWrapp ).addPreferredGap( javax.swing.LayoutStyle.ComponentPlacement.RELATED ).addComponent( cbEncTypeWeak ) ).addComponent( jPanelEncData,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE ) ).addGap( 14,
14,
14 ) ) );
}// </editor-fold>//GEN-END:initComponents
private void tbCmpThresFocusLost( java.awt.event.FocusEvent evt )
{// GEN-FIRST:event_tbCmpThresFocusLost
double dValue;
try
{
dValue = Double.parseDouble( tbCmpThres.getText() );
if ( 0.0 > dValue || 1.0 < dValue )
{
JOptionPane.showMessageDialog( null, "Only values from 0.0-1.0 allowed.", "Invalid Threshold value",
JOptionPane.OK_OPTION );
dValue = 1.0;
}
}
catch ( Exception e )
{
JOptionPane.showMessageDialog( null, "Only values from 0.0-1.0 allowed.", "Invalid Threshold value",
JOptionPane.OK_OPTION );
dValue = 1.0;
}
tbCmpThres.setText( "" + dValue );
AttackConfig attackConfig = ( (XMLEncryptionAttack) m_Plugin ).getAttackCfg();
attackConfig.setStringCmpThresHold( dValue );
}// GEN-LAST:event_tbCmpThresFocusLost
private void tbThresHoldWrapFocusLost( java.awt.event.FocusEvent evt )
{// GEN-FIRST:event_tbThresHoldWrapFocusLost
double dValue;
try
{
dValue = Double.parseDouble( tbThresHoldWrap.getText() );
if ( 0.0 > dValue || 1.0 < dValue )
{
JOptionPane.showMessageDialog( null, "Only values from 0.0-1.0 allowed.", "Invalid Threshold value",
JOptionPane.OK_OPTION );
dValue = 1.0;
}
}
catch ( Exception e )
{
JOptionPane.showMessageDialog( null, "Only values from 0.0-1.0 allowed.", "Invalid Threshold value",
JOptionPane.OK_OPTION );
dValue = 1.0;
}
tbThresHoldWrap.setText( "" + dValue );
AttackConfig attackConfig = ( (XMLEncryptionAttack) m_Plugin ).getAttackCfg();
attackConfig.setStringCmpWrappThreshold( dValue );
}// GEN-LAST:event_tbThresHoldWrapFocusLost
private void cbIsTimeStampActionPerformed( java.awt.event.ActionEvent evt )
{// GEN-FIRST:event_cbIsTimeStampActionPerformed
// TODO add your handling code here:
}// GEN-LAST:event_cbIsTimeStampActionPerformed
private void cbEncTypeWeakActionPerformed( java.awt.event.ActionEvent evt )
{// GEN-FIRST:event_cbEncTypeWeakActionPerformed
if ( null != m_Option && null != m_Plugin )
{
AttackConfig attackConfig = ( (XMLEncryptionAttack) m_Plugin ).getAttackCfg();
attackConfig.setIsEncTypeWeakness( cbEncTypeWeak.isSelected() );
}
}// GEN-LAST:event_cbEncTypeWeakActionPerformed
private void cbEncDataAddWrappActionPerformed( java.awt.event.ActionEvent evt )
{// GEN-FIRST:event_EncDataAddWrappActionPerformed
if ( null != m_Option && null != m_Plugin )
{
checkIsAddDataWrap();
}
}// GEN-LAST:event_EncDataAddWrappActionPerformed
private void cboxAttackItemStateChanged( java.awt.event.ItemEvent evt )
{// GEN-FIRST:event_AttackComboItemStateChanged
if ( m_Plugin != null && cboxAttack.getSelectedIndex() >= 0 )
{
AttackConfig attackConfig = ( (XMLEncryptionAttack) m_Plugin ).getAttackCfg();
attackConfig.setXMLEncryptionAttack( (XMLEncryptionAttackMode) cboxAttack.getSelectedItem() );
setChosenPayloads( NO_CHOSEN_PAY, NO_CHOSEN_PAY );
cbEncKeyAttack.setSelected( false );
cbEncDataAttack.setSelected( false );
( (XMLEncryptionAttack) m_Plugin ).checkState();
}
}// GEN-LAST:event_AttackComboItemStateChanged
private void setChosenPayloads( AbstractEncryptionElement attackPay, AbstractEncryptionElement wrapPay )
{
AttackConfig attackConfig = ( (XMLEncryptionAttack) m_Plugin ).getAttackCfg();
initAddWrapProperties( attackConfig );
attackConfig.setChosenAttackPayload( attackPay );
attackConfig.setChosenWrapPayload( wrapPay );
if ( null != attackPay )
attackPay.getAttackProperties().setIsAdditionalWrap( false );
if ( null != wrapPay )
wrapPay.getAttackProperties().setIsAdditionalWrap( false );
if ( null != wrapPay )
m_Option.setSigWrappPayload( wrapPay );
checkIsAddDataWrap();
}
private void initAddWrapProperties( AttackConfig attackConfig )
{
if ( null != attackConfig.getChosenWrapPayload() )
{
if ( !attackConfig.getChosenWrapPayload().getAttackProperties().isSigned() )
{
m_Option.setIsAddWrap( false, attackConfig.getChosenWrapPayload() );
cbEncKeyAddWrapp.setSelected( false );
cbEncDataAddWrapp.setSelected( false );
}
if ( !attackConfig.getChosenAttackPayload().getAttackProperties().isSigned() )
{
m_Option.setIsAddWrap( false, attackConfig.getChosenAttackPayload() );
cbEncKeyAddWrapp.setSelected( false );
cbEncDataAddWrapp.setSelected( false );
}
}
}
private void cboxOracleItemStateChanged( java.awt.event.ItemEvent evt )
{// GEN-FIRST:event_OracleComboItemStateChanged
if ( m_Plugin != null && cboxOracle.getSelectedIndex() >= 0 )
{
AttackConfig attackConfig = ( (XMLEncryptionAttack) m_Plugin ).getAttackCfg();
attackConfig.setOracleMode( (OracleMode) cboxOracle.getSelectedItem() );
}
}// GEN-LAST:event_OracleComboItemStateChanged
private void cboxWrappingAttackItemStateChanged( java.awt.event.ItemEvent evt )
{// GEN-FIRST:event_WrappingAttackComboItemStateChanged
if ( m_Plugin != null && cboxWrappingAttack.getSelectedIndex() >= 0 )
{
WrappingAttackMode wrapMode = (WrappingAttackMode) cboxWrappingAttack.getSelectedItem();
if ( ENCRYPTION == wrapMode )
{
setAdditionalWrapEnabledState( true );
}
else
{
setAdditionalWrapEnabledState( false );
}
setAdditionalWrapSelectState( false );
AttackConfig attackConfig = ( (XMLEncryptionAttack) m_Plugin ).getAttackCfg();
attackConfig.setWrappingMode( (WrappingAttackMode) cboxWrappingAttack.getSelectedItem() );
checkIsAddDataWrap();
}
}// GEN-LAST:event_WrappingAttackComboItemStateChanged
private void setAdditionalWrapEnabledState( boolean state )
{
cbEncDataAddWrapp.setEnabled( state );
cbEncKeyAddWrapp.setEnabled( state );
}
private void setAdditionalWrapSelectState( boolean state )
{
cbEncDataAddWrapp.setSelected( state );
cbEncKeyAddWrapp.setSelected( state );
}
private void cbEncKeyAttackActionPerformed( java.awt.event.ActionEvent evt )
{// GEN-FIRST:event_IsEncKeyAttackActionPerformed
if ( cbEncKeyAttack.isSelected() && null != m_Option && null != m_Plugin )
{
AbstractEncryptionElement selctEl = getSelectedListElement();
if ( selctEl instanceof EncryptedKeyElement )
{
List<AbstractRefElement> encRefs = ( (EncryptedKeyElement) selctEl ).getReferenceElementList();
setChosenPayloads( selctEl, selctEl );
( (EncryptedKeyElement) selctEl ).setWrappingEncDataIndex( m_CurrIndexOfEncKeyEncDataElement );
}
else
{
setChosenPayloads( NO_CHOSEN_PAY, NO_CHOSEN_PAY );
cbEncKeyAttack.setSelected( false );
}
cbEncDataAttack.setSelected( false );
}
else if ( null != m_Plugin )
{
setChosenPayloads( NO_CHOSEN_PAY, NO_CHOSEN_PAY );
}
( (XMLEncryptionAttack) m_Plugin ).checkState();
}// GEN-LAST:event_IsEncKeyAttackActionPerformed
private void cbEncDataAttackActionPerformed( java.awt.event.ActionEvent evt )
{// GEN-FIRST:event_IsEncDataAttackActionPerformed
if ( cbEncDataAttack.isSelected() && null != m_Option && null != m_Plugin )
{
// EncData Only
if ( tbEncryptedKey.getText().equals( NO_ENCKEY_ELEMENTS ) )
{
if ( getSelectedListElement() instanceof EncryptedDataElement )
{
setChosenPayloads( getSelectedListElement(), getSelectedListElement() );
}
else
{
setChosenPayloads( NO_CHOSEN_PAY, NO_CHOSEN_PAY );
cbEncDataAttack.setSelected( false );
}
}
else if ( getSelectedListElement() instanceof EncryptedKeyElement ) // encData of an encKey element
{
EncryptedKeyElement encKey = (EncryptedKeyElement) getSelectedListElement();
List<AbstractRefElement> dataRef = encKey.getReferenceElementList();
if ( dataRef.size() > m_CurrIndexOfEncKeyEncDataElement )
{
encKey.setWrappingEncDataIndex( m_CurrIndexOfEncKeyEncDataElement );
AbstractEncryptionElement refPay =
( (DataReferenceElement) dataRef.get( m_CurrIndexOfEncKeyEncDataElement ) ).getRefEncData();
setChosenPayloads( refPay, encKey );
}
else
throw new IllegalArgumentException( "curr data index smaller than key reference list size" );
}
cbEncKeyAttack.setSelected( false );
}
else if ( null != m_Plugin )
{
setChosenPayloads( NO_CHOSEN_PAY, NO_CHOSEN_PAY );
}
( (XMLEncryptionAttack) m_Plugin ).checkState();
}// GEN-LAST:event_IsEncDataAttackActionPerformed
private void cboxStringCompItemStateChanged( java.awt.event.ItemEvent evt )
{// GEN-FIRST:event_StringCompComboItemStateChanged
if ( m_Plugin != null && cboxStringComp.getSelectedIndex() >= 0 )
{
AttackConfig attackConfig = ( (XMLEncryptionAttack) m_Plugin ).getAttackCfg();
attackConfig.setSimStringStrategyType( (SimStringStrategy) cboxStringComp.getSelectedItem() );
}
}// GEN-LAST:event_StringCompComboItemStateChanged
private void listEncryptedElValueChanged( javax.swing.event.ListSelectionEvent evt )
{// GEN-FIRST:event_EncryptedElListValueChanged
setEncryptedElementText();
}// GEN-LAST:event_EncryptedElListValueChanged
private void btnPrevEncDataActionPerformed( java.awt.event.ActionEvent evt )
{// GEN-FIRST:event_PrevEncDataBtnActionPerformed
if ( getSelectedListElement() instanceof EncryptedKeyElement && null != m_Option && null != m_Plugin )
{
EncryptedKeyElement encKey = (EncryptedKeyElement) getSelectedListElement();
List<AbstractRefElement> dataRef = encKey.getReferenceElementList();
m_CurrIndexOfEncKeyEncDataElement--;
if ( 0 > m_CurrIndexOfEncKeyEncDataElement )
m_CurrIndexOfEncKeyEncDataElement = 0;
if ( dataRef.size() > m_CurrIndexOfEncKeyEncDataElement && 0 <= m_CurrIndexOfEncKeyEncDataElement )
{
setEncryptedElementText();
}
else
throw new IllegalArgumentException( "enckey without encData" );
}
}// GEN-LAST:event_PrevEncDataBtnActionPerformed
private void btnNextEncDataBtnActionPerformed( java.awt.event.ActionEvent evt )
{// GEN-FIRST:event_NextEncDataBtnBtnActionPerformed
if ( getSelectedListElement() instanceof EncryptedKeyElement && null != m_Option && null != m_Plugin )
{
EncryptedKeyElement encKey = (EncryptedKeyElement) getSelectedListElement();
List<AbstractRefElement> dataRef = encKey.getReferenceElementList();
m_CurrIndexOfEncKeyEncDataElement++;
if ( dataRef.size() <= m_CurrIndexOfEncKeyEncDataElement )
m_CurrIndexOfEncKeyEncDataElement = 0;
if ( dataRef.size() > m_CurrIndexOfEncKeyEncDataElement && 0 <= m_CurrIndexOfEncKeyEncDataElement )
{
setEncryptedElementText();
}
else
throw new IllegalArgumentException( "enckey without encData" );
}
}// GEN-LAST:event_NextEncDataBtnBtnActionPerformed
private void cboxPKSC1StrategyActionPerformed( java.awt.event.ActionEvent evt )
{// GEN-FIRST:event_PKSC1StrategyCmbBoxActionPerformed
if ( m_Plugin != null && cboxPKSC1Strategy.getSelectedIndex() >= 0 )
{
AttackConfig attackConfig = ( (XMLEncryptionAttack) m_Plugin ).getAttackCfg();
attackConfig.getPKCS1AttackCfg().setPKCS1Strategy( (PKCS1Strategy) cboxPKSC1Strategy.getSelectedItem() );
}
}// GEN-LAST:event_PKSC1StrategyCmbBoxActionPerformed
private void cbEncKeyAddWrappActionPerformed( java.awt.event.ActionEvent evt )
{// GEN-FIRST:event_EncKeyAddWrappActionPerformed
if ( null != m_Option && null != m_Plugin )
{
checkIsAddDataWrap();
}
}
public void checkIsAddDataWrap()
{
AttackConfig attackConfig = ( (XMLEncryptionAttack) m_Plugin ).getAttackCfg();
AbstractEncryptionElement wrapPay = attackConfig.getChosenWrapPayload();
AbstractEncryptionElement attackPay = attackConfig.getChosenAttackPayload();
// for cbc attack, too
if ( null != attackPay && null != wrapPay )
{
if ( wrapPay instanceof EncryptedKeyElement || attackPay instanceof EncryptedKeyElement )
{
if ( !cbEncKeyIsSigned.isSelected()
&& cbEncKeyAddWrapp.isEnabled()
&& ( cbEncDataAddWrapp.isSelected() || attackPay instanceof EncryptedKeyElement || cbEncDataIsSigned.isSelected() ) ) // encKey
{
m_Option.setIsAddWrap( cbEncKeyAddWrapp.isSelected(), wrapPay );
}
else
{
cbEncKeyAddWrapp.setSelected( false );
}
}
if ( wrapPay instanceof EncryptedDataElement || attackPay instanceof EncryptedDataElement )
{
if ( !cbEncDataIsSigned.isSelected() && cbEncDataAddWrapp.isEnabled() )
{
if ( wrapPay instanceof EncryptedDataElement )
m_Option.setIsAddWrap( cbEncDataAddWrapp.isSelected(), wrapPay );
else
m_Option.setIsAddWrap( cbEncDataAddWrapp.isSelected(), attackPay );
}
else
{
cbEncDataAddWrapp.setSelected( false );
}
}
else
{
cbEncDataAddWrapp.setSelected( false );
}
}
else
{
setAdditionalWrapSelectState( false );
}
}// GEN-LAST:event_EncKeyAddWrappActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btnNextEncData;
private javax.swing.JButton btnPrevEncData;
private javax.swing.JCheckBox cbEncDataAddWrapp;
private javax.swing.JCheckBox cbEncDataAttack;
private javax.swing.JCheckBox cbEncDataIsSigned;
private javax.swing.JCheckBox cbEncKeyAddWrapp;
private javax.swing.JCheckBox cbEncKeyAttack;
private javax.swing.JCheckBox cbEncKeyIsSigned;
private javax.swing.JCheckBox cbEncTypeWeak;
private javax.swing.JCheckBox cbIsTimeStamp;
private javax.swing.JComboBox cboxAttack;
private javax.swing.JComboBox cboxOracle;
private javax.swing.JComboBox cboxPKSC1Strategy;
private javax.swing.JComboBox cboxStringComp;
private javax.swing.JComboBox cboxWrappingAttack;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanelEncData;
private javax.swing.JPanel jPanelEncKey;
private org.fife.ui.rtextarea.RTextScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private org.fife.ui.rtextarea.RTextScrollPane jScrollPane3;
private javax.swing.JLabel lbAttackCombo;
private javax.swing.JLabel lbEncElements;
private javax.swing.JLabel lbEncKeyPay;
private javax.swing.JLabel lbEncryptedData;
private javax.swing.JLabel lbOracleCombo;
private javax.swing.JLabel lbPKCS1Strategy;
private javax.swing.JLabel lbStringCmpTresh;
private javax.swing.JLabel lbStringComp;
private javax.swing.JLabel lbThresWrap;
private javax.swing.JLabel lbTitleEncElements;
private javax.swing.JLabel lbWrappingAttack;
private javax.swing.JList listEncryptedEl;
private javax.swing.JTextField tbCmpThres;
private javax.swing.JTextField tbEncDataCount;
private org.fife.ui.rsyntaxtextarea.RSyntaxTextArea tbEncryptedData;
private org.fife.ui.rsyntaxtextarea.RSyntaxTextArea tbEncryptedKey;
private javax.swing.JTextField tbThresHoldWrap;
// End of variables declaration//GEN-END:variables
@Override
public void bindingDoUnbind()
{
// throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose
// Tools | Templates.
}
@Override
public AbstractOption getUsedOption()
{
return m_Option;
}
}