/**
* *********************************************************************
*
* $CVSHeader$
*
* This file is part of WebScarab, an Open Web Application Security Project
* utility. For details, please see http://www.owasp.org/
*
* Copyright (c) 2010 FedICT Copyright (c) 2010 Frank Cornelis
* <info@frankcornelis.be>
*
* 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., 59 Temple
* Place - Suite 330, Boston, MA 02111-1307, USA.
*
* Getting Source ==============
*
* Source for this application is maintained at Sourceforge.net, a repository
* for free software projects.
*
* For details, please see http://www.sourceforge.net/projects/owasp
*
*/
package org.owasp.webscarab.plugin.saml.swing;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ItemEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.security.KeyStore.PrivateKeyEntry;
import java.security.cert.X509Certificate;
import java.util.List;
import java.util.logging.Logger;
import javax.swing.Action;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.table.TableModel;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeSelectionModel;
import org.owasp.webscarab.model.ConversationID;
import org.owasp.webscarab.model.HttpUrl;
import org.owasp.webscarab.plugin.saml.Occurences;
import org.owasp.webscarab.plugin.saml.Saml;
import org.owasp.webscarab.plugin.saml.SamlCertificateRepository;
import org.owasp.webscarab.plugin.saml.SamlModel;
import org.owasp.webscarab.plugin.saml.SamlProxy;
import org.owasp.webscarab.plugin.saml.SamlProxyListener;
import org.owasp.webscarab.plugin.saml.SamlSignatureException;
import org.owasp.webscarab.plugin.saml.SignatureType;
import org.owasp.webscarab.plugin.saml.Wrapper;
import org.owasp.webscarab.ui.swing.CertificateManager;
import org.owasp.webscarab.ui.swing.ColumnWidthTracker;
import org.owasp.webscarab.ui.swing.ConversationTableModel;
import org.owasp.webscarab.ui.swing.ShowConversationAction;
import org.owasp.webscarab.ui.swing.SwingPluginUI;
import org.owasp.webscarab.util.swing.ColumnDataModel;
import org.owasp.webscarab.util.swing.TableSorter;
import org.owasp.webscarab.util.swing.TreeUtil;
/**
* WebScarab SAML plugin UI.
*
* @author Frank Cornelis
*/
public class SamlPanel extends javax.swing.JPanel implements SwingPluginUI, SamlProxyListener {
private Logger _logger = Logger.getLogger(getClass().getName());
private final Saml saml;
private final SamlModel samlModel;
private final ShowConversationAction showConversationAction;
private final SamlReplayConversationAction samlReplayConversationAction;
private final SamlExportConversationAction samlExportConversationAction;
private final OpenBrowserAction openBrowserAction;
private final AttributesTableModel attributesTableModel;
private final AttributesTableModel injectAttributesTableModel;
private final AttributesTableModel encryptedAttributesTableModel;
private final SamlCertificateRepository samlCertificateRepository;
private final CertificateManager certificateManager;
/**
* Creates new form SamlPanel
*/
public SamlPanel(Saml saml) {
this.saml = saml;
this.samlModel = saml.getModel();
initComponents();
ConversationTableModel samlTableModel = new ConversationTableModel(
this.samlModel.getSamlConversationModel());
ColumnWidthTracker.getTracker("SAMLTable").addTable(this.samlTable);
samlTableModel.addColumn(new ColumnDataModel<ConversationID>("SAML Type", String.class) {
@Override
public Object getValue(ConversationID key) {
return SamlPanel.this.samlModel.getSAMLType(key);
}
});
TableSorter sorterSamlTableModel = new TableSorter(samlTableModel);
this.samlTable.setModel(sorterSamlTableModel);
this.showConversationAction = new ShowConversationAction(this.samlModel.getSamlConversationModel());
this.samlPopupMenu.add(new JMenuItem(this.showConversationAction));
this.samlReplayConversationAction = new SamlReplayConversationAction(this.saml.getSamlProxy());
this.samlPopupMenu.add(new JMenuItem(this.samlReplayConversationAction));
this.samlExportConversationAction = new SamlExportConversationAction(this.saml.getModel());
this.samlPopupMenu.add(new JMenuItem(this.samlExportConversationAction));
this.openBrowserAction = new OpenBrowserAction(this.saml.getModel());
this.samlPopupMenu.add(new JMenuItem(this.openBrowserAction));
this.saml.getSamlProxy().addSamlProxyListener(this);
this.attributesTableModel = new AttributesTableModel();
this.attributesTable.setModel(this.attributesTableModel);
this.injectAttributesTableModel = new AttributesTableModel();
this.injectAttributesTable.setModel(this.injectAttributesTableModel);
this.encryptedAttributesTableModel = new AttributesTableModel();
this.encryptedAttributesTable.setModel(this.encryptedAttributesTableModel);
this.samlCertificateRepository = new SamlCertificateRepository();
this.samlCertificateRepository.addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent event) {
String propertyName = event.getPropertyName();
if (propertyName.equals(SamlCertificateRepository.SELECTED_KEY)) {
String fingerprint = (String) event.getNewValue();
SamlPanel.this.keyTextField.setText(fingerprint);
} else if (propertyName.equals(SamlCertificateRepository.SELECTED_KEY_ENTRY)) {
PrivateKeyEntry privateKeyEntry = (PrivateKeyEntry) event.getNewValue();
SamlPanel.this.saml.getSamlProxy().setPrivateKeyEntry(privateKeyEntry);
}
}
});
this.certificateManager = new CertificateManager(this.samlCertificateRepository);
addTableListeners();
addTreeListeners();
resetDisplay();
}
private void addTreeListeners() {
this.certPathTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
this.certPathTree.addTreeSelectionListener(new TreeSelectionListener() {
@Override
public void valueChanged(TreeSelectionEvent e) {
Object node = SamlPanel.this.certPathTree.getLastSelectedPathComponent();
if (null == node) {
return;
}
if (node instanceof CertPathTreeModel.TreeNode) {
CertPathTreeModel.TreeNode treeNode = (CertPathTreeModel.TreeNode) node;
X509Certificate certificate = treeNode.getCertificate();
SamlPanel.this.certDetailTextPanel.setText(null, certificate.toString());
}
}
});
}
private void addTableListeners() {
this.samlTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
if (e.getValueIsAdjusting()) {
return;
}
int row = SamlPanel.this.samlTable.getSelectedRow();
TableModel tm = SamlPanel.this.samlTable.getModel();
ConversationID id;
if (row > -1) {
id = (ConversationID) tm.getValueAt(
row, 0); // UGLY hack! FIXME!!!!
SamlPanel.this.displaySaml(id);
} else {
id = null;
SamlPanel.this.resetDisplay();
}
SamlPanel.this.showConversationAction.putValue("CONVERSATION", id);
boolean samlResponse = SamlPanel.this.samlModel.isSAMLResponse(id);
ConversationID samlResponseId;
if (samlResponse) {
samlResponseId = id;
} else {
samlResponseId = null;
}
SamlPanel.this.samlReplayConversationAction.putValue("SAML-RESPONSE", samlResponseId);
SamlPanel.this.samlExportConversationAction.putValue("CONVERSATION", id);
SamlPanel.this.openBrowserAction.putValue("CONVERSATION", id);
}
});
this.samlTable.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
maybeShowPopup(e);
}
@Override
public void mouseReleased(MouseEvent e) {
maybeShowPopup(e);
}
private void maybeShowPopup(MouseEvent e) {
int row = SamlPanel.this.samlTable.rowAtPoint(e.getPoint());
SamlPanel.this.samlTable.getSelectionModel().setSelectionInterval(row, row);
if (e.isPopupTrigger()) {
SamlPanel.this.samlPopupMenu.show(e.getComponent(), e.getX(), e.getY());
}
}
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2 && e.getButton() == MouseEvent.BUTTON1) {
ActionEvent actionEvent = new ActionEvent(SamlPanel.this.samlTable, 0, (String) SamlPanel.this.showConversationAction.getValue(Action.ACTION_COMMAND_KEY));
SamlPanel.this.showConversationAction.actionPerformed(actionEvent);
}
}
});
this.injectAttributesTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
int row = SamlPanel.this.injectAttributesTable.getSelectedRow();
if (row > -1) {
SamlPanel.this.removeInjectAttributeButton.setEnabled(true);
} else {
SamlPanel.this.removeInjectAttributeButton.setEnabled(false);
}
}
});
this.injectAttributesTableModel.addTableModelListener(new TableModelListener() {
@Override
public void tableChanged(TableModelEvent e) {
SamlPanel.this._logger.fine("injectAttributesTableModel changed");
SamlProxy samlProxy = SamlPanel.this.saml.getSamlProxy();
samlProxy.setInjectionAttributes(SamlPanel.this.injectAttributesTableModel.getAttributes());
}
});
}
private void resetDisplay() {
this.rawPanel.setText(null, "");
this.textPanel.setText(null, "");
this.xmlPanel.setBytes(null, null);
this.relayStatePanel.setText(null, "");
this.certDetailTextPanel.setText(null, "");
this.signatureValidityLabel.setText("");
this.certPathTree.setModel(
new DefaultTreeModel(new DefaultMutableTreeNode("No certificate path")));
this.htmlFormConversationIdLabel.setText("Unknown");
this.htmlFormTextPanel.setText(null, "");
this.htmlFormXmlPanel.setBytes(null, null);
this.browserPostSslCheckBox.setSelected(false);
this.htmlFormSslCheckBox.setSelected(false);
this.signedMessageCheckBox.setSelected(false);
this.samlVersionLabel.setText("Unknown");
this.destinationIndicationCheckBox.setSelected(false);
this.assertionsDigestedCheckBox.setSelected(false);
this.validityIntervalIndicationCheckBox.setSelected(false);
this.attributesTableModel.resetAttributes();
this.encryptedAttributesTableModel.resetAttributes();
}
private void displaySaml(ConversationID id) {
resetDisplay();
String encodedSamlMessage = this.samlModel.getEncodedSAMLMessage(id);
this.rawPanel.setText(null, encodedSamlMessage);
String decodedSamlMessage = this.samlModel.getDecodedSAMLMessage(encodedSamlMessage);
this.textPanel.setText(null, decodedSamlMessage);
this.xmlPanel.setBytes("text/xml", decodedSamlMessage.getBytes());
String relayState = this.samlModel.getRelayState(id);
this.relayStatePanel.setText(null, relayState);
displaySignature(id);
ConversationID htmlFormConversationID = this.samlModel.findCorrespondingHTMLFormConversation(id);
if (null == htmlFormConversationID) {
this.htmlFormConversationIdLabel.setText("Not found");
} else {
this.htmlFormConversationIdLabel.setText(htmlFormConversationID.toString());
byte[] content = this.samlModel.getResponseContent(htmlFormConversationID);
this.htmlFormTextPanel.setBytes("UTF-8", content);
this.htmlFormXmlPanel.setBytes("text/html", content);
this.browserPostSslCheckBox.setSelected(this.samlModel.isOverSSL(id));
this.htmlFormSslCheckBox.setSelected(this.samlModel.isOverSSL(htmlFormConversationID));
}
int samlVersion = this.samlModel.getSAMLVersion(id);
String samlVersionStr;
switch (samlVersion) {
case SamlModel.SAML_VERSION_1_1:
samlVersionStr = "1.1";
break;
case SamlModel.SAML_VERSION_2:
samlVersionStr = "2.0";
break;
default:
samlVersionStr = "Unknown";
break;
}
this.samlVersionLabel.setText(samlVersionStr);
this.destinationIndicationCheckBox.setSelected(this.samlModel.hasDestinationIndication(id));
this.assertionsDigestedCheckBox.setSelected(this.samlModel.protocolSignatureDigestsAssertions(id));
this.validityIntervalIndicationCheckBox.setSelected(this.samlModel.hasValidityIntervalIndication(id));
this.attributesTableModel.setAttributes(this.samlModel.getSAMLAttributes(id));
if (this.samlModel.hasEncryptedAttributes(id)) {
this.decryptButton.setEnabled(true);
} else {
this.decryptButton.setEnabled(false);
}
}
private void displaySignature(ConversationID id) {
List<X509Certificate> certificateChain;
try {
certificateChain = this.samlModel.verifySAMLProtocolSignature(id);
} catch (SamlSignatureException ex) {
this.signatureValidityLabel.setText(ex.getMessage());
this.signedMessageCheckBox.setSelected(false);
return;
}
this.signatureValidityLabel.setText("valid");
this.signedMessageCheckBox.setSelected(true);
this.certPathTree.setModel(new CertPathTreeModel(certificateChain));
TreeUtil.expandAll(this.certPathTree, true);
}
/**
* 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.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
samlPopupMenu = new javax.swing.JPopupMenu();
subjectButtonGroup = new javax.swing.ButtonGroup();
wrapperButtonGroup = new javax.swing.ButtonGroup();
signatureButtonGroup = new javax.swing.ButtonGroup();
attributeButtonGroup = new javax.swing.ButtonGroup();
jSplitPane1 = new javax.swing.JSplitPane();
jTabbedPane1 = new javax.swing.JTabbedPane();
rawPanel = new org.owasp.webscarab.ui.swing.editors.TextPanel();
textPanel = new org.owasp.webscarab.ui.swing.editors.TextPanel();
xmlPanel = new org.owasp.webscarab.ui.swing.editors.XMLPanel();
signaturePanel = new javax.swing.JPanel();
jSplitPane2 = new javax.swing.JSplitPane();
jPanel2 = new javax.swing.JPanel();
jLabel5 = new javax.swing.JLabel();
certDetailTextPanel = new org.owasp.webscarab.ui.swing.editors.TextPanel();
jPanel3 = new javax.swing.JPanel();
jScrollPane2 = new javax.swing.JScrollPane();
certPathTree = new javax.swing.JTree();
jPanel4 = new javax.swing.JPanel();
jLabel6 = new javax.swing.JLabel();
signatureValidityLabel = new javax.swing.JLabel();
attributesPanel = new javax.swing.JPanel();
jScrollPane3 = new javax.swing.JScrollPane();
attributesTable = new javax.swing.JTable();
encryptedAttributesPanel = new javax.swing.JPanel();
jPanel29 = new javax.swing.JPanel();
jLabel22 = new javax.swing.JLabel();
attributeKeyTextField = new javax.swing.JTextField();
decryptButton = new javax.swing.JButton();
jScrollPane4 = new javax.swing.JScrollPane();
encryptedAttributesTable = new javax.swing.JTable();
htmlFormPanel = new javax.swing.JPanel();
jPanel5 = new javax.swing.JPanel();
jLabel7 = new javax.swing.JLabel();
htmlFormConversationIdLabel = new javax.swing.JLabel();
jTabbedPane2 = new javax.swing.JTabbedPane();
htmlFormTextPanel = new org.owasp.webscarab.ui.swing.editors.TextPanel();
htmlFormXmlPanel = new org.owasp.webscarab.ui.swing.editors.XMLPanel();
relayStatePanel = new org.owasp.webscarab.ui.swing.editors.TextPanel();
analysisPanel = new javax.swing.JPanel();
analysisDataPanel = new javax.swing.JPanel();
jLabel8 = new javax.swing.JLabel();
browserPostSslCheckBox = new javax.swing.JCheckBox();
jLabel9 = new javax.swing.JLabel();
htmlFormSslCheckBox = new javax.swing.JCheckBox();
jLabel10 = new javax.swing.JLabel();
signedMessageCheckBox = new javax.swing.JCheckBox();
jLabel11 = new javax.swing.JLabel();
samlVersionLabel = new javax.swing.JLabel();
jLabel12 = new javax.swing.JLabel();
destinationIndicationCheckBox = new javax.swing.JCheckBox();
jLabel13 = new javax.swing.JLabel();
assertionsDigestedCheckBox = new javax.swing.JCheckBox();
jLabel18 = new javax.swing.JLabel();
validityIntervalIndicationCheckBox = new javax.swing.JCheckBox();
aboutPanel = new javax.swing.JPanel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jPanel1 = new javax.swing.JPanel();
jTabbedPane3 = new javax.swing.JTabbedPane();
jPanel8 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
samlTable = new javax.swing.JTable();
jPanel6 = new javax.swing.JPanel();
jPanel10 = new javax.swing.JPanel();
jPanel7 = new javax.swing.JPanel();
jPanel11 = new javax.swing.JPanel();
corruptSignatureCheckBox = new javax.swing.JCheckBox();
removeSignatureCheckBox = new javax.swing.JCheckBox();
removeAssertionSignatureCheckBox = new javax.swing.JCheckBox();
jPanel13 = new javax.swing.JPanel();
jPanel14 = new javax.swing.JPanel();
injectRemoteReferenceCheckBox = new javax.swing.JCheckBox();
jLabel14 = new javax.swing.JLabel();
injectionUriTextField = new javax.swing.JTextField();
jPanel27 = new javax.swing.JPanel();
jPanel28 = new javax.swing.JPanel();
signCheckBox = new javax.swing.JCheckBox();
jLabel21 = new javax.swing.JLabel();
selectKeyButton = new javax.swing.JButton();
keyTextField = new javax.swing.JTextField();
jPanel30 = new javax.swing.JPanel();
jPanel32 = new javax.swing.JPanel();
signWrapAttackCheckBox = new javax.swing.JCheckBox();
jPanel35 = new javax.swing.JPanel();
protocolSignatureRadioButton = new javax.swing.JRadioButton();
assertionSignatureRadioButton = new javax.swing.JRadioButton();
jPanel34 = new javax.swing.JPanel();
dsObjectWrapperRadioButton = new javax.swing.JRadioButton();
samlpExtWrapperRadioButton = new javax.swing.JRadioButton();
duplicateAssertionRadioButton = new javax.swing.JRadioButton();
jPanel33 = new javax.swing.JPanel();
renameIdCheckBox = new javax.swing.JCheckBox();
renameAssertionIdCheckBox = new javax.swing.JCheckBox();
renameLastAssertionIdCheckBox = new javax.swing.JCheckBox();
jPanel19 = new javax.swing.JPanel();
jPanel20 = new javax.swing.JPanel();
jPanel15 = new javax.swing.JPanel();
jPanel36 = new javax.swing.JPanel();
injectAttributeCheckBox = new javax.swing.JCheckBox();
jScrollPane6 = new javax.swing.JScrollPane();
injectAttributesTable = new javax.swing.JTable();
jPanel37 = new javax.swing.JPanel();
addInjectAttributeButton = new javax.swing.JButton();
removeInjectAttributeButton = new javax.swing.JButton();
jPanel16 = new javax.swing.JPanel();
jLabel15 = new javax.swing.JLabel();
allAttributeRadioButton = new javax.swing.JRadioButton();
firstAttributeRadioButton = new javax.swing.JRadioButton();
lastAttributeRadioButton = new javax.swing.JRadioButton();
jPanel17 = new javax.swing.JPanel();
jPanel18 = new javax.swing.JPanel();
injectSubjectCheckBox = new javax.swing.JCheckBox();
jLabel17 = new javax.swing.JLabel();
injectionSubjectTextField = new javax.swing.JTextField();
jPanel31 = new javax.swing.JPanel();
allSubjectRadioButton = new javax.swing.JRadioButton();
firstSubjectRadioButton = new javax.swing.JRadioButton();
lastSubjectRadioButton = new javax.swing.JRadioButton();
jLabel23 = new javax.swing.JLabel();
jPanel23 = new javax.swing.JPanel();
jPanel24 = new javax.swing.JPanel();
injectPublicDoctypeCheckBox = new javax.swing.JCheckBox();
jLabel19 = new javax.swing.JLabel();
dtdUriTextField = new javax.swing.JTextField();
jPanel25 = new javax.swing.JPanel();
jPanel26 = new javax.swing.JPanel();
injectRelayStateCheckBox = new javax.swing.JCheckBox();
jLabel20 = new javax.swing.JLabel();
relayStateTextField = new javax.swing.JTextField();
jPanel21 = new javax.swing.JPanel();
jPanel22 = new javax.swing.JPanel();
jPanel9 = new javax.swing.JPanel();
jPanel12 = new javax.swing.JPanel();
samlReplayCheckBox = new javax.swing.JCheckBox();
jLabel1 = new javax.swing.JLabel();
samlReplayLabel = new javax.swing.JLabel();
setLayout(new java.awt.BorderLayout());
jSplitPane1.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
jSplitPane1.setResizeWeight(0.5);
jTabbedPane1.addTab("Raw", rawPanel);
jTabbedPane1.addTab("Text", textPanel);
jTabbedPane1.addTab("XML", xmlPanel);
signaturePanel.setLayout(new java.awt.BorderLayout());
jSplitPane2.setResizeWeight(0.5);
jPanel2.setLayout(new java.awt.BorderLayout());
jLabel5.setText("Certificate Details");
jPanel2.add(jLabel5, java.awt.BorderLayout.PAGE_START);
jPanel2.add(certDetailTextPanel, java.awt.BorderLayout.CENTER);
jSplitPane2.setRightComponent(jPanel2);
jPanel3.setLayout(new java.awt.BorderLayout());
certPathTree.setBorder(javax.swing.BorderFactory.createTitledBorder("Certificate Path"));
jScrollPane2.setViewportView(certPathTree);
jPanel3.add(jScrollPane2, java.awt.BorderLayout.CENTER);
jPanel4.setLayout(new javax.swing.BoxLayout(jPanel4, javax.swing.BoxLayout.LINE_AXIS));
jLabel6.setText("Protocol Signature Validity: ");
jPanel4.add(jLabel6);
signatureValidityLabel.setText("Unknown");
jPanel4.add(signatureValidityLabel);
jPanel3.add(jPanel4, java.awt.BorderLayout.PAGE_START);
jSplitPane2.setLeftComponent(jPanel3);
signaturePanel.add(jSplitPane2, java.awt.BorderLayout.CENTER);
jTabbedPane1.addTab("Protocol Signature", signaturePanel);
attributesPanel.setLayout(new java.awt.BorderLayout());
attributesTable.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jScrollPane3.setViewportView(attributesTable);
attributesPanel.add(jScrollPane3, java.awt.BorderLayout.CENTER);
jTabbedPane1.addTab("Attributes", attributesPanel);
encryptedAttributesPanel.setLayout(new java.awt.BorderLayout());
jPanel29.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jLabel22.setText("AES-128 key (hex): ");
jPanel29.add(jLabel22);
attributeKeyTextField.setColumns(32);
jPanel29.add(attributeKeyTextField);
decryptButton.setText("Decrypt");
decryptButton.setEnabled(false);
decryptButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
decryptButtonActionPerformed(evt);
}
});
jPanel29.add(decryptButton);
encryptedAttributesPanel.add(jPanel29, java.awt.BorderLayout.PAGE_START);
encryptedAttributesTable.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jScrollPane4.setViewportView(encryptedAttributesTable);
encryptedAttributesPanel.add(jScrollPane4, java.awt.BorderLayout.CENTER);
jTabbedPane1.addTab("Encrypted Attributes", encryptedAttributesPanel);
htmlFormPanel.setLayout(new java.awt.BorderLayout());
jPanel5.setLayout(new javax.swing.BoxLayout(jPanel5, javax.swing.BoxLayout.LINE_AXIS));
jLabel7.setText("Corresponding HTML Form Conversation ID: ");
jPanel5.add(jLabel7);
htmlFormConversationIdLabel.setText("Unknown");
jPanel5.add(htmlFormConversationIdLabel);
htmlFormPanel.add(jPanel5, java.awt.BorderLayout.PAGE_START);
jTabbedPane2.addTab("Text", htmlFormTextPanel);
jTabbedPane2.addTab("XML", htmlFormXmlPanel);
htmlFormPanel.add(jTabbedPane2, java.awt.BorderLayout.CENTER);
jTabbedPane1.addTab("HTML Form", htmlFormPanel);
jTabbedPane1.addTab("Relay State", relayStatePanel);
analysisPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
analysisDataPanel.setLayout(new java.awt.GridBagLayout());
jLabel8.setText("SAML Browser POST over SSL:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
analysisDataPanel.add(jLabel8, gridBagConstraints);
browserPostSslCheckBox.setToolTipText("Prevents a MITM attack");
browserPostSslCheckBox.setEnabled(false);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
analysisDataPanel.add(browserPostSslCheckBox, gridBagConstraints);
jLabel9.setText("Corresponding HTML Form over SSL:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
analysisDataPanel.add(jLabel9, gridBagConstraints);
htmlFormSslCheckBox.setToolTipText("Prevents a MITM attack");
htmlFormSslCheckBox.setEnabled(false);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
analysisDataPanel.add(htmlFormSslCheckBox, gridBagConstraints);
jLabel10.setText("Signed SAML Message:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
analysisDataPanel.add(jLabel10, gridBagConstraints);
signedMessageCheckBox.setToolTipText("Prevents identity forgery");
signedMessageCheckBox.setEnabled(false);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
analysisDataPanel.add(signedMessageCheckBox, gridBagConstraints);
jLabel11.setText("SAML Version:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
analysisDataPanel.add(jLabel11, gridBagConstraints);
samlVersionLabel.setText("Unknown");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 3;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
analysisDataPanel.add(samlVersionLabel, gridBagConstraints);
jLabel12.setText("Destination indication:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 4;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
analysisDataPanel.add(jLabel12, gridBagConstraints);
destinationIndicationCheckBox.setToolTipText("Indicates whether the SAML message has some indication of its intended destination");
destinationIndicationCheckBox.setEnabled(false);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 4;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
analysisDataPanel.add(destinationIndicationCheckBox, gridBagConstraints);
jLabel13.setText("Assertions digested:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 5;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
analysisDataPanel.add(jLabel13, gridBagConstraints);
assertionsDigestedCheckBox.setToolTipText("Checks whether all SAML Assertions are digested by the SAML protocol XML signature");
assertionsDigestedCheckBox.setEnabled(false);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 5;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
analysisDataPanel.add(assertionsDigestedCheckBox, gridBagConstraints);
jLabel18.setText("Validity Interval indication:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 6;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
analysisDataPanel.add(jLabel18, gridBagConstraints);
validityIntervalIndicationCheckBox.setToolTipText("Checks whether the Conditions @NotBefore and @NotOnOrAfter are present.");
validityIntervalIndicationCheckBox.setEnabled(false);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 6;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
analysisDataPanel.add(validityIntervalIndicationCheckBox, gridBagConstraints);
analysisPanel.add(analysisDataPanel);
jTabbedPane1.addTab("Analysis", analysisPanel);
aboutPanel.setLayout(new java.awt.GridBagLayout());
jLabel2.setText("WebScarab SAML Plugin");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.insets = new java.awt.Insets(0, 0, 19, 0);
aboutPanel.add(jLabel2, gridBagConstraints);
jLabel3.setText("Copyright (C) 2010-2012 FedICT");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
aboutPanel.add(jLabel3, gridBagConstraints);
jLabel4.setText("Copyright (C) 2010-2011 Frank Cornelis <info@frankcornelis.be>");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
aboutPanel.add(jLabel4, gridBagConstraints);
jTabbedPane1.addTab("About", aboutPanel);
jSplitPane1.setRightComponent(jTabbedPane1);
jPanel1.setLayout(new java.awt.BorderLayout());
jPanel8.setLayout(new java.awt.BorderLayout());
samlTable.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jScrollPane1.setViewportView(samlTable);
jPanel8.add(jScrollPane1, java.awt.BorderLayout.CENTER);
jTabbedPane3.addTab("SAML Browser POST Profile Messages", jPanel8);
jPanel6.setBorder(null);
jPanel6.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel10.setLayout(new java.awt.GridBagLayout());
jPanel7.setBorder(javax.swing.BorderFactory.createTitledBorder("Signature Integrity Attacks"));
jPanel7.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel11.setLayout(new java.awt.GridBagLayout());
corruptSignatureCheckBox.setText("Corrupt SAML Response Signature");
corruptSignatureCheckBox.setToolTipText("Changes the DigestValue of the first ds:Reference element");
corruptSignatureCheckBox.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
corruptSignatureCheckBoxItemStateChanged(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
jPanel11.add(corruptSignatureCheckBox, gridBagConstraints);
removeSignatureCheckBox.setText("Remove SAML Response Signature");
removeSignatureCheckBox.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
removeSignatureCheckBoxItemStateChanged(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
jPanel11.add(removeSignatureCheckBox, gridBagConstraints);
removeAssertionSignatureCheckBox.setText("Remove SAML Assertion Signature");
removeAssertionSignatureCheckBox.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
removeAssertionSignatureCheckBoxItemStateChanged(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
jPanel11.add(removeAssertionSignatureCheckBox, gridBagConstraints);
jPanel7.add(jPanel11);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
jPanel10.add(jPanel7, gridBagConstraints);
jPanel13.setBorder(javax.swing.BorderFactory.createTitledBorder("Signature Remote Attack"));
jPanel13.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel14.setLayout(new java.awt.GridBagLayout());
injectRemoteReferenceCheckBox.setText("Inject Reference URI in SAML Response Signature");
injectRemoteReferenceCheckBox.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
injectRemoteReferenceCheckBoxItemStateChanged(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
jPanel14.add(injectRemoteReferenceCheckBox, gridBagConstraints);
jLabel14.setText("Injected URI: ");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
jPanel14.add(jLabel14, gridBagConstraints);
injectionUriTextField.setColumns(20);
injectionUriTextField.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
injectionUriTextFieldActionPerformed(evt);
}
});
injectionUriTextField.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusLost(java.awt.event.FocusEvent evt) {
injectionUriTextFieldFocusLost(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
jPanel14.add(injectionUriTextField, gridBagConstraints);
jPanel13.add(jPanel14);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
jPanel10.add(jPanel13, gridBagConstraints);
jPanel27.setBorder(javax.swing.BorderFactory.createTitledBorder("Signature Trust Attack"));
jPanel28.setLayout(new java.awt.GridBagLayout());
signCheckBox.setText("Resign SAML protocol message");
signCheckBox.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
signCheckBoxItemStateChanged(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
jPanel28.add(signCheckBox, gridBagConstraints);
jLabel21.setText("Key: ");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
jPanel28.add(jLabel21, gridBagConstraints);
selectKeyButton.setText("Select Key...");
selectKeyButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
selectKeyButtonActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
gridBagConstraints.insets = new java.awt.Insets(5, 0, 0, 0);
jPanel28.add(selectKeyButton, gridBagConstraints);
keyTextField.setColumns(20);
keyTextField.setEditable(false);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
jPanel28.add(keyTextField, gridBagConstraints);
jPanel27.add(jPanel28);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
jPanel10.add(jPanel27, gridBagConstraints);
jPanel6.add(jPanel10);
jTabbedPane3.addTab("Signature Attacks", jPanel6);
jPanel30.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel32.setLayout(new java.awt.GridBagLayout());
signWrapAttackCheckBox.setText("Signature Wrapping Attack");
signWrapAttackCheckBox.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
signWrapAttackCheckBoxItemStateChanged(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
jPanel32.add(signWrapAttackCheckBox, gridBagConstraints);
jPanel35.setBorder(javax.swing.BorderFactory.createTitledBorder("Signature"));
jPanel35.setLayout(new javax.swing.BoxLayout(jPanel35, javax.swing.BoxLayout.PAGE_AXIS));
signatureButtonGroup.add(protocolSignatureRadioButton);
protocolSignatureRadioButton.setSelected(true);
protocolSignatureRadioButton.setText("SAML protocol signature");
protocolSignatureRadioButton.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
protocolSignatureRadioButtonItemStateChanged(evt);
}
});
jPanel35.add(protocolSignatureRadioButton);
signatureButtonGroup.add(assertionSignatureRadioButton);
assertionSignatureRadioButton.setText("SAML assertion signature");
assertionSignatureRadioButton.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
assertionSignatureRadioButtonItemStateChanged(evt);
}
});
jPanel35.add(assertionSignatureRadioButton);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
jPanel32.add(jPanel35, gridBagConstraints);
jPanel34.setBorder(javax.swing.BorderFactory.createTitledBorder("Wrapper Element"));
jPanel34.setLayout(new javax.swing.BoxLayout(jPanel34, javax.swing.BoxLayout.PAGE_AXIS));
wrapperButtonGroup.add(dsObjectWrapperRadioButton);
dsObjectWrapperRadioButton.setSelected(true);
dsObjectWrapperRadioButton.setText("ds:Object");
dsObjectWrapperRadioButton.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
dsObjectWrapperRadioButtonItemStateChanged(evt);
}
});
jPanel34.add(dsObjectWrapperRadioButton);
wrapperButtonGroup.add(samlpExtWrapperRadioButton);
samlpExtWrapperRadioButton.setText("samlp:Extensions");
samlpExtWrapperRadioButton.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
samlpExtWrapperRadioButtonItemStateChanged(evt);
}
});
jPanel34.add(samlpExtWrapperRadioButton);
wrapperButtonGroup.add(duplicateAssertionRadioButton);
duplicateAssertionRadioButton.setText("Duplicate Assertion");
duplicateAssertionRadioButton.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
duplicateAssertionRadioButtonItemStateChanged(evt);
}
});
jPanel34.add(duplicateAssertionRadioButton);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
jPanel32.add(jPanel34, gridBagConstraints);
jPanel33.setBorder(javax.swing.BorderFactory.createTitledBorder("References Settings"));
jPanel33.setLayout(new javax.swing.BoxLayout(jPanel33, javax.swing.BoxLayout.PAGE_AXIS));
renameIdCheckBox.setText("Rename top Response Id");
renameIdCheckBox.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
renameIdCheckBoxItemStateChanged(evt);
}
});
jPanel33.add(renameIdCheckBox);
renameAssertionIdCheckBox.setText("Rename first Assertion ID");
renameAssertionIdCheckBox.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
renameAssertionIdCheckBoxItemStateChanged(evt);
}
});
jPanel33.add(renameAssertionIdCheckBox);
renameLastAssertionIdCheckBox.setText("Rename last Assertion ID");
renameLastAssertionIdCheckBox.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
renameLastAssertionIdCheckBoxItemStateChanged(evt);
}
});
jPanel33.add(renameLastAssertionIdCheckBox);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
jPanel32.add(jPanel33, gridBagConstraints);
jPanel30.add(jPanel32);
jTabbedPane3.addTab("Signature Wrapping Attacks", jPanel30);
jPanel19.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel20.setLayout(new java.awt.GridBagLayout());
jPanel15.setBorder(javax.swing.BorderFactory.createTitledBorder("Attribute Injection Attack"));
jPanel15.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel36.setLayout(new java.awt.GridBagLayout());
injectAttributeCheckBox.setText("Change Attribute");
injectAttributeCheckBox.setToolTipText("Changes the given attribute value on the SAML assertions");
injectAttributeCheckBox.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
injectAttributeCheckBoxItemStateChanged(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
jPanel36.add(injectAttributeCheckBox, gridBagConstraints);
jScrollPane6.setPreferredSize(new java.awt.Dimension(250, 100));
injectAttributesTable.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
}
));
injectAttributesTable.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
jScrollPane6.setViewportView(injectAttributesTable);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
jPanel36.add(jScrollPane6, gridBagConstraints);
jPanel37.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
addInjectAttributeButton.setText("Add...");
addInjectAttributeButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
addInjectAttributeButtonActionPerformed(evt);
}
});
jPanel37.add(addInjectAttributeButton);
removeInjectAttributeButton.setText("Remove");
removeInjectAttributeButton.setEnabled(false);
removeInjectAttributeButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
removeInjectAttributeButtonActionPerformed(evt);
}
});
jPanel37.add(removeInjectAttributeButton);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
jPanel36.add(jPanel37, gridBagConstraints);
jLabel15.setText("Occurences:");
jPanel16.add(jLabel15);
attributeButtonGroup.add(allAttributeRadioButton);
allAttributeRadioButton.setSelected(true);
allAttributeRadioButton.setText("All");
allAttributeRadioButton.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
allAttributeRadioButtonItemStateChanged(evt);
}
});
jPanel16.add(allAttributeRadioButton);
attributeButtonGroup.add(firstAttributeRadioButton);
firstAttributeRadioButton.setText("First");
firstAttributeRadioButton.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
firstAttributeRadioButtonItemStateChanged(evt);
}
});
jPanel16.add(firstAttributeRadioButton);
attributeButtonGroup.add(lastAttributeRadioButton);
lastAttributeRadioButton.setText("Last");
lastAttributeRadioButton.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
lastAttributeRadioButtonItemStateChanged(evt);
}
});
jPanel16.add(lastAttributeRadioButton);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
jPanel36.add(jPanel16, gridBagConstraints);
jPanel15.add(jPanel36);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridheight = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
jPanel20.add(jPanel15, gridBagConstraints);
jPanel17.setBorder(javax.swing.BorderFactory.createTitledBorder("Subject Injection Attack"));
jPanel17.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel18.setLayout(new java.awt.GridBagLayout());
injectSubjectCheckBox.setText("Change Subject");
injectSubjectCheckBox.setToolTipText("Changes the subject within the SAML assertions.");
injectSubjectCheckBox.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
injectSubjectCheckBoxItemStateChanged(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
jPanel18.add(injectSubjectCheckBox, gridBagConstraints);
jLabel17.setText("Subject: ");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
jPanel18.add(jLabel17, gridBagConstraints);
injectionSubjectTextField.setColumns(20);
injectionSubjectTextField.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
injectionSubjectTextFieldActionPerformed(evt);
}
});
injectionSubjectTextField.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusLost(java.awt.event.FocusEvent evt) {
injectionSubjectTextFieldFocusLost(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
jPanel18.add(injectionSubjectTextField, gridBagConstraints);
jPanel31.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
subjectButtonGroup.add(allSubjectRadioButton);
allSubjectRadioButton.setSelected(true);
allSubjectRadioButton.setText("All");
allSubjectRadioButton.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
allSubjectRadioButtonItemStateChanged(evt);
}
});
jPanel31.add(allSubjectRadioButton);
subjectButtonGroup.add(firstSubjectRadioButton);
firstSubjectRadioButton.setText("First");
firstSubjectRadioButton.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
firstSubjectRadioButtonItemStateChanged(evt);
}
});
jPanel31.add(firstSubjectRadioButton);
subjectButtonGroup.add(lastSubjectRadioButton);
lastSubjectRadioButton.setText("Last");
lastSubjectRadioButton.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
lastSubjectRadioButtonItemStateChanged(evt);
}
});
jPanel31.add(lastSubjectRadioButton);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
jPanel18.add(jPanel31, gridBagConstraints);
jLabel23.setText("Occurences:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
jPanel18.add(jLabel23, gridBagConstraints);
jPanel17.add(jPanel18);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
jPanel20.add(jPanel17, gridBagConstraints);
jPanel23.setBorder(javax.swing.BorderFactory.createTitledBorder("DTD Injection Attack"));
jPanel23.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel24.setLayout(new java.awt.GridBagLayout());
injectPublicDoctypeCheckBox.setText("Inject PUBLIC DOCTYPE");
injectPublicDoctypeCheckBox.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
injectPublicDoctypeCheckBoxItemStateChanged(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
jPanel24.add(injectPublicDoctypeCheckBox, gridBagConstraints);
jLabel19.setText("DTD URI: ");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
jPanel24.add(jLabel19, gridBagConstraints);
dtdUriTextField.setColumns(20);
dtdUriTextField.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
dtdUriTextFieldActionPerformed(evt);
}
});
dtdUriTextField.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusLost(java.awt.event.FocusEvent evt) {
dtdUriTextFieldFocusLost(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
jPanel24.add(dtdUriTextField, gridBagConstraints);
jPanel23.add(jPanel24);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
jPanel20.add(jPanel23, gridBagConstraints);
jPanel25.setBorder(javax.swing.BorderFactory.createTitledBorder("Relay State Injection Attack"));
jPanel25.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel26.setLayout(new java.awt.GridBagLayout());
injectRelayStateCheckBox.setText("Change Response Relay State");
injectRelayStateCheckBox.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
injectRelayStateCheckBoxItemStateChanged(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
jPanel26.add(injectRelayStateCheckBox, gridBagConstraints);
jLabel20.setText("Relay State: ");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
jPanel26.add(jLabel20, gridBagConstraints);
relayStateTextField.setColumns(20);
relayStateTextField.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
relayStateTextFieldActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
jPanel26.add(relayStateTextField, gridBagConstraints);
jPanel25.add(jPanel26);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
jPanel20.add(jPanel25, gridBagConstraints);
jPanel19.add(jPanel20);
jTabbedPane3.addTab("Injection Attacks", jPanel19);
jPanel21.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel22.setLayout(new java.awt.GridBagLayout());
jPanel9.setBorder(javax.swing.BorderFactory.createTitledBorder("SAML Response Replay Attack"));
jPanel9.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel12.setLayout(new java.awt.GridBagLayout());
samlReplayCheckBox.setText("SAML Response replay");
samlReplayCheckBox.setToolTipText("Performs a replay attack using a previous selected SAML Response");
samlReplayCheckBox.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
samlReplayCheckBoxItemStateChanged(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
jPanel12.add(samlReplayCheckBox, gridBagConstraints);
jLabel1.setText("SAML Response used for replay: ");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
jPanel12.add(jLabel1, gridBagConstraints);
samlReplayLabel.setText("None");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
jPanel12.add(samlReplayLabel, gridBagConstraints);
jPanel9.add(jPanel12);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
jPanel22.add(jPanel9, gridBagConstraints);
jPanel21.add(jPanel22);
jTabbedPane3.addTab("Replay Attacks", jPanel21);
jPanel1.add(jTabbedPane3, java.awt.BorderLayout.PAGE_START);
jSplitPane1.setLeftComponent(jPanel1);
add(jSplitPane1, java.awt.BorderLayout.CENTER);
}// </editor-fold>//GEN-END:initComponents
private void corruptSignatureCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_corruptSignatureCheckBoxItemStateChanged
SamlProxy samlProxy = this.saml.getSamlProxy();
boolean corruptSignature = evt.getStateChange() == ItemEvent.SELECTED;
samlProxy.setCorruptSignature(corruptSignature);
}//GEN-LAST:event_corruptSignatureCheckBoxItemStateChanged
private void removeSignatureCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_removeSignatureCheckBoxItemStateChanged
SamlProxy samlProxy = this.saml.getSamlProxy();
boolean removeSignature = evt.getStateChange() == ItemEvent.SELECTED;
samlProxy.setRemoveSignature(removeSignature);
}//GEN-LAST:event_removeSignatureCheckBoxItemStateChanged
private void samlReplayCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_samlReplayCheckBoxItemStateChanged
SamlProxy samlProxy = this.saml.getSamlProxy();
boolean replay = evt.getStateChange() == ItemEvent.SELECTED;
samlProxy.setReplay(replay);
}//GEN-LAST:event_samlReplayCheckBoxItemStateChanged
private void injectRemoteReferenceCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_injectRemoteReferenceCheckBoxItemStateChanged
SamlProxy samlProxy = this.saml.getSamlProxy();
boolean injectRemoteReference = evt.getStateChange() == ItemEvent.SELECTED;
samlProxy.setInjectRemoteReference(injectRemoteReference);
}//GEN-LAST:event_injectRemoteReferenceCheckBoxItemStateChanged
private void injectionUriTextFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_injectionUriTextFieldActionPerformed
SamlProxy samlProxy = this.saml.getSamlProxy();
String remoteReference = this.injectionUriTextField.getText();
samlProxy.setRemoteReference(remoteReference);
}//GEN-LAST:event_injectionUriTextFieldActionPerformed
private void injectAttributeCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_injectAttributeCheckBoxItemStateChanged
SamlProxy samlProxy = this.saml.getSamlProxy();
boolean injectAttribute = evt.getStateChange() == ItemEvent.SELECTED;
samlProxy.setInjectAttribute(injectAttribute);
}//GEN-LAST:event_injectAttributeCheckBoxItemStateChanged
private void injectSubjectCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_injectSubjectCheckBoxItemStateChanged
SamlProxy samlProxy = this.saml.getSamlProxy();
boolean injectSubject = evt.getStateChange() == ItemEvent.SELECTED;
samlProxy.setInjectSubject(injectSubject);
}//GEN-LAST:event_injectSubjectCheckBoxItemStateChanged
private void injectionSubjectTextFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_injectionSubjectTextFieldActionPerformed
SamlProxy samlProxy = this.saml.getSamlProxy();
String injectionSubject = this.injectionSubjectTextField.getText();
samlProxy.setInjectionSubject(injectionSubject);
}//GEN-LAST:event_injectionSubjectTextFieldActionPerformed
private void injectionSubjectTextFieldFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_injectionSubjectTextFieldFocusLost
SamlProxy samlProxy = this.saml.getSamlProxy();
String injectionSubject = this.injectionSubjectTextField.getText();
samlProxy.setInjectionSubject(injectionSubject);
}//GEN-LAST:event_injectionSubjectTextFieldFocusLost
private void injectionUriTextFieldFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_injectionUriTextFieldFocusLost
SamlProxy samlProxy = this.saml.getSamlProxy();
String remoteReference = this.injectionUriTextField.getText();
samlProxy.setRemoteReference(remoteReference);
}//GEN-LAST:event_injectionUriTextFieldFocusLost
private void injectPublicDoctypeCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_injectPublicDoctypeCheckBoxItemStateChanged
SamlProxy samlProxy = this.saml.getSamlProxy();
boolean injectPublicDoctype = evt.getStateChange() == ItemEvent.SELECTED;
samlProxy.setInjectPublicDoctype(injectPublicDoctype);
}//GEN-LAST:event_injectPublicDoctypeCheckBoxItemStateChanged
private void dtdUriTextFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_dtdUriTextFieldActionPerformed
SamlProxy samlProxy = this.saml.getSamlProxy();
String dtdUri = this.dtdUriTextField.getText();
samlProxy.setDtdUri(dtdUri);
}//GEN-LAST:event_dtdUriTextFieldActionPerformed
private void dtdUriTextFieldFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_dtdUriTextFieldFocusLost
SamlProxy samlProxy = this.saml.getSamlProxy();
String dtdUri = this.dtdUriTextField.getText();
samlProxy.setDtdUri(dtdUri);
}//GEN-LAST:event_dtdUriTextFieldFocusLost
private void injectRelayStateCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_injectRelayStateCheckBoxItemStateChanged
SamlProxy samlProxy = this.saml.getSamlProxy();
boolean injectRelayState = evt.getStateChange() == ItemEvent.SELECTED;
samlProxy.setInjectRelayState(injectRelayState);
}//GEN-LAST:event_injectRelayStateCheckBoxItemStateChanged
private void relayStateTextFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_relayStateTextFieldActionPerformed
SamlProxy samlProxy = this.saml.getSamlProxy();
String relayState = this.relayStateTextField.getText();
samlProxy.setRelayState(relayState);
}//GEN-LAST:event_relayStateTextFieldActionPerformed
private void selectKeyButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_selectKeyButtonActionPerformed
this.certificateManager.setVisible(true);
}//GEN-LAST:event_selectKeyButtonActionPerformed
private void signCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_signCheckBoxItemStateChanged
SamlProxy samlProxy = this.saml.getSamlProxy();
boolean signSamlMessage = evt.getStateChange() == ItemEvent.SELECTED;
samlProxy.setSignSamlMessage(signSamlMessage);
}//GEN-LAST:event_signCheckBoxItemStateChanged
private void decryptButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_decryptButtonActionPerformed
try {
ConversationID id = (ConversationID) this.showConversationAction.getValue("CONVERSATION");
String hexKey = this.attributeKeyTextField.getText();
List samlAttributes = this.samlModel.getDecryptedAttributes(id, hexKey);
this.encryptedAttributesTableModel.setAttributes(samlAttributes);
} catch (Exception ex) {
this.encryptedAttributesTableModel.resetAttributes();
JOptionPane.showMessageDialog(this, ex.getMessage(), "Decryption error", JOptionPane.ERROR_MESSAGE);
}
}//GEN-LAST:event_decryptButtonActionPerformed
private void signWrapAttackCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_signWrapAttackCheckBoxItemStateChanged
SamlProxy samlProxy = this.saml.getSamlProxy();
boolean signWrapAttack = evt.getStateChange() == ItemEvent.SELECTED;
samlProxy.setSignWrapAttack(signWrapAttack);
}//GEN-LAST:event_signWrapAttackCheckBoxItemStateChanged
private void allSubjectRadioButtonItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_allSubjectRadioButtonItemStateChanged
SamlProxy samlProxy = this.saml.getSamlProxy();
boolean allOccurences = evt.getStateChange() == ItemEvent.SELECTED;
if (allOccurences) {
samlProxy.setSubjectOccurences(Occurences.ALL);
}
}//GEN-LAST:event_allSubjectRadioButtonItemStateChanged
private void firstSubjectRadioButtonItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_firstSubjectRadioButtonItemStateChanged
SamlProxy samlProxy = this.saml.getSamlProxy();
boolean firstOccurences = evt.getStateChange() == ItemEvent.SELECTED;
if (firstOccurences) {
samlProxy.setSubjectOccurences(Occurences.FIRST);
}
}//GEN-LAST:event_firstSubjectRadioButtonItemStateChanged
private void lastSubjectRadioButtonItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_lastSubjectRadioButtonItemStateChanged
SamlProxy samlProxy = this.saml.getSamlProxy();
boolean lastOccurences = evt.getStateChange() == ItemEvent.SELECTED;
if (lastOccurences) {
samlProxy.setSubjectOccurences(Occurences.LAST);
}
}//GEN-LAST:event_lastSubjectRadioButtonItemStateChanged
private void renameIdCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_renameIdCheckBoxItemStateChanged
SamlProxy samlProxy = this.saml.getSamlProxy();
boolean renameTopId = evt.getStateChange() == ItemEvent.SELECTED;
samlProxy.setRenameTopId(renameTopId);
}//GEN-LAST:event_renameIdCheckBoxItemStateChanged
private void removeAssertionSignatureCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_removeAssertionSignatureCheckBoxItemStateChanged
SamlProxy samlProxy = this.saml.getSamlProxy();
boolean removeAssertionSignature = evt.getStateChange() == ItemEvent.SELECTED;
samlProxy.setRemoveAssertionSignature(removeAssertionSignature);
}//GEN-LAST:event_removeAssertionSignatureCheckBoxItemStateChanged
private void dsObjectWrapperRadioButtonItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_dsObjectWrapperRadioButtonItemStateChanged
SamlProxy samlProxy = this.saml.getSamlProxy();
boolean dsObjectWrapper = evt.getStateChange() == ItemEvent.SELECTED;
if (dsObjectWrapper) {
samlProxy.setWrapper(Wrapper.DS_OBJECT);
}
}//GEN-LAST:event_dsObjectWrapperRadioButtonItemStateChanged
private void samlpExtWrapperRadioButtonItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_samlpExtWrapperRadioButtonItemStateChanged
SamlProxy samlProxy = this.saml.getSamlProxy();
boolean samlpExtWrapper = evt.getStateChange() == ItemEvent.SELECTED;
if (samlpExtWrapper) {
samlProxy.setWrapper(Wrapper.SAMLP_EXTENSIONS);
}
}//GEN-LAST:event_samlpExtWrapperRadioButtonItemStateChanged
private void protocolSignatureRadioButtonItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_protocolSignatureRadioButtonItemStateChanged
SamlProxy samlProxy = this.saml.getSamlProxy();
boolean protocolSignature = evt.getStateChange() == ItemEvent.SELECTED;
if (protocolSignature) {
samlProxy.setWrapperTargetSignature(SignatureType.PROTOCOL);
}
}//GEN-LAST:event_protocolSignatureRadioButtonItemStateChanged
private void assertionSignatureRadioButtonItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_assertionSignatureRadioButtonItemStateChanged
SamlProxy samlProxy = this.saml.getSamlProxy();
boolean assertionSignature = evt.getStateChange() == ItemEvent.SELECTED;
if (assertionSignature) {
samlProxy.setWrapperTargetSignature(SignatureType.ASSERTION);
}
}//GEN-LAST:event_assertionSignatureRadioButtonItemStateChanged
private void renameAssertionIdCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_renameAssertionIdCheckBoxItemStateChanged
SamlProxy samlProxy = this.saml.getSamlProxy();
boolean renameAssertionId = evt.getStateChange() == ItemEvent.SELECTED;
samlProxy.setRenameAssertionId(renameAssertionId);
}//GEN-LAST:event_renameAssertionIdCheckBoxItemStateChanged
private void duplicateAssertionRadioButtonItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_duplicateAssertionRadioButtonItemStateChanged
SamlProxy samlProxy = this.saml.getSamlProxy();
boolean duplicateAssertion = evt.getStateChange() == ItemEvent.SELECTED;
if (duplicateAssertion) {
samlProxy.setWrapper(Wrapper.ASSERTION);
}
}//GEN-LAST:event_duplicateAssertionRadioButtonItemStateChanged
private void addInjectAttributeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addInjectAttributeButtonActionPerformed
JPanel panel = new JPanel();
panel.setLayout(new GridBagLayout());
GridBagConstraints gridBagConstraints = new GridBagConstraints();
JLabel nameLabel = new JLabel("Name:");
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.ipadx = 10;
panel.add(nameLabel, gridBagConstraints);
gridBagConstraints.gridx++;
JTextField nameTextField = new JTextField(20);
panel.add(nameTextField, gridBagConstraints);
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy++;
JLabel valueLabel = new JLabel("Value:");
panel.add(valueLabel, gridBagConstraints);
gridBagConstraints.gridx++;
JTextField valueTextField = new JTextField(20);
panel.add(valueTextField, gridBagConstraints);
int result = JOptionPane.showConfirmDialog(this, panel, "Inject attribute", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
if (result == JOptionPane.OK_OPTION) {
if (false == nameTextField.getText().isEmpty()) {
this.injectAttributesTableModel.addAttribute(nameTextField.getText(), valueTextField.getText());
}
}
}//GEN-LAST:event_addInjectAttributeButtonActionPerformed
private void removeInjectAttributeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removeInjectAttributeButtonActionPerformed
int row = this.injectAttributesTable.getSelectedRow();
this.injectAttributesTableModel.removeAttribute(row);
this.removeInjectAttributeButton.setEnabled(false);
}//GEN-LAST:event_removeInjectAttributeButtonActionPerformed
private void renameLastAssertionIdCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_renameLastAssertionIdCheckBoxItemStateChanged
SamlProxy samlProxy = this.saml.getSamlProxy();
boolean renameLastAssertionId = evt.getStateChange() == ItemEvent.SELECTED;
samlProxy.setRenameLastAssertionId(renameLastAssertionId);
}//GEN-LAST:event_renameLastAssertionIdCheckBoxItemStateChanged
private void allAttributeRadioButtonItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_allAttributeRadioButtonItemStateChanged
SamlProxy samlProxy = this.saml.getSamlProxy();
boolean allOccurences = evt.getStateChange() == ItemEvent.SELECTED;
if (allOccurences) {
samlProxy.setAttributeOccurences(Occurences.ALL);
}
}//GEN-LAST:event_allAttributeRadioButtonItemStateChanged
private void firstAttributeRadioButtonItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_firstAttributeRadioButtonItemStateChanged
SamlProxy samlProxy = this.saml.getSamlProxy();
boolean allOccurences = evt.getStateChange() == ItemEvent.SELECTED;
if (allOccurences) {
samlProxy.setAttributeOccurences(Occurences.FIRST);
}
}//GEN-LAST:event_firstAttributeRadioButtonItemStateChanged
private void lastAttributeRadioButtonItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_lastAttributeRadioButtonItemStateChanged
SamlProxy samlProxy = this.saml.getSamlProxy();
boolean allOccurences = evt.getStateChange() == ItemEvent.SELECTED;
if (allOccurences) {
samlProxy.setAttributeOccurences(Occurences.LAST);
}
}//GEN-LAST:event_lastAttributeRadioButtonItemStateChanged
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPanel aboutPanel;
private javax.swing.JButton addInjectAttributeButton;
private javax.swing.JRadioButton allAttributeRadioButton;
private javax.swing.JRadioButton allSubjectRadioButton;
private javax.swing.JPanel analysisDataPanel;
private javax.swing.JPanel analysisPanel;
private javax.swing.JRadioButton assertionSignatureRadioButton;
private javax.swing.JCheckBox assertionsDigestedCheckBox;
private javax.swing.ButtonGroup attributeButtonGroup;
private javax.swing.JTextField attributeKeyTextField;
private javax.swing.JPanel attributesPanel;
private javax.swing.JTable attributesTable;
private javax.swing.JCheckBox browserPostSslCheckBox;
private org.owasp.webscarab.ui.swing.editors.TextPanel certDetailTextPanel;
private javax.swing.JTree certPathTree;
private javax.swing.JCheckBox corruptSignatureCheckBox;
private javax.swing.JButton decryptButton;
private javax.swing.JCheckBox destinationIndicationCheckBox;
private javax.swing.JRadioButton dsObjectWrapperRadioButton;
private javax.swing.JTextField dtdUriTextField;
private javax.swing.JRadioButton duplicateAssertionRadioButton;
private javax.swing.JPanel encryptedAttributesPanel;
private javax.swing.JTable encryptedAttributesTable;
private javax.swing.JRadioButton firstAttributeRadioButton;
private javax.swing.JRadioButton firstSubjectRadioButton;
private javax.swing.JLabel htmlFormConversationIdLabel;
private javax.swing.JPanel htmlFormPanel;
private javax.swing.JCheckBox htmlFormSslCheckBox;
private org.owasp.webscarab.ui.swing.editors.TextPanel htmlFormTextPanel;
private org.owasp.webscarab.ui.swing.editors.XMLPanel htmlFormXmlPanel;
private javax.swing.JCheckBox injectAttributeCheckBox;
private javax.swing.JTable injectAttributesTable;
private javax.swing.JCheckBox injectPublicDoctypeCheckBox;
private javax.swing.JCheckBox injectRelayStateCheckBox;
private javax.swing.JCheckBox injectRemoteReferenceCheckBox;
private javax.swing.JCheckBox injectSubjectCheckBox;
private javax.swing.JTextField injectionSubjectTextField;
private javax.swing.JTextField injectionUriTextField;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel13;
private javax.swing.JLabel jLabel14;
private javax.swing.JLabel jLabel15;
private javax.swing.JLabel jLabel17;
private javax.swing.JLabel jLabel18;
private javax.swing.JLabel jLabel19;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel20;
private javax.swing.JLabel jLabel21;
private javax.swing.JLabel jLabel22;
private javax.swing.JLabel jLabel23;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel10;
private javax.swing.JPanel jPanel11;
private javax.swing.JPanel jPanel12;
private javax.swing.JPanel jPanel13;
private javax.swing.JPanel jPanel14;
private javax.swing.JPanel jPanel15;
private javax.swing.JPanel jPanel16;
private javax.swing.JPanel jPanel17;
private javax.swing.JPanel jPanel18;
private javax.swing.JPanel jPanel19;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel20;
private javax.swing.JPanel jPanel21;
private javax.swing.JPanel jPanel22;
private javax.swing.JPanel jPanel23;
private javax.swing.JPanel jPanel24;
private javax.swing.JPanel jPanel25;
private javax.swing.JPanel jPanel26;
private javax.swing.JPanel jPanel27;
private javax.swing.JPanel jPanel28;
private javax.swing.JPanel jPanel29;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel30;
private javax.swing.JPanel jPanel31;
private javax.swing.JPanel jPanel32;
private javax.swing.JPanel jPanel33;
private javax.swing.JPanel jPanel34;
private javax.swing.JPanel jPanel35;
private javax.swing.JPanel jPanel36;
private javax.swing.JPanel jPanel37;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel jPanel7;
private javax.swing.JPanel jPanel8;
private javax.swing.JPanel jPanel9;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JScrollPane jScrollPane3;
private javax.swing.JScrollPane jScrollPane4;
private javax.swing.JScrollPane jScrollPane6;
private javax.swing.JSplitPane jSplitPane1;
private javax.swing.JSplitPane jSplitPane2;
private javax.swing.JTabbedPane jTabbedPane1;
private javax.swing.JTabbedPane jTabbedPane2;
private javax.swing.JTabbedPane jTabbedPane3;
private javax.swing.JTextField keyTextField;
private javax.swing.JRadioButton lastAttributeRadioButton;
private javax.swing.JRadioButton lastSubjectRadioButton;
private javax.swing.JRadioButton protocolSignatureRadioButton;
private org.owasp.webscarab.ui.swing.editors.TextPanel rawPanel;
private org.owasp.webscarab.ui.swing.editors.TextPanel relayStatePanel;
private javax.swing.JTextField relayStateTextField;
private javax.swing.JCheckBox removeAssertionSignatureCheckBox;
private javax.swing.JButton removeInjectAttributeButton;
private javax.swing.JCheckBox removeSignatureCheckBox;
private javax.swing.JCheckBox renameAssertionIdCheckBox;
private javax.swing.JCheckBox renameIdCheckBox;
private javax.swing.JCheckBox renameLastAssertionIdCheckBox;
private javax.swing.JPopupMenu samlPopupMenu;
private javax.swing.JCheckBox samlReplayCheckBox;
private javax.swing.JLabel samlReplayLabel;
private javax.swing.JTable samlTable;
private javax.swing.JLabel samlVersionLabel;
private javax.swing.JRadioButton samlpExtWrapperRadioButton;
private javax.swing.JButton selectKeyButton;
private javax.swing.JCheckBox signCheckBox;
private javax.swing.JCheckBox signWrapAttackCheckBox;
private javax.swing.ButtonGroup signatureButtonGroup;
private javax.swing.JPanel signaturePanel;
private javax.swing.JLabel signatureValidityLabel;
private javax.swing.JCheckBox signedMessageCheckBox;
private javax.swing.ButtonGroup subjectButtonGroup;
private org.owasp.webscarab.ui.swing.editors.TextPanel textPanel;
private javax.swing.JCheckBox validityIntervalIndicationCheckBox;
private javax.swing.ButtonGroup wrapperButtonGroup;
private org.owasp.webscarab.ui.swing.editors.XMLPanel xmlPanel;
// End of variables declaration//GEN-END:variables
@Override
public Action[] getConversationActions() {
return null;
}
@Override
public ColumnDataModel<ConversationID>[] getConversationColumns() {
return null;
}
@Override
public JPanel getPanel() {
return this;
}
@Override
public Action[] getUrlActions() {
return null;
}
@Override
public ColumnDataModel<HttpUrl>[] getUrlColumns() {
return null;
}
@Override
public String getPluginName() {
return this.saml.getPluginName();
}
@Override
public void replayChanged(ConversationID replayId) {
this.samlReplayLabel.setText(replayId.toString());
}
}