1 package org.eparapher.rcp.wizards;
2
3 import org.apache.log4j.Logger;
4 import org.eclipse.jface.wizard.IWizardPage;
5 import org.eclipse.jface.wizard.WizardPage;
6 import org.eclipse.swt.SWT;
7 import org.eclipse.swt.layout.GridData;
8 import org.eclipse.swt.layout.GridLayout;
9 import org.eclipse.swt.widgets.Button;
10 import org.eclipse.swt.widgets.Combo;
11 import org.eclipse.swt.widgets.Composite;
12 import org.eclipse.swt.widgets.Event;
13 import org.eclipse.swt.widgets.Label;
14 import org.eclipse.swt.widgets.Listener;
15 import org.eclipse.swt.widgets.Text;
16 import org.eparapher.core.signature.XMLSignatureParameters;
17 import org.eparapher.rcp.tools.GUIIcons;
18 import org.eparapher.rcp.tools.eParapherTools;
19
20 public class XMLSigningWizardPageThree extends WizardPage implements IWizardPage, Listener {
21
22 private static Logger log = Logger.getLogger(XMLSigningWizardPageThree.class);
23
24 private Button insertCRLs;
25 private Button insertTS;
26 private Button overwriteoriginal;
27 private Button dtdValidation;
28
29 private Combo format;
30 private Combo canonical;
31 private Combo transform;
32 private Combo sigAlg;
33 private Combo sigDigest;
34
35 private Text objectID;
36
37 private Composite container;
38
39 private XMLSignatureParameters xmlsignatureparams;
40
41 public XMLSigningWizardPageThree(XMLSignatureParameters xmlsignparams) {
42 super("XML DSig Signing");
43 setTitle("XML DSig Wizard 3/3");
44 setDescription("Please select your XML DSig signature settings.");
45 setImageDescriptor( GUIIcons.WIZARD_SIGN_IMG );
46 xmlsignatureparams = xmlsignparams;
47 }
48
49 public void createControl(Composite parent) {
50 container = new Composite(parent, SWT.FILL);
51 container.setLayout(new GridLayout(2,true));
52
53
54
55 Label labelFormat = new Label(container, SWT.NULL);
56 labelFormat.setText("Signature Format : ");
57 labelFormat.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
58 format = new Combo(container, SWT.READ_ONLY |SWT.BORDER);
59 format.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
60 format.setItems(eParapherTools.getLabel4Combo(xmlsignatureparams.XMLSigFormatFamilies));
61 format.select(xmlsignatureparams.getFormatAsInt());
62 format.addListener(SWT.Selection, this);
63
64 Label labelTransform = new Label(container, SWT.NULL);
65 labelTransform.setText("XML Doc Transform : ");
66 labelTransform.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
67 transform = new Combo(container, SWT.READ_ONLY |SWT.BORDER);
68 transform.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
69 transform.setItems(eParapherTools.getLabel4Combo(xmlsignatureparams.XMLTransformFamilies));
70 transform.select(xmlsignatureparams.getTransformAsInt());
71
72
73 Label labelCanonical = new Label(container, SWT.NULL);
74 labelCanonical.setText("XML Doc Canonical : ");
75 labelCanonical.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
76 canonical = new Combo(container, SWT.READ_ONLY |SWT.BORDER);
77 canonical.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
78 canonical.setItems(eParapherTools.getLabel4Combo(xmlsignatureparams.XMLCanonicalFamilies));
79 canonical.select(xmlsignatureparams.getCanonicalAsInt());
80
81 Label labelDigest = new Label(container, SWT.NULL);
82 labelDigest.setText("Digest algorithm : ");
83 labelDigest.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
84 sigDigest = new Combo(container, SWT.READ_ONLY |SWT.BORDER);
85 sigDigest.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
86 sigDigest.setItems(eParapherTools.getLabel4Combo(xmlsignatureparams.XMLHashAlgFamilies));
87 sigDigest.select(xmlsignatureparams.getDigestAlgAsInt());
88
89 Label labelSigAlg = new Label(container, SWT.NULL);
90 labelSigAlg.setText("Signature algorithm : ");
91 labelSigAlg.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
92 sigAlg = new Combo(container, SWT.READ_ONLY |SWT.BORDER);
93 sigAlg.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
94 sigAlg.setItems(eParapherTools.getLabel4Combo(xmlsignatureparams.XMLSigAlgFamilies));
95 sigAlg.select(xmlsignatureparams.getSignatureAlgAsInt());
96
97 Label labelOverwrite = new Label(container, SWT.NULL);
98 labelOverwrite.setText("Overwrite xml source file.");
99 labelOverwrite.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
100 overwriteoriginal = new Button(container, SWT.CHECK);
101 overwriteoriginal.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
102 overwriteoriginal.setToolTipText("Overwrite xml file ");
103 overwriteoriginal.setSelection(xmlsignatureparams.isOverwritesignedfile());
104
105 Label labelDTDValidation = new Label(container, SWT.NULL);
106 labelDTDValidation.setText("Enable DTD Validation.");
107 labelDTDValidation.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
108 labelDTDValidation.setEnabled(true);
109 dtdValidation = new Button(container, SWT.CHECK);
110 dtdValidation.setToolTipText("Enable DTD download for XML Document syntax verification");
111 dtdValidation.setSelection (xmlsignatureparams.isDTDValidation());
112 dtdValidation.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
113 dtdValidation.setEnabled(true);
114
115 Label labelInsertCRL = new Label(container, SWT.NULL);
116 labelInsertCRL.setText("Insert CRL in signature.");
117 labelInsertCRL.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
118 labelInsertCRL.setEnabled(false);
119 insertCRLs = new Button(container, SWT.CHECK);
120 insertCRLs.setToolTipText("Insert CRL to improve signature quality");
121 insertCRLs.setSelection (xmlsignatureparams.isInsertCRLs());
122 insertCRLs.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
123 insertCRLs.setEnabled(false);
124
125 Label labelInsertTimestamp = new Label(container, SWT.NULL);
126 labelInsertTimestamp.setText("Insert Timestamp in signature.");
127 labelInsertTimestamp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
128 labelInsertTimestamp.setEnabled(false);
129 insertTS = new Button(container, SWT.CHECK);
130 insertTS.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
131 insertTS.setToolTipText("Insert Timestamp to improve signature quality");
132 insertTS.setSelection(xmlsignatureparams.isInsertTimestamp());
133 insertTS.setEnabled(false);
134
135 Label labelLocation = new Label(container, SWT.NULL);
136 labelLocation.setText("ObjectID : ");
137 labelLocation.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
138 labelLocation.setEnabled(false);
139 objectID = new Text(container, SWT.BORDER | SWT.SINGLE);
140 objectID.setText(xmlsignatureparams.getObjectIds());
141
142 objectID.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
143 objectID.setEnabled(false);
144
145
146 setControl(container);
147 setPageComplete(true);
148 }
149
150
151
152
153 public void handleEvent(Event event) {
154
155 if ((event.widget == format)) {
156 log.debug("Signature format selected : " + XMLSignatureParameters.XMLSigFormatFamilies[format.getSelectionIndex()][1]);
157 if ( format.getSelectionIndex() == 2 ) {
158 objectID.setEnabled(true);
159 } else {
160 objectID.setEnabled(false);
161 }
162 if (format.getSelectionIndex() == 1) {
163 transform.setEnabled(true);
164 } else {
165 transform.setEnabled(false);
166 }
167 if (format.getSelectionIndex() == 0) {
168 overwriteoriginal.setEnabled(true);
169 } else {
170 overwriteoriginal.setEnabled(false);
171 }
172 }
173
174 setPageComplete(isPageComplete());
175 }
176 public int getSignatureFormat() {
177 return format.getSelectionIndex();
178 }
179
180 public String getXMLTransform() {
181 return xmlsignatureparams.XMLTransformFamilies[transform.getSelectionIndex()][1];
182 }
183
184 public String getXMLCanonical() {
185 return xmlsignatureparams.XMLCanonicalFamilies[canonical.getSelectionIndex()][1];
186 }
187
188 public String getDigestAlg() {
189 return xmlsignatureparams.XMLHashAlgFamilies[sigDigest.getSelectionIndex()][1];
190 }
191
192 public String getSignatureAlg() {
193 return xmlsignatureparams.XMLSigAlgFamilies[sigAlg.getSelectionIndex()][1];
194 }
195
196 public boolean isCRLsInSignature() {
197 return insertCRLs.getSelection();
198 }
199
200 public boolean isTSInSignature() {
201 return insertTS.getSelection();
202 }
203
204 public boolean isOverwriteOriginalFile() {
205 return overwriteoriginal.getSelection();
206 }
207
208 public boolean isDTDValidation() {
209 return dtdValidation.getSelection();
210 }
211
212 public String getObjectID() {
213 return objectID.getText();
214 }
215 }